Message ID | 20190809174656.20872-2-greearb@candelatech.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Johannes Berg |
Headers | show |
Series | [1/2] wireless: Support assoc-at timer in sta-info | expand |
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? Am 09.08.2019 um 19:46 schrieb greearb@candelatech.com: > From: Ben Greear <greearb@candelatech.com> > > Report timestamp for when sta becomes associated. > > Signed-off-by: Ben Greear <greearb@candelatech.com> > --- > 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 */
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@candelatech.com: >> From: Ben Greear <greearb@candelatech.com> >> >> Report timestamp for when sta becomes associated. >> >> Signed-off-by: Ben Greear <greearb@candelatech.com> >> --- >> 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 */ >
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 */