diff options
Diffstat (limited to 'tools/testing/selftests/drivers/net/hw/toeplitz.py')
| -rwxr-xr-x | tools/testing/selftests/drivers/net/hw/toeplitz.py | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/tools/testing/selftests/drivers/net/hw/toeplitz.py b/tools/testing/selftests/drivers/net/hw/toeplitz.py index 9019a8c1ff62..642a5cc385b6 100755 --- a/tools/testing/selftests/drivers/net/hw/toeplitz.py +++ b/tools/testing/selftests/drivers/net/hw/toeplitz.py @@ -17,6 +17,9 @@ from lib.py import cmd, bkg, rand_port, defer from lib.py import ksft_in from lib.py import ksft_variants, KsftNamedVariant, KsftSkipEx, KsftFailEx +# "define" for the ID of the Toeplitz hash function +ETH_RSS_HASH_TOP = 1 + def _check_rps_and_rfs_not_configured(cfg): """Verify that RPS is not already configured.""" @@ -34,16 +37,6 @@ def _check_rps_and_rfs_not_configured(cfg): raise KsftSkipEx(f"RFS already configured {rfs_file}: {val}") -def _get_rss_key(cfg): - """ - Read the RSS key from the device. - Return a string in the traditional %02x:%02x:%02x:.. format. - """ - - rss = cfg.ethnl.rss_get({"header": {"dev-index": cfg.ifindex}}) - return ':'.join(f'{b:02x}' for b in rss["hkey"]) - - def _get_cpu_for_irq(irq): with open(f"/proc/irq/{irq}/smp_affinity_list", "r", encoding="utf-8") as fp: @@ -153,8 +146,22 @@ def test(cfg, proto_flag, ipver, grp): # Check that rxhash is enabled ksft_in("receive-hashing: on", cmd(f"ethtool -k {cfg.ifname}").stdout) + rss = cfg.ethnl.rss_get({"header": {"dev-index": cfg.ifindex}}) + # Make sure NIC is configured to use Toeplitz hash, and no key xfrm. + if rss.get('hfunc') != ETH_RSS_HASH_TOP or rss.get('input-xfrm'): + cfg.ethnl.rss_set({"header": {"dev-index": cfg.ifindex}, + "hfunc": ETH_RSS_HASH_TOP, + "input-xfrm": {}}) + defer(cfg.ethnl.rss_set, {"header": {"dev-index": cfg.ifindex}, + "hfunc": rss.get('hfunc'), + "input-xfrm": rss.get('input-xfrm', {}) + }) + # Refresh in case changing hfunc changes things. + rss = cfg.ethnl.rss_get({"header": {"dev-index": cfg.ifindex}}) + + key = ':'.join(f'{b:02x}' for b in rss["hkey"]) + port = rand_port(socket.SOCK_DGRAM) - key = _get_rss_key(cfg) toeplitz_path = cfg.test_dir / "toeplitz" rx_cmd = [ |
