]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
iwlwifi: mvm: convert ucode_loaded to a status bit
authorJohannes Berg <johannes.berg@intel.com>
Wed, 22 Mar 2017 21:10:36 +0000 (22:10 +0100)
committerLuca Coelho <luciano.coelho@intel.com>
Mon, 5 Jun 2017 20:34:27 +0000 (23:34 +0300)
Convert ucode_loaded to a status bit called FIRMWARE_RUNNING.
This will make it easier to clear this earlier, to avoid any
spurious accesses while shutting down, for example through
debugfs.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/fw.c
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h

index 26ccfbc34cfd0e4f73e0a7c4df1785d144458141..24cc406d87efc47ff579ac868b2ed8ec6d5400ab 100644 (file)
@@ -622,7 +622,7 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm,
        if (WARN_ON(!fw))
                return -EINVAL;
        mvm->cur_ucode = ucode_type;
-       mvm->ucode_loaded = false;
+       clear_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status);
 
        iwl_init_notification_wait(&mvm->notif_wait, &alive_wait,
                                   alive_cmd, ARRAY_SIZE(alive_cmd),
@@ -696,7 +696,7 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm,
        for (i = 0; i < IEEE80211_MAX_QUEUES; i++)
                atomic_set(&mvm->mac80211_queue_stop_count[i], 0);
 
-       mvm->ucode_loaded = true;
+       set_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status);
 
        return 0;
 }
index b47e1f1efc8aa77dfb45b836cea3069aee3bafd0..73bd56e06d9510aeecbc31ee6b945038739a21a6 100644 (file)
@@ -767,7 +767,6 @@ struct iwl_mvm {
        struct iwl_mvm_vif *bf_allowed_vif;
 
        enum iwl_ucode_type cur_ucode;
-       bool ucode_loaded;
        bool hw_registered;
        bool calibrating;
        u32 error_event_table[2];
@@ -1088,6 +1087,7 @@ enum iwl_mvm_status {
        IWL_MVM_STATUS_ROC_AUX_RUNNING,
        IWL_MVM_STATUS_D3_RECONFIG,
        IWL_MVM_STATUS_DUMPING_FW_LOG,
+       IWL_MVM_STATUS_FIRMWARE_RUNNING,
 };
 
 /* Keep track of completed init configuration */
@@ -1111,7 +1111,7 @@ static inline bool iwl_mvm_is_radio_hw_killed(struct iwl_mvm *mvm)
 
 static inline bool iwl_mvm_firmware_running(struct iwl_mvm *mvm)
 {
-       return mvm->ucode_loaded;
+       return test_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status);
 }
 
 /* Must be called with rcu_read_lock() held and it can only be
@@ -1771,7 +1771,7 @@ static inline void iwl_mvm_stop_device(struct iwl_mvm *mvm)
 {
        if (!iwl_mvm_has_new_tx_api(mvm))
                iwl_free_fw_paging(mvm);
-       mvm->ucode_loaded = false;
+       clear_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status);
        iwl_trans_stop_device(mvm->trans);
 }