mac80211: allow drivers to report CLOCK_BOOTTIME for scan results
authorJohannes Berg <johannes.berg@intel.com>
Tue, 23 Feb 2016 21:05:06 +0000 (23:05 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 5 Apr 2016 08:48:55 +0000 (10:48 +0200)
This was requested by Android, and the appropriate cfg80211 API
had been added by Dmitry. Support it in mac80211, allowing drivers
to provide the timestamp.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h
net/mac80211/scan.c

index 0c09da3..1b9f729 100644 (file)
@@ -1120,6 +1120,8 @@ enum mac80211_rx_vht_flags {
  *
  * @mactime: value in microseconds of the 64-bit Time Synchronization Function
  *     (TSF) timer when the first data symbol (MPDU) arrived at the hardware.
+ * @boottime_ns: CLOCK_BOOTTIME timestamp the frame was received at, this is
+ *     needed only for beacons and probe responses that update the scan cache.
  * @device_timestamp: arbitrary timestamp for the device, mac80211 doesn't use
  *     it but can store it and pass it back to the driver for synchronisation
  * @band: the active band when this frame was received
@@ -1146,6 +1148,7 @@ enum mac80211_rx_vht_flags {
  */
 struct ieee80211_rx_status {
        u64 mactime;
+       u64 boottime_ns;
        u32 device_timestamp;
        u32 ampdu_reference;
        u32 flag;
index ae980ce..a3fea1f 100644 (file)
@@ -66,7 +66,9 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
        struct cfg80211_bss *cbss;
        struct ieee80211_bss *bss;
        int clen, srlen;
-       struct cfg80211_inform_bss bss_meta = {};
+       struct cfg80211_inform_bss bss_meta = {
+               .boottime_ns = rx_status->boottime_ns,
+       };
        bool signal_valid;
 
        if (ieee80211_hw_check(&local->hw, SIGNAL_DBM))