From: Arik Nemtsov <[email protected]>

When a TDLS station is being drained its Tx queues are still in use. Don't
allocate them to a different station in the meantime.

Signed-off-by: Arik Nemtsov <[email protected]>
Reviewed-by: Johannes Berg <[email protected]>
Signed-off-by: Emmanuel Grumbach <[email protected]>
---
 drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c 
b/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c
index 7bdc622..f2bfc15 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c
+++ b/drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c
@@ -244,6 +244,7 @@ static void iwl_mvm_mac_sta_hw_queues_iter(void *_data,
 unsigned long iwl_mvm_get_used_hw_queues(struct iwl_mvm *mvm,
                                         struct ieee80211_vif *exclude_vif)
 {
+       u8 sta_id;
        struct iwl_mvm_hw_queues_iface_iterator_data data = {
                .exclude_vif = exclude_vif,
                .used_hw_queues =
@@ -264,6 +265,13 @@ unsigned long iwl_mvm_get_used_hw_queues(struct iwl_mvm 
*mvm,
                                          iwl_mvm_mac_sta_hw_queues_iter,
                                          &data);
 
+       /*
+        * Some TDLS stations may be removed but are in the process of being
+        * drained. Don't touch their queues.
+        */
+       for_each_set_bit(sta_id, mvm->sta_drained, IWL_MVM_STATION_COUNT)
+               data.used_hw_queues |= mvm->tfd_drained[sta_id];
+
        return data.used_hw_queues;
 }
 
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to