Lines Matching refs:dfrag

783 static void dfrag_clear(struct sock *sk, struct mptcp_data_frag *dfrag)
785 int len = dfrag->data_len + dfrag->overhead;
787 list_del(&dfrag->list);
789 put_page(dfrag->page);
809 struct mptcp_data_frag *dtmp, *dfrag;
820 list_for_each_entry_safe(dfrag, dtmp, &msk->rtx_queue, list) {
821 if (after64(dfrag->data_seq + dfrag->data_len, snd_una))
824 dfrag_clear(sk, dfrag);
828 dfrag = mptcp_rtx_head(sk);
829 if (dfrag && after64(snd_una, dfrag->data_seq)) {
830 u64 delta = snd_una - dfrag->data_seq;
832 if (WARN_ON_ONCE(delta > dfrag->data_len))
835 dfrag->data_seq += delta;
836 dfrag->offset += delta;
837 dfrag->data_len -= delta;
879 struct mptcp_data_frag *dfrag;
881 dfrag = (struct mptcp_data_frag *)(page_to_virt(pfrag->page) + offset);
882 dfrag->data_len = 0;
883 dfrag->data_seq = msk->write_seq;
884 dfrag->overhead = offset - orig_offset + sizeof(struct mptcp_data_frag);
885 dfrag->offset = offset + sizeof(struct mptcp_data_frag);
886 dfrag->page = pfrag->page;
888 return dfrag;
892 struct msghdr *msg, struct mptcp_data_frag *dfrag,
900 bool retransmission = !!dfrag;
917 write_seq = &dfrag->data_seq;
918 page = dfrag->page;
948 dfrag = mptcp_rtx_tail(sk);
950 dfrag_collapsed = mptcp_frag_can_collapse_to(msk, pfrag, dfrag);
952 dfrag = mptcp_carve_data_frag(msk, pfrag, offset);
953 offset = dfrag->offset;
954 frag_truesize = dfrag->overhead;
968 if (!sk_wmem_schedule(sk, psize + dfrag->overhead)) {
973 offset = dfrag->offset;
974 psize = min_t(size_t, dfrag->data_len, avail_size);
996 dfrag->data_len += ret;
998 get_page(dfrag->page);
999 list_add_tail(&dfrag->list, &msk->rtx_queue);
1753 struct mptcp_data_frag *dfrag;
1781 dfrag = mptcp_rtx_head(sk);
1782 if (!dfrag)
1794 orig_len = dfrag->data_len;
1795 orig_offset = dfrag->offset;
1796 orig_write_seq = dfrag->data_seq;
1797 while (dfrag->data_len > 0) {
1798 int ret = mptcp_sendmsg_frag(sk, ssk, &msg, dfrag, &timeo,
1805 dfrag->data_len -= ret;
1806 dfrag->offset += ret;
1815 dfrag->data_seq = orig_write_seq;
1816 dfrag->offset = orig_offset;
1817 dfrag->data_len = orig_len;
1884 struct mptcp_data_frag *dtmp, *dfrag;
1888 list_for_each_entry_safe(dfrag, dtmp, &msk->rtx_queue, list)
1889 dfrag_clear(sk, dfrag);