From: Simon Horman <horms@kernel.org>
To: maxime.chevallier@bootlin.com
Cc: Simon Horman <horms@kernel.org>,
hkallweit1@gmail.com, nicveronese@gmail.com,
f.fainelli@gmail.com, pabeni@redhat.com, edumazet@google.com,
dimitri.fedrau@liebherr.com, thomas.petazzoni@bootlin.com,
kabel@kernel.org, kuba@kernel.org, vladimir.oltean@nxp.com,
andrew@lunn.ch, davem@davemloft.net, romain.gantois@bootlin.com,
linux-kernel@vger.kernel.org, o.rempel@pengutronix.de,
linux@armlinux.org.uk, kory.maincent@bootlin.com,
mwojtas@chromium.org, christophe.leroy@csgroup.eu,
herve.codina@bootlin.com, netdev@vger.kernel.org,
daniel@makrotopia.org
Subject: Re: [net-next,v3,03/11] net: phy: phy_link_topology: Track ports in phy_link_topology
Date: Tue, 3 Feb 2026 18:02:50 +0000 [thread overview]
Message-ID: <20260203180250.2175436-1-horms@kernel.org> (raw)
In-Reply-To: <20260201151249.642015-4-maxime.chevallier@bootlin.com>
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
---
net: phy: phy_link_topology: Track ports in phy_link_topology
This commit adds port tracking to phy_link_topology, keeping track of all
ports connected to a netdev. Ports are added when a PHY is attached and
removed when it is detached.
> diff --git a/drivers/net/phy/phy_link_topology.c b/drivers/net/phy/phy_link_topology.c
> index 7dc2ff10c74a..456f1144e83e 100644
> --- a/drivers/net/phy/phy_link_topology.c
> +++ b/drivers/net/phy/phy_link_topology.c
[ ... ]
> +int phy_link_topo_add_port(struct net_device *dev, struct phy_port *port)
> +{
> + struct phy_link_topology *topo;
> + int ret;
> +
> + topo = phy_link_topo_get_or_alloc(dev);
> + if (IS_ERR(topo))
> + return PTR_ERR(topo);
> +
> + /* Attempt to re-use a previously allocated port_id */
> + if (port->id)
> + ret = xa_insert(&topo->ports, port->id, port, GFP_KERNEL);
> + else
> + ret = xa_alloc_cyclic(&topo->ports, &port->id, port,
> + xa_limit_32b, &topo->next_port_index,
> + GFP_KERNEL);
> +
> + return ret;
> +}
[ ... ]
> @@ -89,8 +126,20 @@ int phy_link_topo_add_phy(struct net_device *dev,
> if (ret < 0)
> goto err;
> +
> + /* Add all the PHY's ports to the topology */
> + list_for_each_entry(port, &phy->ports, head) {
> + ret = phy_link_topo_add_port(dev, port);
> + if (ret)
> + goto del_ports;
^^^
xa_alloc_cyclic() returns 1 when ID allocation wraps around, which is still a
successful allocation. The check at line 126 above correctly uses `if (ret < 0)`
for the phyindex allocation:
ret = xa_alloc_cyclic(&topo->phys, &phy->phyindex, pdn, ...);
if (ret < 0)
goto err;
Should this use `if (ret < 0)` as well for consistency? With the current code,
when the port ID wraps around, the PHY attachment will fail and trigger rollback
of all successfully added ports even though the allocation succeeded.
next prev parent reply other threads:[~2026-02-03 18:03 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-01 15:12 [PATCH net-next v3 00/11] net: phy_port: SFP modules representation and phy_port listing Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 01/11] net: phy: phy_port: Correctly recompute the port's linkmodes Maxime Chevallier
2026-02-03 17:58 ` [net-next,v3,01/11] " Simon Horman
2026-02-03 18:13 ` Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 02/11] net: phy: phy_link_topology: Add a helper for opportunistic alloc Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 03/11] net: phy: phy_link_topology: Track ports in phy_link_topology Maxime Chevallier
2026-02-03 18:02 ` Simon Horman [this message]
2026-02-03 18:11 ` [net-next,v3,03/11] " Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 04/11] net: phylink: Register a phy_port for MAC-driven SFP busses Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 05/11] net: phy: Create SFP phy_port before registering usptream Maxime Chevallier
2026-02-03 17:52 ` Simon Horman
2026-02-03 18:09 ` Maxime Chevallier
2026-02-09 16:25 ` Simon Horman
2026-02-03 18:03 ` [net-next,v3,05/11] " Simon Horman
2026-02-03 18:12 ` Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 06/11] net: phy: Represent PHY-less SFP modules with phy_port Maxime Chevallier
2026-02-03 19:57 ` [net-next,v3,06/11] " Simon Horman
2026-02-01 15:12 ` [PATCH net-next v3 07/11] net: phylink: " Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 08/11] net: phy: phy_port: Store information about a MII port's vacant state Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 09/11] net: phy: phy_link_topology: Add a helper to retrieve ports Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 10/11] netlink: specs: Add ethernet port listing with ethtool Maxime Chevallier
2026-02-03 17:55 ` Simon Horman
2026-02-03 18:14 ` Maxime Chevallier
2026-02-01 15:12 ` [PATCH net-next v3 11/11] net: ethtool: Introduce ethtool command to list ports Maxime Chevallier
2026-02-02 7:56 ` [PATCH net-next v3 00/11] net: phy_port: SFP modules representation and phy_port listing 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=20260203180250.2175436-1-horms@kernel.org \
--to=horms@kernel.org \
--cc=andrew@lunn.ch \
--cc=christophe.leroy@csgroup.eu \
--cc=daniel@makrotopia.org \
--cc=davem@davemloft.net \
--cc=dimitri.fedrau@liebherr.com \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=herve.codina@bootlin.com \
--cc=hkallweit1@gmail.com \
--cc=kabel@kernel.org \
--cc=kory.maincent@bootlin.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=maxime.chevallier@bootlin.com \
--cc=mwojtas@chromium.org \
--cc=netdev@vger.kernel.org \
--cc=nicveronese@gmail.com \
--cc=o.rempel@pengutronix.de \
--cc=pabeni@redhat.com \
--cc=romain.gantois@bootlin.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=vladimir.oltean@nxp.com \
/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