Lines Matching refs:frag
568 struct sk_buff *frag, *frag2; in ip_do_fragment() local
577 skb_walk_frags(skb, frag) { in ip_do_fragment()
579 if (frag->len > mtu || in ip_do_fragment()
580 ((frag->len & 7) && frag->next) || in ip_do_fragment()
581 skb_headroom(frag) < hlen) in ip_do_fragment()
585 if (skb_shared(frag)) in ip_do_fragment()
588 BUG_ON(frag->sk); in ip_do_fragment()
590 frag->sk = skb->sk; in ip_do_fragment()
591 frag->destructor = sock_wfree; in ip_do_fragment()
593 skb->truesize -= frag->truesize; in ip_do_fragment()
600 frag = skb_shinfo(skb)->frag_list; in ip_do_fragment()
611 if (frag) { in ip_do_fragment()
612 frag->ip_summed = CHECKSUM_NONE; in ip_do_fragment()
613 skb_reset_transport_header(frag); in ip_do_fragment()
614 __skb_push(frag, hlen); in ip_do_fragment()
615 skb_reset_network_header(frag); in ip_do_fragment()
616 memcpy(skb_network_header(frag), iph, hlen); in ip_do_fragment()
617 iph = ip_hdr(frag); in ip_do_fragment()
618 iph->tot_len = htons(frag->len); in ip_do_fragment()
619 ip_copy_metadata(frag, skb); in ip_do_fragment()
621 ip_options_fragment(frag); in ip_do_fragment()
624 if (frag->next) in ip_do_fragment()
634 if (err || !frag) in ip_do_fragment()
637 skb = frag; in ip_do_fragment()
638 frag = skb->next; in ip_do_fragment()
647 while (frag) { in ip_do_fragment()
648 skb = frag->next; in ip_do_fragment()
649 kfree_skb(frag); in ip_do_fragment()
650 frag = skb; in ip_do_fragment()
657 if (frag2 == frag) in ip_do_fragment()