On Wed, Nov 19, 2025 at 07:37:12PM -0800, Bobby Eshleman wrote:
From: Bobby Eshleman bobbyeshleman@meta.com
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 bobbyeshleman@meta.com
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, ksft_exit()check_tx_chunks, check_tx_chunks_autorelease], args=(cfg, ))
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.
...