That patch only addresses specific race conditions. Most users won’t notice any obvious improvement. I didn’t see any difference.
I didn't notice a significant difference so far
"During ongoing traffic, a request to stop an AMPDU session for one TID could incorrectly affect other active sessions. This can happen because an incorrect TID reference would be passed when updating the BA session state, causing the wrong session to be stopped. As a result, the affected session would be reduced to a minimal BA size, leading to a noticeable throughput degradation.
From the description of the patch I would assume that it matters or happens most likely with mulitple sessions on the same access point. It probably won’t affect a single session. So it is very likely that there is no difference in performance when running a simple test setup with 2 or 3 stations connected.
Rebased the repo over the latest commit of OpenWRT.
Refreshed the patch for hostapd and imported fix for ath11k of 7.0-rc7
Bulding: ETA 2 hour.
I have 15 connected clients.
Hi boys,
This version include NSS offload for WiFi and full support for kmods and target specific
I am redo the repos over the latest commit from OpenWRT.
Changelog (include upstream of OpenWRT):
- Updated the kernel and NSS software to version 6.12.80.
- Added a fix for ath11k from 7.0-rc7, link: https://github.com/AgustinLorenzo/openwrt/commit/8bba4d52a57a5b4eaf4fd4d0e7111a14df4e6d2e
- Updated hostapd from 2026-02-27 to 2026-04-02
- Added the latest changes developed by @qosmio for NSS.
- Package updates from upstream.
Notes:
- Compilation is performed with the following settings:
- Memory limit for ath11k: 512M
- Memory profile for NSS: NSS_MEM_PROFILE_HIGH
- Pbuf: AUTO
- PREEMPT: DISABLED
- The build is compiled with GCC 14.3.
- Firmware for ath11k: WLAN.HK.2.9.0.1-02146-QCAHKSWPL_SILICONZ-1
- The default TCP congestion protocol is CUBIC.
- By default, the radio0 (IoT) is off (you can enable in LUCI) and the radio 1 (2.4 GHz) y 2 (5 GHz) is on.
- The default country code for the WiFi is USA to avoid problems with 160 MHZ because it does not work if it does not have a specified country code.
- I have posted on my Github all the workarounds used in this build: https://github.com/AgustinLorenzo/openwrt/issues/5 (english) and https://github.com/AgustinLorenzo/openwrt/issues/6 (spanish)
- Guide to upgrade to latest kernel without losing your configuration: https://github.com/AgustinLorenzo/openwrt/issues/9 (english) and https://github.com/AgustinLorenzo/openwrt/issues/8 (spanish)
Sources:
- Unified build: https://github.com/AgustinLorenzo/openwrt/tree/main_nss
- NSS packages: https://github.com/AgustinLorenzo/nss-packages/commits/main_nss_wifi/
- OpenWRT Data: https://github.com/AgustinLorenzo/openwrtdata
BUILDED (UNIFIED): https://github.com/AgustinLorenzo/openwrt/releases/tag/ipq807x-nsswifi-unified-2026-04-07-0059
REPOSITORY: https://openwrtdata.agustinls.com
NOTICE: I am currently only compiling for the following devices: ASUS RT-AX89X, Arcadyan AW1000, Buffalo WXR-5950AX12, Dynalink DL-WRX36, Linksys HomeWRK, Linksys MX4200 (v1 and v2), Linksys MX4300, Linksys MX5300, Linksys MX8500, Netgear RAX120v2, Netgear SXR80, Netgear SXS80, Netgear WAX218, QNAP 301W, Spectrum SAX1V1K, Xiaomi AX3600, Xiaomi AX6, Xiaomi AX9000, and Zyxel NBG7815 devices., if someone has used my versions with other devices (and it is supported), let me know and I will add it.
Hi there - I’m getting an error trying to install packages with this build.
apk update gives:
root@ap_gang_wax218_DFF:~# apk update
ERROR: wget: exited with error 4
WARNING: updating and opening https://openwrtdata.agustinls.com/nss-wifi-unified/20260406/packages/packages.adb: unexpected end of file
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/base/packages.adb: unexpected end of file
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/luci/packages.adb: unexpected end of file
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/packages/packages.adb: unexpected end of file
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/routing/packages.adb: unexpected end of file
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/telephony/packages.adb: unexpected end of file
ERROR: wget: exited with error 4
WARNING: updating and opening https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/video/packages.adb: unexpected end of file
7 unavailable, 0 stale; 292 distinct packages available
root@ap_gang_wax218_DFF:~#
@AgustinLorenzo hi , can you do sysupgrade file for Dynalink please, i cant find on GitHub (there is only .itb file )
I'm testing with those patches for almost two days.
I have usually around 8-10 clients (phones, tablets, laptop) connected (only one on 2.4GHz) on my own compiled rebased build with ath11k fw version WLAN.HK.2.12-01460-QCAHKSWPL_SILICONZ-1.
I can hardly find any difference - I can get 1 Gbps wi-fi speed on my wi-fi 6 clients as I was able previously.
@AgustinLorenzo
Iperf3 - from a PC to a smartphone.
Hi @Krystiano,
Maybe you're having trouble seeing it; I've attached the links for the Dynalink DL-WRX36.
Regards, Agustin
Thank you. On GitHub I can’t see this files. Only one like I mentioned (07.04.26)
For some reason my AP’s connect with an IP in one of the VLAN’s I use for the different SSID’s. So instead of 192.168.0.253 it now uses 192.168.2.253. I’ve updated my firewall rule to allow it for now. Any hints why this might be happening?
@AgustinLorenzo got some interesting stats about Wi-Fi:
pdev_stats
root@OpenWRT:~# cat /sys/kernel/debug/ath11k/ahb-c000000.wifi/mac0/fw_stats/pdev_stats
ath11k PDEV stats
=================
Channel noise floor -96
Channel TX power 46
TX frame count 311273181
RX frame count 67440339
RX clear count 400470564
Cycle count 544516214
PHY error count 120
ath11k PDEV TX stats
====================
HTT cookies queued 35646
HTT cookies disp. 77407
MSDU queued 2814419
MPDU queued 490668
MSDUs dropped 0
Local enqued 196562
Local freed 196562
HW queued 1138692
PPDUs reaped 1138691
Num underruns 0
Num HW Paused 0
PPDUs cleaned 74081
MPDUs requeued 75370
PPDU OK 479378
Excessive retries 1715931
HW rate 649599
Sched self triggers 305925
Dropped due to SW retries 4
Illegal rate phy errors 10931579
PDEV continuous xretry 1656
TX timeout 0
PDEV resets 7
Stateless TIDs alloc failures 0
PHY underrun 0
MPDU is more than txop limit 0
Num sequences posted 0
Num seq failed queueing 0
Num sequences completed 847780
Num sequences restarted 12489
Num of MU sequences posted 835294
Num of MPDUS SW flushed 108179
Num of MPDUS HW filtered 0
Num of MPDUS truncated 0
Num of MPDUS ACK failed 0
Num of MPDUS expired 0
ath11k PDEV RX stats
====================
Mid PPDU route change 38193
Tot. number of statuses 38193
Extra frags on rings 0 38193
Extra frags on rings 1 38193
Extra frags on rings 2 38193
Extra frags on rings 3 38193
MSDUs delivered to HTT 260374
MPDUs delivered to HTT 219080
MSDUs delivered to stack 14936
MPDUs delivered to stack 14936
Oversized AMSUs 38193
PHY errors 38193
PHY errors drops 38193
MPDU errors (FCS, MIC, ENC) 38193
Overflow errors 38193
soc_dp_stats
root@OpenWRT:~# cat /sys/kernel/debug/ath11k/ahb-c000000.wifi/soc_dp_stats
SOC RX STATS:
err ring pkts: 25138
Invalid RBM: 0
RXDMA errors:
Overflow: 0
MPDU len: 81
FCS: 25045
Decrypt: 2
TKIP MIC: 0
Unencrypt: 3
MSDU len: 0
MSDU limit: 0
WiFi parse: 0
AMSDU parse: 0
SA timeout: 0
DA timeout: 0
Flow timeout: 0
Flush req: 0
REO errors:
Desc addr zero: 2
Desc inval: 0
AMPDU in non BA: 0
Non BA dup: 2954
BA dup: 1
Frame 2k jump: 14
BAR 2k jump: 0
Frame OOR: 2346
BAR OOR: 0
No BA session: 0
Frame SN equal SSN: 0
PN check fail: 0
2k err: 0
PN err: 0
Desc blocked: 0
HAL REO errors:
ring0: 0
ring1: 0
ring2: 0
ring3: 0
SOC TX STATS:
TCL Ring Full Failures:
ring0: 0
ring1: 0
ring2: 0
TCL Ring idr Failures:
ring0: 0
ring1: 0
ring2: 0
Max Transmit Failures: 0
Misc Transmit Failures: 0
NSS Transmit Failures: 0
HAL_REO_CMD_DRAIN Counter: 0
REO_CMD_CACHE_FLUSH Failure: 0
REO_CMD_UPDATE_RX_QUEUE Failure: 0
Backpressure Stats
==================
No Ring Backpressure stats received
I can't assume what could generate so many Illegal rate phy errors and err ring pkts, but looks like it's clue.
This is already in kernel 6.12.81 https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.81 and 6.18.22 https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.22
