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

I’d get a new power supply. NSS requires your hardware to be in good shape. Many ipq806x devices are now several years old and are prone to power issues on older power supplies when seeking max performance.

I have three r7800s with no crashes. They all last ~7-14 days and only reboot when I flash them with my new 5.10 build. I focus on the basics to get good stability: All the hardware is in good working order, I run simple settings, and I run with most of the extras turned off.

 -----------------------------------------------------
 OpenWrt SNAPSHOT, r18535+34-97f5617259
 -----------------------------------------------------
root@OpenWrt:~# uname -a
Linux OpenWrt 5.10.90 #0 SMP Mon Jan 10 00:58:30 2022 armv7l GNU/Linux
root@OpenWrt:~# uptime
 15:20:01 up 4 days, 17:47,  load average: 0.00, 0.00, 0.00
root@OpenWrt:~# 

C2600 tp link still rebooting, I will try new power supply

Another very happy NSS user. I was able to compile and get NSS working on my r7800 today. I was able to achieved the max download/upload speed I paid for with NSS build. Very cool... Thank you to everyone for the support and special thanks to @ACwifidude for making the patches available to everyone wants to make their own image.

Screen Shot 2022-01-14 at 3.17.20 PM
Screen Shot 2022-01-14 at 3.22.06 PM

I do have one minor inconvenient I like to ask for some help. It doesn't seem to be causing any issue to the WiFi but it does flood my router log with the below error message every few seconds. mesh1 is one of my mesh WiFi interface that links the other routers in the house to provide internet connection to devices.

Fri Jan 14 14:59:42 2022 kern.err kernel: [  294.529225] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM

I search this and other thread for solution, so far I can't find any to get rid of the error message or fix the problem that causing these log entries. I appreciate any help or pointer to posts which might help resolve this issue.

1 Like

NSS fq codel will average “high B” / “low A” on most bufferbloat measures.

Corresponding to what approximate ms of lag? Thanks.

Do you have many WiFi interfaces created in your R7800? You could be running into the NSS virtual interface limits (which is 16). Each WiFi interface registered will take up 2 interfaces.

From the source code, NSS_TX_FAILURE_BAD_PARAM is thrown when the NSS virtual interface number is invalid. I couldn't figure out how this can happen tho. If the WiFi interface has been successfully registered with NSS, this error shouldn't have been thrown. You may want to restart your R7800 and look at the kernel/system logs and see if there are NSS errors logged.

When the driver finds that it fails to send the data packet to NSS, it'll falls back to sending it back up the Linux network stack. That is why you do not see any issue. But this will introduce overhead in the data processing path and likely slows down your WiFi network thru the mesh network.

1 Like

I have total of 8 WiIFi interface, 2 under the 2GHz radio and 6 under the 5GHz radio. I try removing one of the interface under the 5GHz radio and rebooted the router, still doesn't solve the issue. Log still getting spammed.

Below are NSS log entries from the dmesg command after the reboot. Let me know if I should post the full log. Based on the below logs, look like the WiFi interface are getting created but later destroyed and tries to add it again, but said it already exists. Here's how one of my mesh WiFi interface config look like.

wireless.wifinet1=wifi-iface
wireless.wifinet1.device='radio0'
wireless.wifinet1.mode='mesh'
wireless.wifinet1.mesh_fwding='1'
wireless.wifinet1.mesh_rssi_threshold='0'
wireless.wifinet1.network='guest'
wireless.wifinet1.encryption='sae'
wireless.wifinet1.key='secret key'
wireless.wifinet1.mesh_id='mesh3'
wireless.wifinet1.ifname='mesh3'

Below are NSS log entries from the dmesg command after the reboot

