Qualcommax NSS Build

What is the latest firmware that support WDS ?
I'm on kernel 6.6.50 and WDS is broken...

Aquantia 10G ports fix was merged by @robimarko.
I just tested it along with the latest NSS-wifi commits from the last hour.

1 Like

Thanks for the heads up.
I had already seen the post in the QHora-301w thread.
I have already updated my nbg7815 and I am testing it. It is working fine.

2 Likes

Stick with NSS FW 11.4

ONLY the following combination has full offload support for WDS and MESH

Firmware(s) Version(s) WDS MESH Offload
ath11k + NSS 2.9 + 11.4 YES YES YES
ath11k + NSS 2.12 + 11.4 YES YES YES

Other combinations that break full offloading

Firmware(s) Version(s) WDS MESH Offload
ath11k 2.9 YES YES NO
ath11k 2.12 YES YES NO
ath11k + NSS 2.9 + 12.2 NO NO Only hardwired traffic, and WLAN clients
ath11k + NSS 2.9 + 12.5 NO NO Only hardwired traffic, and WLAN clients
ath11k + NSS 2.12 + 12.2 NO NO Only hardwired traffic, and WLAN clients
ath11k + NSS 2.12 + 12.5 NO NO Only hardwired traffic, and WLAN clients
9 Likes

A lot of those patches are outdated, incur performance overhead, aren't applicable to the hardware we're using, aren't necessary for offloading, or can even break things for certain setups.

For example:

-rw-r--r-- 1 root root 3690 Sep 15 23:53 999-999-454-ath11k-reap-CE-entries-if-ring-is-full-and-intrp-idl.patch
@@ -903,6 +903,7 @@ static const struct ath11k_hw_params ath  
 		.m3_offset = ATH11K_QMI_IPQ9574_M3_OFFSET,  
 		.caldb_offset = ATH11K_QMI_IPQ9574_CALDB_OFFSET,  
 		.bdf_offset = ATH11K_QMI_IPQ9574_BDF_OFFSET,  
+		.support_ce_manual_poll=true,  
 	},  
};  

This function only applies to IPQ9574 hardware, which isn't relevant for us.

Similarly, the patch:

360-ath11k-add-length-validation-before-skb_put-call.patch  

is aimed at handling issues with TKIP (WPA), which has been deprecated since 2012 due to security vulnerabilities. We're focused on WPA2/3, which use CCMP/AES/GCMP encryption, so this isn't relevant for our use case.

I’ve thoroughly reviewed these patches (500+ between subsys and ath11k). If a patch doesn't directly contribute to NSS offloading, bug fixes, introduce a meaningful feature, or optimize performance, I exclude it. Fewer patches mean easier maintenance and quicker debugging when issues arise.

Currently, I'm in the process of reverting many patches due to the "half-baked" nature and limited relevance of the code. However, some patches can’t be dropped without breaking subsequent ones, so I have to introduce "Revert" patches instead:

package/kernel/mac80211/patches/nss/ath11k/999-902-Revert-233-ath11k-Disable-rx_header-tlv-for-2K-SKB.patch  
package/kernel/mac80211/patches/nss/ath11k/999-903-Revert-207-ath11k-Enable-256_512MB-profiles.patch  
5 Likes

I found exactly what I had experience with the build. Are you able to somehow fix it?

The fix should be merged with my PR to the main NSS branch, you'll need to be creative with quectel-cm to work

@qosmio
from your repos. nss crypto functionality has been fixed.
how do we enable it?
what do we have to add to config file?

TIA

Hi qosmio:

according to this table, "ath11k + NSS 2.12 + 12.5" = "Only hardwired traffic"

but in my running machine which using such combination,
cat /sys/module/ath11k/parameters/nss_offload shows "1".

so, "Only hardwired traffic" means offload is available for:

"any traffic that run between LAN(which include WLAN) and WAN(which is not WDS nor MESH)"
OR
"only traffic that run between lan1~4 and WAN(which is not WDS nor MESH)"

Thanks in advance for clarification :slight_smile:

Hi!

I have an issue with nss build in my mx4200v2 , I'm using agustinlorenzo last build, i'm trying to install lucy sqm but it seems impossible (error 255)

how can I install it?

  CC [M]  /home/lin/ax6-6.x/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/mac80211-regular/backports-6.9.9/drivers/net/wireless/ath/ath11k/debugfs_sta.o
  CC [M]  /home/lin/ax6-6.x/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/mac80211-regular/backports-6.9.9/net/mac80211/spectmgmt.o
