Qualcommax NSS Build

I rebuilt the package and reinstalled the mac80211 package from LuCI, but DHCP is still not obtained on wwan, nor are relay packets passing through. I'm unsure if this procedure is correct.

$ rm package/kernel/mac80211/patches/nss/ath11k/999-902-ath11k-fix-WDS-by-disabling-nwds.patch
$ rm package/kernel/mac80211/patches/nss/subsys/{999-775-wifi-mac80211-Changes-for-WDS-MLD.patch,999-922-mac80211-fix-null-chanctx-warning-for-NSS-dynamic-VLAN.patch}
$ make package/{mac80211,ipq-wifi}/{clean,compile} package/install target/compile V=s -j4
# Uploaded and installed via LuCI:
bin/targets/qualcommax/ipq807x/packages/kmod-mac80211-6.6.80.6.12.6-r1.apk

I'm not using WDS mode, just STA mode. This configuration worked on the Agustin's 07/21/24 build.

root@OpenWrt:~# cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'platform/soc@0/c000000.wifi'
        option band '5g'
        option channel '100'
        option htmode 'VHT160'
        option txpower '14'
        option country 'US'
        option cell_density '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'platform/soc@0/c000000.wifi+1'
        option band '2g'
        option channel '1'
        option htmode 'HE20'
        option disabled '1'

config wifi-iface 'wifinet2'
        option device 'radio0'
        option mode 'sta'
        option network 'wwan'
        option ssid '-'
        option encryption 'sae'
        option key 'mypasswordhere'
        option ocv '0'

root@OpenWrt:~# 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 'fde0:27aa:c88e::/48'
        option packet_steering '0'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan3'
        list ports 'lan4'

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

config interface 'wan'
        option proto 'dhcp'
        option type 'bridge'

config interface 'wan6'
        option proto 'dhcpv6'
        option reqaddress 'try'
        option reqprefix 'auto'
        option norelease '1'

config interface 'wwan'
        option proto 'dhcp'
        option device 'phy0-sta0'

Logs

Sat Mar 15 04:59:09 2025 daemon.info watchcat[4292]: Could not reach 8.8.8.8 for 18000. Rebooting after reaching 21600
Sat Mar 15 04:59:40 2025 daemon.notice netifd: radio0 (8153): sh: out of range
Sat Mar 15 04:59:40 2025 daemon.notice wpa_supplicant[2065]: Set new config for phy phy0
Sat Mar 15 04:59:40 2025 daemon.notice hostapd: Set new config for phy phy0:
Sat Mar 15 04:59:40 2025 daemon.notice wpa_supplicant[2065]: Set new config for phy phy0
Sat Mar 15 04:59:40 2025 daemon.notice netifd: Wireless device 'radio0' is now up
Sat Mar 15 04:59:40 2025 daemon.notice netifd: wwan (5106): udhcpc: received SIGTERM
Sat Mar 15 04:59:40 2025 daemon.notice netifd: wwan (5106): udhcpc: entering released state
Sat Mar 15 04:59:40 2025 daemon.notice netifd: wwan (5106): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "wwan" } (Permission denied)
Sat Mar 15 04:59:40 2025 daemon.notice netifd: Interface 'wwan' is now down
Sat Mar 15 04:59:40 2025 daemon.notice netifd: Interface 'wwan' is setting up now
Sat Mar 15 04:59:40 2025 daemon.notice netifd: wwan (8251): udhcpc: started, v1.37.0
Sat Mar 15 04:59:40 2025 daemon.notice netifd: wwan (8251): udhcpc: broadcasting discover
Sat Mar 15 04:59:41 2025 daemon.warn odhcpd[2509]: No default route present, overriding ra_lifetime to 0!
Sat Mar 15 04:59:42 2025 daemon.info dnsmasq[1]: read /etc/hosts - 12 names
Sat Mar 15 04:59:42 2025 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 4 names
Sat Mar 15 04:59:42 2025 daemon.info dnsmasq[1]: read /tmp/hosts/odhcpd - 4 names
Sat Mar 15 04:59:42 2025 daemon.info dnsmasq-dhcp[1]: read /etc/ethers - 0 addresses
Sat Mar 15 04:59:43 2025 daemon.warn odhcpd[2509]: No default route present, overriding ra_lifetime to 0!
Sat Mar 15 04:59:43 2025 daemon.notice netifd: wwan (8251): udhcpc: broadcasting discover
Sat Mar 15 04:59:46 2025 daemon.notice netifd: wwan (8251): udhcpc: broadcasting discover

