[PATCH net-next] net: fs_enet: allow nvmem to override MAC address

Rosen Penev posted 1 patch 1 month, 1 week ago
drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH net-next] net: fs_enet: allow nvmem to override MAC address
Posted by Rosen Penev 1 month, 1 week ago
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
Re: [PATCH net-next] net: fs_enet: allow nvmem to override MAC address
Posted by Christophe Leroy (CS GROUP) 1 month, 1 week ago

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
> 
> 

Re: [PATCH net-next] net: fs_enet: allow nvmem to override MAC address
Posted by Rosen Penev 1 month, 1 week ago
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
> >
> >
>