Re: [PATCH rtw-next v3] wifi: rtw88: wake the TX queues after ieee80211_restart_hw()

From: Luka Gejak

Date: Wed Oct 14 2026 - 05:55:25 EST


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