Search Linux Wireless

Re: [PATCH 2/2] mac80211: add assoc-at support.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 08/15/2019 09:09 PM, Sebastian Gottschall wrote:
is this feature neccessary? we already have the information of the assoc duration time. so its easy to calculate the assoc timestamp using the current time without any patch
do i miss something here?

The current reported timer is 1-sec resolution, and I need better precision so I can
know exactly how long a station was off the air while trying to roam, for instance.

Thanks,
Ben


Am 09.08.2019 um 19:46 schrieb greearb@xxxxxxxxxxxxxxx:
From: Ben Greear <greearb@xxxxxxxxxxxxxxx>

Report timestamp for when sta becomes associated.

Signed-off-by: Ben Greear <greearb@xxxxxxxxxxxxxxx>
---
  net/mac80211/sta_info.c | 3 +++
  net/mac80211/sta_info.h | 2 ++
  2 files changed, 5 insertions(+)

diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index cd88c8872372..f0820f058b5f 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -1995,6 +1995,7 @@ int sta_info_move_state(struct sta_info *sta,
      case IEEE80211_STA_ASSOC:
          if (sta->sta_state == IEEE80211_STA_AUTH) {
              set_bit(WLAN_STA_ASSOC, &sta->_flags);
+            sta->assoc_at_ms = ktime_to_ms(ktime_get_real());
              ieee80211_recalc_min_chandef(sta->sdata);
              if (!sta->sta.support_p2p_ps)
                  ieee80211_recalc_p2p_go_ps_allowed(sta->sdata);
@@ -2224,6 +2225,7 @@ void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo,
               BIT_ULL(NL80211_STA_INFO_STA_FLAGS) |
               BIT_ULL(NL80211_STA_INFO_BSS_PARAM) |
               BIT_ULL(NL80211_STA_INFO_CONNECTED_TIME) |
+             BIT_ULL(NL80211_STA_INFO_ASSOC_AT_MS) |
               BIT_ULL(NL80211_STA_INFO_RX_DROP_MISC);
        if (sdata->vif.type == NL80211_IFTYPE_STATION) {
@@ -2232,6 +2234,7 @@ void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo,
      }
        sinfo->connected_time = ktime_get_seconds() - sta->last_connected;
+    sinfo->assoc_at_ms = sta->assoc_at_ms;
      sinfo->inactive_time =
          jiffies_to_msecs(jiffies - ieee80211_sta_last_active(sta));
  diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
index bb02d5fac7ba..906b11acb0e8 100644
--- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h
@@ -468,6 +468,7 @@ struct ieee80211_sta_rx_stats {
   *    the station when it leaves powersave or polls for frames
   * @driver_buffered_tids: bitmap of TIDs the driver has data buffered on
   * @txq_buffered_tids: bitmap of TIDs that mac80211 has txq data buffered on
+ * @assoc_at_ms: time (in ms) of last association
   * @last_connected: time (in seconds) when a station got connected
   * @last_seq_ctrl: last received seq/frag number from this STA (per TID
   *    plus one for non-QoS frames)
@@ -565,6 +566,7 @@ struct sta_info {
      unsigned long driver_buffered_tids;
      unsigned long txq_buffered_tids;
  +    unsigned long assoc_at_ms;
      long last_connected;
        /* Updated from RX path only, no locking requirements */


--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc  http://www.candelatech.com



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux