Re: [1/2] mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure

From: Kalle Valo
Date: Tue Nov 10 2020 - 13:50:42 EST


Tsuchiya Yuto <kitakar@xxxxxxxxx> wrote:

> When a PCIe function level reset (FLR) is performed but without fw reset for
> some reasons (e.g., on Microsoft Surface devices, fw reset requires other
> quirks), it fails to reset wifi properly. You can trigger the issue on such
> devices via debugfs entry for reset:
>
> $ echo 1 | sudo tee /sys/kernel/debug/mwifiex/mlan0/reset
>
> and the resulting dmesg log:
>
> [ 45.740508] mwifiex_pcie 0000:03:00.0: Resetting per request
> [ 45.742937] mwifiex_pcie 0000:03:00.0: info: successfully disconnected from [BSSID]: reason code 3
> [ 45.744666] mwifiex_pcie 0000:03:00.0: info: shutdown mwifiex...
> [ 45.751530] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
> [ 45.751539] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
> [ 45.771691] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
> [ 45.771695] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
> [ 45.771697] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
> [ 45.771698] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
> [ 45.771699] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
> [ 45.771701] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
> [ 45.771702] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
> [ 45.771703] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
> [ 45.771704] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
> [ 45.771705] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
> [ 45.771707] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
> [ 45.771708] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
> [ 53.099343] mwifiex_pcie 0000:03:00.0: info: trying to associate to '[SSID]' bssid [BSSID]
> [ 53.241870] mwifiex_pcie 0000:03:00.0: info: associated to bssid [BSSID] successfully
> [ 75.377942] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
> [ 85.385491] mwifiex_pcie 0000:03:00.0: info: successfully disconnected from [BSSID]: reason code 15
> [ 87.539408] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
> [ 87.539412] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
> [ 99.699917] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
> [ 99.699925] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
> [ 111.859802] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
> [ 111.859808] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
> [...]
>
> When comparing mwifiex_shutdown_sw() with mwifiex_pcie_remove(), it
> lacks mwifiex_init_shutdown_fw().
>
> This commit fixes mwifiex_shutdown_sw() by adding the missing
> mwifiex_init_shutdown_fw().
>
> Fixes: 4c5dae59d2e9 ("mwifiex: add PCIe function level reset support")
> Signed-off-by: Tsuchiya Yuto <kitakar@xxxxxxxxx>

2 patches applied to wireless-drivers-next.git, thanks.

fa74cb1dc0f4 mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure
566b4cb9587e mwifiex: update comment for shutdown_sw()/reinit_sw() to reflect current state

--
https://patchwork.kernel.org/project/linux-wireless/patch/20201028142110.18144-2-kitakar@xxxxxxxxx/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches