* [PATCH net-next] net: phylink: allow PHYs to be attached in 802.3z inband mode @ 2026-03-27 12:56 Russell King (Oracle) 2026-03-27 15:44 ` Maxime Chevallier 0 siblings, 1 reply; 3+ messages in thread From: Russell King (Oracle) @ 2026-03-27 12:56 UTC (permalink / raw) To: Andrew Lunn Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, netdev, Paolo Abeni Now that we have proper decision making for inband mode support which makes it a "best efforts" feature based on the capabilities of the PHY and PCS, we can relax whether we expect and permit a PHY to be attached. This is especially true for the 2500BASE-X case which some PHYs use without inband on their host side interface for 2.5G speeds, but use inband for slower speeds switching to SGMII on their host side interface. We already have such a case for some qcom-ethqos setups, although qcom-ethqos overrides phylink's inband settings by accessing the PCS directly at the moment. This should allow qcom-ethqos to transition to defaulting to inband when 2500BASE-X or SGMII is specified in its DTS. Allow PHYs to be attached when inband mode has been specified, which will be necessary to allow inband mode to be used on qcom-ethqos. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> --- drivers/net/phy/phylink.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index 087ac63f9193..1c178038e6f1 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -1965,9 +1965,7 @@ EXPORT_SYMBOL_GPL(phylink_destroy); */ bool phylink_expects_phy(struct phylink *pl) { - if (pl->cfg_link_an_mode == MLO_AN_FIXED || - (pl->cfg_link_an_mode == MLO_AN_INBAND && - phy_interface_mode_is_8023z(pl->link_interface))) + if (pl->cfg_link_an_mode == MLO_AN_FIXED) return false; return true; } @@ -2206,9 +2204,7 @@ static int phylink_attach_phy(struct phylink *pl, struct phy_device *phy, { u32 flags = 0; - if (WARN_ON(pl->cfg_link_an_mode == MLO_AN_FIXED || - (pl->cfg_link_an_mode == MLO_AN_INBAND && - phy_interface_mode_is_8023z(interface) && !pl->sfp_bus))) + if (WARN_ON(pl->cfg_link_an_mode == MLO_AN_FIXED)) return -EINVAL; if (pl->phydev) -- 2.47.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: phylink: allow PHYs to be attached in 802.3z inband mode 2026-03-27 12:56 [PATCH net-next] net: phylink: allow PHYs to be attached in 802.3z inband mode Russell King (Oracle) @ 2026-03-27 15:44 ` Maxime Chevallier 2026-03-27 16:17 ` Russell King (Oracle) 0 siblings, 1 reply; 3+ messages in thread From: Maxime Chevallier @ 2026-03-27 15:44 UTC (permalink / raw) To: Russell King (Oracle), Andrew Lunn Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, netdev, Paolo Abeni, Alexis Lothore Hi Russell, On 27/03/2026 13:56, Russell King (Oracle) wrote: > Now that we have proper decision making for inband mode support which > makes it a "best efforts" feature based on the capabilities of the PHY > and PCS, we can relax whether we expect and permit a PHY to be > attached. This is especially true for the 2500BASE-X case which some > PHYs use without inband on their host side interface for 2.5G speeds, > but use inband for slower speeds switching to SGMII on their host side > interface. > > We already have such a case for some qcom-ethqos setups, although > qcom-ethqos overrides phylink's inband settings by accessing the PCS > directly at the moment. This should allow qcom-ethqos to transition to > defaulting to inband when 2500BASE-X or SGMII is specified in its DTS. > > Allow PHYs to be attached when inband mode has been specified, which > will be necessary to allow inband mode to be used on qcom-ethqos. > > Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> > --- > drivers/net/phy/phylink.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c > index 087ac63f9193..1c178038e6f1 100644 > --- a/drivers/net/phy/phylink.c > +++ b/drivers/net/phy/phylink.c > @@ -1965,9 +1965,7 @@ EXPORT_SYMBOL_GPL(phylink_destroy); > */ > bool phylink_expects_phy(struct phylink *pl) > { > - if (pl->cfg_link_an_mode == MLO_AN_FIXED || > - (pl->cfg_link_an_mode == MLO_AN_INBAND && > - phy_interface_mode_is_8023z(pl->link_interface))) > + if (pl->cfg_link_an_mode == MLO_AN_FIXED) > return false; > return true; > } > @@ -2206,9 +2204,7 @@ static int phylink_attach_phy(struct phylink *pl, struct phy_device *phy, > { > u32 flags = 0; > > - if (WARN_ON(pl->cfg_link_an_mode == MLO_AN_FIXED || > - (pl->cfg_link_an_mode == MLO_AN_INBAND && > - phy_interface_mode_is_8023z(interface) && !pl->sfp_bus))) > + if (WARN_ON(pl->cfg_link_an_mode == MLO_AN_FIXED)) > return -EINVAL; > > if (pl->phydev) So I've tested that on my socfpga setup, and I now get this when trying to bring an interface attached to an SFP up : socfpga-dwmac ff702000.ethernet eth1: no phy found This wasn't showing before because our DT has : &gmac1 { status = "okay"; phy-mode = "1000base-x"; managed = "in-band-status"; sfp = <&sfp>; }; It used to kinda work because the problem was hidden with the use of "1000base-x" as the PHY mode. Now with this patch, using "sgmii" or "1000base-x" as the phy-mode doesn't do any difference, as expected. The real issue IMO is rather how stmmac_init_phy() behaves, it's guarded by: if (!phylink_expects_phy(priv->phylink)) return 0; and then tries to find a PHY, failing if there's none. We should probably add an extra check there to say "if we have a PCS, then it's OK not to have a PHY" ? Thanks, Maxime ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: phylink: allow PHYs to be attached in 802.3z inband mode 2026-03-27 15:44 ` Maxime Chevallier @ 2026-03-27 16:17 ` Russell King (Oracle) 0 siblings, 0 replies; 3+ messages in thread From: Russell King (Oracle) @ 2026-03-27 16:17 UTC (permalink / raw) To: Maxime Chevallier Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, netdev, Paolo Abeni, Alexis Lothore On Fri, Mar 27, 2026 at 04:44:23PM +0100, Maxime Chevallier wrote: > Hi Russell, > > On 27/03/2026 13:56, Russell King (Oracle) wrote: > > Now that we have proper decision making for inband mode support which > > makes it a "best efforts" feature based on the capabilities of the PHY > > and PCS, we can relax whether we expect and permit a PHY to be > > attached. This is especially true for the 2500BASE-X case which some > > PHYs use without inband on their host side interface for 2.5G speeds, > > but use inband for slower speeds switching to SGMII on their host side > > interface. > > > > We already have such a case for some qcom-ethqos setups, although > > qcom-ethqos overrides phylink's inband settings by accessing the PCS > > directly at the moment. This should allow qcom-ethqos to transition to > > defaulting to inband when 2500BASE-X or SGMII is specified in its DTS. > > > > Allow PHYs to be attached when inband mode has been specified, which > > will be necessary to allow inband mode to be used on qcom-ethqos. > > > > Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> > > --- > > drivers/net/phy/phylink.c | 8 ++------ > > 1 file changed, 2 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c > > index 087ac63f9193..1c178038e6f1 100644 > > --- a/drivers/net/phy/phylink.c > > +++ b/drivers/net/phy/phylink.c > > @@ -1965,9 +1965,7 @@ EXPORT_SYMBOL_GPL(phylink_destroy); > > */ > > bool phylink_expects_phy(struct phylink *pl) > > { > > - if (pl->cfg_link_an_mode == MLO_AN_FIXED || > > - (pl->cfg_link_an_mode == MLO_AN_INBAND && > > - phy_interface_mode_is_8023z(pl->link_interface))) > > + if (pl->cfg_link_an_mode == MLO_AN_FIXED) > > return false; > > return true; > > } > > @@ -2206,9 +2204,7 @@ static int phylink_attach_phy(struct phylink *pl, struct phy_device *phy, > > { > > u32 flags = 0; > > > > - if (WARN_ON(pl->cfg_link_an_mode == MLO_AN_FIXED || > > - (pl->cfg_link_an_mode == MLO_AN_INBAND && > > - phy_interface_mode_is_8023z(interface) && !pl->sfp_bus))) > > + if (WARN_ON(pl->cfg_link_an_mode == MLO_AN_FIXED)) > > return -EINVAL; > > > > if (pl->phydev) > > So I've tested that on my socfpga setup, and I now get this when trying to > bring an interface attached to an SFP up : > > socfpga-dwmac ff702000.ethernet eth1: no phy found > > This wasn't showing before because our DT has : > > &gmac1 { > status = "okay"; > phy-mode = "1000base-x"; > managed = "in-band-status"; > sfp = <&sfp>; > }; > > It used to kinda work because the problem was hidden with the use of "1000base-x" > as the PHY mode. > > Now with this patch, using "sgmii" or "1000base-x" as the phy-mode doesn't > do any difference, as expected. > > The real issue IMO is rather how stmmac_init_phy() behaves, it's guarded by: > > if (!phylink_expects_phy(priv->phylink)) > return 0; > > and then tries to find a PHY, failing if there's none. We should probably add > an extra check there to say "if we have a PCS, then it's OK not to have a PHY" ? I had a feeling that we'd run into this, because stmmac is somewhat "special" (for all the wrong reasons.) phylink has, for a long time, had "we must have a PHY" when it operates in MLO_AN_PHY mode, "we must not have a PHY" when it operates in MLO_AN_FIXED mode, and "we may or may not have a PHY" when operating in inband depending on the PHY interface mode. stmmac basically doesn't support the latter - it assumes that if a PHY node is not present, then it needs to fall back to the PHY addressed by priv->plat->phy_addr, and if that's not specified, then it errors out. phylink_expects_phy() was added to try and workaround this. I suspect that if you specify: &gmac1 { status = "okay"; phy-mode = "sgmii"; managed = "in-band-status"; sfp = <&sfp>; }; without this patch, you'll run into the same problem - while phylink would be perfectly happy, stmmac decides "we must have a PHY!" because phylink_expects_phy() will return true for this. As I've recently said, I think we're more or less boxed in between a rock and a hard place because of the hacks that qcom-ethqos introduced with its PCS support. At the moment, I am failing to see any path where the stmmac PCS can be programmed for inband according to phylink's wishes and qcom-ethqos can be made to work without its hacks. This all ultimately comes back to the half-hearted phylink conversion of stmmac that was done behind my back without my review. Had the conversion been done fully, and kept up with the phylink changes for PCS support, then we probably wouldn't be in this situation today. Unfortunately, the driver is going to keep breaking all the time that it abuses phylink, and at the moment I see no way to stop this sodding driver abusing phylink. Can we not just delete this bloody driver and be done with it? :D -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last! ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-03-27 16:17 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-03-27 12:56 [PATCH net-next] net: phylink: allow PHYs to be attached in 802.3z inband mode Russell King (Oracle) 2026-03-27 15:44 ` Maxime Chevallier 2026-03-27 16:17 ` Russell King (Oracle)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox