Author: avos
Date: Sat Mar 30 09:24:06 2019
New Revision: 345729
URL: https://svnweb.freebsd.org/changeset/base/345729

Log:
  urtw(4): export TSF timestamp for received frames via radiotap
  
  Tested with Netgear WG111 v3 (RTL8187B), STA mode.
  
  MFC after:    1 week

Modified:
  head/sys/dev/usb/wlan/if_urtw.c
  head/sys/dev/usb/wlan/if_urtwvar.h

Modified: head/sys/dev/usb/wlan/if_urtw.c
==============================================================================
--- head/sys/dev/usb/wlan/if_urtw.c     Sat Mar 30 07:29:20 2019        
(r345728)
+++ head/sys/dev/usb/wlan/if_urtw.c     Sat Mar 30 09:24:06 2019        
(r345729)
@@ -3932,6 +3932,7 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *da
        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 *da
                /* 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 *da
                /* 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 *da
        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;
        }

Modified: head/sys/dev/usb/wlan/if_urtwvar.h
==============================================================================
--- head/sys/dev/usb/wlan/if_urtwvar.h  Sat Mar 30 07:29:20 2019        
(r345728)
+++ head/sys/dev/usb/wlan/if_urtwvar.h  Sat Mar 30 09:24:06 2019        
(r345729)
@@ -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))
 


_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to