qosmio
February 27, 2024, 8:18pm
1595
I originally had the MESH offload feature (partially) decoupled from the baseline WIFI offload, but it was getting to be maintenance nightmare with all the patch dependancies.
A lot of the "fixes", mostly NSS peer handling, were distributed in patches for WDS, VLAN, and MESH offload that I figured to just include all NSS related features, and do my best with using macros to enable certain code blocks.
But the biggest issue comes with NSS firmware 12.1. The mesh interface just doesn't seem to come up. Same issue with firmware 11.5. The only success I've had is with NSS firmware version 11.4
@dckiller51 , if you'd like to use mesh, you currently have 2 options.
1.) Disable NSS offload altogether.
echo 'ath11k nss_offload=0 frame_mode=2' > /etc/modules.d/ath11k
echo 'mac80211 nss_redirect=0' > /etc/modules.d/mac80211
2.) Switch to using NSS firmware 11.4
I just pushed a change to nss-packages repo that introduces a menuconfig option to select a specific version.
Here:
committed 06:36PM - 27 Feb 24 UTC
There is an issue with NSS firmware version 12.0/12.1 where NSS WIFI
mesh featur… e fails to bring up meshmgr.
Example of error:
Tue Feb 27 13:52:04 2024 kern.debug kernel: [10738.593826] nss_wifi_meshmgr_if_create_sync[1827]:ffffff8022a40000: Encap allocation failed.
Tue Feb 27 13:52:04 2024 kern.warn kernel: [10738.593858] ath11k c000000.wifi: failed to create meshmgr
Tue Feb 27 13:52:04 2024 kern.warn kernel: [10738.593880] ath11k c000000.wifi: failed to alloc and register mesh vap -22
Tue Feb 27 13:52:04 2024 kern.debug kernel: [10738.598335] nss_wifi_meshmgr_find_and_ref_inc[167]:ffffffc000be0500: Invalid mesh handle: -1
Tue Feb 27 13:52:04 2024 kern.debug kernel: [10738.598349] nss_wifi_meshmgr_if_destroy_sync[1728]:ffffffc000be0500: Mesh context is null
Tue Feb 27 13:52:04 2024 kern.warn kernel: [10738.598357] ath11k c000000.wifi: failed to free nss mesh object vdev nss_err:7
Tue Feb 27 13:52:04 2024 kern.warn kernel: [10738.605208] ath11k c000000.wifi: failed to create nss vdev -22
Tue Feb 27 13:52:04 2024 kern.debug kernel: [10738.616401] nss_wifi_meshmgr_if_create_sync[1827]:ffffff8022a40000: Encap allocation failed.
Tue Feb 27 13:52:04 2024 kern.warn kernel: [10738.616436] ath11k c000000.wifi: failed to create meshmgr
Tue Feb 27 13:52:04 2024 kern.warn kernel: [10738.618091] ath11k c000000.wifi: failed to alloc and register mesh vap -22
Tue Feb 27 13:52:04 2024 kern.debug kernel: [10738.623697] nss_wifi_meshmgr_find_and_ref_inc[167]:ffffffc000be0500: Invalid mesh handle: -1
Tue Feb 27 13:52:04 2024 kern.debug kernel: [10738.623715] nss_wifi_meshmgr_if_destroy_sync[1728]:ffffffc000be0500: Mesh context is null
Tue Feb 27 13:52:04 2024 kern.warn kernel: [10738.623723] ath11k c000000.wifi: failed to free nss mesh object vdev nss_err:7
Tue Feb 27 13:52:04 2024 kern.warn kernel: [10738.630541] ath11k c000000.wifi: failed to create nss vdev -22
The only version currently working is version 11.4. It is not
confirmed if this feature was removed in firmware > 11.4, or if the
issue if with the NSS driver package, or client package wifimgr. Looking
at the code changes between NHSS.QSDK.11.4 and 12.0.5 little was changed in
nss-drv/nss-clients related to the way mesh interfaces are brought up
(dynamic interfaces), much of the changes are related to stats.
To work around the issue, allow user selectable option to choose a
specific NSS firmware. The dependency is currently not enforced when
selecting NSS mesh offloading in ath11k. Users will need to switch
manually or disable the option altogether.
Or you can manually extract NSS firmware version 11.4 to /lib/firmware/
.
Be sure to rename the corresponding retail_routerX.bin
to qca-nssX-retail.bin
Everything should work, but be warned that NSS stats will be wildly off in /sys/kernel/debug/qca-nss-drv/stats/wifi_mesh/
.
2 Likes