From: Amitkumar Karwar <amit.kar...@redpinesignals.com>

Currently TID is extracted by checking at specific offset in data frame.
This approach doesn't work for some of the frames. This patch uses mac80211
API and do it correctly

Signed-off-by: Amitkumar Karwar <amit.kar...@redpinesignals.com>
Signed-off-by: Siva Rebbagondla <siva.rebbagon...@redpinesignals.com>
---
 drivers/net/wireless/rsi/rsi_91x_core.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/rsi/rsi_91x_core.c 
b/drivers/net/wireless/rsi/rsi_91x_core.c
index 3ca468b9..1f1b972 100644
--- a/drivers/net/wireless/rsi/rsi_91x_core.c
+++ b/drivers/net/wireless/rsi/rsi_91x_core.c
@@ -432,7 +432,9 @@ void rsi_core_xmit(struct rsi_common *common, struct 
sk_buff *skb)
                }
        } else {
                if (ieee80211_is_data_qos(wh->frame_control)) {
-                       tid = (skb->data[24] & IEEE80211_QOS_TID);
+                       u8 *qos = ieee80211_get_qos_ctl(wh);
+
+                       tid = *qos & IEEE80211_QOS_CTL_TID_MASK;
                        skb->priority = TID_TO_WME_AC(tid);
                } else {
                        tid = IEEE80211_NONQOS_TID;
-- 
2.7.4

Reply via email to