Lines Matching refs:frag
594 iter->frag = skb_shinfo(skb)->frag_list; in ip_fraglist_init()
613 struct sk_buff *frag; in ip_fraglist_prepare() local
615 frag = iter->frag; in ip_fraglist_prepare()
616 frag->ip_summed = CHECKSUM_NONE; in ip_fraglist_prepare()
617 skb_reset_transport_header(frag); in ip_fraglist_prepare()
618 __skb_push(frag, hlen); in ip_fraglist_prepare()
619 skb_reset_network_header(frag); in ip_fraglist_prepare()
620 memcpy(skb_network_header(frag), iph, hlen); in ip_fraglist_prepare()
621 iter->iph = ip_hdr(frag); in ip_fraglist_prepare()
623 iph->tot_len = htons(frag->len); in ip_fraglist_prepare()
624 ip_copy_metadata(frag, skb); in ip_fraglist_prepare()
627 if (frag->next) in ip_fraglist_prepare()
797 struct sk_buff *frag, *frag2; in ip_do_fragment() local
807 skb_walk_frags(skb, frag) { in ip_do_fragment()
809 if (frag->len > mtu || in ip_do_fragment()
810 ((frag->len & 7) && frag->next) || in ip_do_fragment()
811 skb_headroom(frag) < hlen + ll_rs) in ip_do_fragment()
815 if (skb_shared(frag)) in ip_do_fragment()
818 BUG_ON(frag->sk); in ip_do_fragment()
820 frag->sk = skb->sk; in ip_do_fragment()
821 frag->destructor = sock_wfree; in ip_do_fragment()
823 skb->truesize -= frag->truesize; in ip_do_fragment()
829 if (iter.frag) in ip_do_fragment()
830 ip_options_fragment(iter.frag); in ip_do_fragment()
835 if (iter.frag) { in ip_do_fragment()
836 IPCB(iter.frag)->flags = IPCB(skb)->flags; in ip_do_fragment()
845 if (err || !iter.frag) in ip_do_fragment()
856 kfree_skb_list(iter.frag); in ip_do_fragment()
863 if (frag2 == frag) in ip_do_fragment()