From: Willem de Bruijn <willemdebruijn.ker...@gmail.com> Date: Thu, 6 Jul 2017 13:57:20 -0400
> On Thu, Jul 6, 2017 at 10:43 AM, David Miller <da...@davemloft.net> wrote: >> From: Willem de Bruijn <willemdebruijn.ker...@gmail.com> >> Date: Wed, 5 Jul 2017 12:27:11 -0400 >> >>>>> --- a/net/ipv4/udp_offload.c >>>>> +++ b/net/ipv4/udp_offload.c >>>>> @@ -21,7 +21,7 @@ static struct sk_buff *__skb_udp_tunnel_segment(struct >>>>> sk_buff *skb, >>>>> __be16 new_protocol, bool is_ipv6) >>>> >>>> In this file, can now remove all of udp4_ufo_fragment, and >>>> udp6_ufo_fragment in net/ipv6. >>> >>> I had missed that this is used for tunneling with skb_udp_tunnel_segment. >>> But the core codepath should no longer be hit once SKB_GSO_UDP >>> is removed. >> >> Are you sure? I'm pretty sure all of the code remaining after my >> patch series is needed in order to handle doing TCP GRO through >> UDP tunneling encapsulation. >> >> Although the word "fragment" is in the function name, it's not doing >> IP fragmentation. Instead, it is "fragmenting" the batched UDP >> encapsulated frame into a series of individual UDP encapsulated ones. > > Isn't that case handled in the branch > > if (skb->encapsulation && > (skb_shinfo(skb)->gso_type & > (SKB_GSO_UDP_TUNNEL|SKB_GSO_UDP_TUNNEL_CSUM))) { > segs = skb_udp_tunnel_segment(skb, features, false); > goto out; > } > > It appears to be in a quick test I ran with FOU. You are correct, I respun the series with that code removed. Thanks!