[   22.948321] * Driver    :NSS GMAC Driver - RTL v(3.72a)
[   23.138562] nss_driver - fw of size 536324  bytes copied to load addr: 40000000, nss_id : 0
[   23.139842] nss_driver - Turbo Support 1
[   23.184053] nss_driver - fw of size 218224  bytes copied to load addr: 40800000, nss_id : 1
[   23.191360] dc7300f5: nss core 0 booted successfully
[   23.246074] 1306d9fd: nss core 1 booted successfully
[   23.288206] <NSS-CRYPTO>:module loaded (platform - IPQ806x, build - Build_ID - 01/15/22, 01:22:15)
[   23.289650] <NSS-CRYPTO>:Register with NSS driver-
[   23.408120] <NSS-CRYPTO>:NSS Firmware initialized
[   23.408285] <NSS-CRYPTO>:probing engine - 0
[   23.411792] <NSS-CRYPTO>:Device Tree node found
[   23.415895] <NSS-CRYPTO>:init completed for Pipe Pair[0]
[   23.420416] <NSS-CRYPTO>:init completed for Pipe Pair[1]
[   23.430429] <NSS-CRYPTO>:probing engine - 1
[   23.435629] <NSS-CRYPTO>:Device Tree node found
[   23.441865] <NSS-CRYPTO>:init completed for Pipe Pair[0]
[   23.444540] <NSS-CRYPTO>:init completed for Pipe Pair[1]
[   23.455981] <NSS-CRYPTO>:probing engine - 2
[   23.460497] <NSS-CRYPTO>:Device Tree node found
[   23.464556] <NSS-CRYPTO>:init completed for Pipe Pair[0]
[   23.469087] <NSS-CRYPTO>:init completed for Pipe Pair[1]
[   23.475950] <NSS-CRYPTO>:probing engine - 3
[   23.479932] <NSS-CRYPTO>:Device Tree node found
[   23.483819] <NSS-CRYPTO>:init completed for Pipe Pair[0]
[   23.488336] <NSS-CRYPTO>:init completed for Pipe Pair[1]
[   66.057835] mesh1: Created a NSS virtual interface
[   66.919126] mesh3: Created a NSS virtual interface
[   73.728500] iot1: Created a NSS virtual interface
[   73.744676] mesh5: Created a NSS virtual interface
[   73.775170] mesh1: Destroyed NSS virtual interface
[   73.789038] mesh1: Cannot create a NSS virtual interface. Already exists[n2h:28, h2n:29]!
[   73.817895] mesh1: Destroyed NSS virtual interface
[   73.826450] mesh1: Cannot create a NSS virtual interface. Already exists[n2h:28, h2n:29]!
[   75.313598] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   76.170753] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   76.319265] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   79.345546] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   80.310927] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   80.666983] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   81.225364] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   81.329529] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   81.691022] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   81.931126] mesh3: Destroyed NSS virtual interface
[   82.171739] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   82.353548] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   82.970649] mesh3: Cannot create a NSS virtual interface. Already exists[n2h:30, h2n:31]!
[   82.970876] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   83.178268] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   83.311593] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   84.202191] mesh1: NSS TX failed with error[7]: NSS_TX_FAILURE_BAD_PARAM
[   84.570095] print1: Created a NSS virtual interface

It looks like there may be a bug with the code used by @ACwifidude when a NSS virtual interface is destroyed. The NSS context is not getting reset to NULL.

As a workaround, without restarting the router, you can, from the Luci GUI, remove the mesh1 and mesh3 (this also has issue from your log), then reconfigure them manually. This should make mesh1 and mesh3 work.

You said you made your own build? You may want to try this patch for the NSS support for mac80211. It works for me when WiFi interface is destroyed and recreated. Should work for master or openwrt-21.02 branch mac80211.

Alternatively, you may want to add in another line of code in the patch to reset the NSS context as follows:

static void ieee80211_destroy_nss_virtif(struct ieee80211_sub_if_data *sdata)
{
	if (sdata->nssctx) {
		nss_virt_if_destroy_sync(sdata->nssctx);
		sdata->nssctx = NULL; /* Add this new line */
		sdata_info(sdata, "Destroyed NSS virtual interface\n");
	}
}

HTH.

1 Like

Oh god..
I just figured out I'm using 12V 2A!!
I bought the router used and I never checked out if the power supply was correct or not, I going to buy 5A power supply and try the firmware you suggest, hope it going to fix the reboot and wifi issues, btw are you using ath10k or -ct? :slight_smile:
Thanks!!!

1 Like

5 Amps can be overkill here, original adapter marked as 12V / 3.5A. Ath10k-ct works better for me, but it is subjective.

5A no problem.
is the maximum current capacity that the transformer can supply, the equipment will use what it needs. what matters is to respect voltage and polarity. luck.

2A is enough, should be not the root causes on this.

I think the R7800 comes with a 12v 2.5A adapter.

R7800 comes with 3.5A, but I tested on my set, average <0.7A working current.

My r7800s have netgear 3.5A adapters.

@quarky thanks for the patch. I’ll add the new line and see if it helps.

1 Like

Probably the working current depends on the WLAN Tx power output too. If both 2.4 and 5GHz are at 1000 mW that means more than 2A. My adapters on 4 R7800 routers are rated at 3.5A.

1000mW is 1W, if it's 2A it's 24W, I don't think it justifies anything.

1 Like

@xeonpj Thank you.
I've messed the things. Sorry for that.
Here it is, from Netgear official data source.

1 Like

Is it possible to install or compile for Armor Z1 NBG6816

EDIT - deleted - incorrect info - my apologies

Thank for reply, I meant since it's the same hardware as r7500 v1 I thought it might be possible

1 Like