From: netdev-bot+sashiko@kernel.org
To: kuba@kernel.org
Cc: davem@davemloft.net, netdev@vger.kernel.org, edumazet@google.com,
pabeni@redhat.com, andrew+netdev@lunn.ch, horms@kernel.org,
adrian.pielech@intel.com, sheenamo@google.com,
przemyslaw.kitszel@intel.com, shuah@kernel.org,
linux-kselftest@vger.kernel.org
Subject: Re: [PATCH net-next] selftests: drv-net: warn if LOCAL_V6 has DAD or not kept on link down
Date: Wed, 09 Sep 2026 20:17:51 +0000 [thread overview]
Message-ID: <178898507124.219967.9302814811759079514@kernel.org> (raw)
In-Reply-To: <20260908181956.1357684-1-kuba@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential
issue(s) to consider:
Critical: 0 · High: 0 · Medium: 1 · Low: 0
- [Medium] The patch documents a new environment invariant
(README.rst:73-80: the local IPv6 address must be added with `nodad`…
--
selftests: drv-net: warn if LOCAL_V6 has DAD or not kept on link down
This documents that the drv-net environment is expected to configure
LOCAL_V6 with nodad and with keep_addr_on_down enabled, and adds a check
in NetDrvEpEnv._check_env() that prints warnings when either is missing.
The motivation is intermittent bind() failures in napi_id.py on HW
runners.
> diff --git a/tools/testing/selftests/drivers/net/README.rst b/tools/testing/selftests/drivers/net/README.rst
> index c6bed9a985bc..3fe49bce4f3a 100644
> --- a/tools/testing/selftests/drivers/net/README.rst
> +++ b/tools/testing/selftests/drivers/net/README.rst
> @@ -70,6 +70,15 @@ LOCAL_V4, LOCAL_V6, REMOTE_V4, REMOTE_V6
>
> Local and remote endpoint IP addresses.
>
> +Tests reconfigure the device freely, including taking the link down, and
> +expect the addresses to work immediately afterwards. IPv6 needs help::
> +
> + ip -6 address add 2001:db8:1::1/64 dev eth0 nodad
> + sysctl -w net.ipv6.conf.eth0.keep_addr_on_down=1
> +
> +Without those the address is flushed when the link goes down, or spends
> +a second unusable while waiting for DAD to finish.
> +
> LOCAL_PREFIX_V6
> ~~~~~~~~~~~~~~~
>
> diff --git a/tools/testing/selftests/drivers/net/lib/py/env.py b/tools/testing/selftests/drivers/net/lib/py/env.py
> index 25903f580b40..6262080a8bf4 100644
> --- a/tools/testing/selftests/drivers/net/lib/py/env.py
> +++ b/tools/testing/selftests/drivers/net/lib/py/env.py
> @@ -239,6 +239,25 @@ class NetDrvEpEnv(NetDrvEnvBase):
> if missing:
> raise Exception("Invalid environment, missing configuration:", missing,
> "Please see tools/testing/selftests/drivers/net/README.rst")
> + if "LOCAL_V6" in self.env:
> + self._check_v6_env()
[Severity: Medium]
Do the in-tree environment providers meet the invariant that is being
documented here?
Two cases look like they do not:
1) NetDrvEpEnv.create_local() (the netdevsim path in the same file) adds
the addresses with nodad, but never enables keep_addr_on_down on the
nsim devices or on 'all':
ip(f" addr add dev {self._ns.nsims[0].ifname} {self.nsim_v4_pfx}1/24")
ip(f"-6 addr add dev {self._ns.nsims[0].ifname} {self.nsim_v6_pfx}1/64 nodad")
ip(f" link set dev {self._ns.nsims[0].ifname} up")
Both the devconf_all and per-device defaults are 0, and
addrconf_ifdown() drops permanent global addresses when the aggregate
is not positive:
net/ipv6/addrconf.c:addrconf_ifdown() {
...
int _keep_addr = READ_ONCE(net->ipv6.devconf_all->keep_addr_on_down);
if (!_keep_addr)
_keep_addr = READ_ONCE(idev->cnf.keep_addr_on_down);
keep_addr = (_keep_addr > 0);
...
}
So a test that follows the new documentation and bounces the link
would lose the nsim LOCAL_V6 address. Note also that this path never
reaches _check_v6_env(), since the call is only made from the branch
that requires NETIF, so there is no warning either.
2) tools/testing/selftests/net/lib/ksft_setup_loopback.sh sets up the
env that this code validates, and adds LOCAL_V6 without nodad and
without touching keep_addr_on_down:
ip -netns "${SERVER_NS}" addr add $LOCAL_V6/64 dev server
...
export NETIF=server
Would every run driven by that script now print both new warnings,
pointing at in-tree setup code rather than at a user
misconfiguration? Should the script and create_local() be updated
along with the documentation?
>
> def resolve_remote_ifc(self):
> v4 = v6 = None
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260908181956.1357684-1-kuba%40kernel.org
next prev parent reply other threads:[~2026-09-09 20:17 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 18:19 [PATCH net-next] selftests: drv-net: warn if LOCAL_V6 has DAD or not kept on link down Jakub Kicinski
2026-09-09 3:16 ` Sheena Mohan
2026-09-11 13:25 ` Pielech, Adrian
2026-09-09 20:17 ` netdev-bot+sashiko [this message]
2026-09-09 20:30 ` Jakub Kicinski
2026-09-09 20:40 ` patchwork-bot+netdevbpf
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=178898507124.219967.9302814811759079514@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=adrian.pielech@intel.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=przemyslaw.kitszel@intel.com \
--cc=sheenamo@google.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.