diff options
author | Tosoni <jp.tosoni@acksys.fr> | 2018-03-14 12:58:34 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2018-03-21 06:27:11 -0400 |
commit | 1ad22fb5bb53ce6bf5377f25529c0a007c61c6f5 (patch) | |
tree | 3932788cc832ac2f081e81f6588fbb1c6729bddd /net/mac80211/scan.c | |
parent | 8cfd36a0b53aeb4ec21d81eb79706697b84dfc3d (diff) |
mac80211: inform wireless layer when frame RSSI is invalid
When the low-level driver returns an invalid RSSI indication,
set the signal value to 0 as an indication to the upper layer.
Also, skip average level computation if signal is invalid.
Signed-off-by: Jean Pierre TOSONI <jp.tosoni@acksys.fr>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/scan.c')
-rw-r--r-- | net/mac80211/scan.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index ef2becaade50..a3b1bcc2b461 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c | |||
@@ -73,7 +73,9 @@ ieee80211_bss_info_update(struct ieee80211_local *local, | |||
73 | bool signal_valid; | 73 | bool signal_valid; |
74 | struct ieee80211_sub_if_data *scan_sdata; | 74 | struct ieee80211_sub_if_data *scan_sdata; |
75 | 75 | ||
76 | if (ieee80211_hw_check(&local->hw, SIGNAL_DBM)) | 76 | if (rx_status->flag & RX_FLAG_NO_SIGNAL_VAL) |
77 | bss_meta.signal = 0; /* invalid signal indication */ | ||
78 | else if (ieee80211_hw_check(&local->hw, SIGNAL_DBM)) | ||
77 | bss_meta.signal = rx_status->signal * 100; | 79 | bss_meta.signal = rx_status->signal * 100; |
78 | else if (ieee80211_hw_check(&local->hw, SIGNAL_UNSPEC)) | 80 | else if (ieee80211_hw_check(&local->hw, SIGNAL_UNSPEC)) |
79 | bss_meta.signal = (rx_status->signal * 100) / local->hw.max_signal; | 81 | bss_meta.signal = (rx_status->signal * 100) / local->hw.max_signal; |