Any suggestions?

EDIT:
I rebuilt the entire firmware and reinstalled the sysupgrade image, and now I confirm that DHCP works on the wwan interface and relayd works fine also!
I'll continue testing and verifying if everything is functioning as expected.

1 Like

Hi @olci.

I have the same device and don't have any issues with skb in my build, what values do you have for the following parameters?

CONFIG_ATH11K_MEM_PROFILE_512M=y
CONFIG_NSS_MEM_PROFILE_HIGH=y
CONFIG_IPQ_MEM_PROFILE_512=y
CONFIG_KERNEL_IPQ_MEM_PROFILE=512
CONFIG_KERNEL_SKB_RECYCLER=y
CONFIG_SKB_RECYCLE_SIZE_2304=y
CONFIG_KERNEL_SKB_RECYCLE_SIZE=2304
CONFIG_KERNEL_SKB_RECYCLER_MULTI_CPU=y
CONFIG_KERNEL_PREEMPT=y
CONFIG_KERNEL_PREEMPT_RCU=y

Regards, Agustin

Hi boys,

This version include NSS offload for WiFi

I am redo the repos over the latest commit from OpenWRT.

Changelog (include upstream of OpenWRT):

  • Updated kernel and NSS software to version 6.6.83.
  • Fixed bug when updating packages from LUCI (apk-tools).
  • Changed “ip-tiny” package to “ip-full”, to match “tc-full” package.
  • Added the latest changes developed by qosmio for NSS.
  • WARNING: (IN CASE YOU USE THEM). The following services are disabled on first startup: mwan3, sqm, mesh11sd (MESH build) and you have to re-enable them from: Luci -> System -> Startup

Notes:

Sources:

BUILDED (NORMAL): https://github.com/AgustinLorenzo/openwrt/releases/tag/ipq807x-nsswifi-2025-03-16-0239

BUILDED (MESH BUILD): https://github.com/AgustinLorenzo/openwrt/releases/tag/ipq807x-nsswifi-mesh-2025-03-17-0216

NOTE: I am now only compiling for AX3600, AX6, AX9000, Buffalo WXR-5950AX12, Dynalink DL-WRX36, QNAP 301W, Netgear RAX120v2, SXR80, SXS80, WAX218, Arcadyan AW1000, Zyxel NBG7815, Linksys MX4200 (v1 and v2), MX4300, MX5300, MX8500 and Spectrum SAX1V1K devices, if someone has used my versions with other devices (and it is supported), let me know and I will add it.

2 Likes

used to be skb was better but within newer kernels it's really bad
but i guess bigger part of issues caused by isp but non-nss builds much more better
non skb build closer performance against non-nss official builds
i tested many scenarios with nss and best one is non-skb build

CONFIG_ATH11K_MEM_PROFILE_512M=y
CONFIG_NSS_MEM_PROFILE_MEDIUM=y
CONFIG_IPQ_MEM_PROFILE_512=y
CONFIG_KERNEL_IPQ_MEM_PROFILE=512
CONFIG_KERNEL_SKB_RECYCLER=y
CONFIG_SKB_RECYCLE_SIZE_1856=y
CONFIG_KERNEL_SKB_RECYCLE_SIZE=1856
CONFIG_KERNEL_SKB_RECYCLER_MULTI_CPU=y
CONFIG_KERNEL_PREEMPT=y
CONFIG_KERNEL_PREEMPT_RCU=y

I just updated to Augstin's 3/16/2025 non-mesh build and it works fine so far without the client isolation issue.

Hi @qosmio ,
STA/Relayd is working well so far. The AP (5950AX12) and STA/Relayd (5950AX12) are both operating in 160MHz/4T4R mode, achieving around 3Gbps, with the CPU almost idling. It looks like NSS is offloading traffic efficiently.

