提交 65b280fe 编写于 作者: J Johannes Berg 提交者: Luca Coelho

iwlwifi: mvm: convert ucode_loaded to a status bit

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: NJohannes Berg <johannes.berg@intel.com>
Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
上级 aab6930d
...@@ -622,7 +622,7 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm, ...@@ -622,7 +622,7 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm,
if (WARN_ON(!fw)) if (WARN_ON(!fw))
return -EINVAL; return -EINVAL;
mvm->cur_ucode = ucode_type; 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, iwl_init_notification_wait(&mvm->notif_wait, &alive_wait,
alive_cmd, ARRAY_SIZE(alive_cmd), alive_cmd, ARRAY_SIZE(alive_cmd),
...@@ -696,7 +696,7 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm, ...@@ -696,7 +696,7 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm,
for (i = 0; i < IEEE80211_MAX_QUEUES; i++) for (i = 0; i < IEEE80211_MAX_QUEUES; i++)
atomic_set(&mvm->mac80211_queue_stop_count[i], 0); atomic_set(&mvm->mac80211_queue_stop_count[i], 0);
mvm->ucode_loaded = true; set_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status);
return 0; return 0;
} }
......
...@@ -767,7 +767,6 @@ struct iwl_mvm { ...@@ -767,7 +767,6 @@ struct iwl_mvm {
struct iwl_mvm_vif *bf_allowed_vif; struct iwl_mvm_vif *bf_allowed_vif;
enum iwl_ucode_type cur_ucode; enum iwl_ucode_type cur_ucode;
bool ucode_loaded;
bool hw_registered; bool hw_registered;
bool calibrating; bool calibrating;
u32 error_event_table[2]; u32 error_event_table[2];
...@@ -1088,6 +1087,7 @@ enum iwl_mvm_status { ...@@ -1088,6 +1087,7 @@ enum iwl_mvm_status {
IWL_MVM_STATUS_ROC_AUX_RUNNING, IWL_MVM_STATUS_ROC_AUX_RUNNING,
IWL_MVM_STATUS_D3_RECONFIG, IWL_MVM_STATUS_D3_RECONFIG,
IWL_MVM_STATUS_DUMPING_FW_LOG, IWL_MVM_STATUS_DUMPING_FW_LOG,
IWL_MVM_STATUS_FIRMWARE_RUNNING,
}; };
/* Keep track of completed init configuration */ /* Keep track of completed init configuration */
...@@ -1111,7 +1111,7 @@ static inline bool iwl_mvm_is_radio_hw_killed(struct iwl_mvm *mvm) ...@@ -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) 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 /* 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) ...@@ -1771,7 +1771,7 @@ static inline void iwl_mvm_stop_device(struct iwl_mvm *mvm)
{ {
if (!iwl_mvm_has_new_tx_api(mvm)) if (!iwl_mvm_has_new_tx_api(mvm))
iwl_free_fw_paging(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); iwl_trans_stop_device(mvm->trans);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册