wl12xx: fix identification of beacon packets (debug)
authorEliad Peller <eliad@wizery.com>
Wed, 9 Feb 2011 10:25:14 +0000 (12:25 +0200)
committerLuciano Coelho <coelho@ti.com>
Tue, 22 Feb 2011 16:06:36 +0000 (18:06 +0200)
for debugging purposes, wl12xx determines whether a rx packet
is a beacon packet.

however, it checks only the frame_control subtype without checking
the actual packet type, which leads to false identification in some
cases.

use ieee80211_is_beacon instead.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/wl12xx/rx.c

index 00d250d..3d13d7a 100644 (file)
@@ -92,7 +92,7 @@ static int wl1271_rx_handle_data(struct wl1271 *wl, u8 *data, u32 length)
 {
        struct wl1271_rx_descriptor *desc;
        struct sk_buff *skb;
-       u16 *fc;
+       struct ieee80211_hdr *hdr;
        u8 *buf;
        u8 beacon = 0;
 
@@ -118,8 +118,8 @@ static int wl1271_rx_handle_data(struct wl1271 *wl, u8 *data, u32 length)
        /* now we pull the descriptor out of the buffer */
        skb_pull(skb, sizeof(*desc));
 
-       fc = (u16 *)skb->data;
-       if ((*fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_BEACON)
+       hdr = (struct ieee80211_hdr *)skb->data;
+       if (ieee80211_is_beacon(hdr->frame_control))
                beacon = 1;
 
        wl1271_rx_status(wl, desc, IEEE80211_SKB_RXCB(skb), beacon);