1: 6561bb289494 ! 1: 958c667dcf4d wifi: rtw88: sdio: Handle allocation and read errors in rtw_sdio_rxfifo_recv @@ Commit message Fixes: 65371a3f14e7 ("wifi: rtw88: sdio: Add HCI implementation for SDIO based chipsets") Cc: stable@vger.kernel.org Assisted-by: LLM + Acked-by: Ping-Ke Shih  Signed-off-by: Alastair D'Silva   ## drivers/net/wireless/realtek/rtw88/sdio.c ## 2: fac668caa77f < -: ------------ wifi: rtw88: sdio: Track running state and cancel TX worker on stop 3: 3b64d3e7ea31 < -: ------------ wifi: rtw88: sdio: Fix unhandled RX request interrupt storm -: ------------ > 2: 94d131f86bca wifi: rtw88: sdio: Track running state and cancel TX worker on stop -: ------------ > 3: 5543b4c96c93 wifi: rtw88: sdio: Fix unhandled RX request interrupt storm 4: 001205a1c42b ! 4: d774798f92bb wifi: rtw88: sdio: Split rtw_sdio_rx_isr into 8051 and 3081 variants @@ Commit message This is a refactoring without any logic changes.  Assisted-by: LLM + Acked-by: Ping-Ke Shih  Signed-off-by: Alastair D'Silva   ## drivers/net/wireless/realtek/rtw88/sdio.c ## @@ drivers/net/wireless/realtek/rtw88/sdio.c: static void rtw_sdio_rx_isr(struct rt  - */  - hisr = REG_SDIO_HISR_RX_REQUEST;  - } -+ /* Stop if no more RX requests are pending, even if ++ /* ++ * Stop if no more RX requests are pending, even if  + * rx_len could be greater than zero in the next  + * iteration. This is needed because the RX buffer may  + * already contain data while either HW or FW are not @@ drivers/net/wireless/realtek/rtw88/sdio.c: static void rtw_sdio_handle_interrupt  + rtw_sdio_rx_isr_3081(rtwdev);  /* Unmasking HIMR re-asserts the IRQ line if new packets arrived */ - if (rtwsdio->running) + scoped_guard(mutex, &rtwsdio->irq_lock) {