Lines Matching defs:head_skb
4688 * @head_skb: buffer to segment
4695 struct sk_buff *skb_segment(struct sk_buff *head_skb,
4700 struct sk_buff *list_skb = skb_shinfo(head_skb)->frag_list;
4701 unsigned int mss = skb_shinfo(head_skb)->gso_size;
4702 unsigned int doffset = head_skb->data - skb_mac_header(head_skb);
4704 unsigned int tnl_hlen = skb_tnl_header_len(head_skb);
4707 unsigned int len = head_skb->len;
4716 if ((skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY) &&
4717 mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb)) {
4725 * If head_skb's headlen does not fit requested gso_size,
4737 __skb_push(head_skb, doffset);
4738 proto = skb_network_protocol(head_skb, NULL);
4751 !net_gso_ok(features, skb_shinfo(head_skb)->gso_type))
4763 skb_walk_frags(head_skb, iter) {
4789 headroom = skb_headroom(head_skb);
4790 pos = skb_headlen(head_skb);
4792 if (skb_orphan_frags(head_skb, GFP_ATOMIC))
4795 nfrags = skb_shinfo(head_skb)->nr_frags;
4796 frag = skb_shinfo(head_skb)->frags;
4797 frag_skb = head_skb;
4808 len = head_skb->len - offset;
4813 hsize = skb_headlen(head_skb) - offset;
4864 GFP_ATOMIC, skb_alloc_rx_flag(head_skb),
4880 __copy_skb_header(nskb, head_skb);
4885 skb_copy_from_linear_data_offset(head_skb, -tnl_hlen,
4897 skb_copy_and_csum_bits(head_skb, offset,
4904 if (skb_copy_bits(head_skb, offset, skb_put(nskb, len), len))
4912 skb_copy_from_linear_data_offset(head_skb, offset,
4915 skb_shinfo(nskb)->flags |= skb_shinfo(head_skb)->flags &
4996 } while ((offset += len) < head_skb->len);
5006 int type = skb_shinfo(head_skb)->gso_type;
5007 unsigned short gso_size = skb_shinfo(head_skb)->gso_size;
5031 * Idea is to tranfert ownership from head_skb to last segment.
5033 if (head_skb->destructor == sock_wfree) {
5034 swap(tail->truesize, head_skb->truesize);
5035 swap(tail->destructor, head_skb->destructor);
5036 swap(tail->sk, head_skb->sk);