mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
wifi: mt76: mt7996: wake MCU waiters before aborting scan in L1 SER
The L1 reset path calls mt76_abort_scan() between setting MT76_MCU_RESET
and waking mcu.wait. A scan work blocked on an in-flight MCU command
does not re-evaluate its wait condition until woken, so the
cancel_delayed_work_sync() inside the abort sleeps out the full MCU
timeout before recovery can proceed, adding several seconds of SER
latency. mt7996_mac_full_reset() and the mt7915 counterpart already
order the wake-up first.
Wake mcu.wait immediately after setting MT76_MCU_RESET so in-flight
commands bail out before the abort synchronises against them.
Fixes: b36d55610215 ("wifi: mt76: abort scan/roc on hw restart")
Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
+1
-1
@@ -2572,8 +2572,8 @@ void mt7996_mac_reset_work(struct work_struct *work)
|
||||
|
||||
set_bit(MT76_RESET, &dev->mphy.state);
|
||||
set_bit(MT76_MCU_RESET, &dev->mphy.state);
|
||||
mt76_abort_scan(&dev->mt76);
|
||||
wake_up(&dev->mt76.mcu.wait);
|
||||
mt76_abort_scan(&dev->mt76);
|
||||
|
||||
cancel_work_sync(&dev->wed_rro.work);
|
||||
mt7996_for_each_phy(dev, phy) {
|
||||
|
||||
Reference in New Issue
Block a user