| From 2c2e5293df6d3b188aedebb20246d85bcecb2f10 Mon Sep 17 00:00:00 2001 |
| From: Johannes Berg <johannes.berg@intel.com> |
| Date: Wed, 5 Sep 2018 13:34:02 +0200 |
| Subject: mac80211: TDLS: fix skb queue/priority assignment |
| |
| [ Upstream commit cb59bc14e830028d2244861216df038165d7625d ] |
| |
| If the TDLS setup happens over a connection to an AP that |
| doesn't have QoS, we nevertheless assign a non-zero TID |
| (skb->priority) and queue mapping, which may confuse us or |
| drivers later. |
| |
| Fix it by just assigning the special skb->priority and then |
| using ieee80211_select_queue() just like other data frames |
| would go through. |
| |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/mac80211/tdls.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c |
| index 91093d4a2f84..6e7aa65cf345 100644 |
| --- a/net/mac80211/tdls.c |
| +++ b/net/mac80211/tdls.c |
| @@ -16,6 +16,7 @@ |
| #include "ieee80211_i.h" |
| #include "driver-ops.h" |
| #include "rate.h" |
| +#include "wme.h" |
| |
| /* give usermode some time for retries in setting up the TDLS session */ |
| #define TDLS_PEER_SETUP_TIMEOUT (15 * HZ) |
| @@ -1006,14 +1007,13 @@ ieee80211_tdls_prep_mgmt_packet(struct wiphy *wiphy, struct net_device *dev, |
| switch (action_code) { |
| case WLAN_TDLS_SETUP_REQUEST: |
| case WLAN_TDLS_SETUP_RESPONSE: |
| - skb_set_queue_mapping(skb, IEEE80211_AC_BK); |
| - skb->priority = 2; |
| + skb->priority = 256 + 2; |
| break; |
| default: |
| - skb_set_queue_mapping(skb, IEEE80211_AC_VI); |
| - skb->priority = 5; |
| + skb->priority = 256 + 5; |
| break; |
| } |
| + skb_set_queue_mapping(skb, ieee80211_select_queue(sdata, skb)); |
| |
| /* |
| * Set the WLAN_TDLS_TEARDOWN flag to indicate a teardown in progress. |
| -- |
| 2.17.1 |
| |