Lines Matching defs:dfrag

975 static void dfrag_clear(struct sock *sk, struct mptcp_data_frag *dfrag)
977 int len = dfrag->data_len + dfrag->overhead;
979 list_del(&dfrag->list);
981 put_page(dfrag->page);
988 struct mptcp_data_frag *dtmp, *dfrag;
992 list_for_each_entry_safe(dfrag, dtmp, &msk->rtx_queue, list) {
993 if (after64(dfrag->data_seq + dfrag->data_len, snd_una))
996 if (unlikely(dfrag == msk->first_pending)) {
1004 dfrag_clear(sk, dfrag);
1007 dfrag = mptcp_rtx_head(sk);
1008 if (dfrag && after64(snd_una, dfrag->data_seq)) {
1009 u64 delta = snd_una - dfrag->data_seq;
1012 if (unlikely(delta > dfrag->already_sent)) {
1015 if (WARN_ON_ONCE(delta > dfrag->data_len))
1017 dfrag->already_sent += delta - dfrag->already_sent;
1020 dfrag->data_seq += delta;
1021 dfrag->offset += delta;
1022 dfrag->data_len -= delta;
1023 dfrag->already_sent -= delta;
1095 struct mptcp_data_frag *dfrag;
1097 dfrag = (struct mptcp_data_frag *)(page_to_virt(pfrag->page) + offset);
1098 dfrag->data_len = 0;
1099 dfrag->data_seq = msk->write_seq;
1100 dfrag->overhead = offset - orig_offset + sizeof(struct mptcp_data_frag);
1101 dfrag->offset = offset + sizeof(struct mptcp_data_frag);
1102 dfrag->already_sent = 0;
1103 dfrag->page = pfrag->page;
1105 return dfrag;
1224 struct mptcp_data_frag *dfrag,
1227 u64 data_seq = dfrag->data_seq + info->sent;
1228 int offset = dfrag->offset + info->sent;
1238 pr_debug("msk=%p ssk=%p sending dfrag at seq=%llu len=%u already sent=%u\n",
1239 msk, ssk, dfrag->data_seq, dfrag->data_len, info->sent);
1242 info->limit > dfrag->data_len))
1270 can_coalesce = skb_can_coalesce(skb, i, dfrag->page, offset);
1312 get_page(dfrag->page);
1313 skb_fill_page_desc(skb, i, dfrag->page, offset, copy);
1485 struct mptcp_data_frag *dfrag,
1488 u64 snd_nxt_new = dfrag->data_seq;
1490 dfrag->already_sent += sent;
1494 snd_nxt_new += dfrag->already_sent;
1501 * the dfrag->data_seq that was sent and the data
1503 * and skip update in case it was old dfrag.
1524 struct mptcp_data_frag *dfrag;
1527 while ((dfrag = mptcp_send_head(sk))) {
1528 info->sent = dfrag->already_sent;
1529 info->limit = dfrag->data_len;
1530 len = dfrag->data_len - dfrag->already_sent;
1534 ret = mptcp_sendmsg_frag(sk, ssk, dfrag, info);
1544 mptcp_update_post_push(msk, dfrag, ret);
1849 struct mptcp_data_frag *dfrag;
1862 dfrag = mptcp_pending_tail(sk);
1863 dfrag_collapsed = mptcp_frag_can_collapse_to(msk, pfrag, dfrag);
1868 dfrag = mptcp_carve_data_frag(msk, pfrag, pfrag->offset);
1869 frag_truesize = dfrag->overhead;
1876 offset = dfrag->offset + dfrag->data_len;
1886 page_address(dfrag->page) + offset);
1893 dfrag->data_len += psize;
1903 get_page(dfrag->page);
1904 list_add_tail(&dfrag->list, &msk->rtx_queue);
1906 WRITE_ONCE(msk->first_pending, dfrag);
1908 pr_debug("msk=%p dfrag at seq=%llu len=%u sent=%u new=%d\n", msk,
1909 dfrag->data_seq, dfrag->data_len, dfrag->already_sent,
2611 struct mptcp_data_frag *dfrag;
2620 dfrag = mptcp_rtx_head(sk);
2621 if (!dfrag) {
2654 info.limit = READ_ONCE(msk->csum_enabled) ? dfrag->data_len :
2655 dfrag->already_sent;
2669 ret = mptcp_sendmsg_frag(sk, ssk, dfrag, &info);
2690 dfrag->already_sent = max(dfrag->already_sent, len);
2875 struct mptcp_data_frag *dtmp, *dfrag;
2878 list_for_each_entry_safe(dfrag, dtmp, &msk->rtx_queue, list)
2879 dfrag_clear(sk, dfrag);