mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-02-13 03:21:49 +01:00
lantiq: xrx200: handle EPROBE_DEFER for MAC address
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
The xrx200 ethernet driver falls back to a random MAC address on any error from of_get_ethdev_address(), including -EPROBE_DEFER. When the MAC address comes from an nvmem layout driver (such as u-boot-env on NAND), the nvmem cell may not be available yet at first probe attempt. Fix this by propagating EPROBE_DEFER so the driver probe is deferred until the nvmem cell becomes available. Tested on Zyxel P-2812HNU-F1 (NAND, u-boot-env nvmem layout). Signed-off-by: Burak Aydos <byhexadecimal@gmail.com> Link: https://github.com/openwrt/openwrt/pull/21861 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
09de759506
commit
50e7e5c80d
1 changed files with 30 additions and 0 deletions
|
|
@ -0,0 +1,30 @@
|
|||
From: Burak Aydos <byhexadecimal@gmail.com>
|
||||
Date: Mon, 03 Feb 2026 12:00:00 +0300
|
||||
Subject: [PATCH] net: ethernet: lantiq: xrx200: handle EPROBE_DEFER for MAC
|
||||
address
|
||||
|
||||
When the MAC address is provided by an nvmem layout driver (such as
|
||||
u-boot-env), the nvmem cell may not be available yet when the ethernet
|
||||
driver probes. In this case, of_get_ethdev_address() returns
|
||||
-EPROBE_DEFER to indicate the driver should be retried later.
|
||||
|
||||
Currently the driver treats all errors equally and falls back to a
|
||||
random MAC address. Fix this by propagating EPROBE_DEFER so the
|
||||
driver probe is deferred until the nvmem cell becomes available.
|
||||
|
||||
Signed-off-by: Burak Aydos <byhexadecimal@gmail.com>
|
||||
---
|
||||
drivers/net/ethernet/lantiq_xrx200.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/net/ethernet/lantiq_xrx200.c
|
||||
+++ b/drivers/net/ethernet/lantiq_xrx200.c
|
||||
@@ -597,6 +597,8 @@ static int xrx200_probe(struct platform_
|
||||
}
|
||||
|
||||
err = of_get_ethdev_address(np, net_dev);
|
||||
+ if (err == -EPROBE_DEFER)
|
||||
+ return err;
|
||||
if (err)
|
||||
eth_hw_addr_random(net_dev);
|
||||
|
||||
Loading…
Add table
Reference in a new issue