This series fixes a bug in the complete phase of UDP in GRO, in which socket lookup fails due to using network_header when parsing encapsulated packets. The fix is to keep track of both outer and inner offsets.
The last commit leverages the first commit to remove some state from napi_gro_cb, and stateful code in {ipv6,inet}_gro_receive which may be unnecessarily complicated due to encapsulation support in GRO.
In addition, udpgro_fwd selftest is adjusted to include the socket lookup case for vxlan. This selftest will test its supposed functionality once local bind support is merged (https://lore.kernel.org/netdev/df300a49-7811-4126-a56a-a77100c8841b@gmail.co...).
Richard Gobert (3): net: gro: set {inner_,}network_header in receive phase selftests/net: add local address bind in vxlan selftest net: gro: move L3 flush checks to tcp_gro_receive
include/net/gro.h | 23 ++++--- net/8021q/vlan_core.c | 3 + net/core/gro.c | 3 - net/ipv4/af_inet.c | 44 ++------------ net/ipv4/tcp_offload.c | 73 ++++++++++++++++++----- net/ipv4/udp_offload.c | 2 +- net/ipv6/ip6_offload.c | 22 ++----- net/ipv6/tcpv6_offload.c | 2 +- net/ipv6/udp_offload.c | 2 +- tools/testing/selftests/net/udpgro_fwd.sh | 10 +++- 10 files changed, 97 insertions(+), 87 deletions(-)