Re: [PATCH v5 6/6] wifi: rtw88: sdio: add TX back-pressure and retry on page starvation
From: Luka Gejak
Date: Wed Aug 19 2026 - 03:27:11 EST
Hi Ping-Ke,
Thanks for the acks, and for catching the wrapper.
> Actually, I didn't request this wrapper by v4. (Also I don't prefer a
> simple wrapper like this that hides kernel API).
You are right, and I misread your v4 comment. You asked me to move the
chunk into a function and I produced a one line wrapper around
queue_delayed_work() instead, which hides the API for no gain. It is
gone in v6.
> I'd move this chunk you are adding to a function.
Done. The conditions now live in rtw_sdio_8723bs_reschedule_tx(), which
decides whether the work should run again and says why, so the handler
loop is just:
ret = rtw_sdio_process_tx_queue(rtwdev, queue);
if (ret > 0)
break;
if (rtw_sdio_8723bs_reschedule_tx(rtwdev, work_data, queue, ret))
return;
if (skb_queue_empty(&rtwsdio->tx_queue[queue]))
break;
While rewriting that I found something I had got wrong in v4 and v5, and
it is worth pointing out because it was not limited to this chip. Both
versions had an unconditional
if (ret < 0)
break;
in that loop. Upstream requeues the frame on a failed transfer and lets
the loop retry, so that break quietly changed every other SDIO part to
give up after the first failure. That contradicted the scope claim in my
own cover letter. It is dropped in v6: the two errors this chip needs to
retry are handled in the helper before that point, and everything else
keeps the existing behaviour, so the other parts are untouched again.
Best regards,
Luka Gejak