| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- From 029497e66bdc762e001880e4c85a91f35a54b1e2 Mon Sep 17 00:00:00 2001
- From: Christian Lamparter <[email protected]>
- Date: Sun, 19 Sep 2021 13:57:25 +0200
- Subject: [PATCH] net: bgmac-bcma: handle deferred probe error due to
- mac-address
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- Due to the inclusion of nvmem handling into the mac-address getter
- function of_get_mac_address() by
- commit d01f449c008a ("of_net: add NVMEM support to of_get_mac_address")
- it is now possible to get a -EPROBE_DEFER return code. Which did cause
- bgmac to assign a random ethernet address.
- This exact issue happened on my Meraki MR32. The nvmem provider is
- an EEPROM (at24c64) which gets instantiated once the module
- driver is loaded... This happens once the filesystem becomes available.
- With this patch, bgmac_probe() will propagate the -EPROBE_DEFER error.
- Then the driver subsystem will reschedule the probe at a later time.
- Cc: Petr Štetiar <[email protected]>
- Cc: Michael Walle <[email protected]>
- Fixes: d01f449c008a ("of_net: add NVMEM support to of_get_mac_address")
- Signed-off-by: Christian Lamparter <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- drivers/net/ethernet/broadcom/bgmac-bcma.c | 2 ++
- 1 file changed, 2 insertions(+)
- --- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
- +++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
- @@ -129,6 +129,8 @@ static int bgmac_probe(struct bcma_devic
- bcma_set_drvdata(core, bgmac);
-
- err = of_get_mac_address(bgmac->dev->of_node, bgmac->net_dev->dev_addr);
- + if (err == -EPROBE_DEFER)
- + return err;
-
- /* If no MAC address assigned via device tree, check SPROM */
- if (err) {
|