Message ID | 20230324081656.2969663-3-michael.wei.hong.sit@intel.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Fix PHY handle no longer parsing | expand |
Context | Check | Description |
---|---|---|
netdev/series_format | success | Posting correctly formatted |
netdev/tree_selection | success | Clearly marked for net |
netdev/fixes_present | success | Fixes tag present in non-next series |
netdev/header_inline | success | No static functions without inline keyword in header files |
netdev/build_32bit | success | Errors and warnings before: 18 this patch: 18 |
netdev/cc_maintainers | success | CCed 13 of 13 maintainers |
netdev/build_clang | success | Errors and warnings before: 18 this patch: 18 |
netdev/verify_signedoff | success | Signed-off-by tag matches author and committer |
netdev/deprecated_api | success | None detected |
netdev/check_selftest | success | No net selftest shell script |
netdev/verify_fixes | success | Fixes tag looks correct |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 18 this patch: 18 |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 19 lines checked |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/source_inline | success | Was 0 now: 0 |
Hi, On Fri, Mar 24, 2023 at 04:16:55PM +0800, Michael Sit Wei Hong wrote: > After the introduction of the fixed-link support, the MAC driver > no longer attempt to scan for a PHY to attach to. This causes the > non fixed-link setups to stop working. > > Using the phylink_expects_phy() to check and determine if the MAC > should expect and attach a PHY. > > Fixes: ab21cf920928 ("net: stmmac: make mdio register skips PHY scanning for fixed-link") > Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com> > Signed-off-by: Lai Peter Jun Ann <peter.jun.ann.lai@intel.com> With this patch in linux-next, the orangepi-pc qemu emulation fails to bring up the Ethernet interface. The following error is seen. [ 12.482401] dwmac-sun8i 1c30000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0 [ 12.487789] dwmac-sun8i 1c30000.ethernet eth0: PHY [mdio_mux-0.1:01] driver [Generic PHY] (irq=POLL) [ 12.488177] dwmac-sun8i 1c30000.ethernet eth0: no phy found [ 12.488295] dwmac-sun8i 1c30000.ethernet eth0: __stmmac_open: Cannot attach to PHY (error: -19) Reverting this patch fixes the problem. > --- > drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > index 8f543c3ab5c5..41f0f3b74933 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > @@ -1135,6 +1135,7 @@ static int stmmac_init_phy(struct net_device *dev) > { > struct stmmac_priv *priv = netdev_priv(dev); > struct fwnode_handle *fwnode; > + bool phy_needed; > int ret; > > fwnode = of_fwnode_handle(priv->plat->phylink_node); > @@ -1144,10 +1145,11 @@ static int stmmac_init_phy(struct net_device *dev) > if (fwnode) > ret = phylink_fwnode_phy_connect(priv->phylink, fwnode, 0); > > + phy_needed = phylink_expects_phy(priv->phylink); > /* Some DT bindings do not set-up the PHY handle. Let's try to > * manually parse it > */ > - if (!fwnode || ret) { > + if (!fwnode || phy_needed || ret) { I don't really understand this condition. It starts taking this path even if ret == 0 and fwnode != NULL if phy_needed is set. That means this path is now taken even if phylink_fwnode_phy_connect() returned no error. That seems odd. Guenter > int addr = priv->plat->phy_addr; > struct phy_device *phydev; > > -- > 2.34.1 >
On Wed, Apr 05, 2023 at 10:02:16AM -0700, Guenter Roeck wrote: > Hi, > > On Fri, Mar 24, 2023 at 04:16:55PM +0800, Michael Sit Wei Hong wrote: > > After the introduction of the fixed-link support, the MAC driver > > no longer attempt to scan for a PHY to attach to. This causes the > > non fixed-link setups to stop working. > > > > Using the phylink_expects_phy() to check and determine if the MAC > > should expect and attach a PHY. > > > > Fixes: ab21cf920928 ("net: stmmac: make mdio register skips PHY scanning for fixed-link") > > Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com> > > Signed-off-by: Lai Peter Jun Ann <peter.jun.ann.lai@intel.com> > > With this patch in linux-next, the orangepi-pc qemu emulation fails to > bring up the Ethernet interface. The following error is seen. > > [ 12.482401] dwmac-sun8i 1c30000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0 > [ 12.487789] dwmac-sun8i 1c30000.ethernet eth0: PHY [mdio_mux-0.1:01] driver [Generic PHY] (irq=POLL) > [ 12.488177] dwmac-sun8i 1c30000.ethernet eth0: no phy found > [ 12.488295] dwmac-sun8i 1c30000.ethernet eth0: __stmmac_open: Cannot attach to PHY (error: -19) > > Reverting this patch fixes the problem. Please see 20230405093945.3549491-1-michael.wei.hong.sit@intel.com for the fix.
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 8f543c3ab5c5..41f0f3b74933 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1135,6 +1135,7 @@ static int stmmac_init_phy(struct net_device *dev) { struct stmmac_priv *priv = netdev_priv(dev); struct fwnode_handle *fwnode; + bool phy_needed; int ret; fwnode = of_fwnode_handle(priv->plat->phylink_node); @@ -1144,10 +1145,11 @@ static int stmmac_init_phy(struct net_device *dev) if (fwnode) ret = phylink_fwnode_phy_connect(priv->phylink, fwnode, 0); + phy_needed = phylink_expects_phy(priv->phylink); /* Some DT bindings do not set-up the PHY handle. Let's try to * manually parse it */ - if (!fwnode || ret) { + if (!fwnode || phy_needed || ret) { int addr = priv->plat->phy_addr; struct phy_device *phydev;