Lines Matching refs:nskb
906 struct sk_buff *skb = *pskb, *nskb; in skb_pp_cow_data() local
926 nskb = napi_build_skb(data, truesize); in skb_pp_cow_data()
927 if (!nskb) { in skb_pp_cow_data()
932 skb_reserve(nskb, headroom); in skb_pp_cow_data()
933 skb_copy_header(nskb, skb); in skb_pp_cow_data()
934 skb_mark_for_recycle(nskb); in skb_pp_cow_data()
936 err = skb_copy_bits(skb, 0, nskb->data, size); in skb_pp_cow_data()
938 consume_skb(nskb); in skb_pp_cow_data()
941 skb_put(nskb, size); in skb_pp_cow_data()
943 head_off = skb_headroom(nskb) - skb_headroom(skb); in skb_pp_cow_data()
944 skb_headers_offset_update(nskb, head_off); in skb_pp_cow_data()
957 consume_skb(nskb); in skb_pp_cow_data()
961 skb_add_rx_frag(nskb, i, page, page_off, size, truesize); in skb_pp_cow_data()
965 consume_skb(nskb); in skb_pp_cow_data()
974 *pskb = nskb; in skb_pp_cow_data()
1902 static int skb_zerocopy_clone(struct sk_buff *nskb, struct sk_buff *orig, in skb_zerocopy_clone() argument
1906 if (skb_zcopy(nskb)) { in skb_zerocopy_clone()
1912 if (skb_uarg(nskb) == skb_uarg(orig)) in skb_zerocopy_clone()
1914 if (skb_copy_ubufs(nskb, GFP_ATOMIC)) in skb_zerocopy_clone()
1917 skb_zcopy_set(nskb, skb_uarg(orig), NULL); in skb_zerocopy_clone()
2409 struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); in skb_expand_head() local
2411 if (unlikely(!nskb)) in skb_expand_head()
2415 skb_set_owner_w(nskb, sk); in skb_expand_head()
2417 skb = nskb; in skb_expand_head()
4571 struct sk_buff *nskb, *tmp; in skb_segment_list() local
4584 nskb = list_skb; in skb_segment_list()
4588 delta_truesize += nskb->truesize; in skb_segment_list()
4589 if (skb_shared(nskb)) { in skb_segment_list()
4590 tmp = skb_clone(nskb, GFP_ATOMIC); in skb_segment_list()
4592 consume_skb(nskb); in skb_segment_list()
4593 nskb = tmp; in skb_segment_list()
4594 err = skb_unclone(nskb, GFP_ATOMIC); in skb_segment_list()
4601 skb->next = nskb; in skb_segment_list()
4603 tail->next = nskb; in skb_segment_list()
4606 nskb->next = list_skb; in skb_segment_list()
4610 tail = nskb; in skb_segment_list()
4612 delta_len += nskb->len; in skb_segment_list()
4614 skb_push(nskb, -skb_network_offset(nskb) + offset); in skb_segment_list()
4616 skb_release_head_state(nskb); in skb_segment_list()
4617 len_diff = skb_network_header_len(nskb) - skb_network_header_len(skb); in skb_segment_list()
4618 __copy_skb_header(nskb, skb); in skb_segment_list()
4620 skb_headers_offset_update(nskb, skb_headroom(nskb) - skb_headroom(skb)); in skb_segment_list()
4621 nskb->transport_header += len_diff; in skb_segment_list()
4623 nskb->data - tnl_hlen, in skb_segment_list()
4626 if (skb_needs_linearize(nskb, features) && in skb_segment_list()
4627 __skb_linearize(nskb)) in skb_segment_list()
4768 struct sk_buff *nskb; in skb_segment() local
4787 nskb = skb_clone(list_skb, GFP_ATOMIC); in skb_segment()
4788 if (unlikely(!nskb)) in skb_segment()
4811 if (unlikely(pskb_trim(nskb, len))) { in skb_segment()
4812 kfree_skb(nskb); in skb_segment()
4816 hsize = skb_end_offset(nskb); in skb_segment()
4817 if (skb_cow_head(nskb, doffset + headroom)) { in skb_segment()
4818 kfree_skb(nskb); in skb_segment()
4822 nskb->truesize += skb_end_offset(nskb) - hsize; in skb_segment()
4823 skb_release_head_state(nskb); in skb_segment()
4824 __skb_push(nskb, doffset); in skb_segment()
4831 nskb = __alloc_skb(hsize + doffset + headroom, in skb_segment()
4835 if (unlikely(!nskb)) in skb_segment()
4838 skb_reserve(nskb, headroom); in skb_segment()
4839 __skb_put(nskb, doffset); in skb_segment()
4843 tail->next = nskb; in skb_segment()
4845 segs = nskb; in skb_segment()
4846 tail = nskb; in skb_segment()
4848 __copy_skb_header(nskb, head_skb); in skb_segment()
4850 skb_headers_offset_update(nskb, skb_headroom(nskb) - headroom); in skb_segment()
4851 skb_reset_mac_len(nskb); in skb_segment()
4854 nskb->data - tnl_hlen, in skb_segment()
4857 if (nskb->len == len + doffset) in skb_segment()
4862 if (!nskb->remcsum_offload) in skb_segment()
4863 nskb->ip_summed = CHECKSUM_NONE; in skb_segment()
4864 SKB_GSO_CB(nskb)->csum = in skb_segment()
4866 skb_put(nskb, in skb_segment()
4869 SKB_GSO_CB(nskb)->csum_start = in skb_segment()
4870 skb_headroom(nskb) + doffset; in skb_segment()
4872 if (skb_copy_bits(head_skb, offset, skb_put(nskb, len), len)) in skb_segment()
4878 nskb_frag = skb_shinfo(nskb)->frags; in skb_segment()
4881 skb_put(nskb, hsize), hsize); in skb_segment()
4883 skb_shinfo(nskb)->flags |= skb_shinfo(head_skb)->flags & in skb_segment()
4886 if (skb_zerocopy_clone(nskb, frag_skb, GFP_ATOMIC)) in skb_segment()
4892 skb_zerocopy_clone(nskb, list_skb, in skb_segment()
4913 if (unlikely(skb_shinfo(nskb)->nr_frags >= in skb_segment()
4931 skb_shinfo(nskb)->nr_frags++; in skb_segment()
4946 nskb->data_len = len - hsize; in skb_segment()
4947 nskb->len += nskb->data_len; in skb_segment()
4948 nskb->truesize += nskb->data_len; in skb_segment()
4952 if (skb_has_shared_frag(nskb) && in skb_segment()
4953 __skb_linearize(nskb)) in skb_segment()
4956 if (!nskb->remcsum_offload) in skb_segment()
4957 nskb->ip_summed = CHECKSUM_NONE; in skb_segment()
4958 SKB_GSO_CB(nskb)->csum = in skb_segment()
4959 skb_checksum(nskb, doffset, in skb_segment()
4960 nskb->len - doffset, 0); in skb_segment()
4961 SKB_GSO_CB(nskb)->csum_start = in skb_segment()
4962 skb_headroom(nskb) + doffset; in skb_segment()