diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-04-22 16:29:31 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-05-16 22:39:38 +0200 |
commit | ef0621e805f9ef76eaf31ce6205028fe467e9ca9 (patch) | |
tree | 44a6af5c68b914cc8bec0b08b5a72d9ed7d6ef00 /net/mac80211/rx.c | |
parent | 119363c7dc2bcc0c33c255a7b4979c8c0fdc1896 (diff) |
mac80211: add support for per-chain signal strength reporting
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
[fix unit documentation]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r-- | net/mac80211/rx.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index c8447af76ea..22e412b0767 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -1372,6 +1372,7 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx) struct sk_buff *skb = rx->skb; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; + int i; if (!sta) return RX_CONTINUE; @@ -1422,6 +1423,19 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx) ewma_add(&sta->avg_signal, -status->signal); } + if (status->chains) { + sta->chains = status->chains; + for (i = 0; i < ARRAY_SIZE(status->chain_signal); i++) { + int signal = status->chain_signal[i]; + + if (!(status->chains & BIT(i))) + continue; + + sta->chain_signal_last[i] = signal; + ewma_add(&sta->chain_signal_avg[i], -signal); + } + } + /* * Change STA power saving mode only at the end of a frame * exchange sequence. |