diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2013-03-04 09:11:08 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-03-04 13:37:35 +0100 |
commit | f9aa8dd33714f17c7229ad89309406a1ccb3cd3f (patch) | |
tree | 6d938728407b96fabd1b5c45356c69d3af806e71 /drivers/net/wireless | |
parent | de8bc6dd2d52cacaa76ea381ffdc00919b100a2c (diff) | |
download | linux-f9aa8dd33714f17c7229ad89309406a1ccb3cd3f.tar.gz linux-f9aa8dd33714f17c7229ad89309406a1ccb3cd3f.tar.bz2 linux-f9aa8dd33714f17c7229ad89309406a1ccb3cd3f.zip |
iwlwifi: mvm: ignore STOP_AGG when restarting
Since the device is being restarted, all the Rx / Tx Block
Ack sessions are been wiped out by the driver. So ignore
the requests from mac80211 that stops Tx agg while
reconfiguring the device.
Note that stopping a non-existing Rx BA session is harmless,
so just honor mac80211's request.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/sta.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/sta.c b/drivers/net/wireless/iwlwifi/mvm/sta.c index 861a7f9f8e7f..274f44e2ef60 100644 --- a/drivers/net/wireless/iwlwifi/mvm/sta.c +++ b/drivers/net/wireless/iwlwifi/mvm/sta.c @@ -770,6 +770,16 @@ int iwl_mvm_sta_tx_agg_stop(struct iwl_mvm *mvm, struct ieee80211_vif *vif, u16 txq_id; int err; + + /* + * If mac80211 is cleaning its state, then say that we finished since + * our state has been cleared anyway. + */ + if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { + ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); + return 0; + } + spin_lock_bh(&mvmsta->lock); txq_id = tid_data->txq_id; |