aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Lin <dlin@marvell.com>2016-06-17 15:59:57 +0800
committerDavid Lin <dlin@marvell.com>2016-06-17 15:59:57 +0800
commitb174c12ad1fb5ac75d4680190f2f9fa448facacc (patch)
treeb5ca8cef00c257d3a8683f2f5cd56e4c027cb24e
parent5e42bf288e05bfa4c579b98c41b01b1332633e3c (diff)
Set tid of received EAPOL packets to 7.
Signed-off-by: David Lin <dlin@marvell.com>
-rw-r--r--rx.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/rx.c b/rx.c
index 1b8b385..0c9a291 100644
--- a/rx.c
+++ b/rx.c
@@ -492,6 +492,20 @@ void mwl_rx_recv(unsigned long data)
skb_put(prx_skb, pkt_len);
mwl_rx_remove_dma_header(prx_skb, curr_hndl->pdesc->qos_ctrl);
+ wh = (struct ieee80211_hdr *)prx_skb->data;
+
+ if (ieee80211_is_data_qos(wh->frame_control)) {
+ const u8 eapol[] = {0x88, 0x8e};
+ u8 *qc = ieee80211_get_qos_ctl(wh);
+ u8 *data;
+
+ data = prx_skb->data +
+ ieee80211_hdrlen(wh->frame_control) + 6;
+
+ if (!memcmp(data, eapol, sizeof(eapol)))
+ *qc |= 7;
+ }
+
memcpy(IEEE80211_SKB_RXCB(prx_skb), &status, sizeof(status));
ieee80211_rx(hw, prx_skb);
out: