]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
ramips: mtk_eth_soc: handle EPROBE_DEFER for MAC 21920/head
authorRosen Penev <rosenp@gmail.com>
Sat, 7 Feb 2026 23:58:32 +0000 (15:58 -0800)
committerRobert Marko <robimarko@gmail.com>
Mon, 9 Feb 2026 08:58:10 +0000 (09:58 +0100)
If nvmem is used for ethernet mac address, we need to defer loading to
get the proper mac.

Move to probe as ndo_init is the wrong place to handle EPROBE_DEFER.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21920
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c

index 8ed4d0e8a4aa9e386d42ea75478e6dc1241c6913..a67dc145daab50167cc99a316e49e89c116a60b1 100644 (file)
@@ -1359,13 +1359,6 @@ static int __init fe_init(struct net_device *dev)
 
        fe_reset_phy(priv);
 
-       /* Set the MAC address if it is correct, if not use a random MAC address  */
-       if (of_get_ethdev_address(priv->dev->of_node, dev)) {
-               eth_hw_addr_random(dev);
-               dev_err(priv->dev, "generated random MAC address %pM\n",
-                       dev->dev_addr);
-       }
-
        err = fe_mdio_init(priv);
        if (err)
                return err;
@@ -1554,6 +1547,17 @@ static int fe_probe(struct platform_device *pdev)
        netdev->netdev_ops = &fe_netdev_ops;
        netdev->base_addr = (unsigned long)fe_base;
 
+       /* Set the MAC address if it is correct, if not use a random MAC address  */
+       err = of_get_ethdev_address(pdev->dev.of_node, netdev);
+       if (err == -EPROBE_DEFER)
+               return err;
+
+       if (err) {
+               eth_hw_addr_random(netdev);
+               dev_err(&pdev->dev, "generated random MAC address %pM\n",
+                       netdev->dev_addr);
+       }
+
        netdev->irq = platform_get_irq(pdev, 0);
        if (netdev->irq < 0)
                return -ENXIO;