Ipq806x NSS build (Netgear R7800 / TP-Link C2600 / Linksys EA8500)

If the settings between non-NSS and NSS based firmware on a r7800 are the same - don’t see any reason that they would behave differently. I’m stumped.

@ACwifidude are these warnings normal when I try to build your repo?

builder@openwrt-compile-ng:~/openwrt-nss$ make world -j 5
WARNING: Makefile 'package/qca/qca-nss-drv/Makefile' has a dependency on 'kmod-qca-nss-dp', which does not exist
WARNING: Makefile 'package/qca/qca-nss-ecm/Makefile' has a dependency on 'kmod-qca-ovsmgr', which does not exist
WARNING: Makefile 'package/qca/qca-nss-ecm/Makefile' has a dependency on 'kmod-qca-ovsmgr', which does not exist
WARNING: Makefile 'package/qca/qca-nss-ecm/Makefile' has a dependency on 'kmod-qca-ovsmgr', which does not exist
WARNING: Makefile 'package/qca/qca-nss-ecm/Makefile' has a dependency on 'kmod-qca-hyfi-bridge', which does not exist
WARNING: Makefile 'package/qca/qca-nss-ecm/Makefile' has a dependency on 'kmod-qca-mcs', which does not exist
WARNING: Makefile 'package/qca/qca-nss-ecm/Makefile' has a dependency on 'kmod-qca-ovsmgr', which does not exist
WARNING: Makefile 'package/qca/qca-nss-ecm/Makefile' has a dependency on 'kmod-qca-hyfi-bridge', which does not exist
WARNING: Makefile 'package/qca/qca-nss-ecm/Makefile' has a dependency on 'kmod-qca-mcs', which does not exist
 make[1] world

yes it's normal

Yep - normal. Don’t expect those packages will make it in - probably safe to remove those requirements from the makefile so that the log is not spammed with those error messages.

I've been doing some performance testing.
I have an iperf3 server running on a wired-ethernet Ubuntu server. And an iperf3 client running on a Wifi connected Ubuntu server on a laptop.

Looking at CPU stats on the router, I've noticed that softirqs are being processed only on core #0 during iperf3 runs.

I have enabled irqbalance, but interrupts don't appear to be getting spread across CPU cores.
If I do ps | grep irqbalance I see;

root@OpenWrt:~# ps | grep irqbalance
25323 root       972 S    /usr/sbin/irqbalance -f -t 10
27611 root       972 S    /usr/sbin/irqbalance

Here is what I see in /proc/interrupts;

cat /proc/interrupts
root@OpenWrt:~# cat /proc/interrupts 
           CPU0       CPU1       
 16:   11559287   18104258     GIC-0  18 Edge      gp_timer
 18:         53          0     GIC-0  51 Edge      qcom_rpm_ack
 19:          0          0     GIC-0  53 Edge      qcom_rpm_err
 20:          0          0     GIC-0  54 Edge      qcom_rpm_wakeup
 26:          0          0     GIC-0 241 Level     ahci[29000000.sata]
 27:          0          0     GIC-0 210 Edge      tsens_interrupt
 30:     295950      15746     GIC-0 202 Level     adm_dma
 33:  256593932          0     GIC-0 245 Level     nss
 34:          0   15021324     GIC-0 264 Level     nss_queue1
 35:  121836038          0     GIC-0 246 Level     nss
 36:          0          0     GIC-0 265 Level     nss_queue1
 37:          0          0     GIC-0 130 Level     bam_dma
 38:          0          0     GIC-0 128 Level     bam_dma
 40:          0          0   PCI-MSI   0 Edge      aerdrv
 42:          0          0   PCI-MSI 134217728 Edge      aerdrv
 43:         13          0     GIC-0 184 Level     msm_serial0
 44:          2          0   msmgpio   6 Edge      keys
 45:          2          0   msmgpio  54 Edge      keys
 46:          2          0   msmgpio  65 Edge      keys
 47:      12270          0     GIC-0 142 Level     xhci-hcd:usb1
 48:          0          0     GIC-0 237 Level     xhci-hcd:usb3
 49:  104049762          0   PCI-MSI 524288 Edge      ath10k_pci
 50:   18077902          0   PCI-MSI 134742016 Edge      ath10k_pci
IPI0:          0          0  CPU wakeup interrupts
IPI1:          0          0  Timer broadcast interrupts
IPI2:    1519375   19512187  Rescheduling interrupts
IPI3:        592        822  Function call interrupts
IPI4:          0          0  CPU stop interrupts
IPI5:       2112       2230  IRQ work interrupts
IPI6:          0          0  completion interrupts
Err:          0

Shouldn't interrupts be spread amongst cpu0 and cpu1 for the ath10k_pci devices?
Why aren't interrupts being spread evenly among cpu0 and cpu1 for the ath10k_pci devices?

Unfortunately wireless is CPU intensive (and sticks to the CPU that scheduled it) and is not fully offloaded by NSS. Irqbalance does not change the behavior of wireless and its tendency to stick to a single core during heavy loads.

Possible fixes:

  1. Ipq8064 devices for some reason don’t like the latest wireless NSS offloading packages - I reverted the 5.4=>5.8 patch to get wireless to work for those devices. The wireless patches need some debugging to figure out the issue.

  2. There are other creative ways to get after it - here was one proposed patch for another type of device:

1 Like

@ACwifidude
I want try your latest repo for my ea7500 v1
but it looks no ea7500 in the list of "ipq806x: NSS Hardware Offloading .dts and .dtsi changes"
is that ok?
thanks

I’ve been working on simplifying all the work - I made the changes in the eax500 .dtsi file (both the ea7500 v1 and ea8500 include this file and seem to like the same settings).

ea7500 v1 should have the same settings as before. Let me know how it goes!

Got it !
thank you

@ACwifidude Thanks for your thoughtful and thorough response.
I'm glad to hear that what I'm seeing is not out of the realm of working-as-designed.
So far everything else in my build, based on your repo, seems to be working well.

I tested your firmware 20210118 ea7500 and ea8500,both auto-reboot after 10 secs ,after boot 3 times,switch to another firmware automatically

I managed to build custom build. I used default settings from the repo just added different packages. My C2600 booted whithout Wifi (there is no fw includent as i saw later). However i had issues with my eth1 (wan). I couldn't obtain DHCP address. Anyone had such issue? Could it be related to nss somehow?

fyi: R7800-20210118-MasterNSS runs as stable for me as it did before 20210112.

If so, does anyone have any ideas about my loopback problem? (ddns from internal incl. port-forwarding)

Thanks

Loopback problem is a ipq8064 .dts issue. Should be an easy fix.

R7800 and NBG6817 are both ipq8065 and are unaffected.

Having a error when trying to build

error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.

Only that I experienced it too, on R7800, and had to revert to hnyman because it affected crucial functionality. Unable to access my FTP server by its "outside name" while inside the LAN.

So, this is incorrect: "R7800 and NBG6817 are both ipq8065 and are unaffected."

1 Like

If you made any changes it’ll get angry and give you that error.

Try:

git status

That’ll show any and all files that have changed that haven’t been committed.

You are right - read over the post too fast. I don’t have a fix for internal sites. There has to be some sort of firewall configuration tweak that makes it work.

Only thing I've done is made a diffconfig

On branch kernel5.4-nss-qsdk10.0
Your branch is up to date with 'origin/kernel5.4-nss-qsdk10.0'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   diffconfig

no changes added to commit (use "git add" and/or "git commit -a")

Good to know that it is not my configuration that is preventing it from working. Too bad there that this is no solution there. @kesagatame @ACwifidude

1 Like