drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
NVMEM typically loads after the ethernet driver and
of_get_ethdev_address returns -EPROBE_DEFER. return in such a case to
allow NVMEM to work.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
index 2cbcc29408e3..d3c772ed5fc9 100644
--- a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
+++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
@@ -951,7 +951,9 @@ static int fs_enet_probe(struct platform_device *ofdev)
spin_lock_init(&fep->lock);
spin_lock_init(&fep->tx_lock);
- of_get_ethdev_address(ofdev->dev.of_node, ndev);
+ ret = of_get_ethdev_address(ofdev->dev.of_node, ndev);
+ if (ret == -EPROBE_DEFER)
+ goto out_cleanup_data;
ret = fep->ops->allocate_bd(ndev);
if (ret)
--
2.53.0
Le 24/02/2026 à 02:46, Rosen Penev a écrit : > NVMEM typically loads after the ethernet driver and > of_get_ethdev_address returns -EPROBE_DEFER. return in such a case to > allow NVMEM to work. > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > --- > drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c > index 2cbcc29408e3..d3c772ed5fc9 100644 > --- a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c > +++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c > @@ -951,7 +951,9 @@ static int fs_enet_probe(struct platform_device *ofdev) > spin_lock_init(&fep->lock); > spin_lock_init(&fep->tx_lock); > > - of_get_ethdev_address(ofdev->dev.of_node, ndev); > + ret = of_get_ethdev_address(ofdev->dev.of_node, ndev); > + if (ret == -EPROBE_DEFER) > + goto out_cleanup_data; What about other error cases ? Shouldn't it exit on all types of errors ? > > ret = fep->ops->allocate_bd(ndev); > if (ret) > -- > 2.53.0 > >
On Tue, Feb 24, 2026 at 12:29 AM Christophe Leroy (CS GROUP) <chleroy@kernel.org> wrote: > > > > Le 24/02/2026 à 02:46, Rosen Penev a écrit : > > NVMEM typically loads after the ethernet driver and > > of_get_ethdev_address returns -EPROBE_DEFER. return in such a case to > > allow NVMEM to work. > > > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > > --- > > drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c > > index 2cbcc29408e3..d3c772ed5fc9 100644 > > --- a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c > > +++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c > > @@ -951,7 +951,9 @@ static int fs_enet_probe(struct platform_device *ofdev) > > spin_lock_init(&fep->lock); > > spin_lock_init(&fep->tx_lock); > > > > - of_get_ethdev_address(ofdev->dev.of_node, ndev); > > + ret = of_get_ethdev_address(ofdev->dev.of_node, ndev); > > + if (ret == -EPROBE_DEFER) > > + goto out_cleanup_data; > > What about other error cases ? Shouldn't it exit on all types of errors ? For MAC acquisition? No. That would result in a non working interface for no good reason. The way other driver handle this is exit when probe is deferred, and set a random MAC on other errors. > > > > > ret = fep->ops->allocate_bd(ndev); > > if (ret) > > -- > > 2.53.0 > > > > >
© 2016 - 2026 Red Hat, Inc.