[openwrt/openwrt] ramips: mtk_eth_soc: handle EPROBE_DEFER for MAC
LEDE Commits
lede-commits at lists.infradead.org
Mon Feb 9 00:58:26 PST 2026
robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0780972fd5c5c4f07d3d45f132f657cc0cf91e66
commit 0780972fd5c5c4f07d3d45f132f657cc0cf91e66
Author: Rosen Penev <rosenp at gmail.com>
AuthorDate: Sat Feb 7 15:58:32 2026 -0800
ramips: mtk_eth_soc: handle EPROBE_DEFER for MAC
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 at gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21920
Signed-off-by: Robert Marko <robimarko at gmail.com>
---
.../files/drivers/net/ethernet/ralink/mtk_eth_soc.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c
index 8ed4d0e8a4..a67dc145da 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c
@@ -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;
More information about the lede-commits
mailing list