]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: macb: avoid redundant lookup for "mdio" child node in MDIO setup
authorOleksij Rempel <o.rempel@pengutronix.de>
Wed, 30 Oct 2024 08:52:24 +0000 (09:52 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sun, 3 Nov 2024 22:25:36 +0000 (14:25 -0800)
Pass the "mdio" child node directly to `macb_mdiobus_register` to avoid
performing the node lookup twice.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20241030085224.2632426-1-o.rempel@pengutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/cadence/macb_main.c

index ebe886b9889171913693d3de5c1bf998ae2f4a29..daa416fb1724e942c74279ca632814be99ffcae1 100644 (file)
@@ -915,20 +915,15 @@ static int macb_mii_probe(struct net_device *dev)
        return 0;
 }
 
-static int macb_mdiobus_register(struct macb *bp)
+static int macb_mdiobus_register(struct macb *bp, struct device_node *mdio_np)
 {
        struct device_node *child, *np = bp->pdev->dev.of_node;
 
        /* If we have a child named mdio, probe it instead of looking for PHYs
         * directly under the MAC node
         */
-       child = of_get_child_by_name(np, "mdio");
-       if (child) {
-               int ret = of_mdiobus_register(bp->mii_bus, child);
-
-               of_node_put(child);
-               return ret;
-       }
+       if (mdio_np)
+               return of_mdiobus_register(bp->mii_bus, mdio_np);
 
        /* 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
@@ -950,17 +945,15 @@ 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;
+       struct device_node *mdio_np, *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))
+       mdio_np = of_get_child_by_name(np, "mdio");
+       if (!mdio_np && of_phy_is_fixed_link(np))
                return macb_mii_probe(bp->dev);
 
        /* Enable management port */
@@ -984,7 +977,7 @@ static int macb_mii_init(struct macb *bp)
 
        dev_set_drvdata(&bp->dev->dev, bp->mii_bus);
 
-       err = macb_mdiobus_register(bp);
+       err = macb_mdiobus_register(bp, mdio_np);
        if (err)
                goto err_out_free_mdiobus;
 
@@ -999,6 +992,8 @@ err_out_unregister_bus:
 err_out_free_mdiobus:
        mdiobus_free(bp->mii_bus);
 err_out:
+       of_node_put(mdio_np);
+
        return err;
 }