Commit 65b280fe authored by Johannes Berg's avatar Johannes Berg Committed by Luca Coelho
Browse files

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: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent aab6930d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
}
+3 −3
Original line number Diff line number Diff line
@@ -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);
}