Lines Matching refs:nskb
1508 static int skb_zerocopy_clone(struct sk_buff *nskb, struct sk_buff *orig, in skb_zerocopy_clone() argument
1512 if (skb_zcopy(nskb)) { in skb_zerocopy_clone()
1518 if (skb_uarg(nskb) == skb_uarg(orig)) in skb_zerocopy_clone()
1520 if (skb_copy_ubufs(nskb, GFP_ATOMIC)) in skb_zerocopy_clone()
1523 skb_zcopy_set(nskb, skb_uarg(orig), NULL); in skb_zerocopy_clone()
1980 struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); in skb_expand_head() local
1982 if (unlikely(!nskb)) in skb_expand_head()
1986 skb_set_owner_w(nskb, sk); in skb_expand_head()
1988 skb = nskb; in skb_expand_head()
4027 struct sk_buff *nskb, *tmp; in skb_segment_list() local
4035 nskb = list_skb; in skb_segment_list()
4039 delta_truesize += nskb->truesize; in skb_segment_list()
4040 if (skb_shared(nskb)) { in skb_segment_list()
4041 tmp = skb_clone(nskb, GFP_ATOMIC); in skb_segment_list()
4043 consume_skb(nskb); in skb_segment_list()
4044 nskb = tmp; in skb_segment_list()
4045 err = skb_unclone(nskb, GFP_ATOMIC); in skb_segment_list()
4052 skb->next = nskb; in skb_segment_list()
4054 tail->next = nskb; in skb_segment_list()
4057 nskb->next = list_skb; in skb_segment_list()
4061 tail = nskb; in skb_segment_list()
4063 delta_len += nskb->len; in skb_segment_list()
4065 skb_push(nskb, -skb_network_offset(nskb) + offset); in skb_segment_list()
4067 skb_release_head_state(nskb); in skb_segment_list()
4068 len_diff = skb_network_header_len(nskb) - skb_network_header_len(skb); in skb_segment_list()
4069 __copy_skb_header(nskb, skb); in skb_segment_list()
4071 skb_headers_offset_update(nskb, skb_headroom(nskb) - skb_headroom(skb)); in skb_segment_list()
4072 nskb->transport_header += len_diff; in skb_segment_list()
4074 nskb->data - tnl_hlen, in skb_segment_list()
4077 if (skb_needs_linearize(nskb, features) && in skb_segment_list()
4078 __skb_linearize(nskb)) in skb_segment_list()
4213 struct sk_buff *nskb; in skb_segment() local
4250 nskb = skb_clone(list_skb, GFP_ATOMIC); in skb_segment()
4253 if (unlikely(!nskb)) in skb_segment()
4256 if (unlikely(pskb_trim(nskb, len))) { in skb_segment()
4257 kfree_skb(nskb); in skb_segment()
4261 hsize = skb_end_offset(nskb); in skb_segment()
4262 if (skb_cow_head(nskb, doffset + headroom)) { in skb_segment()
4263 kfree_skb(nskb); in skb_segment()
4267 nskb->truesize += skb_end_offset(nskb) - hsize; in skb_segment()
4268 skb_release_head_state(nskb); in skb_segment()
4269 __skb_push(nskb, doffset); in skb_segment()
4276 nskb = __alloc_skb(hsize + doffset + headroom, in skb_segment()
4280 if (unlikely(!nskb)) in skb_segment()
4283 skb_reserve(nskb, headroom); in skb_segment()
4284 __skb_put(nskb, doffset); in skb_segment()
4288 tail->next = nskb; in skb_segment()
4290 segs = nskb; in skb_segment()
4291 tail = nskb; in skb_segment()
4293 __copy_skb_header(nskb, head_skb); in skb_segment()
4295 skb_headers_offset_update(nskb, skb_headroom(nskb) - headroom); in skb_segment()
4296 skb_reset_mac_len(nskb); in skb_segment()
4299 nskb->data - tnl_hlen, in skb_segment()
4302 if (nskb->len == len + doffset) in skb_segment()
4307 if (!nskb->remcsum_offload) in skb_segment()
4308 nskb->ip_summed = CHECKSUM_NONE; in skb_segment()
4309 SKB_GSO_CB(nskb)->csum = in skb_segment()
4311 skb_put(nskb, in skb_segment()
4314 SKB_GSO_CB(nskb)->csum_start = in skb_segment()
4315 skb_headroom(nskb) + doffset; in skb_segment()
4317 if (skb_copy_bits(head_skb, offset, skb_put(nskb, len), len)) in skb_segment()
4323 nskb_frag = skb_shinfo(nskb)->frags; in skb_segment()
4326 skb_put(nskb, hsize), hsize); in skb_segment()
4328 skb_shinfo(nskb)->flags |= skb_shinfo(head_skb)->flags & in skb_segment()
4332 skb_zerocopy_clone(nskb, frag_skb, GFP_ATOMIC)) in skb_segment()
4351 skb_zerocopy_clone(nskb, frag_skb, in skb_segment()
4358 if (unlikely(skb_shinfo(nskb)->nr_frags >= in skb_segment()
4376 skb_shinfo(nskb)->nr_frags++; in skb_segment()
4391 nskb->data_len = len - hsize; in skb_segment()
4392 nskb->len += nskb->data_len; in skb_segment()
4393 nskb->truesize += nskb->data_len; in skb_segment()
4397 if (skb_has_shared_frag(nskb) && in skb_segment()
4398 __skb_linearize(nskb)) in skb_segment()
4401 if (!nskb->remcsum_offload) in skb_segment()
4402 nskb->ip_summed = CHECKSUM_NONE; in skb_segment()
4403 SKB_GSO_CB(nskb)->csum = in skb_segment()
4404 skb_checksum(nskb, doffset, in skb_segment()
4405 nskb->len - doffset, 0); in skb_segment()
4406 SKB_GSO_CB(nskb)->csum_start = in skb_segment()
4407 skb_headroom(nskb) + doffset; in skb_segment()