ath9k: Fix bug in accessing skb->data of rx frame for edma
authorVasanthakumar Thiagarajan <vasanth@atheros.com>
Thu, 20 May 2010 21:34:47 +0000 (14:34 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 2 Jun 2010 20:13:31 +0000 (16:13 -0400)
Skip the rx status portion in skb->data before accessing ieee80211
frame header.

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/recv.c

index 3563e44553f9f983a1bdbcd1e78897388c99a721..978b4d91f93114bfb64a73211fd38808906502dc 100644 (file)
@@ -1094,6 +1094,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
        enum ath9k_rx_qtype qtype;
        bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA);
        int dma_type;
+       u8 rx_status_len = ah->caps.rx_status_len;
 
        if (edma)
                dma_type = DMA_BIDIRECTIONAL;
@@ -1121,7 +1122,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
                if (!skb)
                        continue;
 
-               hdr = (struct ieee80211_hdr *) skb->data;
+               hdr = (struct ieee80211_hdr *) (skb->data + rx_status_len);
                rxs =  IEEE80211_SKB_RXCB(skb);
 
                hw = ath_get_virt_hw(sc, hdr);