diff mbox

[v2] : nl80211: report age of scan results

Message ID 200909241221.01456.hs4233@mail.mn-solutions.de (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Holger Schurig Sept. 24, 2009, 10:21 a.m. UTC
Linux keeps scan results up to 15 seconds. This can be a problem for fast
moving clients: they get back stale data. But if the kernel reports the age
of the BSS items, then user-space can simply weed out old entries by itself.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

---

v2: renamed NL80211_BSS_AGE_MS to NL80211_BSS_SEEN_MS_AGO to underline that
    it's a relativene time

Comments

Johannes Berg Sept. 24, 2009, 10:29 a.m. UTC | #1
On Thu, 2009-09-24 at 12:21 +0200, Holger Schurig wrote:
> Linux keeps scan results up to 15 seconds. This can be a problem for fast
> moving clients: they get back stale data. But if the kernel reports the age
> of the BSS items, then user-space can simply weed out old entries by itself.
> 
> Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

Fine with me, I don't care if there is a #define or not.

Acked-by: Johannes Berg <johannes@sipsolutions.net>

johannes

> 
> ---
> 
> v2: renamed NL80211_BSS_AGE_MS to NL80211_BSS_SEEN_MS_AGO to underline that
>     it's a relativene time
> 
> --- linux-wl.orig/include/linux/nl80211.h
> +++ linux-wl/include/linux/nl80211.h
> @@ -1277,6 +1277,7 @@
>   * @NL80211_BSS_SIGNAL_UNSPEC: signal strength of the probe response/beacon
>   *	in unspecified units, scaled to 0..100 (u8)
>   * @NL80211_BSS_STATUS: status, if this BSS is "used"
> + * @NL80211_BSS_SEEN_MS_AGO: age of this BSS entry in ms
>   * @__NL80211_BSS_AFTER_LAST: internal
>   * @NL80211_BSS_MAX: highest BSS attribute
>   */
> @@ -1291,6 +1292,7 @@
>  	NL80211_BSS_SIGNAL_MBM,
>  	NL80211_BSS_SIGNAL_UNSPEC,
>  	NL80211_BSS_STATUS,
> +	NL80211_BSS_SEEN_MS_AGO,
>  
>  	/* keep last */
>  	__NL80211_BSS_AFTER_LAST,
> --- linux-wl.orig/net/wireless/nl80211.c
> +++ linux-wl/net/wireless/nl80211.c
> @@ -3105,6 +3105,8 @@
>  		NLA_PUT_U16(msg, NL80211_BSS_BEACON_INTERVAL, res->beacon_interval);
>  	NLA_PUT_U16(msg, NL80211_BSS_CAPABILITY, res->capability);
>  	NLA_PUT_U32(msg, NL80211_BSS_FREQUENCY, res->channel->center_freq);
> +	NLA_PUT_U32(msg, NL80211_BSS_SEEN_MS_AGO,
> +		jiffies_to_msecs(jiffies - intbss->ts));
>  
>  	switch (rdev->wiphy.signal_type) {
>  	case CFG80211_SIGNAL_TYPE_MBM:
>
diff mbox

Patch

--- linux-wl.orig/include/linux/nl80211.h
+++ linux-wl/include/linux/nl80211.h
@@ -1277,6 +1277,7 @@ 
  * @NL80211_BSS_SIGNAL_UNSPEC: signal strength of the probe response/beacon
  *	in unspecified units, scaled to 0..100 (u8)
  * @NL80211_BSS_STATUS: status, if this BSS is "used"
+ * @NL80211_BSS_SEEN_MS_AGO: age of this BSS entry in ms
  * @__NL80211_BSS_AFTER_LAST: internal
  * @NL80211_BSS_MAX: highest BSS attribute
  */
@@ -1291,6 +1292,7 @@ 
 	NL80211_BSS_SIGNAL_MBM,
 	NL80211_BSS_SIGNAL_UNSPEC,
 	NL80211_BSS_STATUS,
+	NL80211_BSS_SEEN_MS_AGO,
 
 	/* keep last */
 	__NL80211_BSS_AFTER_LAST,
--- linux-wl.orig/net/wireless/nl80211.c
+++ linux-wl/net/wireless/nl80211.c
@@ -3105,6 +3105,8 @@ 
 		NLA_PUT_U16(msg, NL80211_BSS_BEACON_INTERVAL, res->beacon_interval);
 	NLA_PUT_U16(msg, NL80211_BSS_CAPABILITY, res->capability);
 	NLA_PUT_U32(msg, NL80211_BSS_FREQUENCY, res->channel->center_freq);
+	NLA_PUT_U32(msg, NL80211_BSS_SEEN_MS_AGO,
+		jiffies_to_msecs(jiffies - intbss->ts));
 
 	switch (rdev->wiphy.signal_type) {
 	case CFG80211_SIGNAL_TYPE_MBM: