IPQ806x NSS Drivers

Only 10 public

1 Like

@Ansuel Any plans to rebase to the latest master branch to pick up the 5.4.59 kernel updates?

Testing a scaling driver and i will rebase on top of master

1 Like

Has the latest master source switched to DSA for ipq806x targets?

nope we still have the old driver.

@quarky & @Ansuel:
I run my R7800 as a WAP only. In my current build, I have all firewall components removed. I have stripped it down as much as possible to just the bare minimum for WAP functions--I don't even have Luci.

In such a configuration, is there any advantage to be gained by using this NSS enabled build?

Should be rebased

1 Like

Wireless is accelerated by the NSS cores. It’d be worthwhile to compare speed / latency using the same configuration. I’d guess you would see performance improvement with the additional CPU cores.

WiFi accelleration is broken (not working) for now. We need to fix it.

1 Like

Hi @Ansuel,

Cloned your nss branch after your rebasing yesterday.

Any clue why 999-03a-qca-nss-ecm-support.patch fails for bond_main.c ?

Patch failure
Applying /home/gram/nss_test/openwrt/target/linux/ipq806x/patches-5.4/999-03a-qca-nss-ecm-support.patch using plaintext: 
patching file include/linux/if_bridge.h
patching file include/linux/if_pppol2tp.h
patching file include/linux/if_pppox.h
patching file include/linux/if_vlan.h
Hunk #1 succeeded at 222 (offset 2 lines).
patching file include/linux/netdevice.h
patching file include/linux/ppp_channel.h
patching file include/net/bond_3ad.h
patching file include/net/bonding.h
patching file include/net/ip6_route.h
patching file include/net/neighbour.h
patching file include/net/netfilter/nf_conntrack_extend.h
patching file include/net/route.h
patching file include/uapi/linux/if_bonding.h
patching file drivers/net/bonding/bond_3ad.c
patching file drivers/net/bonding/bond_main.c
Hunk #12 FAILED at 4939.
Hunk #13 succeeded at 5038 (offset 4 lines).
1 out of 13 hunks FAILED -- saving rejects to file drivers/net/bonding/bond_main.c.rej
bond_main.c.rej
[gram@Fedora-64 openwrt]$ cat build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.59/drivers/net/bonding/bond_main.c.rej
--- drivers/net/bonding/bond_main.c
+++ drivers/net/bonding/bond_main.c
@@ -4939,6 +5006,16 @@ int bond_create(struct net *net, const c
 	rtnl_unlock();
 	if (res < 0)
 		free_netdev(bond_dev);
+
+	/* QCA NSS ECM Support - Start */
+	bond = netdev_priv(bond_dev);
+	bond->id = ~0U;
+	if (bond_id_mask != (~0UL)) {
+		bond->id = (u32)ffz(bond_id_mask);
+		set_bit(bond->id, &bond_id_mask);
+	}
+	/* QCA NSS ECM Support - End */
+
 	return res;
 }
 
[gram@Fedora-64 openwrt]$

Below selected nss related packages;

CONFIG_PACKAGE_kmod-nss-ifb=y
CONFIG_PACKAGE_kmod-qca-nss-drv=y
CONFIG_PACKAGE_kmod-qca-nss-gmac=y
CONFIG_PACKAGE_kmod-qca-nss-drv-qdisc=y
CONFIG_PACKAGE_kmod-qca-nss-ecm-standard=y

Probably related to the new kernel. Will fix today

1 Like

Your R7800 would be under utilized then.

From what I understood of the NSS framework, it’ll not be beneficial as the NSS firmware has to work in tandem with netfilter for it to work. With firewall (I.e. netfilter) off, NSS cores will likely be sitting idle. I could be wrong tho, as I’ve not tested such a config. You may want to try it out.

patch fixed

Thanks Ansuel,

Compiles ok now... but ends up boot loop.
Also the generated factory image boot loop.
Cannot connect to router to get any logs.

Now back to latest master without nss and it's ok.

The same nss related packages were selected;

CONFIG_PACKAGE_kmod-nss-ifb=y
CONFIG_PACKAGE_kmod-qca-nss-drv=y
CONFIG_PACKAGE_kmod-qca-nss-gmac=y
CONFIG_PACKAGE_kmod-qca-nss-drv-qdisc=y
CONFIG_PACKAGE_kmod-qca-nss-ecm-standard=y

Any possibility to check if your nss repo works with you with 5.4.59 kernel?

Yes my bad... Fixed and run tested :smiley:

Thanks, ok now.

Works great. Getting full line rate. Added the NSS qdisc driver to do some testing when I have some time. :sunglasses:

I rebased @Ansuel's kernel5.4-nss-qsdk10.0 branch to pick up the latest AQL/ath10k patches from upstream. I am seeing respectable gains in WiFi throughput on this NSS build as compared to my previous builds from the OpenWrt master branch. I moved IRQ 33 & 35 to CPU1 and am seeing much better balance between both cores when under heavy wireless load.

Happy to post results if anyone is interested. But I am also quite curious if others are seeing in the neighborhood of 120-140mbps of additional wireless throughput with @Ansuel's branch?

1 Like

If I'm not wrong, the improvement comes from recent changes to the mac80211 stack with threaded napi.

I switched back to the latest master build including the same threaded NAPI patch, but only see around 500mpbs of combined throughout when performing an iperf3 bidirectional test between an AC 3x3 host and another gigabit host connected via ethernet to my R7800.

With @Ansuel’s branch, rebased against OpenWrt master so as to pick up the same threaded NAPI patch, I am seeing 620-650mbps of combined throughout on the same iperf3 bidirectional test. This is with the manual reassignment of IRQs 33 & 35 as mentioned in my prior post.

Anyone else willing to conduct a similar test and confirm? @ACwifidude, are you in a position to test this scenario?

1 Like