Re: [PATCH v5 6/6] wifi: rtw88: sdio: add TX back-pressure and retry on page starvation
Luka Gejak <[email protected]>
| Newsgroups | org.kernel.vger.linux-wireless,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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