[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240705015725.680275-3-kuba@kernel.org>
Date: Thu, 4 Jul 2024 18:57:22 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: davem@...emloft.net
Cc: netdev@...r.kernel.org,
edumazet@...gle.com,
pabeni@...hat.com,
petrm@...dia.com,
przemyslaw.kitszel@...el.com,
willemdebruijn.kernel@...il.com,
ecree.xilinx@...il.com,
Jakub Kicinski <kuba@...nel.org>
Subject: [PATCH net-next 2/5] selftests: drv-net: rss_ctx: factor out send traffic and check
Wrap up sending traffic and checking in which queues it landed
in a helper.
Signed-off-by: Jakub Kicinski <kuba@...nel.org>
---
.../selftests/drivers/net/hw/rss_ctx.py | 50 ++++++++++++-------
1 file changed, 31 insertions(+), 19 deletions(-)
diff --git a/tools/testing/selftests/drivers/net/hw/rss_ctx.py b/tools/testing/selftests/drivers/net/hw/rss_ctx.py
index de2a55c0f35c..a95842baef99 100755
--- a/tools/testing/selftests/drivers/net/hw/rss_ctx.py
+++ b/tools/testing/selftests/drivers/net/hw/rss_ctx.py
@@ -63,6 +63,22 @@ from lib.py import ethtool, ip, defer, GenerateTraffic, CmdExitFailure
return queue_stats
+def _send_traffic_check(cfg, port, name, params):
+ cnts = _get_rx_cnts(cfg)
+ GenerateTraffic(cfg, port=port).wait_pkts_and_stop(20000)
+ cnts = _get_rx_cnts(cfg, prev=cnts)
+
+ directed = sum(cnts[i] for i in params['target'])
+
+ ksft_ge(directed, 20000, f"traffic on {name}: " + str(cnts))
+ if params.get('noise'):
+ ksft_lt(sum(cnts[i] for i in params['noise']), directed / 2,
+ "traffic on other queues:" + str(cnts))
+ if params.get('empty'):
+ ksft_eq(sum(cnts[i] for i in params['empty']), 0,
+ "traffic on inactive queues: " + str(cnts))
+
+
def test_rss_key_indir(cfg):
"""Test basics like updating the main RSS key and indirection table."""
@@ -170,15 +186,10 @@ from lib.py import ethtool, ip, defer, GenerateTraffic, CmdExitFailure
defer(ethtool, f"-N {cfg.ifname} delete {ntuple}")
for i in range(ctx_cnt):
- cnts = _get_rx_cnts(cfg)
- GenerateTraffic(cfg, port=ports[i]).wait_pkts_and_stop(20000)
- cnts = _get_rx_cnts(cfg, prev=cnts)
-
- directed = sum(cnts[2+i*2:4+i*2])
-
- ksft_lt(sum(cnts[ :2]), directed / 2, "traffic on main context:" + str(cnts))
- ksft_ge(directed, 20000, f"traffic on context {i}: " + str(cnts))
- ksft_eq(sum(cnts[2:2+i*2] + cnts[4+i*2:]), 0, "traffic on other contexts: " + str(cnts))
+ _send_traffic_check(cfg, ports[i], f"context {i}",
+ { 'target': (2+i*2, 3+i*2),
+ 'noise': (0, 1),
+ 'empty': list(range(2, 2+i*2)) + list(range(4+i*2, 2+2*ctx_cnt)) })
if requested_ctx_cnt != ctx_cnt:
raise KsftSkipEx(f"Tested only {ctx_cnt} contexts, wanted {requested_ctx_cnt}")
@@ -230,18 +241,19 @@ from lib.py import ethtool, ip, defer, GenerateTraffic, CmdExitFailure
def check_traffic():
for i in range(ctx_cnt):
- cnts = _get_rx_cnts(cfg)
- GenerateTraffic(cfg, port=ports[i]).wait_pkts_and_stop(20000)
- cnts = _get_rx_cnts(cfg, prev=cnts)
-
if ctx[i]:
- directed = sum(cnts[2+i*2:4+i*2])
- ksft_lt(sum(cnts[ :2]), directed / 2, "traffic on main context:" + str(cnts))
- ksft_ge(directed, 20000, f"traffic on context {i}: " + str(cnts))
- ksft_eq(sum(cnts[2:2+i*2] + cnts[4+i*2:]), 0, "traffic on other contexts: " + str(cnts))
+ expected = {
+ 'target': (2+i*2, 3+i*2),
+ 'noise': (0, 1),
+ 'empty': list(range(2, 2+i*2)) + list(range(4+i*2, 2+2*ctx_cnt))
+ }
else:
- ksft_ge(sum(cnts[ :2]), 20000, "traffic on main context:" + str(cnts))
- ksft_eq(sum(cnts[2: ]), 0, "traffic on other contexts: " + str(cnts))
+ expected = {
+ 'target': range(2),
+ 'empty': range(2, 2+2*ctx_cnt)
+ }
+
+ _send_traffic_check(cfg, ports[i], f"context {i}", expected)
# Use queues 0 and 1 for normal traffic
ethtool(f"-X {cfg.ifname} equal 2")
--
2.45.2
Powered by blists - more mailing lists