All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v6 0/6] net: gro: encapsulation bug fix and flush checks improvements
@ 2024-04-10 15:34 Richard Gobert
  2024-04-10 15:34 ` [PATCH net-next v6 1/6] net: gro: add flush check in udp_gro_receive_segment Richard Gobert
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Richard Gobert @ 2024-04-10 15:34 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, willemdebruijn.kernel, shuah,
	dsahern, aduyck, netdev, linux-kernel, linux-kselftest
  Cc: Richard Gobert

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 pass p_off parameter in *_gro_complete.

Next, the fields network_offset and inner_network_offset are added to
napi_gro_cb, and are both set during the receive phase of GRO. This is then
leveraged in the next commit to remove flush_id 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.com/).

v5 -> v6:
 - Write inner_network_offset in vxlan, geneve and ipsec
 - Ignore is_atomic when DF=0
 - v5:
   https://lore.kernel.org/all/20240408141720.98832-1-richardbgobert@gmail.com/

v4 -> v5:
 - Add 1st commit - flush id checks in udp_gro_receive segment which can be
   backported by itself
 - Add TCP measurements for the 5th commit
 - Add flush id tests to ensure flush id logic is preserved in GRO
 - Simplify gro_inet_flush by removing a branch
 - v4:
   https://lore.kernel.org/all/20240325182543.87683-1-richardbgobert@gmail.com/

v3 -> v4:
 - Fix code comment and commit message typos
 - v3:
   https://lore.kernel.org/all/f939c84a-2322-4393-a5b0-9b1e0be8ed8e@gmail.com/

v2 -> v3:
 - Use napi_gro_cb instead of skb->{offset}
 - v2:
   https://lore.kernel.org/all/2ce1600b-e733-448b-91ac-9d0ae2b866a4@gmail.com/

v1 -> v2:
 - Pass p_off in *_gro_complete to fix UDP bug
 - Remove more conditionals and memory fetches from inet_gro_flush
 - v1:
   https://lore.kernel.org/netdev/e1d22505-c5f8-4c02-a997-64248480338b@gmail.com/

Richard Gobert (6):
  net: gro: add flush check in udp_gro_receive_segment
  net: gro: add p_off param in *_gro_complete
  selftests/net: add local address bind in vxlan selftest
  net: gro: add {inner_}network_offset to napi_gro_cb
  net: gro: move L3 flush checks to tcp_gro_receive and udp_gro_receive_segment
  selftests/net: add flush id selftests

 drivers/net/geneve.c                      |   8 +-
 drivers/net/vxlan/vxlan_core.c            |  12 +-
 include/linux/etherdevice.h               |   2 +-
 include/linux/netdevice.h                 |   3 +-
 include/linux/udp.h                       |   2 +-
 include/net/gro.h                         |  93 ++++++++++++--
 include/net/inet_common.h                 |   2 +-
 include/net/tcp.h                         |   6 +-
 include/net/udp.h                         |   8 +-
 include/net/udp_tunnel.h                  |   2 +-
 net/8021q/vlan_core.c                     |   6 +-
 net/core/gro.c                            |   7 +-
 net/ethernet/eth.c                        |   5 +-
 net/ipv4/af_inet.c                        |  54 +-------
 net/ipv4/fou_core.c                       |   9 +-
 net/ipv4/gre_offload.c                    |   6 +-
 net/ipv4/tcp_offload.c                    |  22 +---
 net/ipv4/udp.c                            |   3 +-
 net/ipv4/udp_offload.c                    |  31 +++--
 net/ipv6/ip6_offload.c                    |  41 +++---
 net/ipv6/tcpv6_offload.c                  |   7 +-
 net/ipv6/udp.c                            |   3 +-
 net/ipv6/udp_offload.c                    |  13 +-
 tools/testing/selftests/net/gro.c         | 144 ++++++++++++++++++++++
 tools/testing/selftests/net/udpgro_fwd.sh |  10 +-
 25 files changed, 338 insertions(+), 161 deletions(-)

-- 
2.36.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2024-04-12 15:37 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-10 15:34 [PATCH net-next v6 0/6] net: gro: encapsulation bug fix and flush checks improvements Richard Gobert
2024-04-10 15:34 ` [PATCH net-next v6 1/6] net: gro: add flush check in udp_gro_receive_segment Richard Gobert
2024-04-10 15:34 ` [PATCH net-next v6 2/6] net: gro: add p_off param in *_gro_complete Richard Gobert
2024-04-11  2:21   ` Willem de Bruijn
2024-04-11  3:44     ` Willem de Bruijn
2024-04-11 16:00       ` Richard Gobert
2024-04-11 16:02       ` Willem de Bruijn
2024-04-10 15:34 ` [PATCH net-next v6 3/6] selftests/net: add local address bind in vxlan selftest Richard Gobert
2024-04-10 15:34 ` [PATCH net-next v6 4/6] net: gro: add {inner_}network_offset to napi_gro_cb Richard Gobert
2024-04-10 15:34 ` [PATCH net-next v6 5/6] net: gro: move L3 flush checks to tcp_gro_receive and udp_gro_receive_segment Richard Gobert
2024-04-11  2:45   ` Willem de Bruijn
2024-04-11 16:07     ` Richard Gobert
2024-04-11 21:35       ` Willem de Bruijn
2024-04-12 15:37         ` Richard Gobert
2024-04-10 15:34 ` [PATCH net-next v6 6/6] selftests/net: add flush id selftests Richard Gobert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.