mptcp_data_frag
const struct mptcp_data_frag *df)
static void dfrag_clear(struct sock *sk, struct mptcp_data_frag *dfrag)
struct mptcp_data_frag *dtmp, *dfrag;
if (likely(skb_page_frag_refill(32U + sizeof(struct mptcp_data_frag),
static struct mptcp_data_frag *
struct mptcp_data_frag *dfrag;
dfrag = (struct mptcp_data_frag *)(page_to_virt(pfrag->page) + offset);
dfrag->overhead = offset - orig_offset + sizeof(struct mptcp_data_frag);
dfrag->offset = offset + sizeof(struct mptcp_data_frag);
struct mptcp_data_frag *dfrag,
struct mptcp_data_frag *dfrag,
struct mptcp_data_frag *dfrag;
struct mptcp_data_frag *dfrag;
struct mptcp_data_frag *dfrag = mptcp_pending_tail(sk);
struct mptcp_data_frag *cur, *rtx_head;
struct mptcp_data_frag *dfrag;
struct mptcp_data_frag *dtmp, *dfrag;
BUILD_BUG_ON(ALIGN(1, sizeof(long)) - 1 + sizeof(struct mptcp_data_frag)
struct mptcp_data_frag *first_pending;
static inline struct mptcp_data_frag *mptcp_send_head(const struct sock *sk)
static inline struct mptcp_data_frag *mptcp_send_next(struct sock *sk)
struct mptcp_data_frag *cur;
static inline struct mptcp_data_frag *mptcp_pending_tail(const struct sock *sk)
return list_last_entry(&msk->rtx_queue, struct mptcp_data_frag, list);
static inline struct mptcp_data_frag *mptcp_rtx_head(struct sock *sk)
return list_first_entry_or_null(&msk->rtx_queue, struct mptcp_data_frag, list);