I built the firmware with the qca_nss_tunipip6 module to check the throughput of the v6 tunnel (ds-lite), but it seems that packets are being processed by the CPU instead of being offloaded.

Is it possible for the NSS engine to offload packets from/to the tunnel interface?

modules:

root@OpenWrt:~# lsmod|grep tun
ip_tunnel              24576  3 ip_gre,sit,ipip
ip6_tunnel             32768  1 qca_nss_tunipip6
ip6_udp_tunnel         12288  2 wireguard,l2tp_core
qca_nss_drv          1314816  8 ecm,ath11k,mac80211,qca_nss_tunipip6,qca_nss_tun6rd,qca_nss_wifi_meshmgr,qca_nss_bridge_mgr,qca_nss_vlan
qca_nss_tun6rd         12288  0
qca_nss_tunipip6       32768  0
sit                    24576  1 qca_nss_tun6rd
tunnel4                12288  2 sit,ipip
tunnel6                12288  1 ip6_tunnel
udp_tunnel             16384  2 wireguard,l2tp_core

nss_diag

root@OpenWrt:~# nss_diag
     MODEL: Buffalo WXR-5950AX12
   OPENWRT: r29064-b999e91dcc
IPQ BRANCH: main-nss
IPQ COMMIT: b999e91dcc
  IPQ DATE: 2025-03-02
    NSS FW: NSS.HK.11.4.0.5-6-R
  MAC80211: v6.12.6-0-ge9d65b48ce1a
 ATH11K FW: WLAN.HK.2.9.0.1-02146-QCAHKSWPL_SILICONZ-1
 INTERFACE: br-lan     tx-checksumming: on  rx-gro-list: on
            lan1       tx-checksumming: on  rx-gro-list: off
            lan2       tx-checksumming: on  rx-gro-list: off
            lan3       tx-checksumming: on  rx-gro-list: off
            lan4       tx-checksumming: on  rx-gro-list: off
            phy0-sta0  tx-checksumming: on  rx-gro-list: off
            wan        tx-checksumming: on  rx-gro-list: off

  NSS PKGS: kmod-qca-mcs-6.6.80.12.5.2024.02.27~26d6424-r1 aarch64_cortex-a53 {feeds/nss_packages/qca-mcs} () [installed]
            kmod-qca-nss-dp-6.6.80.2024.11.18~4c9f671a-r1 aarch64_cortex-a53 {feeds/base/kernel/qca-nss-dp} () [installed]
            kmod-qca-nss-drv-6.6.80.11.4.0.5.2021.09.13~53e5863-r15 aarch64_cortex-a53 {feeds/nss_packages/qca-nss-drv} () [installed]
            kmod-qca-nss-drv-bridge-mgr-6.6.80.11.4.0.5.2021.08.17~c4049d1-r7 aarch64_cortex-a53 {feeds/nss_packages/qca-nss-clients} () [installed]
            kmod-qca-nss-drv-igs-6.6.80.11.4.0.5.2021.08.17~c4049d1-r7 aarch64_cortex-a53 {feeds/nss_packages/qca-nss-clients} () [installed]
            kmod-qca-nss-drv-qdisc-6.6.80.11.4.0.5.2021.08.17~c4049d1-r7 aarch64_cortex-a53 {feeds/nss_packages/qca-nss-clients} () [installed]
            kmod-qca-nss-drv-tun6rd-6.6.80.11.4.0.5.2021.08.17~c4049d1-r7 aarch64_cortex-a53 {feeds/nss_packages/qca-nss-clients} () [installed]
            kmod-qca-nss-drv-tunipip6-6.6.80.11.4.0.5.2021.08.17~c4049d1-r7 aarch64_cortex-a53 {feeds/nss_packages/qca-nss-clients} () [installed]
            kmod-qca-nss-drv-vlan-mgr-6.6.80.11.4.0.5.2021.08.17~c4049d1-r7 aarch64_cortex-a53 {feeds/nss_packages/qca-nss-clients} () [installed]
            kmod-qca-nss-drv-wifi-meshmgr-6.6.80.11.4.0.5.2021.08.17~c4049d1-r7 aarch64_cortex-a53 {feeds/nss_packages/qca-nss-clients} () [installed]
            kmod-qca-nss-ecm-6.6.80.12.5.5.2024.09.12~c5d8727-r5 aarch64_cortex-a53 {feeds/nss_packages/qca-nss-ecm} () [installed]
            kmod-qca-ssdk-6.6.80.2024.06.13~c451136b-r3 aarch64_cortex-a53 {feeds/base/kernel/qca-ssdk} () [installed]
            nss-firmware-default-2024.08.04~794fe373-r1 aarch64_cortex-a53 {feeds/nss_packages/firmware/nss-firmware} () [installed]
            nss-firmware-ipq8074-2024.08.04~794fe373-r1 aarch64_cortex-a53 {feeds/nss_packages/firmware/nss-firmware} () [installed]

