* [PATCH net-next 0/3] selftests: drv-net: split up gro.py
@ 2026-08-31 16:37 Jakub Kicinski
2026-08-31 16:37 ` [PATCH net-next 1/3] selftests: drv-net: hw: rename gro_hw.py to gro_stats.py Jakub Kicinski
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Jakub Kicinski @ 2026-08-31 16:37 UTC (permalink / raw)
To: davem
Cc: netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb,
petrm, linux-kselftest, noren, Jakub Kicinski
gro.py runs its full set of cases three times over - against SW GRO,
HW GRO and LRO. It's our test with the longest runtime. The 318 cases
take 12m30s on mlx5 with a debug kernel.
We will likely add more subcases here as the time goes on, so it's
time to start splitting it up. Long runtime wastes time on retries
(if any of the 300+ cases fails we try to check if it's a real failure
or flake an re-run the whole thing). It also forces us to increase
timeout for the whole test suite.
Jakub Kicinski (3):
selftests: drv-net: hw: rename gro_hw.py to gro_stats.py
selftests: drv-net: split gro.py into one test per coalescing mode
selftests: drv-net: bump the timeout to 15min
tools/testing/selftests/drivers/net/Makefile | 9 ++-
.../testing/selftests/drivers/net/hw/Makefile | 2 +-
tools/testing/selftests/drivers/net/gro_hw.py | 14 ++++
.../drivers/net/{gro.py => gro_lib.py} | 68 +++++++++----------
.../testing/selftests/drivers/net/gro_lro.py | 15 ++++
tools/testing/selftests/drivers/net/gro_sw.py | 14 ++++
.../net/hw/{gro_hw.py => gro_stats.py} | 0
.../selftests/drivers/net/pppoe_gro.py | 46 +++++++++++++
tools/testing/selftests/drivers/net/settings | 2 +-
.../selftests/net/lib/ksft_setup_loopback.sh | 2 +-
10 files changed, 131 insertions(+), 41 deletions(-)
create mode 100755 tools/testing/selftests/drivers/net/gro_hw.py
rename tools/testing/selftests/drivers/net/{gro.py => gro_lib.py} (92%)
mode change 100755 => 100644
create mode 100755 tools/testing/selftests/drivers/net/gro_lro.py
create mode 100755 tools/testing/selftests/drivers/net/gro_sw.py
rename tools/testing/selftests/drivers/net/hw/{gro_hw.py => gro_stats.py} (100%)
create mode 100755 tools/testing/selftests/drivers/net/pppoe_gro.py
--
2.55.0
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH net-next 1/3] selftests: drv-net: hw: rename gro_hw.py to gro_stats.py 2026-08-31 16:37 [PATCH net-next 0/3] selftests: drv-net: split up gro.py Jakub Kicinski @ 2026-08-31 16:37 ` Jakub Kicinski 2026-08-31 19:52 ` Joe Damato 2026-08-31 16:37 ` [PATCH net-next 2/3] selftests: drv-net: split gro.py into one test per coalescing mode Jakub Kicinski ` (2 subsequent siblings) 3 siblings, 1 reply; 10+ messages in thread From: Jakub Kicinski @ 2026-08-31 16:37 UTC (permalink / raw) To: davem Cc: netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb, petrm, linux-kselftest, noren, Jakub Kicinski We need to free up the gro_hw.py name for the HW-GRO half of gro.py, which we need to split by mode (sw / hw / lro). The file checks mostly qstat counters, so name it after stats. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- tools/testing/selftests/drivers/net/hw/Makefile | 2 +- .../selftests/drivers/net/hw/{gro_hw.py => gro_stats.py} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename tools/testing/selftests/drivers/net/hw/{gro_hw.py => gro_stats.py} (100%) diff --git a/tools/testing/selftests/drivers/net/hw/Makefile b/tools/testing/selftests/drivers/net/hw/Makefile index 78bb0169350b..6105be8e590f 100644 --- a/tools/testing/selftests/drivers/net/hw/Makefile +++ b/tools/testing/selftests/drivers/net/hw/Makefile @@ -27,7 +27,7 @@ TEST_PROGS = \ ethtool_mm.sh \ ethtool_rmon.sh \ ethtool_std_stats.sh \ - gro_hw.py \ + gro_stats.py \ hw_stats_l3.sh \ hw_stats_l3_gre.sh \ iou-zcrx.py \ diff --git a/tools/testing/selftests/drivers/net/hw/gro_hw.py b/tools/testing/selftests/drivers/net/hw/gro_stats.py similarity index 100% rename from tools/testing/selftests/drivers/net/hw/gro_hw.py rename to tools/testing/selftests/drivers/net/hw/gro_stats.py -- 2.55.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 1/3] selftests: drv-net: hw: rename gro_hw.py to gro_stats.py 2026-08-31 16:37 ` [PATCH net-next 1/3] selftests: drv-net: hw: rename gro_hw.py to gro_stats.py Jakub Kicinski @ 2026-08-31 19:52 ` Joe Damato 0 siblings, 0 replies; 10+ messages in thread From: Joe Damato @ 2026-08-31 19:52 UTC (permalink / raw) To: Jakub Kicinski Cc: davem, netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb, petrm, linux-kselftest, noren On Mon, Aug 31, 2026 at 09:37:32AM -0700, Jakub Kicinski wrote: > We need to free up the gro_hw.py name for the HW-GRO half of gro.py, > which we need to split by mode (sw / hw / lro). The file checks mostly > qstat counters, so name it after stats. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > --- > tools/testing/selftests/drivers/net/hw/Makefile | 2 +- > .../selftests/drivers/net/hw/{gro_hw.py => gro_stats.py} | 0 > 2 files changed, 1 insertion(+), 1 deletion(-) > rename tools/testing/selftests/drivers/net/hw/{gro_hw.py => gro_stats.py} (100%) Reviewed-by: Joe Damato <joe@dama.to> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH net-next 2/3] selftests: drv-net: split gro.py into one test per coalescing mode 2026-08-31 16:37 [PATCH net-next 0/3] selftests: drv-net: split up gro.py Jakub Kicinski 2026-08-31 16:37 ` [PATCH net-next 1/3] selftests: drv-net: hw: rename gro_hw.py to gro_stats.py Jakub Kicinski @ 2026-08-31 16:37 ` Jakub Kicinski 2026-09-01 15:34 ` Joe Damato 2026-09-01 19:44 ` Jakub Kicinski 2026-08-31 16:37 ` [PATCH net-next 3/3] selftests: drv-net: bump the timeout to 15min Jakub Kicinski 2026-09-01 6:45 ` [PATCH net-next 0/3] selftests: drv-net: split up gro.py Nimrod Oren 3 siblings, 2 replies; 10+ messages in thread From: Jakub Kicinski @ 2026-08-31 16:37 UTC (permalink / raw) To: davem Cc: netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb, petrm, linux-kselftest, noren, Jakub Kicinski gro.py runs its full set of cases three times over - against SW GRO, HW GRO and LRO. It's our test with the longest runtime. The 318 cases take 12m30s on mlx5 with a debug kernel. Bumping the timeout for all tests feels wrong when we can so easily split the GRO test by execution mode. Shorter runtime also helps retry just the failing portion / mode (we retry failing tests to try to detect flakes vs real failures). Move the main logic to gro_lib.py and add one program per mode - gro_sw.py, gro_hw.py and gro_lro.py, 102 cases each. Move PPPoE to a dedicated test. It has been tacked onto the tests in an ugly way, and it only runs against SW GRO anyway. Note that unfortunately this will case a rename of all test cases. The mode moves from the case name to the test name gro.py test.sw_ipv4_data_same becomes gro_sw.py test.ipv4_data_same Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- We also saw 20min runs on gve, but those may have been errors. The GVE runner is very flaky and even when it runs it doesn't seem to execute the gro test. Perhaps because the test times out? --- tools/testing/selftests/drivers/net/Makefile | 9 ++- tools/testing/selftests/drivers/net/gro_hw.py | 14 ++++ .../drivers/net/{gro.py => gro_lib.py} | 68 +++++++++---------- .../testing/selftests/drivers/net/gro_lro.py | 15 ++++ tools/testing/selftests/drivers/net/gro_sw.py | 14 ++++ .../selftests/drivers/net/pppoe_gro.py | 46 +++++++++++++ .../selftests/net/lib/ksft_setup_loopback.sh | 2 +- 7 files changed, 129 insertions(+), 39 deletions(-) create mode 100755 tools/testing/selftests/drivers/net/gro_hw.py rename tools/testing/selftests/drivers/net/{gro.py => gro_lib.py} (92%) mode change 100755 => 100644 create mode 100755 tools/testing/selftests/drivers/net/gro_lro.py create mode 100755 tools/testing/selftests/drivers/net/gro_sw.py create mode 100755 tools/testing/selftests/drivers/net/pppoe_gro.py diff --git a/tools/testing/selftests/drivers/net/Makefile b/tools/testing/selftests/drivers/net/Makefile index d5bf4cb638a8..1f21e17d8c22 100644 --- a/tools/testing/selftests/drivers/net/Makefile +++ b/tools/testing/selftests/drivers/net/Makefile @@ -11,13 +11,16 @@ TEST_GEN_FILES := \ # end of TEST_GEN_FILES TEST_PROGS := \ - gro.py \ + gro_hw.py \ + gro_lro.py \ + gro_sw.py \ hds.py \ macsec.py \ napi_id.py \ napi_threaded.py \ netpoll_basic.py \ ping.py \ + pppoe_gro.py \ psp.py \ queues.py \ ring_reconfig.py \ @@ -27,6 +30,10 @@ TEST_PROGS := \ xdp.py \ # end of TEST_PROGS +TEST_FILES := \ + gro_lib.py \ +# end of TEST_FILES + # YNL files, must be before "include ..lib.mk" YNL_GEN_FILES := psp_responder TEST_GEN_FILES += $(YNL_GEN_FILES) diff --git a/tools/testing/selftests/drivers/net/gro_hw.py b/tools/testing/selftests/drivers/net/gro_hw.py new file mode 100755 index 000000000000..17ffe0167323 --- /dev/null +++ b/tools/testing/selftests/drivers/net/gro_hw.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: GPL-2.0 + +""" +GRO conformance tests against the HW GRO implementation (rx-gro-hw). + +See gro_lib.py for the list of test cases. +""" + +from gro_lib import gro_main + + +if __name__ == "__main__": + gro_main(__file__, "hw") diff --git a/tools/testing/selftests/drivers/net/gro.py b/tools/testing/selftests/drivers/net/gro_lib.py old mode 100755 new mode 100644 similarity index 92% rename from tools/testing/selftests/drivers/net/gro.py rename to tools/testing/selftests/drivers/net/gro_lib.py index 6ab8c97880d1..45ded8477a50 --- a/tools/testing/selftests/drivers/net/gro.py +++ b/tools/testing/selftests/drivers/net/gro_lib.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 # SPDX-License-Identifier: GPL-2.0 """ @@ -8,6 +7,13 @@ Validates that GRO coalescing works correctly by running the gro binary in different configurations and checking for correct packet coalescing behavior. +The same test cases are run against all three coalescing implementations, +one mode per test program, because a full sweep takes too long to fit in +a single test's timeout: + - gro_sw.py: SW GRO (generic-receive-offload) + - gro_hw.py: HW GRO (rx-gro-hw) + - gro_lro.py: LRO (large-receive-offload) + Test cases: - data_same: Same size data packets coalesce - data_lrg_sml: Large packet followed by smaller one coalesces @@ -323,32 +329,19 @@ def _run_gro_bin(cfg, test_name, protocol=None, num_flows=None, "ip_frag6", "ip_v6ext_same", "ip_v6ext_diff", ] - # Tests specific to PPPoE - pppoe_tests = [ - "data_same", "data_lrg_sml", "data_sml_lrg", "data_lrg_1byte", - "data_burst", "pppoe_sid", - ] + for protocol in ["ipv4", "ipv6", "ipip", "ip6ip6"]: + for test_name in common_tests: + yield protocol, test_name - for mode in ["sw", "hw", "lro"]: - for protocol in ["ipv4", "ipv6", "ipip", "ip6ip6"]: - for test_name in common_tests: - yield mode, protocol, test_name - - if protocol in ["ipv4", "ipip"]: - for test_name in ipv4_tests: - yield mode, protocol, test_name - elif protocol == "ipv6": - for test_name in ipv6_tests: - yield mode, protocol, test_name - - for mode in ["sw"]: - for protocol in ["pppoev4", "pppoev6"]: - for test_name in pppoe_tests: - yield mode, protocol, test_name + if protocol in ["ipv4", "ipip"]: + for test_name in ipv4_tests: + yield protocol, test_name + elif protocol == "ipv6": + for test_name in ipv6_tests: + yield protocol, test_name -@ksft_variants(_gro_variants()) -def test(cfg, mode, protocol, test_name): +def run_test(cfg, mode, protocol, test_name): """Run a single GRO test with retries.""" ipver = "6" if protocol[-1] == "6" else "4" @@ -383,16 +376,21 @@ def _run_gro_bin(cfg, test_name, protocol=None, num_flows=None, ksft_pr(f"Attempt {attempt + 1}/{max_retries} failed, retrying...") +@ksft_variants(_gro_variants()) +def test(cfg, mode, protocol, test_name): + """Run a single GRO test case.""" + run_test(cfg, mode, protocol, test_name) + + def _capacity_variants(): - """Generate variants for capacity test: mode x queue setup.""" + """Generate variants for capacity test: queue setup.""" setups = [ ("isolated", _setup_isolated_queue), ("1q", lambda cfg: _setup_queue_count(cfg, 1)), ("8q", lambda cfg: _setup_queue_count(cfg, 8)), ] - for mode in ["sw", "hw", "lro"]: - for name, func in setups: - yield KsftNamedVariant(f"{mode}_{name}", mode, func) + for name, func in setups: + yield KsftNamedVariant(name, func) @ksft_variants(_capacity_variants()) @@ -403,7 +401,7 @@ def _run_gro_bin(cfg, test_name, protocol=None, num_flows=None, Start with 8 flows and increase by 2x on each successful run. Retry up to 3 times on failure. - Variants combine mode (sw, hw, lro) with queue setup: + Queue setup variants: - isolated: Use a single queue isolated from RSS - 1q: Configure NIC to use 1 queue - 8q: Configure NIC to use 8 queues @@ -459,15 +457,11 @@ def _run_gro_bin(cfg, test_name, protocol=None, num_flows=None, num_flows *= 2 -def main() -> None: - """ Ksft boiler plate main """ +def gro_main(src_path, mode) -> None: + """ Ksft boiler plate main, run all the cases in the given mode """ - with NetDrvEpEnv(__file__) as cfg: + with NetDrvEpEnv(src_path) as cfg: cfg.ethnl = EthtoolFamily() cfg.netnl = NetdevFamily() - ksft_run(cases=[test, test_gro_capacity], args=(cfg,)) + ksft_run(cases=[test, test_gro_capacity], args=(cfg, mode)) ksft_exit() - - -if __name__ == "__main__": - main() diff --git a/tools/testing/selftests/drivers/net/gro_lro.py b/tools/testing/selftests/drivers/net/gro_lro.py new file mode 100755 index 000000000000..3f40e4180ec9 --- /dev/null +++ b/tools/testing/selftests/drivers/net/gro_lro.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: GPL-2.0 + +""" +GRO conformance tests against the LRO implementation +(large-receive-offload). + +See gro_lib.py for the list of test cases. +""" + +from gro_lib import gro_main + + +if __name__ == "__main__": + gro_main(__file__, "lro") diff --git a/tools/testing/selftests/drivers/net/gro_sw.py b/tools/testing/selftests/drivers/net/gro_sw.py new file mode 100755 index 000000000000..e14fa06feec5 --- /dev/null +++ b/tools/testing/selftests/drivers/net/gro_sw.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: GPL-2.0 + +""" +GRO conformance tests against the SW GRO implementation. + +See gro_lib.py for the list of test cases. +""" + +from gro_lib import gro_main + + +if __name__ == "__main__": + gro_main(__file__, "sw") diff --git a/tools/testing/selftests/drivers/net/pppoe_gro.py b/tools/testing/selftests/drivers/net/pppoe_gro.py new file mode 100755 index 000000000000..5430285aa705 --- /dev/null +++ b/tools/testing/selftests/drivers/net/pppoe_gro.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: GPL-2.0 + +""" +GRO conformance tests for PPPoE. + +Only SW GRO is expected to coalesce PPPoE, the HW offloads are not +exercised. PPPoE runs a subset of the cases described in gro_lib.py, +plus one of its own: + - pppoe_sid: Packets with different PPPoE session ID don't coalesce +""" + +from lib.py import ksft_run, ksft_exit, ksft_variants +from lib.py import NetDrvEpEnv +from gro_lib import run_test + + +def _pppoe_variants(): + """Generator that yields all combinations of protocol and test types.""" + + tests = [ + "data_same", "data_lrg_sml", "data_sml_lrg", "data_lrg_1byte", + "data_burst", "pppoe_sid", + ] + + for protocol in ["pppoev4", "pppoev6"]: + for test_name in tests: + yield protocol, test_name + + +@ksft_variants(_pppoe_variants()) +def test(cfg, protocol, test_name): + """Run a single GRO test case.""" + run_test(cfg, "sw", protocol, test_name) + + +def main() -> None: + """ Ksft boiler plate main """ + + with NetDrvEpEnv(__file__) as cfg: + ksft_run(cases=[test], args=(cfg,)) + ksft_exit() + + +if __name__ == "__main__": + main() diff --git a/tools/testing/selftests/net/lib/ksft_setup_loopback.sh b/tools/testing/selftests/net/lib/ksft_setup_loopback.sh index 3defbb1919c5..9ec4c3616795 100755 --- a/tools/testing/selftests/net/lib/ksft_setup_loopback.sh +++ b/tools/testing/selftests/net/lib/ksft_setup_loopback.sh @@ -12,7 +12,7 @@ # # Example use: # export NETIF=eth0 -# ./net/lib/ksft_setup_loopback.sh ./drivers/net/gro.py +# ./net/lib/ksft_setup_loopback.sh ./drivers/net/gro_sw.py if [ -z "$NETIF" ]; then echo "Error: NETIF variable not set" -- 2.55.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 2/3] selftests: drv-net: split gro.py into one test per coalescing mode 2026-08-31 16:37 ` [PATCH net-next 2/3] selftests: drv-net: split gro.py into one test per coalescing mode Jakub Kicinski @ 2026-09-01 15:34 ` Joe Damato 2026-09-01 19:44 ` Jakub Kicinski 1 sibling, 0 replies; 10+ messages in thread From: Joe Damato @ 2026-09-01 15:34 UTC (permalink / raw) To: Jakub Kicinski Cc: davem, netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb, petrm, linux-kselftest, noren On Mon, Aug 31, 2026 at 09:37:33AM -0700, Jakub Kicinski wrote: > gro.py runs its full set of cases three times over - against SW GRO, > HW GRO and LRO. It's our test with the longest runtime. The 318 cases > take 12m30s on mlx5 with a debug kernel. > > Bumping the timeout for all tests feels wrong when we can so easily > split the GRO test by execution mode. Shorter runtime also helps retry > just the failing portion / mode (we retry failing tests to try to > detect flakes vs real failures). > > Move the main logic to gro_lib.py and add one program per mode - > gro_sw.py, gro_hw.py and gro_lro.py, 102 cases each. Move PPPoE to > a dedicated test. It has been tacked onto the tests in an ugly way, > and it only runs against SW GRO anyway. > > Note that unfortunately this will case a rename of all test cases. > The mode moves from the case name to the test name > > gro.py test.sw_ipv4_data_same > > becomes > > gro_sw.py test.ipv4_data_same > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > --- > We also saw 20min runs on gve, but those may have been errors. > The GVE runner is very flaky and even when it runs it doesn't seem > to execute the gro test. Perhaps because the test times out? > --- > tools/testing/selftests/drivers/net/Makefile | 9 ++- > tools/testing/selftests/drivers/net/gro_hw.py | 14 ++++ > .../drivers/net/{gro.py => gro_lib.py} | 68 +++++++++---------- > .../testing/selftests/drivers/net/gro_lro.py | 15 ++++ > tools/testing/selftests/drivers/net/gro_sw.py | 14 ++++ > .../selftests/drivers/net/pppoe_gro.py | 46 +++++++++++++ > .../selftests/net/lib/ksft_setup_loopback.sh | 2 +- > 7 files changed, 129 insertions(+), 39 deletions(-) > create mode 100755 tools/testing/selftests/drivers/net/gro_hw.py > rename tools/testing/selftests/drivers/net/{gro.py => gro_lib.py} (92%) > mode change 100755 => 100644 > create mode 100755 tools/testing/selftests/drivers/net/gro_lro.py > create mode 100755 tools/testing/selftests/drivers/net/gro_sw.py > create mode 100755 tools/testing/selftests/drivers/net/pppoe_gro.py > Reviewed-by: Joe Damato <joe@dama.to> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 2/3] selftests: drv-net: split gro.py into one test per coalescing mode 2026-08-31 16:37 ` [PATCH net-next 2/3] selftests: drv-net: split gro.py into one test per coalescing mode Jakub Kicinski 2026-09-01 15:34 ` Joe Damato @ 2026-09-01 19:44 ` Jakub Kicinski 1 sibling, 0 replies; 10+ messages in thread From: Jakub Kicinski @ 2026-09-01 19:44 UTC (permalink / raw) To: davem Cc: netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb, petrm, linux-kselftest, noren On Mon, 31 Aug 2026 09:37:33 -0700 Jakub Kicinski wrote: > +from lib.py import ksft_run, ksft_exit, ksft_variants > +from lib.py import NetDrvEpEnv > +from gro_lib import run_test ruff is nit picking on the order of imports here, I'll have to respin, sorry about that.. -- pw-bot: cr ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH net-next 3/3] selftests: drv-net: bump the timeout to 15min 2026-08-31 16:37 [PATCH net-next 0/3] selftests: drv-net: split up gro.py Jakub Kicinski 2026-08-31 16:37 ` [PATCH net-next 1/3] selftests: drv-net: hw: rename gro_hw.py to gro_stats.py Jakub Kicinski 2026-08-31 16:37 ` [PATCH net-next 2/3] selftests: drv-net: split gro.py into one test per coalescing mode Jakub Kicinski @ 2026-08-31 16:37 ` Jakub Kicinski 2026-09-01 15:35 ` Joe Damato 2026-09-01 6:45 ` [PATCH net-next 0/3] selftests: drv-net: split up gro.py Nimrod Oren 3 siblings, 1 reply; 10+ messages in thread From: Jakub Kicinski @ 2026-08-31 16:37 UTC (permalink / raw) To: davem Cc: netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb, petrm, linux-kselftest, noren, Jakub Kicinski The XDP test takes 9m30s on the slowest NIC with debug kernel. Let's give ourselves a 50% margin and set the timeout to 15min. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- CC: noren@nvidia.com CC: shuah@kernel.org CC: linux-kselftest@vger.kernel.org --- tools/testing/selftests/drivers/net/settings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/drivers/net/settings b/tools/testing/selftests/drivers/net/settings index eef533824a3c..e2206265f67c 100644 --- a/tools/testing/selftests/drivers/net/settings +++ b/tools/testing/selftests/drivers/net/settings @@ -1 +1 @@ -timeout=360 +timeout=900 -- 2.55.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 3/3] selftests: drv-net: bump the timeout to 15min 2026-08-31 16:37 ` [PATCH net-next 3/3] selftests: drv-net: bump the timeout to 15min Jakub Kicinski @ 2026-09-01 15:35 ` Joe Damato 0 siblings, 0 replies; 10+ messages in thread From: Joe Damato @ 2026-09-01 15:35 UTC (permalink / raw) To: Jakub Kicinski Cc: davem, netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb, petrm, linux-kselftest, noren On Mon, Aug 31, 2026 at 09:37:34AM -0700, Jakub Kicinski wrote: > The XDP test takes 9m30s on the slowest NIC with debug kernel. > Let's give ourselves a 50% margin and set the timeout to 15min. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > --- > CC: noren@nvidia.com > CC: shuah@kernel.org > CC: linux-kselftest@vger.kernel.org > --- > tools/testing/selftests/drivers/net/settings | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > Reviewed-by: Joe Damato <joe@dama.to> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 0/3] selftests: drv-net: split up gro.py 2026-08-31 16:37 [PATCH net-next 0/3] selftests: drv-net: split up gro.py Jakub Kicinski ` (2 preceding siblings ...) 2026-08-31 16:37 ` [PATCH net-next 3/3] selftests: drv-net: bump the timeout to 15min Jakub Kicinski @ 2026-09-01 6:45 ` Nimrod Oren 2026-09-01 14:07 ` Willem de Bruijn 3 siblings, 1 reply; 10+ messages in thread From: Nimrod Oren @ 2026-09-01 6:45 UTC (permalink / raw) To: Jakub Kicinski, davem Cc: netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb, petrm, linux-kselftest On 31/08/2026 19:37, Jakub Kicinski wrote: > gro.py runs its full set of cases three times over - against SW GRO, > HW GRO and LRO. It's our test with the longest runtime. The 318 cases > take 12m30s on mlx5 with a debug kernel. > > We will likely add more subcases here as the time goes on, so it's > time to start splitting it up. Long runtime wastes time on retries > (if any of the 300+ cases fails we try to check if it's a real failure > or flake an re-run the whole thing). It also forces us to increase > timeout for the whole test suite. > > Jakub Kicinski (3): > selftests: drv-net: hw: rename gro_hw.py to gro_stats.py > selftests: drv-net: split gro.py into one test per coalescing mode > selftests: drv-net: bump the timeout to 15min > > tools/testing/selftests/drivers/net/Makefile | 9 ++- > .../testing/selftests/drivers/net/hw/Makefile | 2 +- > tools/testing/selftests/drivers/net/gro_hw.py | 14 ++++ > .../drivers/net/{gro.py => gro_lib.py} | 68 +++++++++---------- > .../testing/selftests/drivers/net/gro_lro.py | 15 ++++ > tools/testing/selftests/drivers/net/gro_sw.py | 14 ++++ > .../net/hw/{gro_hw.py => gro_stats.py} | 0 > .../selftests/drivers/net/pppoe_gro.py | 46 +++++++++++++ > tools/testing/selftests/drivers/net/settings | 2 +- > .../selftests/net/lib/ksft_setup_loopback.sh | 2 +- > 10 files changed, 131 insertions(+), 41 deletions(-) > create mode 100755 tools/testing/selftests/drivers/net/gro_hw.py > rename tools/testing/selftests/drivers/net/{gro.py => gro_lib.py} (92%) > mode change 100755 => 100644 > create mode 100755 tools/testing/selftests/drivers/net/gro_lro.py > create mode 100755 tools/testing/selftests/drivers/net/gro_sw.py > rename tools/testing/selftests/drivers/net/hw/{gro_hw.py => gro_stats.py} (100%) > create mode 100755 tools/testing/selftests/drivers/net/pppoe_gro.py > For the series: Reviewed-by: Nimrod Oren <noren@nvidia.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 0/3] selftests: drv-net: split up gro.py 2026-09-01 6:45 ` [PATCH net-next 0/3] selftests: drv-net: split up gro.py Nimrod Oren @ 2026-09-01 14:07 ` Willem de Bruijn 0 siblings, 0 replies; 10+ messages in thread From: Willem de Bruijn @ 2026-09-01 14:07 UTC (permalink / raw) To: Nimrod Oren, Jakub Kicinski, davem Cc: netdev, edumazet, pabeni, andrew+netdev, horms, shuah, willemb, petrm, linux-kselftest Nimrod Oren wrote: > On 31/08/2026 19:37, Jakub Kicinski wrote: > > gro.py runs its full set of cases three times over - against SW GRO, > > HW GRO and LRO. It's our test with the longest runtime. The 318 cases > > take 12m30s on mlx5 with a debug kernel. > > > > We will likely add more subcases here as the time goes on, so it's > > time to start splitting it up. Long runtime wastes time on retries > > (if any of the 300+ cases fails we try to check if it's a real failure > > or flake an re-run the whole thing). It also forces us to increase > > timeout for the whole test suite. > > > > Jakub Kicinski (3): > > selftests: drv-net: hw: rename gro_hw.py to gro_stats.py > > selftests: drv-net: split gro.py into one test per coalescing mode > > selftests: drv-net: bump the timeout to 15min > > > > tools/testing/selftests/drivers/net/Makefile | 9 ++- > > .../testing/selftests/drivers/net/hw/Makefile | 2 +- > > tools/testing/selftests/drivers/net/gro_hw.py | 14 ++++ > > .../drivers/net/{gro.py => gro_lib.py} | 68 +++++++++---------- > > .../testing/selftests/drivers/net/gro_lro.py | 15 ++++ > > tools/testing/selftests/drivers/net/gro_sw.py | 14 ++++ > > .../net/hw/{gro_hw.py => gro_stats.py} | 0 > > .../selftests/drivers/net/pppoe_gro.py | 46 +++++++++++++ > > tools/testing/selftests/drivers/net/settings | 2 +- > > .../selftests/net/lib/ksft_setup_loopback.sh | 2 +- > > 10 files changed, 131 insertions(+), 41 deletions(-) > > create mode 100755 tools/testing/selftests/drivers/net/gro_hw.py > > rename tools/testing/selftests/drivers/net/{gro.py => gro_lib.py} (92%) > > mode change 100755 => 100644 > > create mode 100755 tools/testing/selftests/drivers/net/gro_lro.py > > create mode 100755 tools/testing/selftests/drivers/net/gro_sw.py > > rename tools/testing/selftests/drivers/net/hw/{gro_hw.py => gro_stats.py} (100%) > > create mode 100755 tools/testing/selftests/drivers/net/pppoe_gro.py > > > > For the series: > Reviewed-by: Nimrod Oren <noren@nvidia.com> > For the series: Reviewed-by: Willem de Bruijn <willemb@google.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-09-01 19:45 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-31 16:37 [PATCH net-next 0/3] selftests: drv-net: split up gro.py Jakub Kicinski 2026-08-31 16:37 ` [PATCH net-next 1/3] selftests: drv-net: hw: rename gro_hw.py to gro_stats.py Jakub Kicinski 2026-08-31 19:52 ` Joe Damato 2026-08-31 16:37 ` [PATCH net-next 2/3] selftests: drv-net: split gro.py into one test per coalescing mode Jakub Kicinski 2026-09-01 15:34 ` Joe Damato 2026-09-01 19:44 ` Jakub Kicinski 2026-08-31 16:37 ` [PATCH net-next 3/3] selftests: drv-net: bump the timeout to 15min Jakub Kicinski 2026-09-01 15:35 ` Joe Damato 2026-09-01 6:45 ` [PATCH net-next 0/3] selftests: drv-net: split up gro.py Nimrod Oren 2026-09-01 14:07 ` Willem de Bruijn
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox