Edit: I found the culprit. It's: CONFIG_PACKAGE_kmod-qca-nss-drv-igs=y. With this removed, nssifb shows up with ip link just fine after modprobing it.
Edit 2: Having sqm enabled even after removing nss igs still boot loops the device. Even with a very minimal config of just having the essential NSS packages + qdisc
OK. Here it is, my working build config for QNAP QHora-301W.
It will need some clean up for basic config though. This one have 512MB profile set in settings although the QNAP has 1GB memory.
I didn't even try it on this device.
I used rickkdotnet/sqm-scripts-nss on my old R7800 (running NSS build based on @ACwifidude repo) for some time in the past but personally I couldn't find any difference in latency on my 1G/0.7G ISP plan. So I just left it.
This is a known bug where (after a booting up) nss qdisc shaping starts before a WAN IP is acquired. The workaround is to ensure /etc/init.d/sqm is disabled, and run it manually after some delay. However, the problem will return if you make any changes to SQM through LuCI because it reenables the SQM script.
The long term solution really is to make the change in /usr/lib/sqm/nss-rk.qos. It's on my todo...
EDIT: Expedited that todo... Just added a function to check for a WAN IP before starting. Updated on my fork:
NOTE: Now I am only compiling for the AX3600, AX6 and AX9000 and Dynalink DL-WRX36 and Buffalo WXR-5950AX12 and QNAP QHora-301W devices and Netgear RAX120v2, if anyone has used my versions with other devices, tell me and I will add them again.
NOTE: Now I am only compiling for the AX3600, AX6 and AX9000 and Dynalink DL-WRX36 and Buffalo WXR-5950AX12 and QNAP QHora-301W devices and Netgear RAX120v2, if anyone has used my versions with other devices, tell me and I will add them again.
UPDATE: I hadn't noticed before, but nss-firmware, qca-nss-cfi, and qca-nss-crypto were being kept in the main tree, when they should've been in the nss_packages feed.
They were originally kept separately in my NSS-11.2-K5.15 branch. I just assumed the work on ipq807x had included them.
I've moved them back into the nss packages repository. I want to keep the NSS fork as vanilla as possible.
This will break builds if you haven't cleaned out the tmp files.
Clean up steps (after pulling from qualcommax-6.1-nss-wifi)
rm tmp/info/.packageinfo-*
./scripts/feeds update
./scripts/feeds install -p nss_packages -f -a
You'll notice a warning at first, but should properly reinstall from the new location:
WARNING: Makefile 'package/kernel/mac80211/Makefile' has a dependency on 'kmod-qca-nss-drv', which does not exist
WARNING: Makefile 'package/kernel/mac80211/Makefile' has a dependency on 'kmod-qca-nss-drv-wifi-meshmgr', which does not exist
WARNING: Makefile 'package/kernel/mac80211/Makefile' has a dependency on 'kmod-qca-nss-drv', which does not exist
WARNING: Makefile 'package/feeds/nss/qca-nss-eip/Makefile' has a dependency on 'kmod-qca-nss-ecm', which does not exist
WARNING: Makefile 'package/feeds/sqm_scripts_nss/sqm-scripts-nss/Makefile' has a dependency on 'kmod-qca-nss-drv-qdisc', which does not exist
WARNING: Makefile 'package/feeds/sqm_scripts_nss/sqm-scripts-nss/Makefile' has a dependency on 'kmod-qca-nss-drv-igs', which does not exist
Installing all packages from feed nss_packages.
Installing package 'libnl-nss' from nss_packages
Installing package 'qca-nss-clients' from nss_packages
Installing package 'qca-nss-drv' from nss_packages
Installing package 'nss-firmware' from nss_packages
Installing package 'qca-nss-cfi' from nss_packages
Installing package 'qca-nss-crypto' from nss_packages
Installing package 'nss-ifb' from nss_packages
Installing package 'nssinfo' from nss_packages
Installing package 'qca-mcs' from nss_packages
Installing package 'qca-nss-ecm' from nss_packages
Installing package 'qca-nss-macsec' from nss_packages
Installing package 'qca-ssdk-shell' from nss_packages
Maybe we can use qca-nss-drv-igs.
I find how to use it:
ip link add name ifb-wan type ifb
ip link set dev ifb-wan up
tc qdisc add dev wan handle ffff: ingress
tc filter add dev wan parent ffff: protocol all u32 match u32 0 0 action nssmirred redirect dev ifb-wan fromdev wan
tc qdisc add dev ifb-wan root handle 1: nsstbl burst 116886 rate 940Mbit mtu 1518 accel_mode 0
tc qdisc add dev ifb-wan parent 1: handle 10: nssfq_codel limit 7740 flows 1024 quantum 1518 target 5ms interval 100ms set_default accel_mode 0
This is my config for a 1 Gbit base on sqm-scripts-nss.
The important thing is accel_mode, There have two accel_mode for qdisc
0 is to nss, 1 is to ppe, The ifb must use mode 0. Then, I get this:
@qosmioCONFIG_NSS_DRV_MAPT_ENABLE=y does not enable CONFIG_PACKAGE_kmod-qca-nss-drv-map-t currently. Isnt the kmod necessary?
And i think CONFIG_PACKAGE_kmod-qca-nss-drv-clmapmgr should also be enabled when CONFIG_PACKAGE_kmod-qca-nss-drv-pppoe is enabled, since a PPP link requires clamping.
I noticed that firewall hardware offloading is needed when using CONFIG_PACKAGE_kmod-qca-nss-drv-match=y otherwise the performance will be horrible. e.g. 6000ms for dns redirection to another dns server
It's the other way around. kmod-qca-nss-drv-* are client modules that enforce symbol dependencies in qca-nss-drv
Not sure what you mean by this. Flow offload? You don't want to enable that AT ALL. It will conflict with NSS.
Also, most of the clients packages haven't been updated upstream in years... Lord knows if they actually work or not. I've just been tidying up the build process. If you find anything that improves, please open a pull request .
It's worth a shot. I made some significant changes to the way NSS firmware is handled, so as to account ipq807x, ipq6018, and ipq5018.
Do note, some patches will need to be update because they assume IPQ807x, when in fact IPQ60xx would be supported. I don't have any boards to test it on, so any help is appreciated.