Lines Matching refs:frag
541 struct sk_buff *frag, *frag2; in ip_fragment() local
550 skb_walk_frags(skb, frag) { in ip_fragment()
552 if (frag->len > mtu || in ip_fragment()
553 ((frag->len & 7) && frag->next) || in ip_fragment()
554 skb_headroom(frag) < hlen) in ip_fragment()
558 if (skb_shared(frag)) in ip_fragment()
561 BUG_ON(frag->sk); in ip_fragment()
563 frag->sk = skb->sk; in ip_fragment()
564 frag->destructor = sock_wfree; in ip_fragment()
566 skb->truesize -= frag->truesize; in ip_fragment()
573 frag = skb_shinfo(skb)->frag_list; in ip_fragment()
584 if (frag) { in ip_fragment()
585 frag->ip_summed = CHECKSUM_NONE; in ip_fragment()
586 skb_reset_transport_header(frag); in ip_fragment()
587 __skb_push(frag, hlen); in ip_fragment()
588 skb_reset_network_header(frag); in ip_fragment()
589 memcpy(skb_network_header(frag), iph, hlen); in ip_fragment()
590 iph = ip_hdr(frag); in ip_fragment()
591 iph->tot_len = htons(frag->len); in ip_fragment()
592 ip_copy_metadata(frag, skb); in ip_fragment()
594 ip_options_fragment(frag); in ip_fragment()
597 if (frag->next) in ip_fragment()
607 if (err || !frag) in ip_fragment()
610 skb = frag; in ip_fragment()
611 frag = skb->next; in ip_fragment()
620 while (frag) { in ip_fragment()
621 skb = frag->next; in ip_fragment()
622 kfree_skb(frag); in ip_fragment()
623 frag = skb; in ip_fragment()
630 if (frag2 == frag) in ip_fragment()