Re: [PATCH net-next] selftests: drv-net: hw: reset HDS mode after netkit devmem tests

Bobby Eshleman <[email protected]>
Newsgroups org.kernel.vger.netdev,org.kernel.vger.linux-kselftest
Message-ID <[email protected]>
On Tue, Aug 04, 2026 at 08:10:40AM -0700, Jakub Kicinski wrote:
> HDS mode has confusing semantics. On GET kernel reports
> effective mode. On SET kernel expects explicit config.
> Effective mode on GET means that we know the current
> state, but we don't know if it's a driver default
> or user setting. This matter because driver default
> can change automatically when e.g. XDP is attached.
> Explicit user setting must not be lost.
> 
> With that in mind, we can't restore the HDS setting
> like we restore other NIC config. We should always
> reset to default ("unknown").
> 
> This fixes an issue with tests running after the devmem
> test not being able to attach XDP, e.g.
> 
>    Exception|   File "./xdp_metadata.py", line 105, in test_xdp_rss_hash
>    [...]
>    Exception| net.lib.py.utils.CmdExitFailure: Command failed
>    Exception| CMD: ip link set dev ens9np0 xdpdrv pinned /sys/fs/bpf/xdp_metadata_test/xdp_rss_hash
>    Exception|   EXIT: 2
>    Exception|   STDERR: Error: unable to install XDP to device using tcp-data-split.
>    not ok 1 xdp_metadata.test_xdp_rss_hash.tcp
> 
> Signed-off-by: Jakub Kicinski <[email protected]>
> ---
> CC: [email protected]
> CC: [email protected]
> CC: [email protected]
> CC: [email protected]
> CC: [email protected]
> CC: [email protected]
> ---
>  tools/testing/selftests/drivers/net/hw/devmem_lib.py | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/tools/testing/selftests/drivers/net/hw/devmem_lib.py b/tools/testing/selftests/drivers/net/hw/devmem_lib.py
> index 0921ff03eb81..4e6316c7de96 100644
> --- a/tools/testing/selftests/drivers/net/hw/devmem_lib.py
> +++ b/tools/testing/selftests/drivers/net/hw/devmem_lib.py
> @@ -37,14 +37,13 @@ from lib.py import (bkg, cmd, defer, ethtool, rand_port, wait_port_listen,
>      rings = ethnl.rings_get({'header': {'dev-index': cfg.ifindex}})
>      orig_rx_rings = rings['rx']
>      orig_hds_thresh = rings.get('hds-thresh', 0)
> -    orig_data_split = rings.get('tcp-data-split', 'unknown')
>  
>      ethnl.rings_set({'header': {'dev-index': cfg.ifindex},
>                       'tcp-data-split': 'enabled',
>                       'hds-thresh': 0,
>                       'rx': min(64, orig_rx_rings)})
>      defer(ethnl.rings_set, {'header': {'dev-index': cfg.ifindex},
> -                            'tcp-data-split': orig_data_split,
> +                            'tcp-data-split': 'unknown',
>                              'hds-thresh': orig_hds_thresh,
>                              'rx': orig_rx_rings})
>  
> -- 
> 2.55.0
> 

Reviewed-by: Bobby Eshleman <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.