Ticket #1221: madwifi_standardise_radiotap_fcs.patch
| File madwifi_standardise_radiotap_fcs.patch, 3.0 kB (added by scottr, 5 years ago) |
|---|
-
net80211/ieee80211_monitor.c
old new 242 242 p = start + roundup(p - start, 2) + 4; 243 243 break; 244 244 245 case IEEE80211_RADIOTAP_FCS:246 /* 32-bit */247 p = start + roundup(p - start, 4) + 4;248 break;249 250 245 case IEEE80211_RADIOTAP_TSFT: 251 246 /* 64-bit */ 252 247 p = start + roundup(p - start, 8) + 8; … … 492 487 th->wr_flags |= IEEE80211_RADIOTAP_F_SHORTPRE; 493 488 if (ds->ds_rxstat.rs_status & HAL_RXERR_CRC) 494 489 th->wr_flags |= IEEE80211_RADIOTAP_F_BADFCS; 495 490 if (skb->len >= IEEE80211_CRC_LEN) 491 th->wr_flags |= IEEE80211_RADIOTAP_F_FCS; 492 496 493 th->wr_rate = sc->sc_hwmap[ds->ds_rxstat.rs_rate].ieeerate; 497 494 th->wr_chan_freq = cpu_to_le16(ic->ic_curchan->ic_freq); 498 495 … … 527 524 th->wr_dbm_antsignal = th->wr_dbm_antnoise + rssi; 528 525 th->wr_antenna = ds->ds_rxstat.rs_antenna; 529 526 th->wr_antsignal = rssi; 530 if (skb->len >= IEEE80211_CRC_LEN)531 th->wr_fcs = cpu_to_le32p((u32 *)&skb1->data[skb1->len - IEEE80211_CRC_LEN]);532 else533 th->wr_fcs = 0;534 527 535 528 th->wr_tsft = cpu_to_le64(mactime); 536 529 } … … 550 543 break; 551 544 } 552 545 if (skb1) { 553 if (!tx && skb->len >= IEEE80211_CRC_LEN) { 554 /* Remove FCS from end of rx frames*/ 546 if (!tx && (vap->iv_dev->type != ARPHRD_IEEE80211_RADIOTAP) && (skb1->len >= IEEE80211_CRC_LEN)) { 555 547 skb_trim(skb1, skb1->len - IEEE80211_CRC_LEN); 556 548 } 557 549 skb1->dev = dev; /* NB: deliver to wlanX */ -
net80211/ieee80211_monitor.h
old new 112 112 (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) | \ 113 113 (1 << IEEE80211_RADIOTAP_ANTENNA) | \ 114 114 (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL) | \ 115 (1 << IEEE80211_RADIOTAP_FCS) | \116 115 0) 117 116 118 117 struct ath_rx_radiotap_header { … … 126 125 int8_t wr_dbm_antnoise; 127 126 u_int8_t wr_antenna; 128 127 u_int8_t wr_antsignal; 129 u_int8_t wr_pad[2]; /* Ensure fcs is on 32 bit boundary */130 __le32 wr_fcs;131 128 }__attribute__((__packed__)); 132 129 133 130 #define ATH_TX_RADIOTAP_PRESENT ( \ -
net80211/ieee80211_radiotap.h
old new 153 153 * Unitless indication of the Rx/Tx antenna for this packet. 154 154 * The first antenna is antenna 0. 155 155 * 156 * IEEE80211_RADIOTAP_FCS u_int32_t data157 *158 * FCS from frame in network byte order.159 156 */ 160 157 enum ieee80211_radiotap_type { 161 158 IEEE80211_RADIOTAP_TSFT = 0, … … 172 169 IEEE80211_RADIOTAP_ANTENNA = 11, 173 170 IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12, 174 171 IEEE80211_RADIOTAP_DB_ANTNOISE = 13, 175 IEEE80211_RADIOTAP_FCS = 14,176 172 IEEE80211_RADIOTAP_EXT = 31, 177 173 }; 178 174
