020795aaba
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 49380
53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
From: Jaap Jan Meijer <jjmeijer88@gmail.com>
|
|
Date: Thu, 12 May 2016 18:25:08 +0200
|
|
Subject: [PATCH] brcmfmac: add fallback for devices that do not report
|
|
per-chain values
|
|
|
|
If brcmf_cfg80211_get_station fails to determine the RSSI from the
|
|
per-chain values get the value individually as a fallback.
|
|
|
|
Fixes: 1f0dc59a6de9 ("brcmfmac: rework .get_station() callback")
|
|
Signed-off-by: Jaap Jan Meijer <jjmeijer88@gmail.com>
|
|
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
---
|
|
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
@@ -2480,12 +2480,14 @@ brcmf_cfg80211_get_station(struct wiphy
|
|
const u8 *mac, struct station_info *sinfo)
|
|
{
|
|
struct brcmf_if *ifp = netdev_priv(ndev);
|
|
+ struct brcmf_scb_val_le scb_val;
|
|
s32 err = 0;
|
|
struct brcmf_sta_info_le sta_info_le;
|
|
u32 sta_flags;
|
|
u32 is_tdls_peer;
|
|
s32 total_rssi;
|
|
s32 count_rssi;
|
|
+ int rssi;
|
|
u32 i;
|
|
|
|
brcmf_dbg(TRACE, "Enter, MAC %pM\n", mac);
|
|
@@ -2569,6 +2571,20 @@ brcmf_cfg80211_get_station(struct wiphy
|
|
sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
|
|
total_rssi /= count_rssi;
|
|
sinfo->signal = total_rssi;
|
|
+ } else if (test_bit(BRCMF_VIF_STATUS_CONNECTED,
|
|
+ &ifp->vif->sme_state)) {
|
|
+ memset(&scb_val, 0, sizeof(scb_val));
|
|
+ err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_RSSI,
|
|
+ &scb_val, sizeof(scb_val));
|
|
+ if (err) {
|
|
+ brcmf_err("Could not get rssi (%d)\n", err);
|
|
+ goto done;
|
|
+ } else {
|
|
+ rssi = le32_to_cpu(scb_val.val);
|
|
+ sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
|
|
+ sinfo->signal = rssi;
|
|
+ brcmf_dbg(CONN, "RSSI %d dBm\n", rssi);
|
|
+ }
|
|
}
|
|
}
|
|
done:
|