Lines Matching refs:dfrag
995 static void dfrag_clear(struct sock *sk, struct mptcp_data_frag *dfrag) in dfrag_clear() argument
997 int len = dfrag->data_len + dfrag->overhead; in dfrag_clear()
999 list_del(&dfrag->list); in dfrag_clear()
1001 put_page(dfrag->page); in dfrag_clear()
1007 struct mptcp_data_frag *dtmp, *dfrag; in __mptcp_clean_una() local
1011 list_for_each_entry_safe(dfrag, dtmp, &msk->rtx_queue, list) { in __mptcp_clean_una()
1012 if (after64(dfrag->data_seq + dfrag->data_len, snd_una)) in __mptcp_clean_una()
1015 if (unlikely(dfrag == msk->first_pending)) { in __mptcp_clean_una()
1023 dfrag_clear(sk, dfrag); in __mptcp_clean_una()
1026 dfrag = mptcp_rtx_head(sk); in __mptcp_clean_una()
1027 if (dfrag && after64(snd_una, dfrag->data_seq)) { in __mptcp_clean_una()
1028 u64 delta = snd_una - dfrag->data_seq; in __mptcp_clean_una()
1031 if (unlikely(delta > dfrag->already_sent)) { in __mptcp_clean_una()
1034 if (WARN_ON_ONCE(delta > dfrag->data_len)) in __mptcp_clean_una()
1036 dfrag->already_sent += delta - dfrag->already_sent; in __mptcp_clean_una()
1039 dfrag->data_seq += delta; in __mptcp_clean_una()
1040 dfrag->offset += delta; in __mptcp_clean_una()
1041 dfrag->data_len -= delta; in __mptcp_clean_una()
1042 dfrag->already_sent -= delta; in __mptcp_clean_una()
1111 struct mptcp_data_frag *dfrag; in mptcp_carve_data_frag() local
1113 dfrag = (struct mptcp_data_frag *)(page_to_virt(pfrag->page) + offset); in mptcp_carve_data_frag()
1114 dfrag->data_len = 0; in mptcp_carve_data_frag()
1115 dfrag->data_seq = msk->write_seq; in mptcp_carve_data_frag()
1116 dfrag->overhead = offset - orig_offset + sizeof(struct mptcp_data_frag); in mptcp_carve_data_frag()
1117 dfrag->offset = offset + sizeof(struct mptcp_data_frag); in mptcp_carve_data_frag()
1118 dfrag->already_sent = 0; in mptcp_carve_data_frag()
1119 dfrag->page = pfrag->page; in mptcp_carve_data_frag()
1121 return dfrag; in mptcp_carve_data_frag()
1235 struct mptcp_data_frag *dfrag, in mptcp_sendmsg_frag() argument
1238 u64 data_seq = dfrag->data_seq + info->sent; in mptcp_sendmsg_frag()
1239 int offset = dfrag->offset + info->sent; in mptcp_sendmsg_frag()
1250 msk, ssk, dfrag->data_seq, dfrag->data_len, info->sent); in mptcp_sendmsg_frag()
1253 info->limit > dfrag->data_len)) in mptcp_sendmsg_frag()
1278 can_coalesce = skb_can_coalesce(skb, i, dfrag->page, offset); in mptcp_sendmsg_frag()
1320 get_page(dfrag->page); in mptcp_sendmsg_frag()
1321 skb_fill_page_desc(skb, i, dfrag->page, offset, copy); in mptcp_sendmsg_frag()
1491 struct mptcp_data_frag *dfrag, in mptcp_update_post_push() argument
1494 u64 snd_nxt_new = dfrag->data_seq; in mptcp_update_post_push()
1496 dfrag->already_sent += sent; in mptcp_update_post_push()
1500 snd_nxt_new += dfrag->already_sent; in mptcp_update_post_push()
1527 struct mptcp_data_frag *dfrag; in __subflow_push_pending() local
1530 while ((dfrag = mptcp_send_head(sk))) { in __subflow_push_pending()
1531 info->sent = dfrag->already_sent; in __subflow_push_pending()
1532 info->limit = dfrag->data_len; in __subflow_push_pending()
1533 len = dfrag->data_len - dfrag->already_sent; in __subflow_push_pending()
1537 ret = mptcp_sendmsg_frag(sk, ssk, dfrag, info); in __subflow_push_pending()
1547 mptcp_update_post_push(msk, dfrag, ret); in __subflow_push_pending()
1805 struct mptcp_data_frag *dfrag; in mptcp_sendmsg() local
1812 dfrag = mptcp_pending_tail(sk); in mptcp_sendmsg()
1813 dfrag_collapsed = mptcp_frag_can_collapse_to(msk, pfrag, dfrag); in mptcp_sendmsg()
1821 dfrag = mptcp_carve_data_frag(msk, pfrag, pfrag->offset); in mptcp_sendmsg()
1822 frag_truesize = dfrag->overhead; in mptcp_sendmsg()
1829 offset = dfrag->offset + dfrag->data_len; in mptcp_sendmsg()
1837 if (copy_page_from_iter(dfrag->page, offset, psize, in mptcp_sendmsg()
1846 dfrag->data_len += psize; in mptcp_sendmsg()
1856 get_page(dfrag->page); in mptcp_sendmsg()
1857 list_add_tail(&dfrag->list, &msk->rtx_queue); in mptcp_sendmsg()
1859 WRITE_ONCE(msk->first_pending, dfrag); in mptcp_sendmsg()
1862 dfrag->data_seq, dfrag->data_len, dfrag->already_sent, in mptcp_sendmsg()
2576 struct mptcp_data_frag *dfrag; in __mptcp_retrans() local
2585 dfrag = mptcp_rtx_head(sk); in __mptcp_retrans()
2586 if (!dfrag) { in __mptcp_retrans()
2618 info.limit = READ_ONCE(msk->csum_enabled) ? dfrag->data_len : in __mptcp_retrans()
2619 dfrag->already_sent; in __mptcp_retrans()
2621 ret = mptcp_sendmsg_frag(sk, ssk, dfrag, &info); in __mptcp_retrans()
2641 dfrag->already_sent = max(dfrag->already_sent, len); in __mptcp_retrans()
2820 struct mptcp_data_frag *dtmp, *dfrag; in __mptcp_clear_xmit() local
2823 list_for_each_entry_safe(dfrag, dtmp, &msk->rtx_queue, list) in __mptcp_clear_xmit()
2824 dfrag_clear(sk, dfrag); in __mptcp_clear_xmit()