diff options
author | Beni Lev <beni.lev@intel.com> | 2016-11-17 07:03:17 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-05-14 08:00:16 -0400 |
commit | 04dd401a5145da42a040a622bac2eb9a96c01308 (patch) | |
tree | c4e3ae9e928c23f238959d0c542df99832bbb27a | |
parent | a6fe39262c518c105f7003dca5eb5ae45b72713e (diff) |
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c index 95b2ec1517e5..e129661e4d99 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c | |||
@@ -568,9 +568,10 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb) | |||
568 | * (this is not possible for unicast packets as a TLDS discovery | 568 | * (this is not possible for unicast packets as a TLDS discovery |
569 | * response are sent without a station entry); otherwise use the | 569 | * response are sent without a station entry); otherwise use the |
570 | * AUX station. | 570 | * AUX station. |
571 | * In DQA mode, if vif is of type STATION and frames are not multicast, | 571 | * In DQA mode, if vif is of type STATION and frames are not multicast |
572 | * they should be sent from the BSS queue. For example, TDLS setup | 572 | * or offchannel, they should be sent from the BSS queue. |
573 | * frames should be sent on this queue, as they go through the AP. | 573 | * For example, TDLS setup frames should be sent on this queue, |
574 | * as they go through the AP. | ||
574 | */ | 575 | */ |
575 | sta_id = mvm->aux_sta.sta_id; | 576 | sta_id = mvm->aux_sta.sta_id; |
576 | if (info.control.vif) { | 577 | if (info.control.vif) { |
@@ -592,7 +593,8 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb) | |||
592 | if (ap_sta_id != IWL_MVM_STATION_COUNT) | 593 | if (ap_sta_id != IWL_MVM_STATION_COUNT) |
593 | sta_id = ap_sta_id; | 594 | sta_id = ap_sta_id; |
594 | } else if (iwl_mvm_is_dqa_supported(mvm) && | 595 | } else if (iwl_mvm_is_dqa_supported(mvm) && |
595 | info.control.vif->type == NL80211_IFTYPE_STATION) { | 596 | info.control.vif->type == NL80211_IFTYPE_STATION && |
597 | queue != mvm->aux_queue) { | ||
596 | queue = IWL_MVM_DQA_BSS_CLIENT_QUEUE; | 598 | queue = IWL_MVM_DQA_BSS_CLIENT_QUEUE; |
597 | } | 599 | } |
598 | } | 600 | } |