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]}")