iwlwifi: mvm: reset PM state on unsuccessful resume
authorJohannes Berg <johannes.berg@intel.com>
Sat, 16 Oct 2021 08:43:55 +0000 (11:43 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 20 Oct 2021 09:31:23 +0000 (12:31 +0300)
If resume fails for some reason, we need to set the PM state
back to normal so we're able to send commands during firmware
reset, rather than failing all of them because we're in D3.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Fixes: 708a39aaca22 ("iwlwifi: mvm: don't send commands during suspend\resume transition")
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/iwlwifi.20211016114029.7ceb9eaca9f6.If0cbef38c6d07ec1ddce125878a4bdadcb35d2c9@changeid
drivers/net/wireless/intel/iwlwifi/mvm/d3.c

index 9f706fffb5922003f578f960569539ce26425398..d3013a51a50963de77f7b60f83b6620b79efa176 100644 (file)
@@ -2336,7 +2336,6 @@ static int __iwl_mvm_resume(struct iwl_mvm *mvm, bool test)
                iwl_fw_dbg_collect_desc(&mvm->fwrt, &iwl_dump_desc_assert,
                                        false, 0);
                ret = 1;
-               mvm->trans->system_pm_mode = IWL_PLAT_PM_MODE_DISABLED;
                goto err;
        }
 
@@ -2385,6 +2384,7 @@ static int __iwl_mvm_resume(struct iwl_mvm *mvm, bool test)
                }
        }
 
+       /* after the successful handshake, we're out of D3 */
        mvm->trans->system_pm_mode = IWL_PLAT_PM_MODE_DISABLED;
 
        /*
@@ -2455,6 +2455,9 @@ out:
         */
        set_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status);
 
+       /* regardless of what happened, we're now out of D3 */
+       mvm->trans->system_pm_mode = IWL_PLAT_PM_MODE_DISABLED;
+
        return 1;
 }