Slower than expected performance from Intel WiFi drivers

I feel like such a heel complaining about this, given the stellar work that's gone on with WiFi drivers in FreeBSD lately ❤️

However, I've upgraded my desktop and my laptop to FreeBSD 14.3, and the WiFi performance isn't as good as other people are getting. E.g. on my Framework Ryzen 13 laptop with an AX210 chipset:

Code:
[  1] 0.00-10.13 sec  12.6 MBytes  10.5 Mbits/sec

That's a lot better than the old number of 3.17! But other people on similar hardware - a ThinkPad with an AX210 WiFi chipset - are reporting much better numbers:

Code:
[  5]   0.00-10.02  sec  52.0 MBytes  43.6 Mbits/sec

I've just installed a TP-LINK ArcherAXE5400 PCI WiFI card in my desktop, and I'm getting similar numbers to my laptop:

Code:
[  1] 0.00-10.11 sec  13.4 MBytes  11.1 Mbits/sec

I think perhaps I'm missing something ... or, perhaps, misusing iperf? Any advice would be appreciated.
 
I get more than 200Mbits/sec with my AX210 so definitely something's wrong on your side. Check at least:

Code:
[08:16][fmc000@tu45b-freebsd ~] $ sysctl -a|egrep '11n|11ac'
compat.linuxkpi.iwlwifi_disable_11ac: 0
compat.linuxkpi.iwlwifi_11n_disable: 0
[08:17][fmc000@tu45b-freebsd ~] $
 
I'll take a look tonight, thanks.

Notably this hardware is plenty fast on Linux 6.5.0 ...

Code:
[  1] local 192.168.1.17 port 38078 connected with 192.168.1.11 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0798 sec   480 MBytes   400 Mbits/sec
 
Thanks for the tip! Those sysctls were both 1; setting them to 0 doubled the speed but it's still < 10 times slower than others are reporting.

Code:
$ iperf -c eirene.home 2>&1 | tee iperf-after.log
------------------------------------------------------------
Client connecting to eirene.home, TCP port 5001
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.1.17 port 59593 connected with 192.168.1.11 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-10.09 sec  30.9 MBytes  25.7 Mbits/sec

$ sysctl -a|egrep '11n|11ac'
compat.linuxkpi.iwlwifi_disable_11ac: 0
compat.linuxkpi.iwlwifi_11n_disable: 0

Edited to add: I'm seeing similar numbers from my Framework laptop, also with an AX210 WiFi module, and also with those sysctls now zero:

Code:
$ iperf -c eirene.home
------------------------------------------------------------
Client connecting to eirene.home, TCP port 5001
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.1.185 port 64401 connected with 192.168.1.11 port 5001
[ ID] Interval       Transfer     Bandwidth
[  1] 0.00-10.10 sec  40.9 MBytes  33.9 Mbits/sec

$ sysctl -a|egrep '11n|11ac'
compat.linuxkpi.iwlwifi_disable_11ac: 0
compat.linuxkpi.iwlwifi_11n_disable: 0
 
Okay this keeps getting weirder. On both Framework laptop, and desktop, I tried:

* Uninstalling the Intel WiFi packages.
* Upgrading all packages.
* Installing all required firmware packages with fwget (thanks to @ozjonty).

Numbers are now what I'd expect on the Framework:

Code:
[  1] 0.00-10.08 sec   158 MBytes   131 Mbits/sec

... but the desktop is still very slow:

Code:
[  1] 0.00-10.05 sec  25.4 MBytes  21.2 Mbits/sec

Here's the relevant ifconfig from the desktop:

Code:
$ ifconfig wlan0
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=0
    ether 30:05:05:47:a3:bf
    inet 192.168.1.17 netmask 0xffffff00 broadcast 192.168.1.255
    inet6 fe80::3205:5ff:fe47:a3bf%wlan0 prefixlen 64 scopeid 0x2
    groups: wlan
    ssid the-place-between-24_2EX channel 44 (5220 MHz 11a) bssid b0:19:21:47:cc:93
    regdomain APAC2 country AU authmode WPA2/802.11i privacy ON
    deftxkey UNDEF AES-CCM 2:128-bit txpower 17 bmiss 7 mcastrate 6
    mgmtrate 6 scanvalid 60 wme roaming MANUAL
    parent interface: iwlwifi0
    media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11a
    status: associated
    nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>

This would certainly explain it; the desktop is connected at max 36Mb/s:

Code:
media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11a

... whereas the Framework isn't:

Code:
media: IEEE 802.11 Wireless Ethernet MCS mode 11ng
 
They are both wrong actually, even the Framework is not connected at 11ac like it should. I would shutdown both machines, power cycle the router and see if that helps.
 
I've powered down everything - laptop and desktop, FTTP box, switch, router, WiFi mesh - and powered back up. The problem still persists, with both systems reporting:

Code:
ssid the-place-between-24_2EX channel 6 (2437 MHz 11g ht/40+) bssid a8:42:a1:18:2a:62

