GL.iNet Slate Plus slow wifi client to client

I have a gl.inet a1300 slate plus with ipq4018. i have an AC 5ghz 80mhz access point on a dfs channel with no overlaps with WMM enabled. system logs show this as the command used to start the access point.

daemon.notice hostapd: Configuration file: data: driver=nl80211 logger_syslog=127 logger_syslog_level=2 logger_stdout=127 logger_stdout_level=2 country_code=US ieee80211d=1 ieee80211h=1 hw_mode=a beacon_int=100 chanlist=116 tx_queue_data2_burst=2.0 #num_global_macaddr=1 ieee80211n=1 ht_coex=0 ht_capab=[HT40+][LDPC][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][MAX-AMSDU-7935][DSSS_CCK-40] ieee80211ac=1 vht_oper_chwidth=1 vht_oper_centr_freq_seg0_idx=122 vht_capab=[RXLDPC][SHORT-GI-80][TX-STBC-2BY1][SU-BEAMFORMER][SU-BEAMFORMEE][MU-BEAMFORMER][MU-BEAMFORMEE][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN][RX-STBC-1][SOUNDING-DIMENSION-2][BF-ANTENNA-3][MAX-MPDU-11454][MAX-A-MPDU-LEN-EXP7] channel=116  interface=phy1-ap0 bssid=REDACTED ctrl_interface=/var/run/hostapd ap_isolate=1 bss_load_update_period=60 chan_util_avg_period=600 disassoc_low_ack=1 skip_inactivity_poll=0 preamble=1 wmm_enabled=1 ignore_broadcast_ssid=0 uapsd_advertisement_enabled=1 utf8_ssid=1 multi_ap=0 wpa_passphrase=REDACTED wpa_psk_

i have a desktop with ax210 (wifi 6) and mini pc with wcn6856 (wifi 6e). Both clients are connected to the access point and are hosting an ftp server.

The problem is the max speed I can get for file transfers is 30MBps. I thought maybe it was just the ftp server/client, so I tested with iperf3 and got the same results. I thought maybe an updated build would fix it so I built a custom 6.1 image and set everything up the same way. I am still getting these wifi speeds and it's irritating.

I tried enabling software flow offloading and hadware flow offloading and this made no difference.

What could be causing such slow wifi speeds? I'm at a loss of where to look.

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall

ubus call system board

{
	"kernel": "6.1.80",
	"hostname": "OpenWrt",
	"system": "ARMv7 Processor rev 5 (v7l)",
	"model": "GL.iNet GL-A1300",
	"board_name": "glinet,gl-a1300",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "SNAPSHOT",
		"revision": "r25395-4efbfcd996",
		"target": "ipq40xx/generic",
		"description": "OpenWrt SNAPSHOT r25395-4efbfcd996"
	}
}

cat /etc/config/network

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fda6:9d1b:e630::/48'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'wan'
	option ipv6 '0'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '10.0.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config interface 'wan'
	option proto 'dhcp'
	option metric '1024'

cat /etc/config/wireless

config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/soc/a000000.wifi'
	option channel 'auto'
	option band '2g'
	option htmode 'HT40'
	option country 'US'
	option cell_density '0'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/soc/a800000.wifi'
	option channel '116'
	option band '5g'
	option htmode 'VHT80'
	option country 'US'
	option cell_density '0'

config wifi-iface 'wifinet2'
	option device 'radio0'
	option mode 'sta'
	option network 'wan'
	option ssid 'REDACTED'
	option encryption 'psk2'
	option key 'REDACTED'

config wifi-iface 'wifinet1'
	option device 'radio1'
	option mode 'ap'
	option ssid 'REDACTED'
	option encryption 'psk2'
	option key 'REDACTED'
	option wpa_disable_eapol_key_retries '1'
	option network 'lan'

cat /etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option dhcpv6 'server'
	option ra 'server'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'

cat /etc/config/firewall

config defaults
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option synflood_protect '1'
	option flow_offloading '1'
	option flow_offloading_hw '1'

config zone
	option name 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'
	list network 'lan'

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	list network 'wan'
	list network 'wg2'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'

config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'

missed one ...

yep, i added it
i removed references to my wireguard interface but there are still some. it's wg2. it is in the wan firewall and was disabled during testing. that is why the wifi station connection has a metric set. before I setup the wireguard interface at all I was having the same results.

