From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
To: Jakub Kicinski <kuba@kernel.org>, davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
andrew+netdev@lunn.ch, horms@kernel.org,
willemdebruijn.kernel@gmail.com,
Jakub Kicinski <kuba@kernel.org>,
shuah@kernel.org, linux-kselftest@vger.kernel.org
Subject: Re: [PATCH net-next 1/2] selftests: drv-net: gro: improve feature config
Date: Fri, 28 Nov 2025 15:44:06 -0500 [thread overview]
Message-ID: <willemdebruijn.kernel.2a528ef888696@gmail.com> (raw)
In-Reply-To: <20251128005242.2604732-1-kuba@kernel.org>
Jakub Kicinski wrote:
> We'll need to do a lot more feature handling to test HW-GRO and LRO.
> Clean up the feature handling for SW GRO a bit to let the next commit
> focus on the new test cases, only.
>
> Make sure HW GRO-like features are not enabled for the SW tests.
> Be more careful about changing features as "nothing changed"
> situations may result in non-zero error code from ethtool.
>
> Don't disable TSO on the local interface (receiver) when running over
> netdevsim, we just want GSO to break up the segments on the sender.
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> CC: shuah@kernel.org
> CC: linux-kselftest@vger.kernel.org
> ---
> tools/testing/selftests/drivers/net/gro.py | 38 ++++++++++++++++++++--
> 1 file changed, 35 insertions(+), 3 deletions(-)
>
> diff --git a/tools/testing/selftests/drivers/net/gro.py b/tools/testing/selftests/drivers/net/gro.py
> index ba83713bf7b5..6d633bdc7e67 100755
> --- a/tools/testing/selftests/drivers/net/gro.py
> +++ b/tools/testing/selftests/drivers/net/gro.py
> @@ -20,7 +20,7 @@ coalescing behavior.
> import os
> from lib.py import ksft_run, ksft_exit, ksft_pr
> from lib.py import NetDrvEpEnv, KsftXfailEx
> -from lib.py import cmd, defer, bkg, ip
> +from lib.py import cmd, defer, bkg, ethtool, ip
Is there a pattern behind this order. Since inserted rather than
appended. Intended to be alphabetical?
> from lib.py import ksft_variants
>
>
> @@ -70,6 +70,27 @@ from lib.py import ksft_variants
> defer(ip, f"link set dev {dev['ifname']} mtu {dev['mtu']}", host=host)
>
>
> +def _set_ethtool_feat(dev, current, feats, host=None):
> + s2n = {True: "on", False: "off"}
> +
> + new = ["-K", dev]
> + old = ["-K", dev]
> + no_change = True
> + for name, state in feats.items():
> + new += [name, s2n[state]]
> + old += [name, s2n[not state]]
Should the change set not only include items for which
current != state?
Now old assumes not state, but that is not necessarily true?
> +
> + if current[name]["active"] != state:
> + no_change = False
> + if current[name]["fixed"]:
> + raise KsftXfailEx(f"Device does not support {name}")
> + if no_change:
> + return
> +
> + ethtool(" ".join(new), host=host)
> + defer(ethtool, " ".join(old), host=host)
> +
> +
> def _setup(cfg, test_name):
> """ Setup hardware loopback mode for GRO testing. """
>
> @@ -77,6 +98,11 @@ from lib.py import ksft_variants
> cfg.bin_local = cfg.test_dir / "gro"
> cfg.bin_remote = cfg.remote.deploy(cfg.bin_local)
>
> + if not hasattr(cfg, "feat"):
> + cfg.feat = ethtool(f"-k {cfg.ifname}", json=True)[0]
> + cfg.remote_feat = ethtool(f"-k {cfg.remote_ifname}",
> + host=cfg.remote, json=True)[0]
> +
> # "large" test needs at least 4k MTU
> if test_name == "large":
> _set_mtu_restore(cfg.dev, 4096, None)
> @@ -88,15 +114,21 @@ from lib.py import ksft_variants
> _write_defer_restore(cfg, flush_path, "200000", defer_undo=True)
> _write_defer_restore(cfg, irq_path, "10", defer_undo=True)
>
> + _set_ethtool_feat(cfg.ifname, cfg.feat,
> + {"generic-receive-offload": True,
> + "rx-gro-hw": False,
> + "large-receive-offload": False})
> +
> try:
> # Disable TSO for local tests
> cfg.require_nsim() # will raise KsftXfailEx if not running on nsim
>
> - cmd(f"ethtool -K {cfg.ifname} gro on tso off")
> - cmd(f"ethtool -K {cfg.remote_ifname} gro on tso off", host=cfg.remote)
> + _set_ethtool_feat(cfg.remote_ifname, cfg.remote_feat, {"tso": False},
> + host=cfg.remote)
> except KsftXfailEx:
> pass
>
> +
> def _gro_variants():
> """Generator that yields all combinations of protocol and test types."""
>
> --
> 2.51.1
>
next prev parent reply other threads:[~2025-11-28 20:44 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-28 0:52 [PATCH net-next 1/2] selftests: drv-net: gro: improve feature config Jakub Kicinski
2025-11-28 0:52 ` [PATCH net-next 2/2] selftests: drv-net: gro: run the test against HW GRO and LRO Jakub Kicinski
2025-11-28 20:42 ` Willem de Bruijn
2025-11-30 1:38 ` Jakub Kicinski
2025-11-30 14:56 ` Willem de Bruijn
2025-12-01 19:50 ` Jakub Kicinski
2025-12-01 21:50 ` Willem de Bruijn
2025-11-28 20:44 ` Willem de Bruijn [this message]
2025-11-30 1:13 ` [PATCH net-next 1/2] selftests: drv-net: gro: improve feature config Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=willemdebruijn.kernel.2a528ef888696@gmail.com \
--to=willemdebruijn.kernel@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.