77 lines
3 KiB
Diff
77 lines
3 KiB
Diff
|
From 7742fce4c007141617dab9bcb90034b3c0fe2347 Mon Sep 17 00:00:00 2001
|
||
|
From: Franky Lin <franky.lin@broadcom.com>
|
||
|
Date: Thu, 26 Apr 2018 12:18:35 +0200
|
||
|
Subject: [PATCH] brcmfmac: reports boottime_ns while informing bss
|
||
|
|
||
|
Provides a timestamp in bss information so user space can see when the
|
||
|
bss info was updated. Since tsf is not available from the dongle events
|
||
|
boottime is reported instead.
|
||
|
|
||
|
Reported-by: Dmitry Shmidt <dimitrysh@google.com>
|
||
|
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||
|
Signed-off-by: Franky Lin <franky.lin@broadcom.com>
|
||
|
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||
|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||
|
---
|
||
|
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 26 +++++++++++-----------
|
||
|
1 file changed, 13 insertions(+), 13 deletions(-)
|
||
|
|
||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||
|
@@ -2728,7 +2728,6 @@ static s32 brcmf_inform_single_bss(struc
|
||
|
struct brcmf_bss_info_le *bi)
|
||
|
{
|
||
|
struct wiphy *wiphy = cfg_to_wiphy(cfg);
|
||
|
- struct ieee80211_channel *notify_channel;
|
||
|
struct cfg80211_bss *bss;
|
||
|
struct ieee80211_supported_band *band;
|
||
|
struct brcmu_chan ch;
|
||
|
@@ -2738,7 +2737,7 @@ static s32 brcmf_inform_single_bss(struc
|
||
|
u16 notify_interval;
|
||
|
u8 *notify_ie;
|
||
|
size_t notify_ielen;
|
||
|
- s32 notify_signal;
|
||
|
+ struct cfg80211_inform_bss bss_data = { 0 };
|
||
|
|
||
|
if (le32_to_cpu(bi->length) > WL_BSS_INFO_MAX) {
|
||
|
brcmf_err("Bss info is larger than buffer. Discarding\n");
|
||
|
@@ -2758,27 +2757,28 @@ static s32 brcmf_inform_single_bss(struc
|
||
|
band = wiphy->bands[NL80211_BAND_5GHZ];
|
||
|
|
||
|
freq = ieee80211_channel_to_frequency(channel, band->band);
|
||
|
- notify_channel = ieee80211_get_channel(wiphy, freq);
|
||
|
+ bss_data.chan = ieee80211_get_channel(wiphy, freq);
|
||
|
+ bss_data.scan_width = NL80211_BSS_CHAN_WIDTH_20;
|
||
|
+ bss_data.boottime_ns = ktime_to_ns(ktime_get_boottime());
|
||
|
|
||
|
notify_capability = le16_to_cpu(bi->capability);
|
||
|
notify_interval = le16_to_cpu(bi->beacon_period);
|
||
|
notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset);
|
||
|
notify_ielen = le32_to_cpu(bi->ie_length);
|
||
|
- notify_signal = (s16)le16_to_cpu(bi->RSSI) * 100;
|
||
|
+ bss_data.signal = (s16)le16_to_cpu(bi->RSSI) * 100;
|
||
|
|
||
|
brcmf_dbg(CONN, "bssid: %pM\n", bi->BSSID);
|
||
|
brcmf_dbg(CONN, "Channel: %d(%d)\n", channel, freq);
|
||
|
brcmf_dbg(CONN, "Capability: %X\n", notify_capability);
|
||
|
brcmf_dbg(CONN, "Beacon interval: %d\n", notify_interval);
|
||
|
- brcmf_dbg(CONN, "Signal: %d\n", notify_signal);
|
||
|
+ brcmf_dbg(CONN, "Signal: %d\n", bss_data.signal);
|
||
|
|
||
|
- bss = cfg80211_inform_bss(wiphy, notify_channel,
|
||
|
- CFG80211_BSS_FTYPE_UNKNOWN,
|
||
|
- (const u8 *)bi->BSSID,
|
||
|
- 0, notify_capability,
|
||
|
- notify_interval, notify_ie,
|
||
|
- notify_ielen, notify_signal,
|
||
|
- GFP_KERNEL);
|
||
|
+ bss = cfg80211_inform_bss_data(wiphy, &bss_data,
|
||
|
+ CFG80211_BSS_FTYPE_UNKNOWN,
|
||
|
+ (const u8 *)bi->BSSID,
|
||
|
+ 0, notify_capability,
|
||
|
+ notify_interval, notify_ie,
|
||
|
+ notify_ielen, GFP_KERNEL);
|
||
|
|
||
|
if (!bss)
|
||
|
return -ENOMEM;
|