[PATCH] wifi: rtw88: extend USB TX report timeout to RTL8822BU

From: VolcomIlluminated

Date: Sun May 31 2026 - 18:43:49 EST


Luka Gejak's patch increased the TX report timeout for RTL8723DU to
accommodate off-channel dwell time during background scans. The same
issue affects RTL8822BU (tested on Edimax EW-7822ULC) where background
scans cause the firmware to stay off-channel for periods exceeding the
default 500ms timeout, causing the purge timer to fire prematurely and
drop TX tracking skbs.

Extend the 2500ms timeout to also cover RTL8822BU USB devices.

Tested on RTL8822BU (Edimax EW-7822ULC) with 17,706 packets over 24+
hours with zero drops.

Fixes: a82dfd33d123 ("wifi: rtw88: Add common USB chip support")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: VolcomIlluminated <Volcomilluminated@xxxxxxxxxx>
---
--- /tmp/linux-6.18/drivers/net/wireless/realtek/rtw88/tx.c 2025-11-30 17:42:10.000000000 -0500
+++ /home/ptpx86mm1/kernelbuild/linux-6.18/drivers/net/wireless/realtek/rtw88/tx.c 2026-05-31 16:00:37.125645594 -0400
@@ -196,6 +196,7 @@
void rtw_tx_report_enqueue(struct rtw_dev *rtwdev, struct sk_buff *skb, u8 sn)
{
struct rtw_tx_report *tx_report = &rtwdev->tx_report;
+ unsigned long timeout = RTW_TX_PROBE_TIMEOUT;
unsigned long flags;
u8 *drv_data;

@@ -207,7 +208,12 @@
__skb_queue_tail(&tx_report->queue, skb);
spin_unlock_irqrestore(&tx_report->q_lock, flags);

- mod_timer(&tx_report->purge_timer, jiffies + RTW_TX_PROBE_TIMEOUT);
+ if ((rtwdev->chip->id == RTW_CHIP_TYPE_8723D ||
+ rtwdev->chip->id == RTW_CHIP_TYPE_8822B) &&
+ rtwdev->hci.type == RTW_HCI_TYPE_USB)
+ timeout = msecs_to_jiffies(2500);
+
+ mod_timer(&tx_report->purge_timer, jiffies + timeout);
}
EXPORT_SYMBOL(rtw_tx_report_enqueue);