configure.ac:39: installing 'build-aux/compile'
configure.ac:29: installing 'build-aux/missing'
aminclude_static.am:52: warning: if $(CODE_COVERAGE_BRANCH_COVERAGE: non-POSIX variable name
aminclude_static.am:52: (probably a GNU make extension)
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:59: warning: if $(CODE_COVERAGE_BRANCH_COVERAGE: non-POSIX variable name
aminclude_static.am:59: (probably a GNU make extension)
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:63: warning: ':='-style assignments are not portable
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:64: warning: code_coverage_v_lcov_cap_$(V: non-POSIX recursive variable expansion
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:65: warning: code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY: non-POSIX recursive variable expansion
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:67: warning: code_coverage_v_lcov_ign_$(V: non-POSIX recursive variable expansion
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:68: warning: code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY: non-POSIX recursive variable expansion
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:70: warning: code_coverage_v_genhtml_$(V: non-POSIX recursive variable expansion
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:71: warning: code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY: non-POSIX recursive variable expansion
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:73: warning: code_coverage_quiet_$(V: non-POSIX recursive variable expansion
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:74: warning: code_coverage_quiet_$(AM_DEFAULT_VERBOSITY: non-POSIX recursive variable expansion
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:78: warning: subst -,_,$(subst .,_,$(1: non-POSIX variable name
aminclude_static.am:78: (probably a GNU make extension)
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:87: warning: addprefix --directory ,$(CODE_COVERAGE_DIRECTORY: non-POSIX variable name
aminclude_static.am:87: (probably a GNU make extension)
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:87: warning: call code_coverage_sanitize,$(PACKAGE_NAME: non-POSIX variable name
aminclude_static.am:87: (probably a GNU make extension)
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:88: warning: addprefix --directory ,$(CODE_COVERAGE_DIRECTORY: non-POSIX variable name
aminclude_static.am:88: (probably a GNU make extension)
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:90: warning: addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY: non-POSIX variable name
aminclude_static.am:90: (probably a GNU make extension)
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:100: warning: ':='-style assignments are not portable
Makefile.am:167:   'aminclude_static.am' included from here
aminclude_static.am:100: warning: AM_DISTCHECK_CONFIGURE_FLAGS was already defined in condition TRUE, which includes condition CODE_COVERAGE_ENABLED ...
Makefile.am:167:   'aminclude_static.am' included from here
Makefile.am:21: ... 'AM_DISTCHECK_CONFIGURE_FLAGS' previously defined here
doc/Makefile.am: installing 'build-aux/depcomp'
  CC [M]  /home/lin/ax6-6.x/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq807x/mac80211-regular/backports-6.9.9/drivers/net/wireless/ath/ath11k/debugfs_htt_stats.o

This has nothing to do with mac80211/backports-6.9.9...

You are running make in parallel (-jN) so the output is not in order. Some other package you're building is causing that warning. You can clearly see that configure.ac, aminclude_static.am, and Makefile.am don't even exist in backports-6.9.9.

Pretty much this. Offload between nodes in either WDS or Mesh setup will NOT have offload available. Mesh will not even come up in those cases.

1 Like

@qosmio sent you a PR for Quectel multiplexing for WWAN builds, let me know if you had a look at it

Thanks! Merged in latest changes to NSS-12.5-K6.x

@everyone
There is a new mac80211/backports release that bumps 6.9.9 to 6.11.

commit 384d079fd87620234abc5061be65050c3d54a4fe
Author:     Felix Fietkau <nbd@nbd.name>
AuthorDate: Tue Sep 24 15:06:20 2024 +0200
Commit:     Felix Fietkau <nbd@nbd.name>
CommitDate: Thu Sep 26 10:55:11 2024 +0200

    mac80211: update to version 6.11

    Signed-off-by: Felix Fietkau <nbd@nbd.name>

DO NOT UPDATE NSS BRANCH FROM UPSTREAM

I've managed to update NSS patches for 6.11 and everything compiles and boots OK. The issue I'm seeing is netifd/hostapd fails to bring up the AP.

If anyone here is able to build and test non-NSS builds, please report back if you're able to bring up wifi on 6.11.

5 Likes

Fresh non-NSS build on DL-WRX36 seems ok.

kern.notice kernel: [    0.000000] Linux version 6.6.52 (temp@temp) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 14.2.0 r27593+3-7ea086bb89) 14.2.0, GNU ld (GNU Binutils) 2.42) #0 SMP Thu Sep 26 21:52:25 2024

Notice:

This is running from initramfs image with the default config.

I created two new AP (2.4G/5G) and connected to them.

The 3 patches that I applied on top of master (7ea086bb89) are:

Add-dual-boot-ability-to-Dynalink-DL-WRX36.patch
ath11k-firmware-Bump-version-2.9.0.1-01977-to-2.12-0.patch
ath11k_nss-Fix-RX-thermal-throttling-on-newer-2.12-f.patch

Thanks for your hard work, it is very much appreciated and enjoyed!

1 Like

Here on NBG7815 it is working fine with v6.11 of mac80211 (latest snapshot of today). Running for like 2 hours a bit surfing over wifi.

2 Likes

hello, I am trying to build immortalwrt with qosmio NSS package and I am getting this error

may I know how can I find the root cause of the error

Do you just add nss-packages?
You must marge qosmio’s repo commit.

make package/feeds/nss_packages/qca-nss-drv/compile V=s