iwlwifi: mvm: don't reprobe if we fail during reconfig and fw_restart is false
authorLuciano Coelho <luciano.coelho@intel.com>
Wed, 28 Jan 2015 07:00:27 +0000 (09:00 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 1 Feb 2015 13:37:31 +0000 (15:37 +0200)
If we don't want to restart the firmware, don't reprobe either in case
of a failure during reconfiguration.  This allows us to debug failures
in the reconfig flow as well.

Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/mvm/ops.c

index 8bf8c2a29e5eff6121a788333d9f6c12306e39fd..b1dea6800b3b9dfb600912d2c762dc5dcf06f18d 100644 (file)
@@ -870,7 +870,10 @@ void iwl_mvm_nic_restart(struct iwl_mvm *mvm, bool fw_error)
         * If WoWLAN fw asserted, don't restart either, mac80211
         * can't recover this since we're already half suspended.
         */
-       if (test_and_set_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) {
+       if (!mvm->restart_fw && fw_error) {
+               schedule_work(&mvm->fw_error_dump_wk);
+       } else if (test_and_set_bit(IWL_MVM_STATUS_IN_HW_RESTART,
+                                   &mvm->status)) {
                struct iwl_mvm_reprobe *reprobe;
 
                IWL_ERR(mvm,
@@ -894,16 +897,13 @@ void iwl_mvm_nic_restart(struct iwl_mvm *mvm, bool fw_error)
                reprobe->dev = mvm->trans->dev;
                INIT_WORK(&reprobe->work, iwl_mvm_reprobe_wk);
                schedule_work(&reprobe->work);
-       } else if (mvm->cur_ucode == IWL_UCODE_REGULAR &&
-                  (!fw_error || mvm->restart_fw)) {
+       } else if (mvm->cur_ucode == IWL_UCODE_REGULAR) {
                /* don't let the transport/FW power down */
                iwl_mvm_ref(mvm, IWL_MVM_REF_UCODE_DOWN);
 
                if (fw_error && mvm->restart_fw > 0)
                        mvm->restart_fw--;
                ieee80211_restart_hw(mvm->hw);
-       } else if (fw_error) {
-               schedule_work(&mvm->fw_error_dump_wk);
        }
 }