From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
petrm@nvidia.com, przemyslaw.kitszel@intel.com,
willemdebruijn.kernel@gmail.com, ecree.xilinx@gmail.com,
Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net-next 2/5] selftests: drv-net: rss_ctx: factor out send traffic and check
Date: Thu, 4 Jul 2024 18:57:22 -0700 [thread overview]
Message-ID: <20240705015725.680275-3-kuba@kernel.org> (raw)
In-Reply-To: <20240705015725.680275-1-kuba@kernel.org>
Wrap up sending traffic and checking in which queues it landed
in a helper.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
| 50 ++++++++++++-------
1 file changed, 31 insertions(+), 19 deletions(-)
--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
next prev parent reply other threads:[~2024-07-05 1:57 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-05 1:57 [PATCH net-next 0/5] selftests: drv-net: rss_ctx: more tests Jakub Kicinski
2024-07-05 1:57 ` [PATCH net-next 1/5] selftests: drv-net: rss_ctx: fix cleanup in the basic test Jakub Kicinski
2024-07-06 13:53 ` Willem de Bruijn
2024-07-08 16:13 ` Jakub Kicinski
2024-07-08 16:53 ` Willem de Bruijn
2024-07-05 1:57 ` Jakub Kicinski [this message]
2024-07-05 1:57 ` [PATCH net-next 3/5] selftests: drv-net: rss_ctx: test queue changes vs user RSS config Jakub Kicinski
2024-07-06 14:00 ` Willem de Bruijn
2024-07-08 16:17 ` Jakub Kicinski
2024-07-08 16:56 ` Willem de Bruijn
2024-07-08 20:04 ` Jakub Kicinski
2024-07-08 20:29 ` Willem de Bruijn
2024-07-05 1:57 ` [PATCH net-next 4/5] selftests: drv-net: rss_ctx: check behavior of indirection table resizing Jakub Kicinski
2024-07-06 14:03 ` Willem de Bruijn
2024-07-05 1:57 ` [PATCH net-next 5/5] selftests: drv-net: rss_ctx: test flow rehashing without impacting traffic Jakub Kicinski
2024-07-05 10:24 ` [PATCH net-next 0/5] selftests: drv-net: rss_ctx: more tests Pavan Chebbi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240705015725.680275-3-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=davem@davemloft.net \
--cc=ecree.xilinx@gmail.com \
--cc=edumazet@google.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=petrm@nvidia.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=willemdebruijn.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.