From: Ben Greear <greearb@xxxxxxxxxxxxxxx> This can be helpful for calculating roaming time and other higher precision stats. Signed-off-by: Ben Greear <greearb@xxxxxxxxxxxxxxx> --- 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