[PATCH rtw-next v3] wifi: rtw88: wake the TX queues after ieee80211_restart_hw()
From: Abdurrahman Karadag
Date: Tue Oct 13 2026 - 18:19:53 EST
A queue stopped by the ring-full path keeps
IEEE80211_QUEUE_STOP_REASON_DRIVER across a hardware restart.
ieee80211_reconfig() wakes only IEEE80211_QUEUE_STOP_REASON_SUSPEND, and
the driver's own wake waits for a descriptor completion that the restart
leaves nothing to deliver. TX stays dead although the restart itself
succeeded.
Wake the queues once mac80211 reports the restart complete.
Signed-off-by: Abdurrahman Karadag <abdurrahmankaradag19@xxxxxxxxx>
---
v3:
- wake from rtw_reconfig_complete() rather than rtw_pci_reset_trx_ring(),
so the queues are released once the restart is complete (Ping-Ke Shih)
- name ieee80211_restart_hw() in the subject (Ping-Ke Shih)
- cut the commit message to the restart case, and drop the measurement
paragraph, which belongs to the still-open stall (Ping-Ke Shih)
- drop the comment (Ping-Ke Shih)
v1: https://lore.kernel.org/linux-wireless/20261002231013.11792-1-abdurrahmankaradag19@xxxxxxxxx/
drivers/net/wireless/realtek/rtw88/mac80211.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/realtek/rtw88/mac80211.c b/drivers/net/wireless/realtek/rtw88/mac80211.c
index 2a9b09f..b02017a 100644
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -882,8 +882,10 @@ static void rtw_reconfig_complete(struct ieee80211_hw *hw,
struct rtw_dev *rtwdev = hw->priv;
mutex_lock(&rtwdev->mutex);
- if (reconfig_type == IEEE80211_RECONFIG_TYPE_RESTART)
+ if (reconfig_type == IEEE80211_RECONFIG_TYPE_RESTART) {
clear_bit(RTW_FLAG_RESTARTING, rtwdev->flags);
+ ieee80211_wake_queues(hw);
+ }
mutex_unlock(&rtwdev->mutex);
}
--
2.55.0
base-commit: fbfa27d9b06f025c5f2cfa79d0e01e6400eeff2a