2020-01-21 18:45:34

by Marlon Smith

[permalink] [raw]
Subject: RT5370 performance issues

Hi everyone,

I'm having some trouble with an RT5370 Wi-Fi module on an embedded
Linux system. With just one of these modules connected to an access
point, performance is around 30 Mbit/s. However, as soon as a second
module is connected to the access point, performance drops to about 3
Mbit/s.

With debug output enabled, there are many copies of this message:

wlan0: release an RX reorder frame due to timeout on earlier frames

which seems to be related to MDPU aggregation. So, I went into
rt2800lib.c in the function rt2800_ampdu_action and added the line
ret = -ENOTSUPP; to disable support for RX frame aggregation:

switch (action) {
case IEEE80211_AMPDU_RX_START:
case IEEE80211_AMPDU_RX_STOP:
ret = -ENOTSUPP;
...

After that change, debug output shows:

wlan0: AddBA Req buf_size=64 for 00:ad:24:ff:6c:a0
wlan0: Rx A-MPDU request on 00:ad:24:ff:6c:a0 tid 0 result -524

and performance seems to be maybe slightly faster but not by much.

I'm using backports, and have tried with version 5.3-rc4 and 
4.14-rc2. I've also tried several versions of the device firmware
file rt2870.bin; 0.36, 0.33, and 0.22.

Many thanks for any ideas you can offer.

Marlon