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

From: Simon Horman <[email-masked]>
Date: Wed, 26 Nov 2025 10:02:51 +0000

On Wed, Nov 19, 2025 at 07:37:12PM -0800, Bobby Eshleman wrote:
> From: Bobby Eshleman <[email-masked]>
> 
> 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 <[email-masked]>
> ---
> 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.

...