iwlwifi: mvm: fix pending frames tracking on tx resp
authorLiad Kaufman <liad.kaufman@intel.com>
Thu, 7 Jul 2016 08:00:26 +0000 (11:00 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 16 Sep 2016 06:10:25 +0000 (09:10 +0300)
In iwl_mvm_rx_tx_cmd_single(), when checking if a given TID is
aggregated, the driver doesn't check whether or not the queue
itself can be aggregated. For example, a management queue might
be marked as aggregated if TID 0 is aggregated on a (different)
data queue.

Make sure that mgmt frames are sent with TID IWL_TID_NON_QOS,
and in this way make sure no mixups of this sort happen.

Fixes: commit 24afba7690e4 ("iwlwifi: mvm: support bss dynamic alloc/dealloc of queues")
Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c

index 96482a5de38ca8bffed6e4f50b60d62e20be34b2..10517778faf4555accccb98079c72eda3924f1eb 100644 (file)
@@ -920,9 +920,13 @@ static int iwl_mvm_tx_mpdu(struct iwl_mvm *mvm, struct sk_buff *skb,
                tid = IWL_MAX_TID_COUNT;
        }
 
-       if (iwl_mvm_is_dqa_supported(mvm))
+       if (iwl_mvm_is_dqa_supported(mvm)) {
                txq_id = mvmsta->tid_data[tid].txq_id;
 
+               if (ieee80211_is_mgmt(fc))
+                       tx_cmd->tid_tspec = IWL_TID_NON_QOS;
+       }
+
        /* Copy MAC header from skb into command buffer */
        memcpy(tx_cmd->hdr, hdr, hdrlen);