Lines Matching defs:nskb
1315 static int skb_zerocopy_clone(struct sk_buff *nskb, struct sk_buff *orig,
1319 if (skb_zcopy(nskb)) {
1320 /* !gfp_mask callers are verified to !skb_zcopy(nskb) */
1325 if (skb_uarg(nskb) == skb_uarg(orig))
1327 if (skb_copy_ubufs(nskb, GFP_ATOMIC))
1330 skb_zcopy_set(nskb, skb_uarg(orig), NULL);
3694 struct sk_buff *nskb, *tmp;
3707 nskb = list_skb;
3711 delta_truesize += nskb->truesize;
3712 if (skb_shared(nskb)) {
3713 tmp = skb_clone(nskb, GFP_ATOMIC);
3715 consume_skb(nskb);
3716 nskb = tmp;
3717 err = skb_unclone(nskb, GFP_ATOMIC);
3724 skb->next = nskb;
3726 tail->next = nskb;
3729 nskb->next = list_skb;
3733 tail = nskb;
3735 delta_len += nskb->len;
3737 skb_push(nskb, -skb_network_offset(nskb) + offset);
3739 skb_release_head_state(nskb);
3740 __copy_skb_header(nskb, skb);
3742 skb_headers_offset_update(nskb, skb_headroom(nskb) - skb_headroom(skb));
3744 nskb->data - tnl_hlen,
3747 if (skb_needs_linearize(nskb, features) &&
3748 __skb_linearize(nskb))
3912 struct sk_buff *nskb;
3935 nskb = skb_clone(list_skb, GFP_ATOMIC);
3936 if (unlikely(!nskb))
3959 if (unlikely(pskb_trim(nskb, len))) {
3960 kfree_skb(nskb);
3964 hsize = skb_end_offset(nskb);
3965 if (skb_cow_head(nskb, doffset + headroom)) {
3966 kfree_skb(nskb);
3970 nskb->truesize += skb_end_offset(nskb) - hsize;
3971 skb_release_head_state(nskb);
3972 __skb_push(nskb, doffset);
3974 nskb = __alloc_skb(hsize + doffset + headroom,
3978 if (unlikely(!nskb))
3981 skb_reserve(nskb, headroom);
3982 __skb_put(nskb, doffset);
3986 tail->next = nskb;
3988 segs = nskb;
3989 tail = nskb;
3991 __copy_skb_header(nskb, head_skb);
3993 skb_headers_offset_update(nskb, skb_headroom(nskb) - headroom);
3994 skb_reset_mac_len(nskb);
3997 nskb->data - tnl_hlen,
4000 if (nskb->len == len + doffset)
4005 if (!nskb->remcsum_offload)
4006 nskb->ip_summed = CHECKSUM_NONE;
4007 SKB_GSO_CB(nskb)->csum =
4009 skb_put(nskb,
4012 SKB_GSO_CB(nskb)->csum_start =
4013 skb_headroom(nskb) + doffset;
4015 if (skb_copy_bits(head_skb, offset, skb_put(nskb, len), len))
4021 nskb_frag = skb_shinfo(nskb)->frags;
4024 skb_put(nskb, hsize), hsize);
4026 skb_shinfo(nskb)->tx_flags |= skb_shinfo(head_skb)->tx_flags &
4029 if (skb_zerocopy_clone(nskb, frag_skb, GFP_ATOMIC))
4035 skb_zerocopy_clone(nskb, list_skb,
4056 if (unlikely(skb_shinfo(nskb)->nr_frags >=
4074 skb_shinfo(nskb)->nr_frags++;
4089 nskb->data_len = len - hsize;
4090 nskb->len += nskb->data_len;
4091 nskb->truesize += nskb->data_len;
4095 if (skb_has_shared_frag(nskb) &&
4096 __skb_linearize(nskb))
4099 if (!nskb->remcsum_offload)
4100 nskb->ip_summed = CHECKSUM_NONE;
4101 SKB_GSO_CB(nskb)->csum =
4102 skb_checksum(nskb, doffset,
4103 nskb->len - doffset, 0);
4104 SKB_GSO_CB(nskb)->csum_start =
4105 skb_headroom(nskb) + doffset;