1. 10 Nov, 2020 1 commit
    • Tsuchiya Yuto's avatar
      mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure · fa74cb1d
      Tsuchiya Yuto authored
      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: 4c5dae59 ("mwifiex: add PCIe function level reset support")
      Signed-off-by: default avatarTsuchiya Yuto <kitakar@gmail.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/20201028142110.18144-2-kitakar@gmail.com
      fa74cb1d
  2. 07 Nov, 2020 39 commits