wifi: iwlwifi: mvm: always send nullfunc frames on MGMT queue
authorGregory Greenman <gregory.greenman@intel.com>
Thu, 26 Jan 2023 22:28:14 +0000 (00:28 +0200)
committerGregory Greenman <gregory.greenman@intel.com>
Mon, 30 Jan 2023 10:59:44 +0000 (12:59 +0200)
Non-QOS nullfunc frames should be sent on MGMT queue similarly to
the QOS nullfunc frames. It means that the corresponding TID should
remain IWL_MAX_TID_COUNT. Make the condition more strict, so the TID
won't be changed to IWL_TID_NON_QOS.

Link: https://lore.kernel.org/r/20230127002430.a05bf77c9e29.I06262424878232b46fecd58743c889e4c3216bbf@changeid
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c

index fadaa683a416afcf2ac38c33cfe9eca2a22dcc02..9813d7fa1800705950bdc656f5db6958a7cef545 100644 (file)
@@ -1107,8 +1107,8 @@ static int iwl_mvm_tx_mpdu(struct iwl_mvm *mvm, struct sk_buff *skb,
        spin_lock(&mvmsta->lock);
 
        /* nullfunc frames should go to the MGMT queue regardless of QOS,
-        * the condition of !ieee80211_is_qos_nullfunc(fc) keeps the default
-        * assignment of MGMT TID
+        * the conditions of !ieee80211_is_qos_nullfunc(fc) and
+        * !ieee80211_is_data_qos(fc) keep the default assignment of MGMT TID
         */
        if (ieee80211_is_data_qos(fc) && !ieee80211_is_qos_nullfunc(fc)) {
                tid = ieee80211_get_tid(hdr);
@@ -1133,7 +1133,8 @@ static int iwl_mvm_tx_mpdu(struct iwl_mvm *mvm, struct sk_buff *skb,
                        /* update the tx_cmd hdr as it was already copied */
                        tx_cmd->hdr->seq_ctrl = hdr->seq_ctrl;
                }
-       } else if (ieee80211_is_data(fc) && !ieee80211_is_data_qos(fc)) {
+       } else if (ieee80211_is_data(fc) && !ieee80211_is_data_qos(fc) &&
+                  !ieee80211_is_nullfunc(fc)) {
                tid = IWL_TID_NON_QOS;
        }