From patchwork Thu Sep 24 08:55:51 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Holger Schurig X-Patchwork-Id: 49764 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n8O8uB76026506 for ; Thu, 24 Sep 2009 08:56:11 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752334AbZIXI4G (ORCPT ); Thu, 24 Sep 2009 04:56:06 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752324AbZIXI4F (ORCPT ); Thu, 24 Sep 2009 04:56:05 -0400 Received: from mx51.mymxserver.com ([85.199.173.110]:49092 "EHLO mx51.mymxserver.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752330AbZIXI4E (ORCPT ); Thu, 24 Sep 2009 04:56:04 -0400 Received: from localhost (localhost [127.0.0.1]) by localhost.mx51.mymxserver.com (Postfix) with ESMTP id BEA4F4B009; Thu, 24 Sep 2009 10:56:05 +0200 (CEST) X-Virus-Scanned: by Mittwald Mailscanner Received: from mx51.mymxserver.com ([127.0.0.1]) by localhost (mx51.mymxserver.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pbAKoFz8PmVH; Thu, 24 Sep 2009 10:56:05 +0200 (CEST) Received: from lin01.mn-solutions.de (pD95F9103.dip0.t-ipconnect.de [217.95.145.3]) by mx51.mymxserver.com (Postfix) with ESMTP id D600A4B01C; Thu, 24 Sep 2009 10:56:03 +0200 (CEST) Received: by lin01.mn-solutions.de (Postfix, from userid 116) id 4F68A1E0036; Thu, 24 Sep 2009 10:56:03 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.1.7-deb3 (2006-10-05) on lin01.mn-logistik.de X-Spam-Level: X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.7-deb3 Received: from mnz66.mn-solutions.de (mnz66.mn-solutions.de [192.168.233.66]) by lin01.mn-solutions.de (Postfix) with ESMTP id B005F1E0010; Thu, 24 Sep 2009 10:55:53 +0200 (CEST) From: Holger Schurig To: John Linville Subject: [PATCH]: nl80211: report age of scan results Date: Thu, 24 Sep 2009 10:55:51 +0200 User-Agent: KMail/1.9.7 Cc: linux-wireless , Johannes Berg MIME-Version: 1.0 Content-Disposition: inline Message-Id: <200909241055.51604.hs4233@mail.mn-solutions.de> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Linux keeps scan results up to 15 seconds. This can be a problem for fast moving client: they get back stale data. But if the kernel reports the age of some BSS, then user-space can simply weed out old entries. Signed-off-by: Holger Schurig --- One question was if I should specify the age in ms, or if I should specify an absolute time. In the end I thought age in ms is better suited. If an absolute time would sent with every BSS item, then user-space would need an additional call to time() to find out which BSS items are too old. Now it can use the milliseconds directly. The case there user-space wants an absolute time ("At what hour did I get the last probe response from this AP?") seems to be a more theoretical problem. But if info is wanted, *THEN* you can call time() and substract the reported bss-item-age from it. Index: linux-wl/include/linux/nl80211.h =================================================================== --- linux-wl.orig/include/linux/nl80211.h 2009-09-24 09:19:03.000000000 +0200 +++ linux-wl/include/linux/nl80211.h 2009-09-24 09:19:42.000000000 +0200 @@ -1277,6 +1277,7 @@ enum nl80211_channel_type { * @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_AGE_MS: age of this BSS entry in ms * @__NL80211_BSS_AFTER_LAST: internal * @NL80211_BSS_MAX: highest BSS attribute */ @@ -1291,6 +1292,7 @@ enum nl80211_bss { NL80211_BSS_SIGNAL_MBM, NL80211_BSS_SIGNAL_UNSPEC, NL80211_BSS_STATUS, + NL80211_BSS_AGE_MS, /* keep last */ __NL80211_BSS_AFTER_LAST, Index: linux-wl/net/wireless/nl80211.c =================================================================== --- linux-wl.orig/net/wireless/nl80211.c 2009-09-24 09:19:03.000000000 +0200 +++ linux-wl/net/wireless/nl80211.c 2009-09-24 09:37:40.000000000 +0200 @@ -3105,6 +3105,7 @@ static int nl80211_send_bss(struct sk_bu 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_AGE_MS, jiffies_to_msecs(jiffies - intbss->ts)); switch (rdev->wiphy.signal_type) { case CFG80211_SIGNAL_TYPE_MBM: