lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 085/717] mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure
    Date
    From: Tsuchiya Yuto <kitakar@gmail.com>

    [ Upstream commit fa74cb1dc0f4da46c441b735ca865ac52de42c0e ]

    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@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20201028142110.18144-2-kitakar@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/marvell/mwifiex/main.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c
    index 9ba8a8f64976b..6283df5aaaf8b 100644
    --- a/drivers/net/wireless/marvell/mwifiex/main.c
    +++ b/drivers/net/wireless/marvell/mwifiex/main.c
    @@ -1471,6 +1471,8 @@ int mwifiex_shutdown_sw(struct mwifiex_adapter *adapter)
    priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
    mwifiex_deauthenticate(priv, NULL);

    + mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);
    +
    mwifiex_uninit_sw(adapter);
    adapter->is_up = false;

    --
    2.27.0


    \
     
     \ /
      Last update: 2020-12-28 16:21    [W:2.210 / U:0.588 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site