just click Y and press enter

I made some comparisons between Ansuel's NSS and hnyman's build:

			Ansuel		hnyman		Ansuel				Ansuel
									hw flow offloading	no soft offloading
iperf3		550 Mbps	910 Mbps	815 Mbps			610 Mbps
(wired)
iperf3		400 Mbps	700 Mbps	450-600 Mbps		480-640 Mbps
(wireless)
bufferbloat	B			A			B					C
(wired)
speedtest	77 Mbps		270 Mbps	100 Mbps			270 Mbps
(wireless)
uptime		few minutes	stable		> few minutes		> few minutes

Although low CPU utilization during tests involving routing looks promising stability and to lesser extend performance are still an issue.
Not sure whether difference in performance is because of lack of some patches and tweaks or if there is different reason.
Would it make sense to disable software flow offloading?

EDIT: in order to be able to turn on hardware flow offloading software flow offloading has to be checked. Table updated with Ansuel's repo with disabled software flow offloading.

with software offload you bypass nss

Crap! All tests for nothing :slight_smile:

@quarky @robimarko i wonder if this work with the dsa driver... will do some test but i think it should since we modify the gmac driver in the dts not the switch driver

It should work

@robimarko i remember you fixed the warning on phy unload and overhauled the gmac driver but i can't find the code. Am i missing something?

I fixed the missing MAC adress panic on driver load, PHY warnings were fixed by quarky.

@quarky I notice that with https://github.com/quarkysg/openwrt/commit/52380e83ddff7ffb77294a06801cf2ecf00f40bc
netlink doesn't use the chain notifier anymore... I wonder if this would cause some performance degradation ?
Why not convert it to use the chain notifier instead?

Not too sure what you meant by netlink tho. Could you point me to the code you think may be an issue?

with the rework we dropped the use of the chain notifier in ctnl_notifier

The changes are necessary to allow other modules that made use of the netfilter notifier to work, e.g. nlbwmon. I’ve switched NSS specific uses to the new chain notifier APIs, so that both NSS and existing Linux modules/drivers can coexists peacefully. There shouldn’t be any issues.

@quarky
Today I try build your newest "master-ipq806x-nss-qsdk11" twice,but get same erros as following
Please correct me
Thanks