/etc/config/network

config interface 'dslite_1'
        option proto 'ipip6'
        option peeraddr 'fc00::1:1'
        option ip4ifaddr '192.0.0.2'
        option tunlink 'wan6'
        option encaplimit 'ignore'
        list dns '1.1.1.1'

Hi @AgustinLorenzo is your last build equivalent to OpenWrt 24.10 ? Sorry if this is a stupid question :).

Hi @dr3am_r,

My build is based in the latest code of snapshot.

Regards, Agustin

Dear Mr. Augustin ( or any other OpenWRT NSS mavens ),
Hello and I hope that you are well. My issue is that I have not been able to build any custom firmware based on your repository for some time now. I used to be able to do so up until about a month or so ago. I am still able to compile @qosmio custom builds without any issues. I only add a few additional packages to your standard config.buildinfo file.
The only packages I add are :

dnsmasq-full
luci-theme-darky
luci-theme-opentomato
nano-full
pbr
luci-app-pbr

I have the method below to compile

1 - git clone https://github.com/AgustinLorenzo/openwrt.git -b main_nss
2 - cd openwrt
3 - # add custom themes
sed -i '$ a src-git darky https://github.com/Ninjanoir78/-luci-theme-darky.git' feeds.conf.default && sed -i '$ a src-git opentomato https://github.com/zxlhhyccc/luci-theme-opentomato.git' feeds.conf.default 
4 - ./scripts/feeds update -a -f && ./scripts/feeds install -a -f
5 - cp config.buildinfo .config 
6 - make defconfig && ./scripts/getver.sh
7 - make download -j4 && ./scripts/getver.sh
8 - make -j9 V=s

Below is the config.buildinfo file I used (NSS-WiFi) 2025-03-16-0239

