* [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address
@ 2026-04-27 5:16 Rosen Penev
2026-04-27 7:49 ` Jérôme Pouiller
0 siblings, 1 reply; 3+ messages in thread
From: Rosen Penev @ 2026-04-27 5:16 UTC (permalink / raw)
To: linux-wireless; +Cc: Jérôme Pouiller, open list
In case nvmem gets used and is not ready in time for probe of wfx,
EPROBE_DEFER gets called. Return it so that a proper MAC address can be
specified in such a case.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/wireless/silabs/wfx/main.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/wireless/silabs/wfx/main.c b/drivers/net/wireless/silabs/wfx/main.c
index dda36e41eed1..dc40a9bd986d 100644
--- a/drivers/net/wireless/silabs/wfx/main.c
+++ b/drivers/net/wireless/silabs/wfx/main.c
@@ -445,6 +445,8 @@ int wfx_probe(struct wfx_dev *wdev)
for (i = 0; i < ARRAY_SIZE(wdev->addresses); i++) {
eth_zero_addr(wdev->addresses[i].addr);
err = of_get_mac_address(wdev->dev->of_node, wdev->addresses[i].addr);
+ if (err == -EPROBE_DEFER)
+ goto irq_unsubscribe;
if (!err)
wdev->addresses[i].addr[ETH_ALEN - 1] += i;
else
--
2.54.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address
2026-04-27 5:16 [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address Rosen Penev
@ 2026-04-27 7:49 ` Jérôme Pouiller
2026-04-27 19:31 ` Rosen Penev
0 siblings, 1 reply; 3+ messages in thread
From: Jérôme Pouiller @ 2026-04-27 7:49 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org, Rosen Penev; +Cc: open list
Hello Rosen,
On Monday 27 April 2026 07:16:04 Central European Summer Time Rosen Penev wrote:
>
> In case nvmem gets used and is not ready in time for probe of wfx,
> EPROBE_DEFER gets called. Return it so that a proper MAC address can be
> specified in such a case.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
> drivers/net/wireless/silabs/wfx/main.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/net/wireless/silabs/wfx/main.c b/drivers/net/wireless/silabs/wfx/main.c
> index dda36e41eed1..dc40a9bd986d 100644
> --- a/drivers/net/wireless/silabs/wfx/main.c
> +++ b/drivers/net/wireless/silabs/wfx/main.c
> @@ -445,6 +445,8 @@ int wfx_probe(struct wfx_dev *wdev)
> for (i = 0; i < ARRAY_SIZE(wdev->addresses); i++) {
> eth_zero_addr(wdev->addresses[i].addr);
> err = of_get_mac_address(wdev->dev->of_node, wdev->addresses[i].addr);
> + if (err == -EPROBE_DEFER)
> + goto irq_unsubscribe;
> if (!err)
> wdev->addresses[i].addr[ETH_ALEN - 1] += i;
> else
I assume this patch works when WF200 is connected on SPI with reset GPIO
configured. However, for SDIO and without gpio reset, we can't run the
device initialisation twice.
I believe the check has to happen before the call to wfx_init_device().
To check it works as expected, can you also test your patch without the
reset-gpio attribute?
--
Jérôme Pouiller
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address
2026-04-27 7:49 ` Jérôme Pouiller
@ 2026-04-27 19:31 ` Rosen Penev
0 siblings, 0 replies; 3+ messages in thread
From: Rosen Penev @ 2026-04-27 19:31 UTC (permalink / raw)
To: Jérôme Pouiller; +Cc: linux-wireless@vger.kernel.org, open list
On Mon, Apr 27, 2026 at 12:49 AM Jérôme Pouiller
<jerome.pouiller@silabs.com> wrote:
>
> Hello Rosen,
>
> On Monday 27 April 2026 07:16:04 Central European Summer Time Rosen Penev wrote:
> >
> > In case nvmem gets used and is not ready in time for probe of wfx,
> > EPROBE_DEFER gets called. Return it so that a proper MAC address can be
> > specified in such a case.
> >
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > ---
> > drivers/net/wireless/silabs/wfx/main.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/net/wireless/silabs/wfx/main.c b/drivers/net/wireless/silabs/wfx/main.c
> > index dda36e41eed1..dc40a9bd986d 100644
> > --- a/drivers/net/wireless/silabs/wfx/main.c
> > +++ b/drivers/net/wireless/silabs/wfx/main.c
> > @@ -445,6 +445,8 @@ int wfx_probe(struct wfx_dev *wdev)
> > for (i = 0; i < ARRAY_SIZE(wdev->addresses); i++) {
> > eth_zero_addr(wdev->addresses[i].addr);
> > err = of_get_mac_address(wdev->dev->of_node, wdev->addresses[i].addr);
> > + if (err == -EPROBE_DEFER)
> > + goto irq_unsubscribe;
> > if (!err)
> > wdev->addresses[i].addr[ETH_ALEN - 1] += i;
> > else
>
> I assume this patch works when WF200 is connected on SPI with reset GPIO
> configured. However, for SDIO and without gpio reset, we can't run the
> device initialisation twice.
>
> I believe the check has to happen before the call to wfx_init_device().
>
> To check it works as expected, can you also test your patch without the
> reset-gpio attribute?
I do not have this hardware.
>
>
> --
> Jérôme Pouiller
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-04-27 19:31 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-27 5:16 [PATCH] wifi: wfx: handle EPROBE_DEFER with of_get_mac_address Rosen Penev
2026-04-27 7:49 ` Jérôme Pouiller
2026-04-27 19:31 ` Rosen Penev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox