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

Jakub Kicinski <[email protected]> Tue, 4 Aug 2026 08:10:40 -0700
Newsgroups org.kernel.vger.linux-kselftest,org.kernel.vger.netdev
Message-ID <[email protected]>
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