Lines Matching refs:gso_skb

480 struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb,  in __udp_gso_segment()  argument
483 struct sock *sk = gso_skb->sk; in __udp_gso_segment()
493 mss = skb_shinfo(gso_skb)->gso_size; in __udp_gso_segment()
494 if (gso_skb->len <= sizeof(*uh) + mss) in __udp_gso_segment()
497 if (unlikely(skb_checksum_start(gso_skb) != in __udp_gso_segment()
498 skb_transport_header(gso_skb) && in __udp_gso_segment()
499 !(skb_shinfo(gso_skb)->gso_type & SKB_GSO_FRAGLIST))) in __udp_gso_segment()
505 if (gso_skb->ip_summed != CHECKSUM_PARTIAL) in __udp_gso_segment()
508 if (skb_gso_ok(gso_skb, features | NETIF_F_GSO_ROBUST)) { in __udp_gso_segment()
510 skb_shinfo(gso_skb)->gso_segs = DIV_ROUND_UP(gso_skb->len - sizeof(*uh), in __udp_gso_segment()
515 if (skb_shinfo(gso_skb)->gso_type & SKB_GSO_FRAGLIST) { in __udp_gso_segment()
517 if (skb_pagelen(gso_skb) - sizeof(*uh) == skb_shinfo(gso_skb)->gso_size) in __udp_gso_segment()
518 return __udp_gso_segment_list(gso_skb, features, is_ipv6); in __udp_gso_segment()
520 ret = __skb_linearize(gso_skb); in __udp_gso_segment()
525 gso_skb->csum_start = skb_transport_header(gso_skb) - gso_skb->head; in __udp_gso_segment()
526 gso_skb->csum_offset = offsetof(struct udphdr, check); in __udp_gso_segment()
527 gso_skb->ip_summed = CHECKSUM_PARTIAL; in __udp_gso_segment()
529 uh = udp_hdr(gso_skb); in __udp_gso_segment()
531 uh->check = ~udp_v6_check(gso_skb->len, in __udp_gso_segment()
532 &ipv6_hdr(gso_skb)->saddr, in __udp_gso_segment()
533 &ipv6_hdr(gso_skb)->daddr, 0); in __udp_gso_segment()
535 uh->check = ~udp_v4_check(gso_skb->len, in __udp_gso_segment()
536 ip_hdr(gso_skb)->saddr, in __udp_gso_segment()
537 ip_hdr(gso_skb)->daddr, 0); in __udp_gso_segment()
540 skb_pull(gso_skb, sizeof(*uh)); in __udp_gso_segment()
543 copy_dtor = gso_skb->destructor == sock_wfree; in __udp_gso_segment()
545 gso_skb->destructor = NULL; in __udp_gso_segment()
546 gso_skb->sk = NULL; in __udp_gso_segment()
549 segs = skb_segment(gso_skb, features); in __udp_gso_segment()
552 gso_skb->destructor = sock_wfree; in __udp_gso_segment()
553 gso_skb->sk = sk; in __udp_gso_segment()
569 skb_shinfo(seg)->tskey = skb_shinfo(gso_skb)->tskey; in __udp_gso_segment()
571 (skb_shinfo(gso_skb)->tx_flags & SKBTX_ANY_TSTAMP); in __udp_gso_segment()
618 if (gso_skb->ip_summed == CHECKSUM_NONE) in __udp_gso_segment()
619 gso_skb->ip_summed = CHECKSUM_UNNECESSARY; in __udp_gso_segment()
623 int delta = sum_truesize - gso_skb->truesize; in __udp_gso_segment()