Hi all,
While trying to improve the retransmission percentage on my rtl8188cus
devices, I found the following:
rtl8xxxu_tx() takes every sk_buf handed by mac80211 and relays it to the
rtl8188cus right away. This results in 10k+ URBs/s, each ~1500 bytes in
size on my x86 workstation. On my low-end ARMv5 devices the URBs peak
out at ~5k/s, with lower throughput and higher retransmission rates
(~30% in a shielded RF box, ~10% for my workstation).
The Realtek 8192cu bundles the TX frames [1] and sends up to 18kB sized
URBs, resulting in just 1k URBs/s. The retransmission rates with this
driver are below 1%.
Questions:
- Any chance this URB "spam" is the root cause for the rtl8188cus being
too slow to ACK received frames in time, causing retransmissions by
the AP?
- Is implementing wake_tx_queue() the proper way to improve this?
Kind regards,
Reto
[1]
https://github.com/husqvarnagroup/rtl8xxxu-8192cu-for-rtl8188cus/blob/d8c03db466bbb3e9c4e8e6cb0a589cfef55db756/core/rtw_xmit.c#L1688