| From 38d165be2c590e4724d4b512905d73f20605abf9 Mon Sep 17 00:00:00 2001 |
| From: Beni Lev <beni.lev@intel.com> |
| Date: Thu, 17 Nov 2016 14:03:17 +0200 |
| Subject: [PATCH] iwlwifi: mvm: Use aux queue for offchannel frames in dqa |
| |
| 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: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c |
| index b392b3a8121b..7a2963568c08 100644 |
| --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c |
| +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c |
| @@ -550,9 +550,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) { |
| @@ -571,7 +572,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; |
| } |
| } |
| -- |
| 2.12.0 |
| |