# Target platform
CONFIG_TARGET_qualcommax=y
CONFIG_TARGET_qualcommax_ipq807x=y
CONFIG_TARGET_qualcommax_ipq807x_DEVICE_dynalink_dl-wrx36=y
CONFIG_TARGET_DEVICE_PACKAGES_qualcommax_ipq807x_DEVICE_dynalink_dl-wrx36=""
CONFIG_DEVEL=y
# CONFIG_ATH11K_DEBUGFS_HTT_STATS is not set
# CONFIG_ATH11K_DEBUGFS_STA is not set
# CONFIG_ATH11K_MEM_PROFILE_1G is not set
CONFIG_ATH11K_MEM_PROFILE_512M=y
# CONFIG_ATH11K_THERMAL is not set
# CONFIG_FEED_nss_packages is not set
# CONFIG_FEED_sqm_scripts_nss is not set
# CONFIG_IPQ_MEM_PROFILE_1024 is not set
CONFIG_IPQ_MEM_PROFILE_512=y
CONFIG_KERNEL_IPQ_MEM_PROFILE=512
CONFIG_LIBCURL_COOKIES=y
CONFIG_LIBCURL_FILE=y
CONFIG_LIBCURL_FTP=y
CONFIG_LIBCURL_HTTP=y
CONFIG_LIBCURL_NGHTTP2=y
CONFIG_LIBCURL_NO_SMB="!"
CONFIG_LIBCURL_OPENSSL=y
CONFIG_LIBCURL_PROXY=y
CONFIG_LIBCURL_UNIX_SOCKETS=y
# CONFIG_LUA_ECO_MBEDTLS is not set
CONFIG_LUA_ECO_OPENSSL=y
CONFIG_LUCI_LANG_es=y
CONFIG_NSS_DRV_GRE_ENABLE=y
CONFIG_NSS_DRV_IGS_ENABLE=y
CONFIG_NSS_DRV_LAG_ENABLE=y
CONFIG_NSS_DRV_MAPT_ENABLE=y
CONFIG_NSS_DRV_PPTP_ENABLE=y
CONFIG_NSS_DRV_SHAPER_ENABLE=y
CONFIG_NSS_DRV_TUN6RD_ENABLE=y
# CONFIG_NSS_FIRMWARE_VERSION_11_4 is not set
CONFIG_NSS_FIRMWARE_VERSION_12_2=y
CONFIG_OPENSSL_OPTIMIZE_SPEED=y
CONFIG_PACKAGE_6rd=y
CONFIG_PACKAGE_cgi-io=y
CONFIG_PACKAGE_curl=y
CONFIG_PACKAGE_ddns-scripts=y
CONFIG_PACKAGE_ddns-scripts-services=y
#NSS Dnsmasq-Full
# CONFIG_PACKAGE_dnsmasq is not set
CONFIG_PACKAGE_dnsmasq-full=y
CONFIG_PACKAGE_dnsmasq_full_auth=y
CONFIG_PACKAGE_dnsmasq_full_conntrack=y
CONFIG_PACKAGE_dnsmasq_full_dhcp=y
CONFIG_PACKAGE_dnsmasq_full_dnssec=y
CONFIG_PACKAGE_dnsmasq_full_nftset=y
CONFIG_PACKAGE_dnsmasq_full_noid=y
CONFIG_PACKAGE_dnsmasq_full_tftp=y
# CONFIG_PACKAGE_dnsmasq_full_dhcpv6 is not set
CONFIG_PACKAGE_ds-lite=y
CONFIG_PACKAGE_etherwake=y
CONFIG_PACKAGE_gre=y
CONFIG_PACKAGE_htop=y
CONFIG_PACKAGE_ip-full=y
CONFIG_PACKAGE_ip6tables-nft=y
CONFIG_PACKAGE_ipset=y
CONFIG_PACKAGE_iptables-mod-conntrack-extra=y
CONFIG_PACKAGE_iptables-mod-ipopt=y
CONFIG_PACKAGE_iptables-nft=y
CONFIG_PACKAGE_kmod-bonding=y
CONFIG_PACKAGE_kmod-crypto-kpp=y
CONFIG_PACKAGE_kmod-crypto-lib-chacha20=y
CONFIG_PACKAGE_kmod-crypto-lib-chacha20poly1305=y
CONFIG_PACKAGE_kmod-crypto-lib-curve25519=y
CONFIG_PACKAGE_kmod-crypto-lib-poly1305=y
CONFIG_PACKAGE_kmod-crypto-sha1=y
CONFIG_PACKAGE_kmod-crypto-sha256=y
CONFIG_PACKAGE_kmod-gre6=y
CONFIG_PACKAGE_kmod-ifb=y
CONFIG_PACKAGE_kmod-ip6-tunnel=y
CONFIG_PACKAGE_kmod-ip6tables=y
CONFIG_PACKAGE_kmod-ipt-conntrack=y
CONFIG_PACKAGE_kmod-ipt-conntrack-extra=y
CONFIG_PACKAGE_kmod-ipt-core=y
CONFIG_PACKAGE_kmod-ipt-ipopt=y
CONFIG_PACKAGE_kmod-ipt-ipset=y
CONFIG_PACKAGE_kmod-iptunnel4=y
CONFIG_PACKAGE_kmod-iptunnel6=y
CONFIG_PACKAGE_kmod-nat46=y
CONFIG_PACKAGE_kmod-nf-conncount=y
CONFIG_PACKAGE_kmod-nf-ipt=y
CONFIG_PACKAGE_kmod-nf-ipt6=y
CONFIG_PACKAGE_kmod-nft-bridge=y
CONFIG_PACKAGE_kmod-nft-compat=y
CONFIG_PACKAGE_kmod-qca-mcs=y
CONFIG_PACKAGE_kmod-qca-nss-drv-gre=y
CONFIG_PACKAGE_kmod-qca-nss-drv-igs=y
CONFIG_PACKAGE_kmod-qca-nss-drv-lag-mgr=y
CONFIG_PACKAGE_kmod-qca-nss-drv-map-t=y
CONFIG_PACKAGE_kmod-qca-nss-drv-pppoe=y
CONFIG_PACKAGE_kmod-qca-nss-drv-pptp=y
CONFIG_PACKAGE_kmod-qca-nss-drv-qdisc=y
CONFIG_PACKAGE_kmod-qca-nss-drv-tun6rd=y
CONFIG_PACKAGE_kmod-sched-cake=y
CONFIG_PACKAGE_kmod-sched-core=y
CONFIG_PACKAGE_kmod-sit=y
CONFIG_PACKAGE_kmod-tls=y
CONFIG_PACKAGE_kmod-tun=y
CONFIG_PACKAGE_kmod-wireguard=y
CONFIG_PACKAGE_libbpf=y
CONFIG_PACKAGE_libcap=y
CONFIG_PACKAGE_libcap-ng=y
CONFIG_PACKAGE_libcurl=y
CONFIG_PACKAGE_libelf=y
CONFIG_PACKAGE_libipset=y
CONFIG_PACKAGE_libiptext=y
CONFIG_PACKAGE_libiptext-nft=y
CONFIG_PACKAGE_libiptext6=y
CONFIG_PACKAGE_liblua=y
CONFIG_PACKAGE_liblucihttp=y
CONFIG_PACKAGE_liblucihttp-lua=y
CONFIG_PACKAGE_liblucihttp-ucode=y
CONFIG_PACKAGE_libncurses=y
CONFIG_PACKAGE_libnghttp2=y
CONFIG_PACKAGE_libpcre2=y
CONFIG_PACKAGE_libqrencode=y
CONFIG_PACKAGE_libubus-lua=y
CONFIG_PACKAGE_libuv=y
CONFIG_PACKAGE_libwebsockets-full=y
CONFIG_PACKAGE_libxtables=y
CONFIG_PACKAGE_libzstd=y
CONFIG_PACKAGE_lua=y
CONFIG_PACKAGE_luci=y
CONFIG_PACKAGE_luci-app-ddns=y
CONFIG_PACKAGE_luci-app-firewall=y
CONFIG_PACKAGE_luci-app-mwan3=y
CONFIG_PACKAGE_luci-app-package-manager=y
CONFIG_PACKAGE_luci-app-sqm=y
CONFIG_PACKAGE_luci-app-ttyd=y
CONFIG_PACKAGE_luci-app-upnp=y
CONFIG_PACKAGE_luci-app-wifischedule=y
CONFIG_PACKAGE_luci-app-wol=y
CONFIG_PACKAGE_luci-base=y
CONFIG_PACKAGE_luci-i18n-base-es=y
CONFIG_PACKAGE_luci-i18n-ddns-es=y
CONFIG_PACKAGE_luci-i18n-firewall-es=y
CONFIG_PACKAGE_luci-i18n-mwan3-es=y
CONFIG_PACKAGE_luci-i18n-package-manager-es=y
CONFIG_PACKAGE_luci-i18n-sqm-es=y
CONFIG_PACKAGE_luci-i18n-ttyd-es=y
CONFIG_PACKAGE_luci-i18n-upnp-es=y
CONFIG_PACKAGE_luci-i18n-wifischedule-es=y
CONFIG_PACKAGE_luci-i18n-wol-es=y
CONFIG_PACKAGE_luci-lib-base=y
CONFIG_PACKAGE_luci-lib-ip=y
CONFIG_PACKAGE_luci-lib-json=y
CONFIG_PACKAGE_luci-lib-jsonc=y
CONFIG_PACKAGE_luci-lib-nixio=y
CONFIG_PACKAGE_luci-lib-uqr=y
CONFIG_PACKAGE_luci-light=y
CONFIG_PACKAGE_luci-lua-runtime=y
CONFIG_PACKAGE_luci-mod-admin-full=y
CONFIG_PACKAGE_luci-mod-network=y
CONFIG_PACKAGE_luci-mod-rpc=y
CONFIG_PACKAGE_luci-mod-status=y
CONFIG_PACKAGE_luci-mod-system=y
CONFIG_PACKAGE_luci-proto-gre=y
CONFIG_PACKAGE_luci-proto-ipv6=y
CONFIG_PACKAGE_luci-proto-ppp=y
CONFIG_PACKAGE_luci-proto-wireguard=y
CONFIG_PACKAGE_luci-ssl-openssl=y
CONFIG_PACKAGE_luci-theme-bootstrap=y
CONFIG_PACKAGE_luci-theme-darky=y
CONFIG_PACKAGE_luci-theme-opentomato=y
CONFIG_PACKAGE_map=y
CONFIG_PACKAGE_miniupnpd-nftables=y
CONFIG_PACKAGE_mwan3=y
CONFIG_PACKAGE_nano-full=y
CONFIG_PACKAGE_pbr=y
CONFIG_PACKAGE_luci-app-pbr=y
CONFIG_PACKAGE_openssl-util=y
CONFIG_PACKAGE_qca-ssdk-shell=y
CONFIG_PACKAGE_qrencode=y
CONFIG_PACKAGE_resolveip=y
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-file=y
CONFIG_PACKAGE_rpcd-mod-iwinfo=y
CONFIG_PACKAGE_rpcd-mod-luci=y
CONFIG_PACKAGE_rpcd-mod-rrdns=y
CONFIG_PACKAGE_rpcd-mod-ucode=y
CONFIG_PACKAGE_sqm-scripts=y
CONFIG_PACKAGE_sqm-scripts-nss=y
CONFIG_PACKAGE_tc-full=y
CONFIG_PACKAGE_terminfo=y
CONFIG_PACKAGE_ttyd=y
CONFIG_PACKAGE_ucode-mod-html=y
CONFIG_PACKAGE_ucode-mod-lua=y
CONFIG_PACKAGE_ucode-mod-math=y
CONFIG_PACKAGE_uhttpd=y
CONFIG_PACKAGE_uhttpd-mod-ubus=y
CONFIG_PACKAGE_wget-ssl=y
CONFIG_PACKAGE_wifischedule=y
CONFIG_PACKAGE_wireguard-tools=y
CONFIG_PACKAGE_xtables-nft=y
CONFIG_TARGET_OPTIMIZATION="-O2 -pipe -mcpu=cortex-a53+crc+crypto"
CONFIG_TARGET_OPTIONS=y
CONFIG_ZLIB_OPTIMIZE_SPEED=y
CONFIG_ZSTD_OPTIMIZE_O3=y
# CONFIG_HTOP_LMSENSORS is not set

