summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChad Monroe <chad@monroe.io>2026-07-24 12:48:06 +0000
committerFelix Fietkau <nbd@nbd.name>2026-08-01 14:49:42 +0000
commite11fddd3471d6d277495412d0774fa6f3e71c164 (patch)
treec53ecb5eb0c66b62b9a538e3ad8c5efffd21a0a7
parent54caf306b28e48054ee9edef711ac4ab689c967d (diff)
downloadlinux-e11fddd3471d6d277495412d0774fa6f3e71c164.tar.gz
linux-e11fddd3471d6d277495412d0774fa6f3e71c164.zip
wifi: mt76: fix stuck TX queues after SER with no active interfaces
When a firmware watchdog triggers full SER recovery before any VAPs are up, mac80211 skips drv_reconfig_complete() because open_count is zero. This leaves the DRIVER queue stop reason set permanently, blocking all TX when interfaces eventually start. Signed-off-by: Chad Monroe <chad@monroe.io> Link: https://patch.msgid.link/20260724124813.3961474-22-nbd@nbd.name Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--drivers/net/wireless/mediatek/mt76/mt7915/mac.c4
-rw-r--r--drivers/net/wireless/mediatek/mt76/mt7996/mac.c2
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
index ebe1376ffc2c..350d4573ced2 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
@@ -1469,6 +1469,10 @@ mt7915_mac_full_reset(struct mt7915_dev *dev)
mutex_unlock(&dev->mt76.mutex);
+ ieee80211_wake_queues(mt76_hw(dev));
+ if (ext_phy)
+ ieee80211_wake_queues(ext_phy->hw);
+
ieee80211_restart_hw(mt76_hw(dev));
if (ext_phy)
ieee80211_restart_hw(ext_phy->hw);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c
index 96589aea1548..544da01b0411 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c
@@ -2512,6 +2512,8 @@ mt7996_mac_full_reset(struct mt7996_dev *dev)
mutex_unlock(&dev->mt76.mutex);
+ ieee80211_wake_queues(mt76_hw(dev));
+
ieee80211_restart_hw(mt76_hw(dev));
}