[PATCH net-next v2 2/3] selftests: drv-net: Check the features set by set_ethtool_feat()
Ovidiu Panait <[email protected]>
| Newsgroups | org.kernel.vger.netdev,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest |
|---|---|
| Message-ID | <[email protected]> |
Read back the features after running ethtool -K to check if they were actually applied. The drivers might refuse to set a feature silently and the test could run with a different configuration than the requested one. Add a 'check' parameter to skip this, as the GRO "hw" mode handles the case where HW GRO is cleared by the driver. Signed-off-by: Ovidiu Panait <[email protected]> --- v2: New patch. tools/testing/selftests/drivers/net/gro_lib.py | 3 ++- tools/testing/selftests/drivers/net/lib/py/feat.py | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/drivers/net/gro_lib.py b/tools/testing/selftests/drivers/net/gro_lib.py index 7856ebdd49d3..875a715b2ae1 100644 --- a/tools/testing/selftests/drivers/net/gro_lib.py +++ b/tools/testing/selftests/drivers/net/gro_lib.py @@ -263,7 +263,8 @@ def _setup(cfg, mode, test_name): set_ethtool_feat(cfg.ifname, cfg.feat, {"generic-receive-offload": False, "rx-gro-hw": True, - "large-receive-offload": False}) + "large-receive-offload": False}, + check=False) # Some NICs treat HW GRO as a GRO sub-feature so disabling GRO # will also clear HW GRO. Use a hack of installing XDP generic diff --git a/tools/testing/selftests/drivers/net/lib/py/feat.py b/tools/testing/selftests/drivers/net/lib/py/feat.py index b94a24214e59..f0630844f023 100644 --- a/tools/testing/selftests/drivers/net/lib/py/feat.py +++ b/tools/testing/selftests/drivers/net/lib/py/feat.py @@ -9,7 +9,7 @@ Provides common operations for changing device features via ethtool. from . import KsftXfailEx, defer, ethtool, ksft_pr -def set_ethtool_feat(dev, current, feats, host=None): +def set_ethtool_feat(dev, current, feats, host=None, check=True): """Set ethtool features with defer to restore original state.""" s2n = {True: "on", False: "off"} @@ -33,3 +33,11 @@ def set_ethtool_feat(dev, current, feats, host=None): # If ethtool printed something kernel must have modified some features if eth_cmd.stdout: ksft_pr(eth_cmd) + + if not check: + return + + current = ethtool(f"-k {dev}", json=True, host=host)[0] + for name, state in feats.items(): + if current[name]["active"] != state: + raise KsftXfailEx(f"{name} was not set to {s2n[state]}") -- 2.34.1