We see quite a few flakes during the TSO test against virtualized devices in NIPA. There's often 10-30 retransmissions during the test. Sometimes as many as 100. Set the retransmission threshold at 1/4th of the wire frame target.
Signed-off-by: Jakub Kicinski kuba@kernel.org --- CC: shuah@kernel.org CC: willemb@google.com CC: daniel.zahka@gmail.com CC: linux-kselftest@vger.kernel.org --- tools/testing/selftests/drivers/net/hw/tso.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/drivers/net/hw/tso.py b/tools/testing/selftests/drivers/net/hw/tso.py index c13dd5efa27a..0998e68ebaf0 100755 --- a/tools/testing/selftests/drivers/net/hw/tso.py +++ b/tools/testing/selftests/drivers/net/hw/tso.py @@ -60,16 +60,17 @@ from lib.py import bkg, cmd, defer, ethtool, ip, rand_port, wait_port_listen sock_wait_drain(sock) qstat_new = cfg.netnl.qstats_get({"ifindex": cfg.ifindex}, dump=True)[0]
- # No math behind the 10 here, but try to catch cases where - # TCP falls back to non-LSO. - ksft_lt(tcp_sock_get_retrans(sock), 10) - sock.close() - # Check that at least 90% of the data was sent as LSO packets. # System noise may cause false negatives. Also header overheads # will add up to 5% of extra packes... The check is best effort. total_lso_wire = len(buf) * 0.90 // cfg.dev["mtu"] total_lso_super = len(buf) * 0.90 // cfg.dev["tso_max_size"] + + # Make sure we have order of magnitude more LSO packets than + # retransmits, in case TCP retransmitted all the LSO packets. + ksft_lt(tcp_sock_get_retrans(sock), total_lso_wire / 4) + sock.close() + if should_lso: if cfg.have_stat_super_count: ksft_ge(qstat_new['tx-hw-gso-packets'] -
On 8/15/25 6:41 PM, Jakub Kicinski wrote:
We see quite a few flakes during the TSO test against virtualized devices in NIPA. There's often 10-30 retransmissions during the test. Sometimes as many as 100. Set the retransmission threshold at 1/4th of the wire frame target.
Did this issue preexist these commits: b25b44cd178c ("selftests: drv-net: tso: fix non-tunneled tso6 test case name") 2cfbcc5d8af9 ("selftests: drv-net: tso: fix vxlan tunnel flags to get correct gso_type") 266b835e5e84 ("selftests: drv-net: tso: enable test cases based on hw_features")
or is this a possible regression?
On Fri, 15 Aug 2025 21:41:37 -0400 Daniel Zahka wrote:
On 8/15/25 6:41 PM, Jakub Kicinski wrote:
We see quite a few flakes during the TSO test against virtualized devices in NIPA. There's often 10-30 retransmissions during the test. Sometimes as many as 100. Set the retransmission threshold at 1/4th of the wire frame target.
Did this issue preexist these commits: b25b44cd178c ("selftests: drv-net: tso: fix non-tunneled tso6 test case name") 2cfbcc5d8af9 ("selftests: drv-net: tso: fix vxlan tunnel flags to get correct gso_type") 266b835e5e84 ("selftests: drv-net: tso: enable test cases based on hw_features")
or is this a possible regression?
I think it existed before, but it was much harder to spot flakes prior to those fixes because the whole test was failing. Here's an example of 110 retransmits 3 weeks before those fixes: https://netdev-3.bots.linux.dev/vmksft-fbnic-qemu/results/192642/4-tso-py/st...
Hello:
This patch was applied to netdev/net-next.git (main) by Jakub Kicinski kuba@kernel.org:
On Fri, 15 Aug 2025 15:41:00 -0700 you wrote:
We see quite a few flakes during the TSO test against virtualized devices in NIPA. There's often 10-30 retransmissions during the test. Sometimes as many as 100. Set the retransmission threshold at 1/4th of the wire frame target.
Signed-off-by: Jakub Kicinski kuba@kernel.org
[...]
Here is the summary with links: - [net-next] selftests: drv-net: tso: increase the retransmit threshold https://git.kernel.org/netdev/net-next/c/eddc821f98af
You are awesome, thank you!
linux-kselftest-mirror@lists.linaro.org