From: Ben Greear <[email protected]>

This can be helpful for calculating roaming time and other
higher precision stats.

Signed-off-by: Ben Greear <[email protected]>
---
 nl80211.h | 2 ++
 station.c | 6 ++++++
 2 files changed, 8 insertions(+)

diff --git a/nl80211.h b/nl80211.h
index ca8f207..89d88fc 100644
--- a/nl80211.h
+++ b/nl80211.h
@@ -3201,6 +3201,7 @@ 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 of last assoc -> auth 
transition
  * @__NL80211_STA_INFO_AFTER_LAST: internal
  * @NL80211_STA_INFO_MAX: highest possible station info attribute
  */
@@ -3247,6 +3248,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,
diff --git a/station.c b/station.c
index aaad079..61a317d 100644
--- a/station.c
+++ b/station.c
@@ -569,6 +569,12 @@ static int print_sta_handler(struct nl_msg *msg, void *arg)
        if (sinfo[NL80211_STA_INFO_CONNECTED_TIME])
                printf("\n\tconnected time:\t%u seconds",
                        nla_get_u32(sinfo[NL80211_STA_INFO_CONNECTED_TIME]));
+       if (sinfo[NL80211_STA_INFO_ASSOC_AT_BOOTTIME]) {
+               unsigned long long bt;
+               bt = (unsigned long 
long)nla_get_u64(sinfo[NL80211_STA_INFO_ASSOC_AT_BOOTTIME]);
+               printf("\n\tassociated at:\t%llu.%.3llus [boottime]",
+                      bt/1000000000, (bt%1000000000)/1000000);
+       }
 
        printf("\n");
        return NL_SKIP;
-- 
2.7.5

Reply via email to