On Wed, 11 Nov 2020 20:44:08 +0000 Alexander Lobakin wrote:
> While testing UDP GSO fraglists forwarding through driver that uses
> Fast GRO (via napi_gro_frags()), I was observing lots of out-of-order
> iperf packets:
> 
> [ ID] Interval           Transfer     Bitrate         Jitter
> [SUM]  0.0-40.0 sec  12106 datagrams received out-of-order
> 
> Simple switch to napi_gro_receive() or any other method without frag0
> shortcut completely resolved them.
> 
> I've found two incorrect header accesses in GRO receive callback(s):
>  - udp_hdr() (instead of udp_gro_udphdr()) that always points to junk
>    in "fast" mode and could probably do this in "regular".
>    This was the actual bug that caused all out-of-order delivers;
>  - udp{4,6}_lib_lookup_skb() -> ip{,v6}_hdr() (instead of
>    skb_gro_network_header()) that potentionally might return odd
>    pointers in both modes.
> 
> Each patch addresses one of these two issues.
> 
> This doesn't cover a support for nested tunnels as it's out of the
> subject and requires more invasive changes. It will be handled
> separately in net-next series.

Applied, thanks!

Reply via email to