diff options
Diffstat (limited to 'package/kernel/mac80211/patches/330-v4.18-0002-brcmfmac-reports-boottime_ns-while-informing-bss.patch')
-rw-r--r-- | package/kernel/mac80211/patches/330-v4.18-0002-brcmfmac-reports-boottime_ns-while-informing-bss.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/330-v4.18-0002-brcmfmac-reports-boottime_ns-while-informing-bss.patch b/package/kernel/mac80211/patches/330-v4.18-0002-brcmfmac-reports-boottime_ns-while-informing-bss.patch new file mode 100644 index 0000000000..4f59507cab --- /dev/null +++ b/package/kernel/mac80211/patches/330-v4.18-0002-brcmfmac-reports-boottime_ns-while-informing-bss.patch @@ -0,0 +1,76 @@ +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; |