]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
iwlwifi: mvm: Use aux queue for offchannel frames in dqa
authorBeni Lev <beni.lev@intel.com>
Thu, 17 Nov 2016 12:03:17 +0000 (14:03 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Tue, 20 Jun 2017 08:46:13 +0000 (10:46 +0200)
BugLink: http://bugs.launchpad.net/bugs/1691369
commit 6574dc943fc32a2fce69fab14891abca7eecb67c upstream.

Since offchannel activity doesn't always require a BSS, e.g. ANQP
sessions, offchannel frames should not use the BSS queue, because it
might not be initialized.
Use the auxilary queue instead

Fixes: e3118ad74d7e ("iwlwifi: mvm: support tdls in dqa mode")
Signed-off-by: Beni Lev <beni.lev@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c

index 95b2ec1517e5302950aa408b4c5c24fb075a976d..e129661e4d99288b1a2737671da24a5ef66e3b9f 100644 (file)
@@ -568,9 +568,10 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb)
         * (this is not possible for unicast packets as a TLDS discovery
         * response are sent without a station entry); otherwise use the
         * AUX station.
-        * In DQA mode, if vif is of type STATION and frames are not multicast,
-        * they should be sent from the BSS queue. For example, TDLS setup
-        * frames should be sent on this queue, as they go through the AP.
+        * In DQA mode, if vif is of type STATION and frames are not multicast
+        * or offchannel, they should be sent from the BSS queue.
+        * For example, TDLS setup frames should be sent on this queue,
+        * as they go through the AP.
         */
        sta_id = mvm->aux_sta.sta_id;
        if (info.control.vif) {
@@ -592,7 +593,8 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb)
                        if (ap_sta_id != IWL_MVM_STATION_COUNT)
                                sta_id = ap_sta_id;
                } else if (iwl_mvm_is_dqa_supported(mvm) &&
-                          info.control.vif->type == NL80211_IFTYPE_STATION) {
+                          info.control.vif->type == NL80211_IFTYPE_STATION &&
+                          queue != mvm->aux_queue) {
                        queue = IWL_MVM_DQA_BSS_CLIENT_QUEUE;
                }
        }