linux/tools/testing/selftests/net
Yan Zhai eaf4268850 udp: gso: do not drop small packets when PMTU reduces
[ Upstream commit 235174b2be ]

Commit 4094871db1 ("udp: only do GSO if # of segs > 1") avoided GSO
for small packets. But the kernel currently dismisses GSO requests only
after checking MTU/PMTU on gso_size. This means any packets, regardless
of their payload sizes, could be dropped when PMTU becomes smaller than
requested gso_size. We encountered this issue in production and it
caused a reliability problem that new QUIC connection cannot be
established before PMTU cache expired, while non GSO sockets still
worked fine at the same time.

Ideally, do not check any GSO related constraints when payload size is
smaller than requested gso_size, and return EMSGSIZE instead of EINVAL
on MTU/PMTU check failure to be more specific on the error cause.

Fixes: 4094871db1 ("udp: only do GSO if # of segs > 1")
Signed-off-by: Yan Zhai <yan@cloudflare.com>
Suggested-by: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-02-17 09:40:12 +01:00
..
af_unix selftests/net: unix: fix unused variable compiler warning 2023-12-08 08:52:22 +01:00
forwarding selftests: net: no_forwarding: fix VID for $swp2 in one_bridge_two_pvids() test 2024-10-17 15:24:24 +02:00
hsr selftests: hsr: Extend the testsuite to also cover HSRv1. 2023-09-18 08:26:19 +01:00
mptcp selftests: mptcp: avoid spurious errors on disconnect 2025-01-23 17:21:15 +01:00
openvswitch selftests: openvswitch: fix tcpdump execution 2024-12-27 13:58:49 +01:00
.gitignore selftests/net: Add log.txt and tools to .gitignore 2023-08-20 15:15:41 +01:00
altnames.sh selftest: net: fix typo in altname test 2021-09-12 10:48:26 +01:00
amt.sh selftests: net: kill smcrouted in the cleanup logic in amt.sh 2024-06-12 11:12:47 +02:00
arp_ndisc_evict_nocarrier.sh selftests: net: return non-zero for failures reported in arp_ndisc_evict_nocarrier 2023-01-01 11:59:53 +00:00
arp_ndisc_untracked_subnets.sh selftests/net: specify the interface when do arping 2024-01-25 15:35:22 -08:00
bareudp.sh selftests: set conf.all.rp_filter=0 in bareudp.sh 2020-11-12 16:14:38 -08:00
big_tcp.sh selftests: net: let big_tcp test cope with slow env 2024-02-16 19:10:50 +01:00
bind_bhash.c selftests/net: Add test for timing a bind request to a port with a populated bhash entry 2022-08-24 19:30:09 -07:00
bind_bhash.sh selftests/net: Improve bind_bhash.sh to accommodate predictable network interface names 2023-09-10 18:49:29 +01:00
bind_timewait.c tcp: Add selftest for bind() and TIME_WAIT. 2022-12-30 07:25:53 +00:00
bind_wildcard.c selftest: tcp: Add v4-mapped-v6 cases in bind_wildcard.c. 2023-09-13 07:18:04 +01:00
cmsg_ipv6.sh selftests: cmsg_ipv6: repeat the exact packet 2024-02-16 19:10:50 +01:00
cmsg_sender.c selftests/net: fix a char signedness issue 2023-12-08 08:52:22 +01:00
cmsg_so_mark.sh selftests: net: cmsg_so_mark: test with SO_MARK set by setsockopt 2022-02-10 15:04:51 +00:00
cmsg_time.sh selftests: net: test standard socket cmsgs across UDP and ICMP sockets 2022-02-10 15:04:52 +00:00
config selftests: net: add missing config for amt.sh 2024-06-12 11:11:51 +02:00
csum.c selftests: net: csum: Fix checksums for packets with non-zero padding 2024-09-18 19:24:09 +02:00
devlink_port_split.py selftests: net: devlink_port_split.py: skip test if no suitable device available 2023-03-16 17:38:05 -07:00
drop_monitor_tests.sh selftests: net: Add drop monitor test 2020-09-30 18:01:26 -07:00
fcnal-test.sh Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-06-22 18:40:38 -07:00
fib-onlink-tests.sh selftests: fib-onlink: Make quiet by default 2019-05-22 17:50:24 -07:00
fib_nexthop_multiprefix.sh selftests/net: fix grep checking for fib_nexthop_multiprefix 2024-01-25 15:35:26 -08:00
fib_nexthop_nongw.sh selftests/net: test nexthop without gw 2022-07-14 14:41:19 +02:00
fib_nexthops.sh Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-08-10 14:10:53 -07:00
fib_rule_tests.sh selftests: fib_rule_tests: Test UDP and TCP connections with DSCP rules. 2023-02-09 22:49:04 -08:00
fib_tests.sh ipv4: Fix incorrect TOS in fibmatch route get reply 2024-08-03 08:54:05 +02:00
fin_ack_lat.c selftests: net: Add FIN_ACK processing order related latency spike test 2020-02-02 13:33:21 -08:00
fin_ack_lat.sh selftests: net: Add FIN_ACK processing order related latency spike test 2020-02-02 13:33:21 -08:00
gre_gso.sh selftests: net: switch to socat in the GSO GRE test 2021-11-12 19:59:01 -08:00
gro.c selftests/net: fix gro.c compilation failure due to non-existent opt_ipproto_off 2024-07-18 13:21:24 +02:00
gro.sh selftests/net: allow GRO coalesce test on veth 2021-08-26 12:03:49 +01:00
hwtstamp_config.c selftests/net: replace manual array size calc with ARRAYSIZE macro. 2023-07-18 17:43:51 -07:00
icmp.sh selftests/net: Add icmp.sh for testing ICMP dummy address responses 2021-06-18 12:13:24 -07:00
icmp_redirect.sh selftests: icmp_redirect: pass xfail=0 to log_test() 2021-12-12 12:56:41 +00:00
in_netns.sh selftests/net: fix in_netns.sh script 2018-03-07 12:26:05 -05:00
io_uring_zerocopy_tx.c selftest/net: adjust io_uring sendzc notif handling 2022-09-23 14:57:27 -06:00
io_uring_zerocopy_tx.sh selftests/net: don't tests batched TCP io_uring zc 2022-11-02 08:27:24 -06:00
ioam6.sh selftests: net: fix IOAM test skip return code 2022-08-02 09:51:31 +02:00
ioam6_parser.c selftests: net: ioam: expect support for Queue depth data 2022-01-21 19:26:39 -08:00
ip6_gre_headroom.sh selftests: net: Test headroom handling of ip6_gre devices 2018-06-26 23:03:01 +09:00
ip_defrag.c selftests: net: ip_defrag: ignore EPERM 2020-06-02 15:54:20 -07:00
ip_defrag.sh selftests: net: ip_defrag: modprobe missing nf_defrag_ipv6 support 2020-07-17 12:49:18 -07:00
ip_local_port_range.c selftests/net: fix uninitialized variables 2024-07-11 12:49:08 +02:00
ip_local_port_range.sh selftests/net: Cover the IP_LOCAL_PORT_RANGE socket option 2023-01-25 22:45:00 -08:00
ipsec.c selftests/net/ipsec: Fix Null pointer dereference in rtattr_pack() 2025-02-17 09:40:09 +01:00
ipv6_flowlabel.c ping: support ipv6 ping socket flow labels 2022-07-22 12:40:27 +01:00
ipv6_flowlabel.sh ping: support ipv6 ping socket flow labels 2022-07-22 12:40:27 +01:00
ipv6_flowlabel_mgr.c selftests/net: ipv6 flowlabel 2019-05-28 17:18:53 -07:00
ipv6_route_update_soft_lockup.sh ipv6: Fix soft lockups in fib6_select_path under high next hop churn 2025-02-01 18:37:52 +01:00
l2_tos_ttl_inherit.sh selftests/net: l2_tos_ttl_inherit.sh: Ensure environment cleanup on failure. 2023-01-10 10:13:52 +01:00
l2tp.sh selftests: Make l2tp.sh executable 2019-10-22 14:01:35 -07:00
lib.sh selftests: net: lib: kill PIDs before del netns 2024-08-29 17:33:21 +02:00
Makefile ipv6: Fix soft lockups in fib6_select_path under high next hop churn 2025-02-01 18:37:52 +01:00
msg_zerocopy.c selftests: make order checking verbose in msg_zerocopy selftest 2024-07-11 12:49:14 +02:00
msg_zerocopy.sh selftests: extend zerocopy tests to udp 2018-12-03 15:58:32 -08:00
nat6to4.c selftests/net: mv bpf/nat6to4.c to net folder 2023-01-19 13:25:53 +01:00
ndisc_unsolicited_na_test.sh net/ipv6: Expand and rename accept_unsolicited_na to accept_untracked_na 2022-05-31 11:36:57 +02:00
net_helper.sh selftests: net: more strict check in net_helper 2024-06-16 13:47:48 +02:00
netdevice.sh selftests: net: return Kselftest Skip code for skipped tests 2018-05-30 15:29:06 -06:00
netns-name.sh selftests: net: add very basic test for netdev names and namespaces 2023-10-19 15:51:16 +02:00
nettest.c selftests: Add SO_DONTROUTE option to nettest. 2023-05-12 09:43:56 +01:00
pmtu.sh selftests: net: really check for bg process completion 2024-12-09 10:32:10 +01:00
psock_fanout.c selftests: net: fix array_size.cocci warning 2022-03-17 15:21:16 +01:00
psock_lib.h selftests/net: replace manual array size calc with ARRAYSIZE macro. 2023-07-18 17:43:51 -07:00
psock_snd.c selftests/net: enable lo.accept_local in psock_snd test 2022-05-25 21:58:35 -07:00
psock_snd.sh selftests/net: remove min gso test in packet_snd 2021-08-02 10:34:04 +01:00
psock_tpacket.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 222 2019-05-30 11:29:55 -07:00
reuseaddr_conflict.c selftests: reuseaddr_conflict: add missing new line at the end of the output 2024-04-10 16:35:53 +02:00
reuseaddr_ports_exhausted.c selftests/net: fix warnings on reuseaddr_ports_exhausted 2021-03-16 15:01:21 -07:00
reuseaddr_ports_exhausted.sh selftests: net: Add SO_REUSEADDR test to check if 4-tuples are fully utilized. 2020-03-12 12:08:09 -07:00
reuseport_addr_any.c selftests/net: add definition for SOL_DCCP to fix compilation errors for old libc 2020-03-21 20:23:10 -07:00
reuseport_addr_any.sh selftests: net: test that listening sockets match on address properly 2018-12-14 15:55:20 -08:00
reuseport_bpf.c selftests: Fix the if conditions of in test_extra_filter() 2022-09-27 11:00:02 +02:00
reuseport_bpf_cpu.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
reuseport_bpf_numa.c selftests: net: fix array_size.cocci warning 2022-03-07 12:23:27 +00:00
reuseport_dualstack.c selftests: net: reuseport_dualstack: fix uninitalized parameter 2019-11-01 15:11:02 -07:00
route_localnet.sh selftests: add route_localnet test script 2019-06-24 09:02:47 -07:00
rps_default_mask.sh selftests: net: fix rps_default_mask with >32 CPUs 2024-01-31 16:19:04 -08:00
rtnetlink.sh selftests: rtnetlink: add MACsec offload tests 2023-07-14 09:16:53 +01:00
run_afpackettests selftests/net: Use kselftest skip code for skipped tests 2021-08-24 16:49:09 -07:00
run_netsocktests selftests/net: correct the return value for run_netsocktests 2019-04-19 14:39:51 -07:00
rxtimestamp.c selftests/net: remove ARRAY_SIZE define from individual tests 2021-12-10 17:50:57 -07:00
rxtimestamp.sh selftests/net: plug rxtimestamp test into kselftest framework 2020-06-23 20:36:46 -07:00
sctp_hello.c selftests: add a selftest for sctp vrf 2022-11-18 11:42:54 +00:00
sctp_vrf.sh selftests: add a selftest for sctp vrf 2022-11-18 11:42:54 +00:00
settings kselftests/net: adapt the timeout to the largest runtime 2022-01-13 12:53:22 +00:00
setup_loopback.sh selftests: net: Remove executable bits from library scripts 2024-10-17 15:24:13 +02:00
setup_veth.sh selftests: net: give more time for GRO aggregation 2024-02-05 20:14:35 +00:00
sk_bind_sendto_listen.c selftests/net: Add sk_bind_sendto_listen and sk_connect_zero_addr 2022-08-24 19:30:09 -07:00
sk_connect_zero_addr.c selftests/net: Add sk_bind_sendto_listen and sk_connect_zero_addr 2022-08-24 19:30:09 -07:00
so_incoming_cpu.c selftest: Don't reuse port for SO_INCOMING_CPU test. 2024-01-31 16:19:02 -08:00
so_netns_cookie.c tools/testing: add a selftest for SO_NETNS_COOKIE 2021-06-24 11:13:05 -07:00
so_txtime.c selftests/net: so_txtime: usage(): fix documentation of default clock 2022-05-03 13:18:26 +02:00
so_txtime.sh selftests/net: so_txtime multi-host support 2021-03-31 17:48:21 -07:00
socket.c selftests/net: remove ARRAY_SIZE define from individual tests 2021-12-10 17:50:57 -07:00
srv6_end_dt4_l3vpn_test.sh selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test 2023-05-11 18:01:38 -07:00
srv6_end_dt6_l3vpn_test.sh selftests/net: Use kselftest skip code for skipped tests 2021-08-24 16:49:09 -07:00
srv6_end_dt46_l3vpn_test.sh selftests: srv6: make srv6_end_dt46_l3vpn_test more robust 2023-04-28 09:51:40 +01:00
srv6_end_flavors_test.sh selftests: seg6: add selftest for PSP flavor in SRv6 End behavior 2023-02-16 13:18:06 +01:00
srv6_end_next_csid_l3vpn_test.sh selftests: seg6: add selftest for NEXT-C-SID flavor in SRv6 End behavior 2022-09-20 12:33:22 +02:00
srv6_end_x_next_csid_l3vpn_test.sh selftests: seg6: add selftest for NEXT-C-SID flavor in SRv6 End.X behavior 2023-08-15 18:51:47 -07:00
srv6_hencap_red_l3vpn_test.sh selftests: seg6: add selftest for SRv6 H.Encaps.Red behavior 2022-07-29 12:14:03 +01:00
srv6_hl2encap_red_l2vpn_test.sh selftests: seg6: add selftest for SRv6 H.L2Encaps.Red behavior 2022-07-29 12:14:03 +01:00
stress_reuseport_listen.c net: selftests: Stress reuseport listen 2022-05-12 16:52:18 -07:00
stress_reuseport_listen.sh net: selftests: Stress reuseport listen 2022-05-12 16:52:18 -07:00
tap.c selftests: add few test cases for tap driver 2022-08-05 08:59:15 +01:00
tcp_fastopen_backup_key.c selftests/net: remove ARRAY_SIZE define from individual tests 2021-12-10 17:50:57 -07:00
tcp_fastopen_backup_key.sh selftests: net: tcp_fastopen_backup_key.sh: fix shellcheck issue 2019-08-15 11:34:32 -07:00
tcp_inq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 253 2019-06-05 17:30:27 +02:00
tcp_mmap.c selftests/net: report rcv_mss in tcp_mmap 2023-08-02 11:40:49 +01:00
test_blackhole_dev.sh blackhole_dev: add a selftest 2019-07-01 19:34:46 -07:00
test_bpf.sh License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
test_bridge_backup_port.sh selftests: net: Fix bridge backup port test flakiness 2024-02-23 09:24:51 +01:00
test_bridge_neigh_suppress.sh selftests: test_bridge_neigh_suppress.sh: Fix failures due to duplicate MAC 2024-05-17 12:02:23 +02:00
test_ingress_egress_chaining.sh selftests: add selftest for chaining of tc ingress handling to egress 2022-10-19 14:04:36 +01:00
test_vxlan_fdb_changelink.sh selftests: net: Add test_vxlan_fdb_changelink.sh 2018-12-18 21:18:26 -08:00
test_vxlan_mdb.sh selftests: vxlan_mdb: Fix failures with old libnet 2024-04-10 16:35:42 +02:00
test_vxlan_nolocalbypass.sh selftests: net: vxlan: Fix selftest regression after changes in iproute2. 2023-06-11 21:05:53 +01:00
test_vxlan_under_vrf.sh selftests: test_vxlan_under_vrf: Fix broken test case 2022-03-25 17:00:11 -07:00
test_vxlan_vnifiltering.sh selftests: Fix failing VXLAN VNI filtering test 2023-02-08 16:54:03 -08:00
timestamping.c selftests/net: timestamping: Fix bind_phc check 2022-01-31 11:44:04 +00:00
tls.c net: tls, add test to capture error on large splice 2024-08-19 06:04:26 +02:00
toeplitz.c selftests/net: toeplitz: fix race on tpacket_v3 block close 2023-01-19 09:27:15 -08:00
toeplitz.sh selftests: net: Use "grep -E" instead of "egrep" 2022-12-02 20:56:41 -08:00
toeplitz_client.sh selftests/net: toeplitz test 2021-08-05 13:14:09 +01:00
traceroute.sh selftest: net: add some traceroute tests 2019-11-06 17:35:49 -08:00
tun.c selftest: tun: add test for NAPI dismantle 2022-06-30 11:34:10 -07:00
txring_overwrite.c selftests: txring_overwrite: fix incorrect test of mmap() return value 2019-07-08 15:39:38 -07:00
txtimestamp.c selftests: net: change fprintf format specifiers 2022-03-21 16:37:54 -07:00
txtimestamp.sh selftest: txtimestamp: fix net ns entry logic 2020-07-21 16:11:07 -07:00
udpgro.sh selftests: udpgro: report error when receive failed 2024-08-29 17:33:46 +02:00
udpgro_bench.sh selftests/net: synchronize udpgro tests' tx and rx connection 2024-06-16 13:47:31 +02:00
udpgro_frglist.sh selftests/net: synchronize udpgro tests' tx and rx connection 2024-06-16 13:47:31 +02:00
udpgro_fwd.sh selftests: net: gro fwd: update vxlan GRO test expectations 2024-04-10 16:35:52 +02:00
udpgso.c udp: gso: do not drop small packets when PMTU reduces 2025-02-17 09:40:12 +01:00
udpgso.sh selftests: udp gso with corking 2018-04-26 15:09:52 -04:00
udpgso_bench.sh selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs 2023-02-02 13:29:51 +01:00
udpgso_bench_rx.c selftests: net: cut more slack for gro fwd tests. 2024-02-16 19:10:48 +01:00
udpgso_bench_tx.c selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy benchmarking 2023-02-02 13:29:51 +01:00
unicast_extensions.sh selftests/net: change shebang to bash to support "source" 2024-02-16 19:10:48 +01:00
veth.sh selftests: net: remove dependency on ebpf tests 2024-02-05 20:14:34 +00:00
vrf-xfrm-tests.sh selftests: net: vrf-xfrm-tests: change authentication and encryption algos 2023-06-15 22:24:01 -07:00
vrf_route_leaking.sh selftests: vrf_route_leaking: remove ipv6_ping_frag from default testing 2023-08-20 15:25:10 +01:00
vrf_strict_mode_test.sh selftests: net: vrf_strict_mode_test: add support to select a test to run 2022-05-02 10:48:29 +02:00
xdp_dummy.c selftests: net: remove dependency on ebpf tests 2024-02-05 20:14:34 +00:00
xfrm_policy.sh xfrm: Fix wraparound in xfrm_policy_addr_delta() 2021-01-04 10:35:09 +01:00