Thread (14 messages) 14 messages, 5 authors, 2025-12-09

Re: [PATCH net-next v7 5/5] selftests: drv-net: devmem: add autorelease tests

From: Simon Horman <horms@kernel.org>
Date: 2025-11-26 10:02:58
Also in: linux-arch, linux-doc, linux-kselftest, lkml

On Wed, Nov 19, 2025 at 07:37:12PM -0800, Bobby Eshleman wrote:
quoted hunk ↗ jump to hunk
From: Bobby Eshleman <redacted>

Add tests cases that check the autorelease modes (on and off).  The new
tests are the same as the old ones, but just pass a flag to ncdevmem to
select the autorelease mode.

Only for RX tests is autorelease checked, as the autorelease ncdevmem
flag is unused in the TX case and doesn't apply to TX bind operations.

Signed-off-by: Bobby Eshleman <redacted>
---
Note: I tested successfully with kperf, but I'm troubleshooting
some mlx5 issues with ncdevmem so this patch, though simple, is not
fully validated. Will respond to this thread when solve the issue.

Changes in v7:
- use autorelease netlink
- remove sockopt tests
---
 tools/testing/selftests/drivers/net/hw/devmem.py  | 22 ++++++++++++++++++++--
 tools/testing/selftests/drivers/net/hw/ncdevmem.c | 19 +++++++++++++------
 2 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/tools/testing/selftests/drivers/net/hw/devmem.py b/tools/testing/selftests/drivers/net/hw/devmem.py
index 45c2d49d55b6..dddb9d77cb28 100755
--- a/tools/testing/selftests/drivers/net/hw/devmem.py
+++ b/tools/testing/selftests/drivers/net/hw/devmem.py
@@ -25,7 +25,23 @@ def check_rx(cfg) -> None:
 
     port = rand_port()
     socat = f"socat -u - TCP{cfg.addr_ipver}:{cfg.baddr}:{port},bind={cfg.remote_baddr}:{port}"
-    listen_cmd = f"{cfg.bin_local} -l -f {cfg.ifname} -s {cfg.addr} -p {port} -c {cfg.remote_addr} -v 7"
+    listen_cmd = f"{cfg.bin_local} -l -f {cfg.ifname} -s {cfg.addr} -p {port} -c {cfg.remote_addr} -v 7 -a 0"
+
+    with bkg(listen_cmd, exit_wait=True) as ncdevmem:
+        wait_port_listen(port)
+        cmd(f"yes $(echo -e \x01\x02\x03\x04\x05\x06) | \
+            head -c 1K | {socat}", host=cfg.remote, shell=True)
+
+    ksft_eq(ncdevmem.ret, 0)
+
+
+@ksft_disruptive
+def check_rx_autorelease(cfg) -> None:
+    require_devmem(cfg)
+
+    port = rand_port()
+    socat = f"socat -u - TCP{cfg.addr_ipver}:{cfg.baddr}:{port},bind={cfg.remote_baddr}:{port}"
+    listen_cmd = f"{cfg.bin_local} -l -f {cfg.ifname} -s {cfg.addr} -p {port} -c {cfg.remote_addr} -v 7 -a 1"
 
     with bkg(listen_cmd, exit_wait=True) as ncdevmem:
         wait_port_listen(port)
@@ -68,7 +84,9 @@ def main() -> None:
         cfg.bin_local = path.abspath(path.dirname(__file__) + "/ncdevmem")
         cfg.bin_remote = cfg.remote.deploy(cfg.bin_local)
 
-        ksft_run([check_rx, check_tx, check_tx_chunks],
+        ksft_run([check_rx, check_rx_autorelease,
+                  check_tx, check_tx_autorelease,
+                  check_tx_chunks, check_tx_chunks_autorelease],
                  args=(cfg, ))
     ksft_exit()
 
Hi Bobby,

Sorry if this is a duplicate: I drafted this before bit AFAIKT
I accidently hit the worng key and deleted it.

I see that check_rx_autorelease is implemented above,
but I don't see an implementatoin of check_tx_autorelease
or check_tx_chunks_autorelease. Perhaps they should be added too?

Flagged by pylint and ruff.
Also confirmed by running devmem.py using vng (possibly incorrectly).


This patch also adds some other pylint warnings, about missing
documentation and lines that are too long. Although there are
already instances of the same warning in this file. So I'm not
sure how we should feel about that.

...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help