diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-03-13 07:52:10 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-03-27 20:12:52 -0400 |
commit | aae89831df03e5282a8f5c0ee46432cfb677fc5c (patch) | |
tree | 1073ba993a206fb3df68d5addaa67eebb96068cf /drivers | |
parent | 25420604c8967ff24f087dd7b9cd4b278567d39a (diff) |
wireless: radiotap updates
Radiotap was updated to include a "bad PLCP" flag and standardise
the "bad FCS" flag in the "flags" rather than "RX flags" field,
this patch updates Linux to that standard.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/libertas/radiotap.h | 10 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/rx.c | 12 |
2 files changed, 2 insertions, 20 deletions
diff --git a/drivers/net/wireless/libertas/radiotap.h b/drivers/net/wireless/libertas/radiotap.h index f8eb9097ff0a..d16b26416e82 100644 --- a/drivers/net/wireless/libertas/radiotap.h +++ b/drivers/net/wireless/libertas/radiotap.h | |||
@@ -33,22 +33,12 @@ struct rx_radiotap_hdr { | |||
33 | struct ieee80211_radiotap_header hdr; | 33 | struct ieee80211_radiotap_header hdr; |
34 | u8 flags; | 34 | u8 flags; |
35 | u8 rate; | 35 | u8 rate; |
36 | u16 chan_freq; | ||
37 | u16 chan_flags; | ||
38 | u8 antenna; | ||
39 | u8 antsignal; | 36 | u8 antsignal; |
40 | u16 rx_flags; | ||
41 | #if 0 | ||
42 | u8 pad[IEEE80211_RADIOTAP_HDRLEN - 18]; | ||
43 | #endif | ||
44 | } __attribute__ ((packed)); | 37 | } __attribute__ ((packed)); |
45 | 38 | ||
46 | #define RX_RADIOTAP_PRESENT ( \ | 39 | #define RX_RADIOTAP_PRESENT ( \ |
47 | (1 << IEEE80211_RADIOTAP_FLAGS) | \ | 40 | (1 << IEEE80211_RADIOTAP_FLAGS) | \ |
48 | (1 << IEEE80211_RADIOTAP_RATE) | \ | 41 | (1 << IEEE80211_RADIOTAP_RATE) | \ |
49 | (1 << IEEE80211_RADIOTAP_CHANNEL) | \ | ||
50 | (1 << IEEE80211_RADIOTAP_ANTENNA) | \ | ||
51 | (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL) |\ | 42 | (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL) |\ |
52 | (1 << IEEE80211_RADIOTAP_RX_FLAGS) | \ | ||
53 | 0) | 43 | 0) |
54 | 44 | ||
diff --git a/drivers/net/wireless/libertas/rx.c b/drivers/net/wireless/libertas/rx.c index 4f60948dde9c..63d7e19ce9bd 100644 --- a/drivers/net/wireless/libertas/rx.c +++ b/drivers/net/wireless/libertas/rx.c | |||
@@ -351,19 +351,11 @@ static int process_rxed_802_11_packet(struct lbs_private *priv, | |||
351 | radiotap_hdr.hdr.it_pad = 0; | 351 | radiotap_hdr.hdr.it_pad = 0; |
352 | radiotap_hdr.hdr.it_len = cpu_to_le16 (sizeof(struct rx_radiotap_hdr)); | 352 | radiotap_hdr.hdr.it_len = cpu_to_le16 (sizeof(struct rx_radiotap_hdr)); |
353 | radiotap_hdr.hdr.it_present = cpu_to_le32 (RX_RADIOTAP_PRESENT); | 353 | radiotap_hdr.hdr.it_present = cpu_to_le32 (RX_RADIOTAP_PRESENT); |
354 | /* unknown values */ | 354 | if (!(prxpd->status & cpu_to_le16(MRVDRV_RXPD_STATUS_OK))) |
355 | radiotap_hdr.flags = 0; | 355 | radiotap_hdr.flags |= IEEE80211_RADIOTAP_F_BADFCS; |
356 | radiotap_hdr.chan_freq = 0; | ||
357 | radiotap_hdr.chan_flags = 0; | ||
358 | radiotap_hdr.antenna = 0; | ||
359 | /* known values */ | ||
360 | radiotap_hdr.rate = convert_mv_rate_to_radiotap(prxpd->rx_rate); | 356 | radiotap_hdr.rate = convert_mv_rate_to_radiotap(prxpd->rx_rate); |
361 | /* XXX must check no carryout */ | 357 | /* XXX must check no carryout */ |
362 | radiotap_hdr.antsignal = prxpd->snr + prxpd->nf; | 358 | radiotap_hdr.antsignal = prxpd->snr + prxpd->nf; |
363 | radiotap_hdr.rx_flags = 0; | ||
364 | if (!(prxpd->status & cpu_to_le16(MRVDRV_RXPD_STATUS_OK))) | ||
365 | radiotap_hdr.rx_flags |= IEEE80211_RADIOTAP_F_RX_BADFCS; | ||
366 | //memset(radiotap_hdr.pad, 0x11, IEEE80211_RADIOTAP_HDRLEN - 18); | ||
367 | 359 | ||
368 | /* chop the rxpd */ | 360 | /* chop the rxpd */ |
369 | skb_pull(skb, sizeof(struct rxpd)); | 361 | skb_pull(skb, sizeof(struct rxpd)); |