So if you or anyone can assist me in getting this straightened enough - I will be most grateful. As I mentioned at the outset, I used to be able to compile @AgustinLorenzo builds without any failed attempts.
Peace

You should include the errors you have after compiling.

Hi @directnupe,

Instead of using “config.buildinfo”, you can use the “.full_config” which is the equivalent to “.config” that I use to generate the build, it is uploaded on purpose with the intention of being as transparent as possible to the users of my fork :slight_smile:

Link: https://github.com/AgustinLorenzo/openwrt/blob/main_nss/.full_config

Just rename that file to “.config” and run "make menuconfig" and you will be able to customize the build.

Regards, Agustin

2 Likes

Dear @AgustinLorenzo
Thank you very very much - I do appreciate your excellent Builds and the kind and generous manner in which you assist us all here. Most of all your expertise and understanding are boundless.
Peace and God Bless Always

SKB recycler can be a double-edged sword. It helps reduce CPU overhead by recycling packet buffers instead of constantly allocating/freeing them, which improves performance and memory efficiency, especially on memory-constrained hardware. But it also introduces memory fragmentation and potential stale data issues, leading to stability problems. That’s likely why it was never mainlined.

I had backported the patch from QSDK 12 (kernel 6.1) to 6.6 while integrating NSS into IPQ807x. Without it, memory leaks would appear within 24-48 hours of boot, affecting both NSS and non-NSS builds. Upstream has stabilized since then, so enabling it isn’t a hard requirement anymore. You have the option to disable it completely from being built rather than delete the patch though.

