summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bauer <mail@david-bauer.net>2026-05-16 16:49:42 +0200
committerFelix Fietkau <nbd@nbd.name>2026-07-31 12:25:37 +0000
commita92cd5dd792a63a5d8a72142835382d4edbe9933 (patch)
tree84d0f351152056fbec171ecb11df53fd97dda31b
parente65b4ca3391e80d043d010237d8c8562800eb6bf (diff)
downloadlinux-next-a92cd5dd792a63a5d8a72142835382d4edbe9933.tar.gz
linux-next-a92cd5dd792a63a5d8a72142835382d4edbe9933.zip
wifi: mt76: mt7915: configure noise floor reporting on reset
When performing a full system recovery of the MCU on a dual-phy platform, band 0 (usually 2.4GHz) stops reading correct noise floor data. This is due to noise floor reporting only being configured correctly for the second device PHY. Configure the respective registers correctly after restarting the MCU firmware to fix reported noise-floor values. Signed-off-by: David Bauer <mail@david-bauer.net> Link: https://patch.msgid.link/20260516144944.2574053-1-mail@david-bauer.net Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--drivers/net/wireless/mediatek/mt76/mt7915/mac.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
index 334c19ab2b22..9e93201e4186 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
@@ -1292,6 +1292,7 @@ mt7915_mac_restart(struct mt7915_dev *dev)
struct mt7915_phy *phy2;
struct mt76_phy *ext_phy;
struct mt76_dev *mdev = &dev->mt76;
+ bool run_main, run_ext;
int i, ret;
ext_phy = dev->mt76.phys[MT_BAND1];
@@ -1387,13 +1388,17 @@ mt7915_mac_restart(struct mt7915_dev *dev)
mt7915_init_txpower(phy2);
ret = mt7915_txbf_init(dev);
- if (test_bit(MT76_STATE_RUNNING, &dev->mphy.state)) {
+ run_main = test_and_clear_bit(MT76_STATE_RUNNING, &dev->mphy.state);
+ run_ext = ext_phy &&
+ test_and_clear_bit(MT76_STATE_RUNNING, &ext_phy->state);
+
+ if (run_main) {
ret = mt7915_run(dev->mphy.hw);
if (ret)
goto out;
}
- if (ext_phy && test_bit(MT76_STATE_RUNNING, &ext_phy->state)) {
+ if (run_ext) {
ret = mt7915_run(ext_phy->hw);
if (ret)
goto out;