Building backport-include/backport/autoconf.h ... done.
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/compat/main.o
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/compat/backport-5.5.o
  LD [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/compat/compat.o
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/drivers/net/wireless/ath/main.o
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/drivers/net/wireless/ath/regd.o
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/drivers/net/wireless/ath/hw.o
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/drivers/net/wireless/ath/key.o
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/drivers/net/wireless/ath/debug.o
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/drivers/net/wireless/ath/dfs_pattern_detector.o
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/drivers/net/wireless/ath/dfs_pri_detector.o
  LD [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/drivers/net/wireless/ath/ath.o
  CC [M]  /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/net/mac80211/main.o
In file included from /media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/net/mac80211/main.c:28:
/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/net/mac80211/ieee80211_i.h:39:10: fatal error: nss_api_if.h: No such file or directory
 #include <nss_api_if.h>
          ^~~~~~~~~~~~~~
compilation terminated.
scripts/Makefile.build:265: recipe for target '/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/net/mac80211/main.o' failed
make[9]: *** [/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/net/mac80211/main.o] Error 1
scripts/Makefile.build:500: recipe for target '/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/net/mac80211' failed
make[8]: *** [/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/net/mac80211] Error 2
Makefile:1704: recipe for target '/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1' failed
make[7]: *** [/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1] Error 2
Makefile.build:13: recipe for target 'modules' failed
make[6]: *** [modules] Error 2
Makefile.real:93: recipe for target 'modules' failed
make[5]: *** [modules] Error 2
Makefile:120: recipe for target 'modules' failed
make[4]: *** [modules] Error 2
make[4]: Leaving directory '/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1'
Makefile:552: recipe for target '/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/.built' failed
make[3]: *** [/media/jack/sam128/Gmobile/nss-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/backports-5.7-rc3-1/.built] Error 2
make[3]: Leaving directory '/media/jack/sam128/Gmobile/nss-qsdk11/package/kernel/mac80211'
time: package/kernel/mac80211/compile#13.73#3.05#28.88
package/Makefile:111: recipe for target 'package/kernel/mac80211/compile' failed
make[2]: *** [package/kernel/mac80211/compile] Error 2
make[2]: Leaving directory '/media/jack/sam128/Gmobile/nss-qsdk11'
package/Makefile:107: recipe for target '/media/jack/sam128/Gmobile/nss-qsdk11/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.package_compile' failed
make[1]: *** [/media/jack/sam128/Gmobile/nss-qsdk11/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
make[1]: Leaving directory '/media/jack/sam128/Gmobile/nss-qsdk11'
/media/jack/sam128/Gmobile/nss-qsdk11/include/toplevel.mk:222: recipe for target 'world' failed
make: *** [world] Error 2

@quarky they are really working on 5.4 ! If you find something that our patch lacks can you alert me?

https://source.codeaurora.org/quic/qsdk/oss/lklm/qca-nss-ecm/commit/?h=nss&id=853a6136c3aad68d1fbcf9121e12f8609703007e

I believe you did not clone my Github source branch? If you just copied the patch file, into your own source branch, compile will fail. The mac80211 package Makefile have to be patched to include the nss-drv headers and the dependency to nss-drv for the compile to succeed. Otherwise you will see the error that you saw. Do refer to the commit history in my master-ipq806x-nss-qsdk11 branch for the mac80211 patch and apply the same changes for the Makefile.

Did a quick scan of the commit. Looks like what they did were basically what we did for both qsdk10 and qsdk11 changes for OpenWrt master.

Will let you know if I find anything else the QCA folks did that we missed.

Good find!

yep i notice that too... we did pretty much the same changes...

I do clone your Github source branch of master-ipq806x-nss-qsdk11
clone twice for compiling ,but get failed

In that case, it could be the dependencies in the Makefile still not correct. I did not encounter this error tho. Odd.

Can you show your build's diffconfig output?

CONFIG_TARGET_ipq806x=y
CONFIG_TARGET_ipq806x_generic=y
CONFIG_TARGET_ipq806x_generic_DEVICE_linksys_ea7500-v1=y
CONFIG_DEVEL=y
CONFIG_TOOLCHAINOPTS=y
CONFIG_CCACHE=y
CONFIG_IMAGEOPT=y
CONFIG_PACKAGE_6rd=y
CONFIG_PACKAGE_MAC80211_NSS_SUPPORT=y
CONFIG_PACKAGE_cgi-io=y
# 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_dhcpv6=y
CONFIG_PACKAGE_dnsmasq_full_dnssec=y
CONFIG_PACKAGE_dnsmasq_full_ipset=y
CONFIG_PACKAGE_dnsmasq_full_noid=y
CONFIG_PACKAGE_dnsmasq_full_tftp=y
CONFIG_PACKAGE_iptables-mod-extra=y
CONFIG_PACKAGE_iptables-mod-physdev=y
CONFIG_PACKAGE_kmod-bonding=y
CONFIG_PACKAGE_kmod-br-netfilter=y
CONFIG_PACKAGE_kmod-crypto-acompress=y
CONFIG_PACKAGE_kmod-crypto-aead=y
CONFIG_PACKAGE_kmod-crypto-authenc=y
CONFIG_PACKAGE_kmod-crypto-cbc=y
CONFIG_PACKAGE_kmod-crypto-crc32c=y
CONFIG_PACKAGE_kmod-crypto-deflate=y
CONFIG_PACKAGE_kmod-crypto-des=y
CONFIG_PACKAGE_kmod-crypto-echainiv=y
CONFIG_PACKAGE_kmod-crypto-hash=y
CONFIG_PACKAGE_kmod-crypto-hmac=y
CONFIG_PACKAGE_kmod-crypto-manager=y
CONFIG_PACKAGE_kmod-crypto-md5=y
CONFIG_PACKAGE_kmod-crypto-null=y
CONFIG_PACKAGE_kmod-crypto-pcompress=y
CONFIG_PACKAGE_kmod-crypto-sha1=y
CONFIG_PACKAGE_kmod-fast-classifier=y
CONFIG_PACKAGE_kmod-fs-ext4=y
CONFIG_PACKAGE_kmod-fs-ntfs=y
CONFIG_PACKAGE_kmod-fs-vfat=y
CONFIG_PACKAGE_kmod-gre=y
CONFIG_PACKAGE_kmod-gre6=y
CONFIG_PACKAGE_kmod-ip6-tunnel=y
CONFIG_PACKAGE_kmod-ipsec=y
CONFIG_PACKAGE_kmod-ipt-conntrack-extra=y
CONFIG_PACKAGE_kmod-ipt-extra=y
CONFIG_PACKAGE_kmod-ipt-filter=y
CONFIG_PACKAGE_kmod-ipt-ipset=y
CONFIG_PACKAGE_kmod-ipt-physdev=y
CONFIG_PACKAGE_kmod-iptunnel=y
CONFIG_PACKAGE_kmod-iptunnel4=y
CONFIG_PACKAGE_kmod-iptunnel6=y
CONFIG_PACKAGE_kmod-ledtrig-default-on=y
CONFIG_PACKAGE_kmod-ledtrig-heartbeat=y
CONFIG_PACKAGE_kmod-ledtrig-netdev=y
CONFIG_PACKAGE_kmod-ledtrig-timer=y
CONFIG_PACKAGE_kmod-lib-crc16=y
CONFIG_PACKAGE_kmod-lib-textsearch=y
CONFIG_PACKAGE_kmod-lib-zlib-deflate=y
CONFIG_PACKAGE_kmod-lib-zlib-inflate=y
CONFIG_PACKAGE_kmod-nf-conntrack-netlink=y
CONFIG_PACKAGE_kmod-nfnetlink=y
CONFIG_PACKAGE_kmod-nls-cp437=y
CONFIG_PACKAGE_kmod-nls-iso8859-1=y
CONFIG_PACKAGE_kmod-nls-utf8=y
CONFIG_PACKAGE_kmod-qca-nss-crypto=y
CONFIG_PACKAGE_kmod-qca-nss-drv=y
CONFIG_PACKAGE_kmod-qca-nss-drv-eogremgr=y
CONFIG_PACKAGE_kmod-qca-nss-drv-gre=y
CONFIG_PACKAGE_kmod-qca-nss-drv-pppoe=y
CONFIG_PACKAGE_kmod-qca-nss-drv-qdisc=y
CONFIG_PACKAGE_kmod-qca-nss-drv-tun6rd=y
CONFIG_PACKAGE_kmod-qca-nss-drv-tunipip6=y
CONFIG_PACKAGE_kmod-qca-nss-ecm-standard=y
CONFIG_PACKAGE_kmod-qca-rfs=y
CONFIG_PACKAGE_kmod-qca-ssdk-hnat=y
CONFIG_PACKAGE_kmod-shortcut-fe=y
CONFIG_PACKAGE_kmod-shortcut-fe-drv=y
CONFIG_PACKAGE_kmod-sit=y
CONFIG_PACKAGE_libgmp=y
CONFIG_PACKAGE_libiwinfo-lua=y
CONFIG_PACKAGE_liblua=y
CONFIG_PACKAGE_liblucihttp=y
CONFIG_PACKAGE_liblucihttp-lua=y
CONFIG_PACKAGE_libmnl=y
CONFIG_PACKAGE_libnetfilter-conntrack=y
CONFIG_PACKAGE_libnettle=y
CONFIG_PACKAGE_libnfnetlink=y
CONFIG_PACKAGE_libubus-lua=y
CONFIG_PACKAGE_lua=y
CONFIG_PACKAGE_luci=y
CONFIG_PACKAGE_luci-app-firewall=y
CONFIG_PACKAGE_luci-app-opkg=y
CONFIG_PACKAGE_luci-base=y
CONFIG_PACKAGE_luci-lib-ip=y
CONFIG_PACKAGE_luci-lib-jsonc=y
CONFIG_PACKAGE_luci-lib-nixio=y
CONFIG_PACKAGE_luci-mod-admin-full=y
CONFIG_PACKAGE_luci-mod-network=y
CONFIG_PACKAGE_luci-mod-status=y
CONFIG_PACKAGE_luci-mod-system=y
CONFIG_PACKAGE_luci-proto-ipv6=y
CONFIG_PACKAGE_luci-proto-ppp=y
CONFIG_PACKAGE_luci-theme-bootstrap=y
CONFIG_PACKAGE_qca-nss-firmware=y
CONFIG_PACKAGE_qca-ssdk-shell=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_uhttpd=y
CONFIG_PACKAGE_uhttpd-mod-ubus=y

thanks