From: netdev-bot+sashiko@kernel.org
To: nb@tipi-net.de
Cc: davem@davemloft.net, edumazet@kernel.org, kuba@kernel.org,
pabeni@redhat.com, horms@kernel.org, andrew@lunn.ch,
kory.maincent@bootlin.com, vadim.fedorenko@linux.dev,
maxime.chevallier@bootlin.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH net v3 2/2] net: ethtool: let tsconfig reach a PHY-only timestamp provider
Date: Sat, 26 Sep 2026 13:54:10 +0000 [thread overview]
Message-ID: <179043085090.2160803.7251184093173489740@kernel.org> (raw)
In-Reply-To: <20260925135237.3432266-3-nb@tipi-net.de>
Thank you for your contribution! Sashiko AI review found 1 potential
issue(s) to consider.
Critical: 0 · High: 0 · Medium: 1 · Low: 0
If you believe none of the issues are legitimate, please reply to each
issue of Medium severity or higher and explain why the AI is wrong.
If any of them are legitimate and you plan to respin, please let patchwork
know by including "pw-bot: cr" as a separate line at the end of your reply
(one such reply per series is enough).
- [Medium] The removed ethnl_set_tsconfig_validate() required both
ndo_hwtstamp_set and ndo_hwtstamp_get.
--
net: ethtool: let tsconfig reach a PHY-only timestamp provider
This patch lets TSCONFIG_GET and TSCONFIG_SET accept a device whose
timestamping is served by a default timestamping PHY or an already
installed hwprov, even when the netdev has no hwtstamp NDOs. It removes
the set_validate callback and moves the check into ethnl_set_tsconfig().
It also stops selecting a netdev source without ndo_hwtstamp_set, and
adds a NULL check for ndo_hwtstamp_get in dev_get_hwtstamp_phylib().
> diff --git a/net/ethtool/tsconfig.c b/net/ethtool/tsconfig.c
> index 6be3aa5d4bc1e..2db0e7ba8b9f5 100644
> --- a/net/ethtool/tsconfig.c
> +++ b/net/ethtool/tsconfig.c
[ ... ]
> @@ -42,7 +43,9 @@ static int tsconfig_prepare_data(const struct ethnl_req_info *req_base,
> struct kernel_hwtstamp_config cfg = {};
> int ret;
>
> - if (!dev->netdev_ops->ndo_hwtstamp_get)
> + if (!dev->netdev_ops->ndo_hwtstamp_get &&
> + !phy_is_default_hwtstamp(dev->phydev) &&
> + !netdev_ops_lock_dereference(dev->hwprov, dev))
> return -EOPNOTSUPP;
>
> ret = ethnl_ops_begin(dev);
> @@ -248,17 +251,6 @@ static int tsconfig_send_reply(struct net_device *dev, struct genl_info *info)
> return ret;
> }
>
> -static int ethnl_set_tsconfig_validate(struct ethnl_req_info *req_base,
> - struct genl_info *info)
> -{
> - const struct net_device_ops *ops = req_base->dev->netdev_ops;
> -
> - if (!ops->ndo_hwtstamp_set || !ops->ndo_hwtstamp_get)
> - return -EOPNOTSUPP;
> -
> - return 1;
> -}
> -
[ ... ]
> @@ -313,6 +305,11 @@ static int ethnl_set_tsconfig(struct ethnl_req_info *req_base,
> if (!netif_device_present(dev))
> return -ENODEV;
>
> + if (!dev->netdev_ops->ndo_hwtstamp_set &&
> + !phy_is_default_hwtstamp(dev->phydev) &&
> + !netdev_ops_lock_dereference(dev->hwprov, dev))
> + return -EOPNOTSUPP;
> +
[Severity: Medium]
The removed ethnl_set_tsconfig_validate() required both ndo_hwtstamp_set
and ndo_hwtstamp_get. This new check in ethnl_set_tsconfig() only tests
ndo_hwtstamp_set. The matching check in tsconfig_prepare_data() only
tests ndo_hwtstamp_get.
What happens on a netdev that has ndo_hwtstamp_set but no
ndo_hwtstamp_get, and has neither a default timestamping PHY nor a
hwprov?
TSCONFIG_SET now accepts that device. However, reading the current
config fails in dev_get_hwtstamp_phylib():
if (!dev->netdev_ops->ndo_hwtstamp_get)
return -EOPNOTSUPP;
and ethnl_set_tsconfig() ignores that error:
ret = dev_get_hwtstamp_phylib(dev, &hwtst_config);
if (ret < 0 && ret != -EOPNOTSUPP)
goto err_free_hwprov;
This means the read-modify-write starts from an all-zero hwtst_config.
A request that carries only RX_FILTERS or only FLAGS would then reset
tx_type to HWTSTAMP_TX_OFF and zero the other fields.
A full disable request (TX_OFF, FILTER_NONE, no flags) matches the
assumed zero state, so ethnl_bitmap32_update() never sets *mod. As a
result, config_mod stays false and dev_set_hwtstamp_phylib() is
skipped. Can hardware timestamping stay enabled while the command
reports success?
After that, tsconfig_send_reply()->tsconfig_prepare_data() fails its
own check with -EOPNOTSUPP, and ethnl_set_tsconfig() swallows it:
ret = tsconfig_send_reply(dev, info);
if (ret && ret != -EOPNOTSUPP) {
So the ETHTOOL_MSG_TSCONFIG_SET_REPLY documented in
Documentation/netlink/specs/ethtool.yaml is never sent. TSCONFIG_GET on
the same device still returns EOPNOTSUPP even though SET succeeds.
Every in-tree driver seems to implement both NDOs today. Elsewhere,
though, the patch treats set-without-get as a valid state: it selects
the NETDEV source in tsconfig_set_hwprov_from_desc() based on
ndo_hwtstamp_set alone, and it adds a NULL check for ndo_hwtstamp_get
in dev_get_hwtstamp_phylib().
For the netdev case, should the SET check also require
ndo_hwtstamp_get, so that GET and SET accept the same devices?
> if (tb[ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDER]) {
> struct hwtstamp_provider_desc __hwprov_desc = {.index = -1};
> struct hwtstamp_provider *__hwprov;
[ ... ]
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260925135237.3432266-2-nb%40tipi-net.de
next prev parent reply other threads:[~2026-09-26 13:54 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260925135237.3432266-1-nb@tipi-net.de>
2026-09-25 13:52 ` [PATCH net v3 1/2] net: ethtool: reject an out of range hwtstamp provider index Nicolai Buchwitz
2026-09-25 13:55 ` Kory Maincent
2026-09-25 14:07 ` Nicolai Buchwitz
2026-09-25 17:57 ` Kory Maincent
2026-09-25 13:52 ` [PATCH net v3 2/2] net: ethtool: let tsconfig reach a PHY-only timestamp provider Nicolai Buchwitz
2026-09-26 13:54 ` netdev-bot+sashiko [this message]
2026-09-26 17:53 ` Nicolai Buchwitz
2026-09-26 18:03 ` Maxime Chevallier
2026-09-26 18:11 ` Nicolai Buchwitz
2026-09-26 18:04 ` Maxime Chevallier
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=179043085090.2160803.7251184093173489740@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@kernel.org \
--cc=horms@kernel.org \
--cc=kory.maincent@bootlin.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime.chevallier@bootlin.com \
--cc=nb@tipi-net.de \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=vadim.fedorenko@linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®