Glad to hear. Just curious, which version of NSS are you using and what is your use case for non-WDS mode when using AP+STA? Are you managing two separate networks on the STA end?

Currently working on reconsolidating NSS kernel patches. It includes fixes for offloaded GRE/VxLAN/IPIP tunnels. Just need to run a few test cases on my end + clean up before pushing them out.

5 Likes

does any of this address the undesired but pervasive client isolation issue?

Hi @olci,

Can you try SKB with this patch?

Link: https://github.com/AgustinLorenzo/openwrt/commit/b98192bce2cae6e25d958f0cdf42bef59b1f00c4

@qosmio after a few months no one is reporting issues after removing that patch

Regards, Agustin

From .config, the NSS firmware version is set to 11_4:
CONFIG_NSS_FIRMWARE_VERSION_11_4=y
As you assumed, my use case is simply to use it as a Wi-Fi-to-Ethernet bridge, not to extend Wi-Fi coverage. I wasn’t aware that WDS mode could actually function as an L2 bridge. However, I tried WDS mode, but no packets were received from Wi-Fi. I also tried @AgustinLorenzo's 03/16 build (both mesh and non-mesh builds), but neither worked.

Now I have two questions:

  1. Does WDS mode require NSS firmware version 11.4? Does version 12.x work with WDS STA/AP mode?
  2. Can I use WDS AP and a normal AP simultaneously?

