Commit e93a766d authored by Rafał Miłecki's avatar Rafał Miłecki Committed by Jakub Kicinski
Browse files

net: broadcom: bcm4908_enet: handle -EPROBE_DEFER when getting MAC



Reading MAC from OF may return -EPROBE_DEFER if underlaying NVMEM device
isn't ready yet. In such case pass that error code up and "wait" to be
probed later.

Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
Link: https://lore.kernel.org/r/20220915133013.2243-1-zajec5@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent caddb4e0
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -716,6 +716,8 @@ static int bcm4908_enet_probe(struct platform_device *pdev)

	SET_NETDEV_DEV(netdev, &pdev->dev);
	err = of_get_ethdev_address(dev->of_node, netdev);
	if (err == -EPROBE_DEFER)
		goto err_dma_free;
	if (err)
		eth_hw_addr_random(netdev);
	netdev->netdev_ops = &bcm4908_enet_netdev_ops;
@@ -726,14 +728,17 @@ static int bcm4908_enet_probe(struct platform_device *pdev)
	netif_napi_add(netdev, &enet->rx_ring.napi, bcm4908_enet_poll_rx, NAPI_POLL_WEIGHT);

	err = register_netdev(netdev);
	if (err) {
		bcm4908_enet_dma_free(enet);
		return err;
	}
	if (err)
		goto err_dma_free;

	platform_set_drvdata(pdev, enet);

	return 0;

err_dma_free:
	bcm4908_enet_dma_free(enet);

	return err;
}

static int bcm4908_enet_remove(struct platform_device *pdev)