Message ID | 20241013052916.3115142-1-o.rempel@pengutronix.de (mailing list archive) |
---|---|
State | Accepted |
Commit | d0c3601f2c4e12e7689b0f46ebc17525250ea8c3 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,v2,1/1] net: macb: Avoid 20s boot delay by skipping MDIO bus registration for fixed-link PHY | expand |
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Sun, 13 Oct 2024 07:29:16 +0200 you wrote: > A boot delay was introduced by commit 79540d133ed6 ("net: macb: Fix > handling of fixed-link node"). This delay was caused by the call to > `mdiobus_register()` in cases where a fixed-link PHY was present. The > MDIO bus registration triggered unnecessary PHY address scans, leading > to a 20-second delay due to attempts to detect Clause 45 (C45) > compatible PHYs, despite no MDIO bus being attached. > > [...] Here is the summary with links: - [net,v2,1/1] net: macb: Avoid 20s boot delay by skipping MDIO bus registration for fixed-link PHY https://git.kernel.org/netdev/net/c/d0c3601f2c4e You are awesome, thank you!
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index f06babec04a0b..56901280ba047 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -930,9 +930,6 @@ static int macb_mdiobus_register(struct macb *bp) return ret; } - if (of_phy_is_fixed_link(np)) - return mdiobus_register(bp->mii_bus); - /* Only create the PHY from the device tree if at least one PHY is * described. Otherwise scan the entire MDIO bus. We do this to support * old device tree that did not follow the best practices and did not @@ -953,8 +950,19 @@ static int macb_mdiobus_register(struct macb *bp) static int macb_mii_init(struct macb *bp) { + struct device_node *child, *np = bp->pdev->dev.of_node; int err = -ENXIO; + /* With fixed-link, we don't need to register the MDIO bus, + * except if we have a child named "mdio" in the device tree. + * In that case, some devices may be attached to the MACB's MDIO bus. + */ + child = of_get_child_by_name(np, "mdio"); + if (child) + of_node_put(child); + else if (of_phy_is_fixed_link(np)) + return macb_mii_probe(bp->dev); + /* Enable management port */ macb_writel(bp, NCR, MACB_BIT(MPE));