is the A1300 and the access point the same device ?

who is hosting it ?

where/how are the files stored ?

run htop via cli, see the CPU load while you do this.

wan should not be in lan

1 Like

yes, the access point is the 5ghz band of the gl.inet openwrt router.

both clients are hosting an ftp server. actually i have about 5 clients all running debian sid all running vsftpd as a server and no matter which computer tries to copy files to any other computer, the speeds range from 14MBps to 30MBps, typically around 20MBps. i've tried multiple different pcie and usb wifi adapters, so I believe I've ruled out the issue being the clients.

vsftpd just allows access to the entire root directory if authenticated. My test was using a single 14.1GB file.

i didnt build in htop but top shows ksoftirqd reached 9% while about 4 others sat around 1-3%, but cpu % remained at 0% and user % hit 7%. Not entirely sure how to read top. This current test is averaging 19.7MBps.

I'm using that ethernet port in the lan, my internet is provided by another wifi access point which my 2.4ghz band connects to.

you want htop,

compare PPPoE too slow in Archer C6 - #3 by Exio0 and PPPoE too slow in Archer C6 - #5 by Exio0

I thought that may be the case and that is fine. The name is just a name.

I spent hours yesterday trying to get someone else to config a lan port as a wan port and could not get it to work for them, so I was hesitant qualifying it.

doing another build will have to be another day. and I have luci statistics app that has been graphing cpu usage, and the first core hasn't gone over 40% while the other 3 haven't gone over 8%.

edit
i went ahead and sshd to build pc and added htop, but i cant flash until tonight.

i completely understand, i have a wac104 with weird naming and vlan setup and it took me hours to get all ports in the bridge.

I recorded htop while running 3 tests with iperf3. Here's the video
https://www.youtube.com/watch?v=CB6LlWQokAY
The cpu doesn't seem to be the bottleneck, although it is getting pretty high. This tells me it's either wifi driver/firmware or network configuration related.

im compiling now with lto, -O3, and cortex-a7 optimization flags to maybe get the cpu usage down. I also enabled the proprietary functionality option, i don't know if this will be relevant with the CT firmware. if this doesn't work, then I'm going to try the regular ath10k firmware instead of the CT one (CT is used in stock openwrt)

edit: lto is giving me trouble, ill post back later my results with non-ct firmware

I built with ath10k non ct driver and firmware and I have no improvement on wifi speed (21.9MBps iperf3)... So I think that rules out the problem being driver/firmware. The CT firmware was from 2020, the regular one is from 2023 so that's a plus. It's probably a good idea to move stock openwrt from CT drivers and firmwares, they apparently don't receive updates for long periods of time.

The cpu % went up to about 87% this time, but averages around 74% most of the time.
Turning off software and hardware flow offloading lowered the cpu to max 77% and average 67%, with no difference in wifi speed.

I'm currently trying to compile with some cortex-a7 tuning options and enabling the fpu with hard float, but it's proven quite challenging. I doubt optimizing the cpu is going to work. there's something else going on.

I really don't know what else to do now.

Did you ever mention what the storage devices are that you are running throughput tests with?

Looks to me like only one core is being used. Try Network/Interfaces/ Global network options->Enable packet steering.

Then run again.

Same issue experience here with:
Netgear SRR60 and SRS60
Linksys WHW03

I believe it's something in the Wireless drivers but have been unable to narrow it down further.

All of my client PCs have nvme/sata ssd's with minimum 100MBps read/write speed. With my old x86 router, I could saturate the 2.5GBe line between 2 PCs copying a file through FTP. I know for certain disk speed is not the bottleneck.

I tested that setting and I'm getting average 25.9MBps but the CPU usage seem to split between the 2 cores, 1st core averages around 50% now. CPU is definitely not the bottleneck now that I've seen that. Is it best to keep that setting on?

Like it says "May help or hinder network speed".

I use it on my Pi4.

I don't suspect the driver anymore. My old router used a WCN6856 with ath11k on like the first kernel the device was available and was able to achieve 95MBps with hostapd, albeit not stable (it was a debian install). And I changed driver and firmware to the latest ath10k instead of CT. I'm thinking it may be wpad/hostapd or the configuration being used for the device sent to it. That's the last thing in the chain I can think of being the issue, except network configurations I don't know about.