All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH rtw-next v3] wifi: rtw88: wake the TX queues after ieee80211_restart_hw()
@ 2026-10-13 22:07 Abdurrahman Karadag
  2026-10-14  9:42 ` Luka Gejak
  0 siblings, 1 reply; 2+ messages in thread
From: Abdurrahman Karadag @ 2026-10-13 22:07 UTC (permalink / raw)
  To: linux-wireless; +Cc: pkshih, linux-kernel, rtl8821cerfe2

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@gmail.com>
---
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@gmail.com/

 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

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH rtw-next v3] wifi: rtw88: wake the TX queues after ieee80211_restart_hw()
  2026-10-13 22:07 [PATCH rtw-next v3] wifi: rtw88: wake the TX queues after ieee80211_restart_hw() Abdurrahman Karadag
@ 2026-10-14  9:42 ` Luka Gejak
  0 siblings, 0 replies; 2+ messages in thread
From: Luka Gejak @ 2026-10-14  9:42 UTC (permalink / raw)
  To: Abdurrahman Karadag, linux-wireless; +Cc: pkshih, linux-kernel, rtl8821cerfe2

Hi Abdurrahman,

On Tue Oct 13, 2026 at 10:07 PM UTC, Abdurrahman Karadag wrote:
> @@ -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);

This looks right to me for the restart case. After rtw_pci_stop() the ring is
empty and rewound, so nothing is left to complete and the wake in
rtw_pci_tx_isr() can never run.

One thing I am not sure about. The same callback runs with
IEEE80211_RECONFIG_TYPE_SUSPEND after a plain resume, and the wake is skipped
there. I could not find anything that clears the driver stop reason except the
driver itself, and rtw_core_stop() goes through rtw_pci_stop() on the way
down, so a queue stopped by the ring-full path just before suspend looks like
it ends up in the same state. Is that reachable, or is it released somewhere I
missed?

Small thing for the commit message. ieee80211_wake_queues() releases every
queue with the driver reason, not just the one the ring-full path stopped, and
the offload scan and PCIe error paths use that reason as well. I think the first
sentence reads narrower than it is.

Best regards,
Luka Gejak

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-10-14  9:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-13 22:07 [PATCH rtw-next v3] wifi: rtw88: wake the TX queues after ieee80211_restart_hw() Abdurrahman Karadag
2026-10-14  9:42 ` Luka Gejak

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.