cfg80211: Support assoc-at timer in sta-info
authorBen Greear <greearb@candelatech.com>
Fri, 9 Aug 2019 18:00:00 +0000 (11:00 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 21 Aug 2019 08:56:42 +0000 (10:56 +0200)
Report timestamp of when sta became associated.

This is the boottime clock, units are nano-seconds.

Signed-off-by: Ben Greear <greearb@candelatech.com>
Link: https://lore.kernel.org/r/20190809180001.26393-1-greearb@candelatech.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/cfg80211.h
include/uapi/linux/nl80211.h
net/wireless/nl80211.c

index 8140c4837122b2201b878992b776939574952d1d..1e32b11e173065fd61ddda477d29deccb0777ace 100644 (file)
@@ -1330,6 +1330,7 @@ struct cfg80211_tid_stats {
  *     indicate the relevant values in this struct for them
  * @connected_time: time(in secs) since a station is last connected
  * @inactive_time: time since last station activity (tx/rx) in milliseconds
+ * @assoc_at: bootime (ns) of the last association
  * @rx_bytes: bytes (size of MPDUs) received from this station
  * @tx_bytes: bytes (size of MPDUs) transmitted to this station
  * @llid: mesh local link id
@@ -1390,6 +1391,7 @@ struct station_info {
        u64 filled;
        u32 connected_time;
        u32 inactive_time;
+       u64 assoc_at;
        u64 rx_bytes;
        u64 tx_bytes;
        u16 llid;
index 4d5988f47118233748b3987fa9b1faabb027b0ec..04b58295c8d90030cf54bfa32aa29efed1398cfa 100644 (file)
@@ -3201,6 +3201,8 @@ enum nl80211_sta_bss_param {
  *     sent to the station (u64, usec)
  * @NL80211_STA_INFO_AIRTIME_WEIGHT: current airtime weight for station (u16)
  * @NL80211_STA_INFO_AIRTIME_LINK_METRIC: airtime link metric for mesh station
+ * @NL80211_STA_INFO_ASSOC_AT_BOOTTIME: Timestamp (CLOCK_BOOTTIME, nanoseconds)
+ *     of STA's association
  * @__NL80211_STA_INFO_AFTER_LAST: internal
  * @NL80211_STA_INFO_MAX: highest possible station info attribute
  */
@@ -3247,6 +3249,7 @@ enum nl80211_sta_info {
        NL80211_STA_INFO_TX_DURATION,
        NL80211_STA_INFO_AIRTIME_WEIGHT,
        NL80211_STA_INFO_AIRTIME_LINK_METRIC,
+       NL80211_STA_INFO_ASSOC_AT_BOOTTIME,
 
        /* keep last */
        __NL80211_STA_INFO_AFTER_LAST,
index 9a642219a8c7ae072cebb9373a84513698b7593c..cacd967046472e0a29c2b2b918a5f8380c1d8694 100644 (file)
@@ -5032,6 +5032,7 @@ static int nl80211_send_station(struct sk_buff *msg, u32 cmd, u32 portid,
 
        PUT_SINFO(CONNECTED_TIME, connected_time, u32);
        PUT_SINFO(INACTIVE_TIME, inactive_time, u32);
+       PUT_SINFO_U64(ASSOC_AT_BOOTTIME, assoc_at);
 
        if (sinfo->filled & (BIT_ULL(NL80211_STA_INFO_RX_BYTES) |
                             BIT_ULL(NL80211_STA_INFO_RX_BYTES64)) &&