summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mediatek/mt76/mac80211.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2019-12-14 20:08:59 +0100
committerFelix Fietkau <nbd@nbd.name>2020-02-14 10:06:02 +0100
commite5051965fd2b2fee3b9c332a9a9412841883decb (patch)
tree89dbb0e78913518660f6a0fc9eb5a4ad4b947f08 /drivers/net/wireless/mediatek/mt76/mac80211.c
parenta25c888f3a5f1885b46455c04a20be7f6950ec95 (diff)
mt76: mt7615: measure channel noise and report it via survey
Read measurements every 100 ms and build a simple moving average Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mac80211.c')
-rw-r--r--drivers/net/wireless/mediatek/mt76/mac80211.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mac80211.c b/drivers/net/wireless/mediatek/mt76/mac80211.c
index 8cc09aa6fe61..d752fb539351 100644
--- a/drivers/net/wireless/mediatek/mt76/mac80211.c
+++ b/drivers/net/wireless/mediatek/mt76/mac80211.c
@@ -618,6 +618,9 @@ int mt76_get_survey(struct ieee80211_hw *hw, int idx,
survey->channel = chan;
survey->filled = SURVEY_INFO_TIME | SURVEY_INFO_TIME_BUSY;
survey->filled |= dev->drv->survey_flags;
+ if (state->noise)
+ survey->filled |= SURVEY_INFO_NOISE_DBM;
+
if (chan == phy->main_chan) {
survey->filled |= SURVEY_INFO_IN_USE;
@@ -628,6 +631,7 @@ int mt76_get_survey(struct ieee80211_hw *hw, int idx,
survey->time_busy = div_u64(state->cc_busy, 1000);
survey->time_rx = div_u64(state->cc_rx, 1000);
survey->time = div_u64(state->cc_active, 1000);
+ survey->noise = state->noise;
spin_lock_bh(&dev->cc_lock);
survey->time_bss_rx = div_u64(state->cc_bss_rx, 1000);