summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRosen Penev2026-02-09 19:40:51 +0000
committerHauke Mehrtens2026-02-17 00:47:14 +0000
commitd66fc6e86fce3f9f7e2b78f254388c8c39e3ac27 (patch)
treeecc3ce7f150fa54221dd328caba60414be4219d1
parent42b10de18d65963cc83dca5ee3d58f01836a7221 (diff)
downloadopenwrt-d66fc6e86fce3f9f7e2b78f254388c8c39e3ac27.tar.gz
lantiq: handle EPROBE_DEFER for MAC
If nvmem is used for ethernet mac address, we need to defer loading to get the proper mac. Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://github.com/openwrt/openwrt/pull/21955 Signed-off-by: Robert Marko <robimarko@gmail.com> (cherry picked from commit fb71774232871e7272bf15950c4a08f2a8395b87)
-rw-r--r--target/linux/lantiq/patches-6.12/028-NET-lantiq-various-etop-fixes.patch14
1 files changed, 10 insertions, 4 deletions
diff --git a/target/linux/lantiq/patches-6.12/028-NET-lantiq-various-etop-fixes.patch b/target/linux/lantiq/patches-6.12/028-NET-lantiq-various-etop-fixes.patch
index fff60cefaf..9a0fdfd175 100644
--- a/target/linux/lantiq/patches-6.12/028-NET-lantiq-various-etop-fixes.patch
+++ b/target/linux/lantiq/patches-6.12/028-NET-lantiq-various-etop-fixes.patch
@@ -767,7 +767,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
-@@ -671,18 +873,54 @@ ltq_etop_probe(struct platform_device *p
+@@ -671,18 +873,60 @@ ltq_etop_probe(struct platform_device *p
goto err_out;
}
@@ -806,7 +806,13 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+ if (err)
+ pr_err("Can't find phy-mode for port\n");
+
-+ of_get_mac_address(pdev->dev.of_node, priv->mac);
++ err = of_get_mac_address(pdev->dev.of_node, priv->mac);
++ if (err == -EPROBE_DEFER)
++ goto err_out;
++ if (err) {
++ eth_hw_addr_random(dev);
++ dev_err(&pdev->dev, "generated random MAC address %pM\n", priv->mac);
++ }
+
+ priv->clk_ppe = clk_get(&pdev->dev, NULL);
+ if (IS_ERR(priv->clk_ppe))
@@ -828,7 +834,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
spin_lock_init(&priv->lock);
SET_NETDEV_DEV(dev, &pdev->dev);
-@@ -698,15 +936,10 @@ ltq_etop_probe(struct platform_device *p
+@@ -698,15 +942,10 @@ ltq_etop_probe(struct platform_device *p
goto err_free;
}
@@ -848,7 +854,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
err = register_netdev(dev);
if (err)
-@@ -733,31 +966,22 @@ static void ltq_etop_remove(struct platf
+@@ -733,31 +972,22 @@ static void ltq_etop_remove(struct platf
}
}