2022-02-02 16:06:50

by Reto Schneider

[permalink] [raw]
Subject: rtl8xxxu: Performance findings and questions

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


2022-02-08 13:22:58

by Ping-Ke Shih

[permalink] [raw]
Subject: RE: rtl8xxxu: Performance findings and questions

Hi,

> -----Original Message-----
> From: Reto Schneider <[email protected]>
> Sent: Wednesday, February 2, 2022 8:42 AM
> To: [email protected]; [email protected]; [email protected]
> Cc: Pkshih <[email protected]>
> Subject: rtl8xxxu: Performance findings and questions
>
> 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).

Do you mean low-end device has higher retransmission rates than x86?
It looks no reasonable. Could I know the driver and hardware including
antenna are all the same?

>
> 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%.

If you put 8192cu on your low-end device, is the retransmission rate still
low?

>
> 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?

ACK is sent by hardware (not firmware/driver), so I think URB doesn't
affect it.

> - Is implementing wake_tx_queue() the proper way to improve this?

Use wake_tx_queue() can boost MAC efficiency, but not sure it can improve
it. AMSDU can send a continual and longer data in the air, so it is
possible to get higher throughput, but it is also possible to have higher
collision rate.

Since you have mentioned retransmission rate, I guess you use another
device working at monitor mode to capture packets, right? I think you can
also investigate the relation between TX PHY rate and retransmission.

Another experiment is the distance vs. rate. With short distance,
it may get worse throughput because signal is too strong. Oppositely,
if TX signal is too weak, moving device closer to AP may be helpful.

--
Ping-Ke