My AP is running @AgustinLorenzo's 02-15 non-mesh build (NSS FW: NSS.FW.12.2-161-HK.R), and I added the following config to the AP for WDS:

config wifi-iface 'wifinet8'
        option device 'radio0'
        option mode 'ap'
        option ssid 'WDS'
        option encryption 'sae'
        option wds '1'
        option key 'MyPassword'
        option ocv '0'
        option network 'vlan1'

Here’s the STA's configuration:

cat /etc/config/network
(snip)
config device
        option type 'bridge'
        option name 'br-relay'
        list ports 'wan'

config interface 'relay'
        option proto 'dhcp'
        option device 'br-relay'


cat /etc/config/firewall
(snip)
config zone
        option name 'relay'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'relay'


cat /etc/config/wireless
(snip)
config wifi-iface 'wifinet0'
        option device 'radio0'
        option mode 'sta'
        option network 'relay'
        option ssid 'WDS'
        option encryption 'sae'
        option key 'MyPassword'
        option ocv '0'
        option wds '1'

.

That's great to hear! It sounds like a lot of work, but I hope the patches will be available soon.

I did some tests and found the answer.

WDS requires NSS firmware version 11.4 (AKA. mesh build) on the AP side so far. With NSS FW 11.4, The L2 bridge between WDS AP and WDS client works as I expected, and relayd package is not needed at all. Here are my test results:

AP Client(WDS) WDS Result
11.4 11.4 OK
11.4 12.2 OK
12.2 11.4 NG
12.2 12.2 NG

Using WDS AP and normal APs simultaneously on same radio works without any issues.

Hopefully, this will be helpful to others.

2 Likes

Hi @qosmio

I'm going to release a build for both mesh and normal without these 3 patches and then we will have more feedback

FYI ALL

Regards, AgustĂ­n

5 Likes

Yup, I've made a few mentions of this in previous posts. 11.4 is pretty much the ONLY universally working FW across the board in terms of wifi features, AP/Client WDS and non-WDS, and biggest one being mesh/802.11s.

I'm inclined to believe Qualcomm just stopped supporting IPQ807x/6018 boards after 11.4. Mesh feature is the most telling of this being the case as the interface fails to even register or come up.

In terms of "features", nothing of substance was really added after 11.4 that would prevent 99.9% of users getting across the board offloading. I will be marking the FW under the "@BROKEN" symbol so users will need to intentionally "unhide" it to build.

3 Likes

Hi @AgustinLorenzo,
Your Updated prebuilt images (NSS-WiFi with Mesh) 2025-03-17-0216 work well with WDS mode, and STA mode can be replaced by WDS. Therefore, these patches aren’t needed unless someone wants to connect to a non-OpenWRT AP. I’ll stick with your mesh build.

1 Like