amt_send_multicast_data() never calls udp_tunnel_handle_offloads(),
unlike other UDP tunnels. With tx checksum offload on the amt device (off
by default), a UDP_SEGMENT burst through the relay is dropped before
patch 1 and delivered after it. Patch 2 adds the selftest.

This follows Eric Dumazet's suggestion on my withdrawn [PATCH net] "amt:
do not offer software GSO on the amt device":
https://lore.kernel.org/all/[email protected]/

Not touched: amt advertises NETIF_F_GSO_FRAGLIST and skb_copy_expand()
refuses such skbs with a WARN_ON_ONCE(). I have not reproduced it, and
it would be a separate fix.

v3:
 - patch 2: fail a case when one of its captures dies (Sashiko review)
 - patch 2: also check amtg rx_dropped, as the changelog says, and
   mention the plain-datagram cases there (Sashiko review)
 - patch 2: wait for a fresh READY, and fail a case when a helper does
   not start (Sashiko review)
 - patch 2: fail, not skip, when no relayed probe gets through (Sashiko
   review)
 - patch 2: fail, not skip, a tx-on UDP_SEGMENT case in which no GSO
   skb reaches amt_dev_xmit(), as the changelog says
 - patch 2: make amt_gso reject sizes that would overflow its buffers
   (Sashiko review)
 - patch 1 is unchanged
v2: https://lore.kernel.org/all/[email protected]/
 - shorten the changelogs, add Suggested-by, and move the testing notes
   below the "---" (Eric); patch 1's code is unchanged, one comment is
   corrected
 - patch 2: fix the shellcheck and 80-column checkpatch findings reported
   by the netdev CI, skip when AF_PACKET is not available (v1 reported no
   result and exit 0), add CONFIG_PACKET to the config, drop dead options
   and code
v1: https://lore.kernel.org/all/[email protected]/

Omar Ramadan (2):
  amt: mark relay data as a UDP tunnel packet before sending it
  selftests: net: add an amt test for UDP_SEGMENT through the relay

 drivers/net/amt.c                      |  10 +
 tools/testing/selftests/net/.gitignore |   1 +
 tools/testing/selftests/net/Makefile   |   2 +
 tools/testing/selftests/net/amt_gso.c  | 462 +++++++++++++++++++++++++
 tools/testing/selftests/net/amt_gso.sh | 282 +++++++++++++++
 tools/testing/selftests/net/config     |   1 +
 6 files changed, 758 insertions(+)
 create mode 100644 tools/testing/selftests/net/amt_gso.c
 create mode 100755 tools/testing/selftests/net/amt_gso.sh

-- 
2.50.1 (Apple Git-155)


Reply via email to