12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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
- @@ -2540,12 +2540,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);
- @@ -2629,6 +2631,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:
|