Re: [PATCH rtw-next v9 0/4] wifi: rtw88: sdio: Fix unhandled RX request interrupt storm
From: Luka Gejak
Date: Sun Nov 08 2026 - 01:06:20 EST
Hi Ping-Ke,
November 8, 2026 at 4:06 AM, "Ping-Ke Shih" <pkshih@xxxxxxxxxxx> wrote:
>
> Luka Gejak <luka.gejak@xxxxxxxxx> wrote:
>
> >
> > November 7, 2026 at 4:53 AM, "Alastair D'Silva" <alastair@xxxxxxxxxxx> wrote:
> >
> >
> > On 3081-based SDIO chips (observed on RTL8821CS; RTL8822BS and RTL8822CS
> > are inferred to be affected as they share the 3081 architecture), clearing
> > REG_SDIO_HISR_RX_REQUEST requires both a software W1C acknowledge and an
> > empty RX FIFO. Masking this bit out before writing back to HISR prevents
> > the software acknowledge from happening, leaving the bit asserted even
> > after the FIFO is drained and trapping the CPU core in an infinite
> > interrupt storm that locks up the system upon receiving network traffic.
> >
> > This series fixes the interrupt storm on 3081 chips and addresses
> > related SDIO lifecycle, locking, and error handling issues:
> >
> > - Patch 1 returns error codes from rtw_sdio_rxfifo_recv() on allocation,
> > oversized packet, or read failures so the caller stops immediately
> > instead of burning through the loop budget.
> > - Patch 2 tracks operational state via rtwsdio->running protected by an
> > irq_lock mutex (using a mutex as SDIO bus operations sleep), serializes
> > start/stop state transitions under sdio_claim_host() and irq_lock,
> > cancels the TX worker synchronously on stop, drains rtwsdio->tx_queue[]
> > with locked skb_dequeue() and ieee80211_free_txskb() in rtw_sdio_stop()
> > and again in rtw_sdio_start(), and resets rtwsdio->tx_queue_stopped[]
> > while waking stopped AC queues under tx_queue[].lock in rtw_sdio_start().
> > - Patch 3 fixes the interrupt storm by splitting
> > rtw_sdio_handle_interrupt() into 8051 and 3081 paths. On 3081,
> > interrupts are masked via HIMR, acknowledged via W1C writeback,
> > serviced, and re-enabled under irq_lock if still running.
> > - Patch 4 refactors rtw_sdio_rx_isr() into separate 8051 and 3081 variants
> > to clarify the differences in register width and HISR handling without
> > any logic changes.
> >
> >
> > Thanks for addressing those comments, v9 looks good to me,
> >
> > Reviewed-by: Luka Gejak <luka.gejak@xxxxxxxxx>
> >
> I don't know why I can't see v10 in patchwork [1].
I suppose you mean v9.
> Please take Luka's Reviewed-by for each patch, and send v10.
>
> [1] https://patchwork.kernel.org/project/linux-wireless/list/?series=&submitter=Alastair&state=*&q=&archive=&delegate=
>
It might be the same issue lore is experiencing. Nothing newer than
November 6th is appearing, maybe it's related?
Best regards,
Luka Gejak