mac80211: brcmfmac: support dumping stations
[15.05/openwrt.git] / package / kernel / mac80211 / patches / 372-0007-brcmfmac-Add-RSSI-information-to-get_station.patch
1 From: Hante Meuleman <meuleman@broadcom.com>
2 Date: Thu, 8 Oct 2015 20:33:17 +0200
3 Subject: [PATCH] brcmfmac: Add RSSI information to get_station.
4
5 Reviewed-by: Arend Van Spriel <arend@broadcom.com>
6 Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
7 Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
8 Signed-off-by: Arend van Spriel <arend@broadcom.com>
9 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
10 ---
11
12 --- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
13 +++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
14 @@ -2431,6 +2431,9 @@ brcmf_cfg80211_get_station(struct wiphy
15         struct brcmf_sta_info_le sta_info_le;
16         u32 sta_flags;
17         u32 is_tdls_peer;
18 +       s32 total_rssi;
19 +       s32 count_rssi;
20 +       u32 i;
21  
22         brcmf_dbg(TRACE, "Enter, MAC %pM\n", mac);
23         if (!check_vif_up(ifp->vif))
24 @@ -2491,6 +2494,26 @@ brcmf_cfg80211_get_station(struct wiphy
25                         sinfo->filled |= BIT(NL80211_STA_INFO_RX_BYTES);
26                         sinfo->rx_bytes = le64_to_cpu(sta_info_le.rx_tot_bytes);
27                 }
28 +               total_rssi = 0;
29 +               count_rssi = 0;
30 +               for (i = 0; i < BRCMF_ANT_MAX; i++) {
31 +                       if (sta_info_le.rssi[i]) {
32 +                               sinfo->chain_signal_avg[count_rssi] =
33 +                                       sta_info_le.rssi[i];
34 +                               sinfo->chain_signal[count_rssi] =
35 +                                       sta_info_le.rssi[i];
36 +                               total_rssi += sta_info_le.rssi[i];
37 +                               count_rssi++;
38 +                       }
39 +               }
40 +               if (count_rssi) {
41 +                       sinfo->filled |= BIT(NL80211_STA_INFO_CHAIN_SIGNAL);
42 +                       sinfo->chains = count_rssi;
43 +
44 +                       sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
45 +                       total_rssi /= count_rssi;
46 +                       sinfo->signal = total_rssi;
47 +               }
48         }
49  done:
50         brcmf_dbg(TRACE, "Exit\n");