From bdd74669eb9b26e255913ee3c212f4fd79521bdd Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 16 Dec 2015 13:37:05 +0100 Subject: [PATCH] mt7603: fix handling of rx header padding Signed-off-by: Felix Fietkau --- mt7603_mac.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mt7603_mac.c b/mt7603_mac.c index 831301a2..e9835325 100644 --- a/mt7603_mac.c +++ b/mt7603_mac.c @@ -141,6 +141,7 @@ mt7603_mac_fill_rx(struct mt7603_dev *dev, struct sk_buff *skb) struct ieee80211_supported_band *sband; __le32 *rxd = (__le32 *) skb->data; u32 rxd0 = le32_to_cpu(rxd[0]); + bool remove_pad; int i; memset(status, 0, sizeof(*status)); @@ -161,6 +162,8 @@ mt7603_mac_fill_rx(struct mt7603_dev *dev, struct sk_buff *skb) !(rxd[2] & (MT_RXD2_NORMAL_CLM | MT_RXD2_NORMAL_CM))) status->rx_flags |= RX_FLAG_DECRYPTED; + remove_pad = rxd[1] & MT_RXD1_NORMAL_HDR_OFFSET; + if (rxd[2] & MT_RXD2_NORMAL_MAX_LEN_ERROR) return -EINVAL; @@ -218,7 +221,7 @@ mt7603_mac_fill_rx(struct mt7603_dev *dev, struct sk_buff *skb) return -EINVAL; } - skb_pull(skb, (u8 *) rxd - skb->data); + skb_pull(skb, (u8 *) rxd - skb->data + 2 * remove_pad); return 0; }