Message ID | CAOf5uwkLT_-esTkqj-Mhbsn_f-JETs+XF+vd8v=U+FQSoSPcQA@mail.gmail.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Kalle Valo |
Headers | show |
On 5/28/2018 5:33 PM, Michael Nazzareno Trimarchi wrote: > Hi Andy > > The problem seems really easy to solve: > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > index 412a05b..ba60b151 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > @@ -4227,13 +4227,7 @@ struct brcmf_sdio *brcmf_sdio_probe(struct > brcmf_sdio_dev *sdiodev) > timer_setup(&bus->timer, brcmf_sdio_watchdog, 0); > /* Initialize watchdog thread */ > init_completion(&bus->watchdog_wait); > - bus->watchdog_tsk = kthread_run(brcmf_sdio_watchdog_thread, > - bus, "brcmf_wdog/%s", > - dev_name(&sdiodev->func1->dev)); > - if (IS_ERR(bus->watchdog_tsk)) { > - pr_warn("brcmf_watchdog thread failed to start\n"); > - bus->watchdog_tsk = NULL; > - } > + > /* Initialize DPC thread */ > bus->dpc_triggered = false; > bus->dpc_running = false; > @@ -4281,6 +4275,14 @@ struct brcmf_sdio *brcmf_sdio_probe(struct > brcmf_sdio_dev *sdiodev) > goto fail; > } > > + bus->watchdog_tsk = kthread_run(brcmf_sdio_watchdog_thread, > + bus, "brcmf_wdog/%s", > + dev_name(&sdiodev->func1->dev)); > + if (IS_ERR(bus->watchdog_tsk)) { > + pr_warn("brcmf_watchdog thread failed to start\n"); > + bus->watchdog_tsk = NULL; > + } > + > return bus; Hi Michael, That makes no sense. Or are you saying the function brcmf_fw_get_firmwares() fails for you? Oh wait, you mentioned the driver was built-in, right? The above change does not solve the issue. It just makes it less likely to occur. So I think your initial fix is the best solution for this. Regards, Arend
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index 412a05b..ba60b151 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -4227,13 +4227,7 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) timer_setup(&bus->timer, brcmf_sdio_watchdog, 0); /* Initialize watchdog thread */ init_completion(&bus->watchdog_wait); - bus->watchdog_tsk = kthread_run(brcmf_sdio_watchdog_thread, - bus, "brcmf_wdog/%s", - dev_name(&sdiodev->func1->dev)); - if (IS_ERR(bus->watchdog_tsk)) { - pr_warn("brcmf_watchdog thread failed to start\n"); - bus->watchdog_tsk = NULL; - } + /* Initialize DPC thread */ bus->dpc_triggered = false;