IPQ806x NSS Drivers


There is no use at all for binary kernel modules built against an ancient kernel.


He does see the stack of modules used from that stack? :smiley:

Just figured out this firmware has a crap ton of custom modules in it as well.


Still a lot to do. I don't have much time to invest in this task but i would love to!.
it has a lot of device driver and kernel code to adapt. Many of the nss core features are implemented for the 3.x kernel.


Hi folks,

Restarted my lazy butt and managed to get the ECM module compiled and it seems to work!!!

Prelim testing seems to indicate the NSS core is doing its job. Doing a speed test with the ECM module loaded with 'top' running shows the CPU to be less than 5% used for both cores.

With the ECM module unloaded, the CPU spiked to 25% for one of the CPU core.

Download test are with around 100mbps up/down.

The above are a simple test I did, so it may not be accurate or I may have been seeing false reading, but I'm quite excited to share this with all.

Is there anyone with a R7800 who's brave enough to beta test? Still a bit raw and not ready for prime time. I can provide the firmware image.

If you know how to compile your own firmware, all the source codes can be found in my Github repository.

Think we can finally release the ipq806x capabilities when using OpenWRT.

Unfortunately I still can't get the crypto acceleration to work, but at least this is progress.


Sure just tell me how to test :slight_smile:
I have serial access and ready to brick my router so... I will do whatever you want
I have a 100/10 mb connection btw


Do you know how to load initramfs image? I recommend not to flash your router's NAND flash for testing. I test all my builds using initramfs. You will need to set up a TFTP server tho. I can also provide a sysupgrade .tar file for you to test if setting up a TFTP server is too cumbersome.


Why we can restore the image with bootloader tftp
Set a tftp server is not a problem but I never setup a intramfs image...
If you have a way to make a diff patch of your report I can build a custom image on top of my repo

What's your favorite enthusiast LEDE/OpenWrt device?

will try to rebase all the patches to 4.9 kernel trunk ... hope for the best ahhaha


Providing a patch set for the nss core drivers will be difficult. Too many files involved. I’ll provide the firmware image for testing later today.

OpenWRT 18.06 for ipq806x is now using kernel 4.14. Think I’ll move to that once I understand more how the whole thing works. Staying with 17.01 with 4.4 for now.


looking at the commit on your repo it's just a lot of source file and some additional makefile... should not be too diffuclt as long as the source file are compatible with newer kernel... will do some test


The NSS drivers hooks into the existing Linux netfilter stack. It should be straight forward if the netfilter sources did not change much between 4.4 and 4.9.

Also, my commits are quick hacks just to make it compile and run. May have overwritten many important bug fixes for later Linux 4.4.x revisions. I intend to start all over once I have a deeper understanding.

So hopefully with more folks joining in, we can make this faster.


just to keep you informed i'm starting with your first commit and i'm fixing the nss gmac driver to make it compile with kernel 4.14...

needs some rework as something changed between kernel...

Can confirm that it does compile well with this changes... will upload to my repo :wink:


Do note that existing Linux kernel already has drivers for the IPQ806x GMACs, which you should disable. Otherwise, you need to change the DTS of the R7800 to change the compatible entry of the GMAC interfaces to those of the QCA GMAC driver.

The QCA GMAC drivers I've commited into my repo has multiple compatible string entries.


here first commit

I notice that you disable the gmac driver by editing the config file. Correct?


I use 'make kernel_menuconfig' to disable the stmmac GMAC drivers.


then why remove this 2 line from config file? should't be the same?



It was removed by 'kernel_menuconfig' after I saved the changes. No manual editing of the config file had been done by me.


Hi folks,

Looks like the NSS cores for my R7800 has been successfully activated to handle routing tasks. Here's the numbers I get when performing LAN to WAN test using local computers with GE ports:

  1. Without any accelerator installed, i.e. plain LEDE/OpenWRT:

LAN - > WAN: 213mbps, sirq @ ~ 65%
WAN -> LAN: 234mbps, sirq @ ~ 77%

  1. With shortcut-fe and fast-classifier connection manager only:

LAN - > WAN: 826mbps, sirq @ ~ 70%
WAN -> LAN: 719mbps, sirq @ ~ 50%

  1. With shortcut-fe and qca-nss-ecm connection manager only (i.e. using NSS cores):

LAN - > WAN:940mbps, sirq @ < 1%
WAN -> LAN: 916mbps, sirq @ < 1%

So it looks like routers using the IPQ8064 and IPQ8065 SoC will get a big boost in routing performance using the NSS drivers!

If you are brave enough to try the firmware, I've uploaded the images here:


You can also build your own firmware images from the sources I've committed into my GitHub repository.

Have fun!


Can you test without shortcut Fe?


Can't. nss-ecm requires shortcut-fe. Can only disable the fast_classifier CM. In any case, the nss-ecm will take precedence even if the fast_classifier CM is loaded.