mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
urtw(4): export TSF timestamp for received frames via radiotap
Tested with Netgear WG111 v3 (RTL8187B), STA mode. MFC after: 1 week
This commit is contained in:
parent
af4f9e5f00
commit
cb5d2742ff
2 changed files with 11 additions and 1 deletions
|
|
@ -3932,6 +3932,7 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *data, int *rssi_p,
|
|||
struct urtw_softc *sc = data->sc;
|
||||
struct ieee80211com *ic = &sc->sc_ic;
|
||||
uint8_t noise = 0, rate;
|
||||
uint64_t mactime;
|
||||
|
||||
usbd_xfer_status(xfer, &actlen, NULL, NULL, NULL);
|
||||
|
||||
|
|
@ -3951,6 +3952,9 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *data, int *rssi_p,
|
|||
/* XXX correct? */
|
||||
rssi = rx->rssi & URTW_RX_RSSI_MASK;
|
||||
noise = rx->noise;
|
||||
|
||||
if (ieee80211_radiotap_active(ic))
|
||||
mactime = rx->mactime;
|
||||
} else {
|
||||
struct urtw_8187l_rxhdr *rx;
|
||||
|
||||
|
|
@ -3967,6 +3971,9 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *data, int *rssi_p,
|
|||
/* XXX correct? */
|
||||
rssi = rx->rssi & URTW_RX_8187L_RSSI_MASK;
|
||||
noise = rx->noise;
|
||||
|
||||
if (ieee80211_radiotap_active(ic))
|
||||
mactime = rx->mactime;
|
||||
}
|
||||
|
||||
if (flen < IEEE80211_ACK_LEN)
|
||||
|
|
@ -3986,6 +3993,7 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *data, int *rssi_p,
|
|||
if (ieee80211_radiotap_active(ic)) {
|
||||
struct urtw_rx_radiotap_header *tap = &sc->sc_rxtap;
|
||||
|
||||
tap->wr_tsf = mactime;
|
||||
tap->wr_flags = 0;
|
||||
tap->wr_dbm_antsignal = (int8_t)rssi;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ typedef STAILQ_HEAD(, urtw_data) urtw_datahead;
|
|||
|
||||
struct urtw_rx_radiotap_header {
|
||||
struct ieee80211_radiotap_header wr_ihdr;
|
||||
uint64_t wr_tsf;
|
||||
uint8_t wr_flags;
|
||||
uint8_t wr_pad;
|
||||
uint16_t wr_chan_freq;
|
||||
|
|
@ -63,7 +64,8 @@ struct urtw_rx_radiotap_header {
|
|||
} __packed __aligned(8);
|
||||
|
||||
#define URTW_RX_RADIOTAP_PRESENT \
|
||||
((1 << IEEE80211_RADIOTAP_FLAGS) | \
|
||||
((1 << IEEE80211_RADIOTAP_TSFT) | \
|
||||
(1 << IEEE80211_RADIOTAP_FLAGS) | \
|
||||
(1 << IEEE80211_RADIOTAP_CHANNEL) | \
|
||||
(1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue