Slow R7800 2.4ghz transmits

I'm seeing the same issue across multiple R7800's: on 2.4Ghz, very slow TX speed from router but RX speed is reasonable. I don't see the issue on an Archer C7 v4 at the same router location (swapping between them). The R7800's 5Ghz speed is fine. Stock firmware 22.03.2 r19803-9a599fee93, default config.

Archer C7 v4, client -> router (iperf3 -t 20 -c 192.168.1.1) 
Interval           Transfer     Bitrate 
0.00-20.00  sec  73.0 MBytes  30.6 Mbits/sec

Archer C7 v4, router -> client (iperf3 -t 20 -c 192.168.1.1 -R)
Interval           Transfer     Bitrate
0.00-20.00  sec  76.5 MBytes  32.1 Mbits/secr

Netgear R7800, client -> router (iperf3 -t 20 -c 192.168.1.1) 
Interval           Transfer     Bitrate
0.00-20.00  sec  62.2 MBytes  26.1 Mbits/sec

Netgear R7800, router -> client (iperf3 -t 20 -c 192.168.1.1 -R)
Interval           Transfer     Bitrate
0.00-20.01  sec  21.9 MBytes  9.19 Mbits/sec

Archer C7 v4:

R7800:

This is not a particularly revealing test with respect to the wifi performance as it is likely CPU limited. iPerf3 testing on the router itself means that the router must source/sink packets rapidly. But, the CPU in most embedded routers is actually not that powerful for this purpose. Instead, it is designed to route traffic (not generate/terminate it) at high speeds.

The best way to test your wifi speed is to connect a computer via Ethernet and run iPerf3 (server) on that. Then, on one or more wireless devices, run iPerf3 (client, and client in reverse mode) to measure the performance of wired-wireless data transfer. This will give you the best indication of peak performance over wifi on your device (based on any given configuration as well as the environmental variables). You can also try running iPerf3 between two wireless devices, but that may have other bottlenecks.

This is an R7800, plenty of CPU performance to spare :slight_smile: - it can sustain 950 Mbits/sec over ethernet with iperf3 running on the router.

Ok... although depending on the architecture, the CPU may need to do other things when running the radio. Regardless, the best practice is to run iPerf on a general purpose computer.

1 Like

The R7800 does > 300 Mbits/sec on 5Ghz on same test setup with iPerf3 running on router.

Here is a head-to-head 2.4Ghz comparison of OpenWrt vs stock firmware on the R7800, using speedetst.net on a WAN connection that does > 300 Mbps/s:

Stock:
r7800_stock_default_speed_test

r7800_stock_wifi_setting

Client iwconfig:

wlo1      IEEE 802.11  ESSID:"xxxxxxxx"  
          Mode:Managed  Frequency:2.412 GHz  Access Point: xx:xx:xx:xx:xx:xx   
          Bit Rate=150 Mb/s   Tx-Power=22 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=70/70  Signal level=-19 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:40   Missed beacon:0

OpenWrt:
r7800_openwrt_speed_test

Negotiated WiFi rates - notice low TX Rate:
r7800_openwrt_wifi_rate
Client iwconfig:

wlo1      IEEE 802.11  ESSID:"xxxxxxxx"  
          Mode:Managed  Frequency:2.412 GHz  Access Point: xx:xx:xx:xx:xx:xx   
          Bit Rate=150 Mb/s   Tx-Power=22 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=70/70  Signal level=-18 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:18   Missed beacon:0

/etc/config/wireless:

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'soc/1b700000.pci/pci0001:00/0001:00:00.0/0001:01:00.0'
        option band '2g'
        option cell_density '0'
        option channel '1'
        option htmode 'HT40'
        option noscan '1'

If you're using the OpenWrt snapshot or stable releases,
They do not include hardware flow offloading.
You could try one of the community releases with NSS core functionality.
e.g. apccv or ACwifidude and so on...

Would that uniquely affect 2.4Ghz TX speeds? I get 250+ Mbps transmits on 5Ghz using OpenWrt and 950 Mbps on Ethernet.

Unable to comment since I have not used the default OpenWrt releases for a while re: Qualcomm Atheros IPQ8064 routers.
I use apccv releases for NSS cores.

I read the NSS build thread and it seems tailored for NAT acceleration. I see the slow 2.4Ghz TX even direct to router via iPerf3 (no NAT).

I found the source of the problem - "Maximum transmit power" defaults to "driver default" - the driver uses the maximum (30 dBm). Based on a related post I found here, this can inhibit TX performance. If I change the setting to 22 dBm then the negotiated TX rate increases from 45 Mbits/s to 150 Mbit/s, and my 2.4Ghz <-> WAN performance (TX from router, RX client) increases from 15.69 Mbits/s to 62.31 Mbits/s. My iPerf3 performance between router and client increases from < 12 Mbits/s to 78 Mbits/s.

r7800_openwrt_tx_power_23_speed_test

r7800_openwrt_tx_power_23_tx_rate

Which translates to:

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'soc/1b700000.pci/pci0001:00/0001:00:00.0/0001:01:00.0'
        option band '2g'
        option cell_density '0'
        option channel '1'
        option htmode 'HT40'
        option noscan '1'
        option txpower '22'

Have you tweaked the CPU frequency scaling governor settings at all??

If not, SSH into the router and execute the following 2 commands:

echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy1/scaling_governor

Then re-run your tests.

These commands temporarily force both CPU cores to run at maximum frequency. The changes will be lost on a reboot, or can be reverted by executing the commands again with "ondemand" instead of "performance". See the R7800 performance and Netgear R7800 exploration (IPQ8065, QCA9984) threads for more discussion about R7800 performance tuning and making such changes more permanent.