RE: [PATCH v5 4/6] wifi: rtw88: sdio: track free TX pages and OQT credits for RTL8723BS
Ping-Ke Shih <[email protected]>
| Newsgroups | org.kernel.vger.linux-wireless,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
[email protected] <[email protected]> wrote: > From: Luka Gejak <[email protected]> > > The RTL8723BS reports free TX page counts that the generic 8051 path > reads back from the chip on every transfer, which is both slow over SDIO > and unreliable on this part: the register frequently reads back zero > while pages are in fact available. It also gates transmission on a free > count in the SDIO output queue, REG_SDIO_OQT_FREE_PG, which rtw88 does > not track at all. The vendor driver calls this the OQT free space and > never expands the acronym; the register holds the number of further > transfers the SDIO output queue can accept, and the chip discards > writes that arrive when it has run out. > > Mirror the vendor driver and keep the per-queue and public page counts > in software, seeded at start and resynchronised from the chip only when > the cached counts say there is not enough room. Wait for a free output > queue entry before writing, and account for the pages consumed after a > successful transfer. > > Transfers also have to be padded up to the SDIO block size for this > chip rather than using the generic alignment, so size the write > separately from the frame and trim the skb back afterwards. > > Measured on RTL8723BS hardware against an iperf3 server one hop behind > the AP, with the wlan0 byte counters as ground truth. On the generic > path the association completes but no data passes at all: TCP and UDP > both measure 0 bit/s in either direction. With this patch TCP is > 25.3 Mbit/s up and 37.3 Mbit/s down, and UDP is 25.0 Mbit/s up at 0% > loss. > > Signed-off-by: Luka Gejak <[email protected]> Acked-by: Ping-Ke Shih <[email protected]>