2018-03-21 22:44:37

by Dmitry Shmidt

[permalink] [raw]
Subject: [PATCH] brcmfmac: Add timestamp to scan results report

From 01da9ee11ce6e0973972b2ffd37eef660714f71a Mon Sep 17 00:00:00 2001
From: Dmitry Shmidt <[email protected]>
Date: Wed, 21 Mar 2018 15:35:45 -0700
Subject: [PATCH] brcmfmac: Add timestamp to scan results report

Monotonic time from boot is good timestamp indicator
and it can be used by kernel and userspace.

Change-Id: I122374fa79c6dbd7967b2c30553cb04dee032ebc
Signed-off-by: Dmitry Shmidt <[email protected]>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 4157c90ad973..76d6ed553b7c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -2845,6 +2845,8 @@ static s32 brcmf_inform_single_bss(struct
brcmf_cfg80211_info *cfg,
struct cfg80211_bss *bss;
struct ieee80211_supported_band *band;
struct brcmu_chan ch;
+ struct timespec ts;
+ u64 timestamp;
u16 channel;
u32 freq;
u16 notify_capability;
@@ -2885,10 +2887,12 @@ static s32 brcmf_inform_single_bss(struct
brcmf_cfg80211_info *cfg,
brcmf_dbg(CONN, "Beacon interval: %d\n", notify_interval);
brcmf_dbg(CONN, "Signal: %d\n", notify_signal);

+ get_monotonic_boottime(&ts);
+ timestamp = (u64)ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
bss = cfg80211_inform_bss(wiphy, notify_channel,
CFG80211_BSS_FTYPE_UNKNOWN,
(const u8 *)bi->BSSID,
- 0, notify_capability,
+ timestamp, notify_capability,
notify_interval, notify_ie,
notify_ielen, notify_signal,
GFP_KERNEL);
--
2.17.0.rc0.231.g781580f067-goog


2018-03-22 10:44:16

by Arend Van Spriel

[permalink] [raw]
Subject: Re: [PATCH] brcmfmac: Add timestamp to scan results report

On 3/21/2018 11:44 PM, [email protected] wrote:
> From 01da9ee11ce6e0973972b2ffd37eef660714f71a Mon Sep 17 00:00:00 2001
> From: Dmitry Shmidt <[email protected]>
> Date: Wed, 21 Mar 2018 15:35:45 -0700
> Subject: [PATCH] brcmfmac: Add timestamp to scan results report
>
> Monotonic time from boot is good timestamp indicator
> and it can be used by kernel and userspace.

Thanks, Dmitry

I recall a similar attempt for another driver, but I think the timestamp
should really be the TSF of the beacon/proberesp received. As you
already Cc-ed Johannes explicitly maybe he can clarify what is needed
here as I do not recall the details. ;-)

Regards,
Arend

> Change-Id: I122374fa79c6dbd7967b2c30553cb04dee032ebc
> Signed-off-by: Dmitry Shmidt <[email protected]>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)

2018-03-22 11:48:26

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] brcmfmac: Add timestamp to scan results report

On Thu, 2018-03-22 at 11:44 +0100, Arend van Spriel wrote:
> I recall a similar attempt for another driver, but I think the timestamp
> should really be the TSF of the beacon/proberesp received. As you
> already Cc-ed Johannes explicitly maybe he can clarify what is needed
> here as I do not recall the details. ;-)

Yes, this should be "tsf", it's actually labelled explicitly as such. I
know Android used to get this wrong and *even test* it wrongly, but
that's no excuse.

However, should switch this to cfg80211_inform_bss_data() and use the
timestamp set up here to fill the cfg80211_inform_bss::boottime_ns
value. That's also sent to userspace in the proper way for this.

johannes