summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvraham Stern2018-03-06 13:10:49 +0100
committerLuca Coelho2018-03-19 09:50:37 +0100
commitdf65c8d1728adee2a52c30287d33da83a8c87480 (patch)
treeb0d38f01b4b9f04111aef7c7897e2fd4dc90b239
parentiwlwifi: mvm: clear tx queue id when unreserving aggregation queue (diff)
downloadkernel-qcow2-linux-df65c8d1728adee2a52c30287d33da83a8c87480.tar.gz
kernel-qcow2-linux-df65c8d1728adee2a52c30287d33da83a8c87480.tar.xz
kernel-qcow2-linux-df65c8d1728adee2a52c30287d33da83a8c87480.zip
iwlwifi: mvm: make sure internal station has a valid id
If the driver failed to resume from D3, it is possible that it has no valid aux station. In such case, fw restart will end up in sending station related commands with an invalid station id, which will result in an assert. Fix this by allocating a new station id for the aux station if it does not have a valid id even in the case of fw restart. Signed-off-by: Avraham Stern <avraham.stern@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/sta.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
index 0b3a780aee12..fc13f6291c06 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
@@ -1695,7 +1695,8 @@ int iwl_mvm_allocate_int_sta(struct iwl_mvm *mvm,
u32 qmask, enum nl80211_iftype iftype,
enum iwl_sta_type type)
{
- if (!test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) {
+ if (!test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status) ||
+ sta->sta_id == IWL_MVM_INVALID_STA) {
sta->sta_id = iwl_mvm_find_free_sta_id(mvm, iftype);
if (WARN_ON_ONCE(sta->sta_id == IWL_MVM_INVALID_STA))
return -ENOSPC;