[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5B0D1BF1.7070105@broadcom.com>
Date: Tue, 29 May 2018 11:22:57 +0200
From: Arend van Spriel <arend.vanspriel@...adcom.com>
To: Michael Nazzareno Trimarchi <michael@...rulasolutions.com>,
Andy Shevchenko <andy.shevchenko@...il.com>
Cc: Franky Lin <franky.lin@...adcom.com>,
Hante Meuleman <hante.meuleman@...adcom.com>,
Chi-Hsien Lin <chi-hsien.lin@...ress.com>,
Wright Feng <wright.feng@...ress.com>,
Kalle Valo <kvalo@...eaurora.org>,
"David S. Miller" <davem@...emloft.net>,
Pieter-Paul Giesberts <pieter-paul.giesberts@...adcom.com>,
Ian Molton <ian@...menth.co.uk>,
"open list:TI WILINK WIRELES..." <linux-wireless@...r.kernel.org>,
"open list:BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER"
<brcm80211-dev-list.pdl@...adcom.com>,
brcm80211-dev-list@...ress.com, netdev <netdev@...r.kernel.org>,
LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] brcmfmac: stop watchdog before detach and free everything
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
Powered by blists - more mailing lists