My Android phone is connected to the same mesh on ac.
 
Just reporting exactly the same symptoms on my ThinkPad P1 Gen 4 and its factory wireless interface.
edit: even with setting parameters via sysctl as described above.
 
Worth looking at the freebsd-wireless mail list - there is an odd thing with APs reporting high speeds on 2.4ghz, and iwlwifi picking that. Only to render disappointment for the user. Whilst testing before 14.3 release, I had to create a 5ghz only network on my TP-Link Deco network to get my Framework to sync 5ghz and give me decent speeds :(
 
I had a similar experience but with the UniFi Mesh. On 2G my speeds were the same, but once I switched to 5G, I’m now getting 70+mbps.

And this is with an 8000 series older card.
 
Oooh interesting - thanks mopbsd. I am in fact on a TP-Link Deco network! (Albeit just for Wi-Fi - the router is a Linksys with OpenWRT).
You may also find it reports a weird country — DE or CN, despite wherever you are in the world.

Try a 5ghz only guest network, and see how 14.3 iwlwifi behaves with that?
 
Okay this is very strange. The system is still reporting a 2.4GHz / 11g connection:

Code:
ssid the-place-between-24_2EX channel 6 (2437 MHz 11g ht/40+) bssid b0:19:21:47:cc:92

... but I'm now getting much more reasonable throughput, 140Mb/s.
 
Okay there's _definitely_ something weird going on here. If I force the client to connect on 5GHz, I get:

Code:
ssid the-place-between-24_2EX channel 44 (5220 MHz 11a) bssid b0:19:21:47:cc:37

... but much worse performance!

Code:
[  1] 0.00-10.06 sec  20.9 MBytes  17.4 Mbits/sec

I think this is because it's falling back to 802.11a, not 802.11ac.
 
Looks like I'm connecting at a very low rate for some reason. But only on FreeBSD.

Code:
$ ifconfig wlan0 list sta
ADDR               AID CHAN RATE RSSI IDLE  TXSEQ  RXSEQ CAPS FLAG        
b0:19:21:47:cc:37    2   44  36M 27.5    0   4081  62624 EP   AQHVTRS+trU  HTCAP VHTCAP VHTOPMODE VHTPWRENV WME ATH RSN WPS (rssi 27.5:25.0:0.0:0.0 nf -96:-96:0:0)
 
Perhaps there's a clue here: if I set 802.11a manually it succeeds:

Code:
$ sudo ifconfig wlan0 mode 11a

... but it refuses when I try 802.11ac:

Code:
$ sudo ifconfig wlan0 mode 11ac
ifconfig: SIOCSIFMEDIA (media): Device not configured

Both of these systems were upgraded in-place from FreeBSD 14.2. I wonder if I've missed something.
 
What happens when you try to set the mode to 11n ? IIRC, N-speeds were the target that the FreeBSD Foundation announced in its blogs awhile back.
 
I've kept an eye on this thread as had the same problem. I've replaced in my ThinkPad realtek 8852ae for intel ax210, because rtw89 coudn't handle wake up properly - it either hangs or was no-connection state tilll the reboot. After upgrade to 14.3 iwlwifi speed surely increases but no more than mode 11a and ( iperf3 in localnet) maximum was about 50Mbit/s. Linux distr & android phone could connect at greater speed to the same local router and it itched me a little, so I've tried to boost it and today succeed at last to connect in mode 11ac (cold reboot and connect again w/ the same results). The solution was quite simple: to comment out country parameter at /etc/rc.conf
create_args_wlan0="country RU regdomain NONE"
after removing it I have:
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=0
ether xx:xx:xx:xx:xx:xx
inet 192.168.1.5 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::yyyy::yyyy%wlan0 prefixlen 64 scopeid 0x3
inet6 2a00:zzzz::zzzz prefixlen 64 autoconf pltime 600 vltime 600
groups: wlan
ssid "HET BONHE!" channel 44 (5220 MHz 11a vht/80+) bssid aa:aa:aa:aa:aa
regdomain FCC country US authmode WPA2/802.11i privacy ON
deftxkey UNDEF AES-CCM 2:128-bit txpower 17 bmiss 7 mcastrate 6
mgmtrate 6 scanvalid 60 -ampdutx ampdurx ampdulimit 64k ampdudensity 4
-amsdutx amsdurx shortgi -ldpctx ldpcrx -uapsd vht vht40 vht80 vht160
-vht80p80 wme roaming MANUAL
parent interface: iwlwifi0
media: IEEE 802.11 Wireless Ethernet autoselect mode 11ac
status: associated
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
and 350-450 Mbit/s at both iperf3-in-localnet and speedtest.net
 
I ordered an Intel AX210 card; I didn't do too much research but would that card work fine for fast speeds?

Edit: Works great! Went from 2MB/s on 9560 AC to 90MB/s on speed test max-WAN AX210 on 14.3-R-p2. fwget got the firmware, it sets-up similar to the 9560, no problems so far :D
 
Last edited:
Back
Top