forked from Minki/linux
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: 1f0dc59a6d
("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>
This commit is contained in:
parent
b7e7ad611e
commit
94abd778a7
@ -2540,12 +2540,14 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev,
|
||||
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);
|
||||
@ -2629,6 +2631,20 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev,
|
||||
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:
|
||||
|
Loading…
Reference in New Issue
Block a user