[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID:
<PAXPR04MB85107041E1D00BBC92A33D69889FA@PAXPR04MB8510.eurprd04.prod.outlook.com>
Date: Fri, 30 Jan 2026 10:09:42 +0000
From: Wei Fang <wei.fang@....com>
To: Maxime Chevallier <maxime.chevallier@...tlin.com>, Russell King
<linux@...linux.org.uk>, Jakub Kicinski <kuba@...nel.org>
CC: "andrew@...n.ch" <andrew@...n.ch>, "hkallweit1@...il.com"
<hkallweit1@...il.com>, "florian.fainelli@...adcom.com"
<florian.fainelli@...adcom.com>, xiaolei.wang <xiaolei.wang@...driver.com>,
"davem@...emloft.net" <davem@...emloft.net>, "edumazet@...gle.com"
<edumazet@...gle.com>, "pabeni@...hat.com" <pabeni@...hat.com>,
"quic_abchauha@...cinc.com" <quic_abchauha@...cinc.com>,
"quic_sarohasa@...cinc.com" <quic_sarohasa@...cinc.com>,
"imx@...ts.linux.dev" <imx@...ts.linux.dev>, "netdev@...r.kernel.org"
<netdev@...r.kernel.org>, "linux-kernel@...r.kernel.org"
<linux-kernel@...r.kernel.org>
Subject: RE: [PATCH net] net: phy: add device link between MAC device and MDIO
device
> On 30/01/2026 04:41, Wei Fang wrote:
> [...]
> >
> > diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
> > index 81984d4ebb7c..c48335bfc7b6 100644
> > --- a/drivers/net/phy/phy_device.c
> > +++ b/drivers/net/phy/phy_device.c
> > @@ -1771,9 +1771,17 @@ int phy_attach_direct(struct net_device *dev,
> struct phy_device *phydev,
> > * another mac interface, so we should create a device link
> between
> > * phy dev and mac dev.
> > */
> > - if (dev && phydev->mdio.bus->parent && dev->dev.parent !=
> phydev->mdio.bus->parent)
> > - phydev->devlink = device_link_add(dev->dev.parent,
> &phydev->mdio.dev,
> > -
> DL_FLAG_PM_RUNTIME | DL_FLAG_STATELESS);
> > + if (dev && bus->parent && dev->dev.parent != bus->parent) {
> > + if (phydev->sfp_bus_attached)
> ^ assuming we replace with phy_on_sfp()
> > + phydev->devlink =
> device_link_add(dev->dev.parent,
> > +
> bus->parent,
> > +
> DL_FLAG_PM_RUNTIME |
> > +
> DL_FLAG_STATELESS);
> > + else
> > + device_link_add(dev->dev.parent, bus->parent,
> > + DL_FLAG_PM_RUNTIME |
> > +
> DL_FLAG_AUTOREMOVE_SUPPLIER);
> > + }
>
> I think we should let the phy_on_sfp() case alone for now. The lifetime
> of the SFP phydev and the MAC are completely independent here, the PHY
> can be probed/removed without the MAC being there, and vice versa.
>
> The MDIO bus that controls that SFP PHY's lifetime is the same as the
> PHY itself, the mdio bus in that case exists solely to drive that single
> PHY, and in can't be shared between multiple PHYs even if we have
> multiple SFP ports in the entire system.
>
> The logical thing to do IMO is not to tie the MAC and the MDIO Bus
> itself, but rather the MAC and the PHY as was done before. As you state,
Okay, I agree. I will only change the devlink flag to
DL_FLAG_AUTOREMOVE_SUPPLIER. And thanks for you prompt feedback. :)
> we couldn't set DL_FLAG_AUTOREMOVE_SUPPLIER because of SFP PHYs, but
> if we add the check on "phy_on_sfp()", it should now be fine.
>
Powered by blists - more mailing lists