IPQ806x NSS Drivers

Nice. I consolidated several commits in late May and made an error along the way.

I compared my backup repo to your current repo and lined them up to be the same. The current build is back up to full speed (similar to your findings) on my testing.

2 Likes

Great!
is your repository updated? can i pull and build?
I wanted to see how far i would have gone with your build (i'm @ 12 days now), but i'd update to get back wifi performance..

Everything is updated. Performance looks good.

I need help.
I'm building qca-nss-ssdk and got a err.

/Kompilacja/openwrt-qsdk11/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-10.2.0_musl_eabi/bin/arm-openwrt-linux-muslgnueabi-gcc -I/Kompilacja/openwrt-qsdk11/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/usr/include  -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/common -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/api -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/fal -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/ref -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/adpt -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/phy -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/sal/os -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/sal/os/linux -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/sal/sd -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/sal/sd/linux/hydra_howl -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/sal/sd/linux/uk_interface -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/init -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/shiva -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/isis -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/isisc -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/dess -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/hppe -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/adpt/hppe -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/hppe -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/adpt/mp -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/mp -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/cppe -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/adpt/cppe -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/scomphy -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/hsl/sfp -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/adpt/sfp -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/include/shell_lib -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128 -I/Kompilacja/openwrt-qsdk11/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-10.2.0_musl_eabi/bin/../lib/gcc/arm-openwrt-linux-muslgnueabi/10.2.0/include/ -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/include -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/source -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/source/include -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/source/arch/arm/mach-msm/include -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/arch/arm/mach-msm/include -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/source/arch/arm/include -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/arch/arm/include -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/source/arch/arm/include/asm -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/arch/arm/include/generated -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/arch/arm/include/generated/uapi -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/source/include/uapi -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/include/generated/uapi -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/include/uapi -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/arch/arm/include/uapi -I/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/source/arch/arm/include/asm/mach -include /Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/linux-5.4.128/include/linux/kconfig.h  -DIN_SWCONFIG -DIN_ACL -DIN_FDB -DIN_IGMP -DIN_LEAKY -DIN_LED -DIN_MIB -DIN_MIRROR -DIN_MISC -DIN_PORTCONTROL -DIN_PORTVLAN -DIN_QOS -DIN_RATE -DIN_STP -DIN_VLAN -DIN_COSMAP -DIN_IP -DIN_NAT -DIN_FLOW -DIN_TRUNK -DIN_SEC -DIN_QM -DIN_NAT_HELPER -DIN_INTERFACECONTROL -DIN_CTRLPKT -DIN_SERVCODE -DIN_RSS_HASH -DIN_RFS -DIN_MALIBU_PHY -DIN_AQUANTIA_PHY -DIN_QCA803X_PHY -DIN_QCA808X_PHY -DIN_SFP_PHY -DIN_PHY_I2C_MODE -DIN_VSI -DIN_PPPOE -DIN_BM -DIN_SHAPER -DIN_POLICER -DIN_UNIPHY -DUK_IF -DUK_NL_PROT= -DUK_MINOR_DEV=254  -Wall -DVERSION=\"2.0.0.2\" -DBUILD_DATE=\"2021-07-01-20:50:24\" -DOS=\"linux\" -D"KBUILD_STR(s)=#s" -D"KBUILD_MODNAME=KBUILD_STR(qca-ssdk)" -DSHIVA -DISIS -DISISC -DDESS -DHPPE -DMP -DCPPE -DSCOMPHY -DIN_SFP -DKVER34 -DKVER32 -DLNX26_22 -D__KERNEL__ -DKERNEL_MODULE -DMODULE -nostdinc -DBOARD_IPQ806X -mlittle-endian -Wundef -Wstrict-prototypes -Wno-trigraphs -Werror -fno-strict-aliasing -fno-common -Wno-format-security -fno-delete-null-pointer-checks -O2 -fno-dwarf2-cfi-asm -mabi=aapcs-linux -mno-thumb-interwork -mfpu=vfp -funwind-tables -marm -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -Wframe-larger-than=2048 -fno-stack-protector -Wno-unused-but-set-variable -fomit-frame-pointer -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -DCC_HAVE_ASM_GOTO    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(mem)"  -c malibu_phy.c -o /Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/build/linux/KSLIB/malibu_phy.o
malibu_phy.c: In function 'malibu_phy_set_powersave':
malibu_phy.c:384:6: error: 'status' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  384 |   if (status == A_FALSE) {
      |      ^
cc1: all warnings being treated as errors
make[5]: *** [/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/make/target.mk:13: malibu_phy.o] Error 1
make[5]: Leaving directory '/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/src/hsl/phy'
make[4]: *** [/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/make/target.mk:7: obj] Error 1
make[4]: Leaving directory '/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/src/hsl'
make[3]: *** [Makefile:27: kslib_o] Error 1
make[3]: Leaving directory '/Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353'
make[2]: *** [Makefile:149: /Kompilacja/openwrt-qsdk11/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x_generic/qca-ssdk-hnat/qca-ssdk-06e40353/.built] Error 2
make[2]: Leaving directory '/Kompilacja/openwrt-qsdk11/package/qca/qca-ssdk'
time: package/qca/qca-ssdk/hnat/compile#90.80#14.40#108.58
    ERROR: package/qca/qca-ssdk failed to build (build variant: hnat).
make[1]: *** [package/Makefile:114: package/qca/qca-ssdk/compile] Error 1
make[1]: Leaving directory '/Kompilacja/openwrt-qsdk11'
make: *** [/Kompilacja/openwrt-qsdk11/include/toplevel.mk:230: package/qca-ssdk/compile] Error 2

How to fix it?

source file here
https://source.codeaurora.org/quic/cc-qrdk/oss/lklm/qca-ssdk/tree/src/hsl/phy/malibu_phy.c?h=NHSS.QSDK.11.2#n371

(anyway i started to push 11.4 patches) (patches are in the robimark nss-qca package feeds... still need to push kernel patches) (also i have a experimental patch that could finally introduce fixed nss freq scaling :D)
I'm at the start of the full support
Currently

  • system panic if nss-gmac is used with the slowpath (no nss firmware loaded) (kernel panic to fix)
  • ecm seems to have problem with the chain notifier (we should use the normal notifier anyway as the intent of the new project is keep things as clean as possible... so no extra feature if not mandatory)
  • ecm seems to have some problem with ipv6 (kernel panic with memcpy buffer overflow) (only experienced with the chain notifier... still can't understand if it's needed for ipq806x)
  • offload works for very basic image (with my prod image with unbound and many other stuff offload seems to not work, as ecm can't register with the notifier. Something register instead of ecm?)
  • About kernel patches... I'm currently using the ipq807x patch about nss offload, i still have to push the patch for the nss additional gcc stuff...

In short 11.4 with 11.0 firmware is there and works with some hiccups. I just need to fix things here and there

And then start to work on the clients stuff mainly pppoe and other stuff...

3 Likes

Thanks for the info.
Privately, I imported about 30 network patches from CodeAurora (all related to qca-nss-ecm).
This ensures that the packages require a minimum of patching.
Below is a screen of what I have done on qsdk11.

I only have a problem with qca-nss-ssdk - for you it's probably a simple matter. I don't know how to fix this function's bug which causes compiler problem.

Guys random question... @ACwifidude Do you know if the ipv4 nss stats goes up if wifi is not offloaded?

Anyway still investigating what block ecm from registering with netfilter...
For now i'm testing qsdk11.4 with 11.0 firmware
offload + wifi offload and (still don't know if it's actually working) nss freq scaling

Now i'm on testing stability and fixing small things... (while i test for stability)
Still have to fix the bug with gmac drv not working without nss firmware (kernel crash with complain about dma)

Also @ACwifidude Since you know better than me what version of the wifi offload patch you are using?
the work or the original one from qsdk?

Also i need someone with the original firmware flashed and that can execute command from ssh serial or telnet... i need some stats from the original firmware.

It seems to me that WIFI stats normally charge RX / TX transfer.
About 2 months ago, after quite big changes, the WIFI acceleration stopped working on master branch.
Since then, I have been building on openwrt-21.02, because I don't know what caused the problem in the master branch. I even did a test and on the master branch the WIFI acceleration works fine as I replace the directory "target/linux/ipq806x" from the openwrt-21.02 branch.
Has it already been fixed - I don't know, I haven't checked.

I hope I helped.

I had a couple builds that were not wifi offloaded and I have separate APs from a wired only r7800 (main router has wifi turned off). The NSS tx/rx stats went up all the same no matter if wifi was on/off and with wifi no offloading/yes offloading.

I always have two routers running only wifi and one with wifi turned off. If you want any additional tests done let me know and I can produce some stats. :sunglasses:

Only one patch has a date 3 Jan 2019 (pretty sure it is basically the same as your repo)

    s1a                           1    1      0 unknown  1100mV     0mA  1050mV  1150mV
       soc:l2-cache-l2            1                                 0mA  1100mV  1100mV
    s1b                           1    1      0 unknown  1150mV     0mA  1050mV  1150mV
       soc:nss-cc-nss             1                                 0mA  1150mV  1150mV
    s2a                           1    1      0 unknown   862mV     0mA   775mV  1275mV
       cpu0-cpu                   1                                 0mA   855mV   945mV
    s2b                           1    1      0 unknown   862mV     0mA   775mV  1275mV
       cpu1-cpu                   1                                 0mA   855mV   945mV

so clear 1?!?!

@ACwifidude i need to check if the wifi api were used on any original firmware in ipq806x....
Can you install the original firmware on a router and check that? (the stats of nss-drv)

I posted this for quarky today (AP running master). Let me know if you need anything else:


OpenWrt SNAPSHOT, r17092+16-e4cfefa9fc
 -----------------------------------------------------
root@OpenWrt:~# cat /sys/kernel/debug/qca-nss-drv/stats/virt_if
if_num 29 stats start:

rx_packets = 1073227
rx_bytes = 85547444
rx_dropped = 0
tx_packets = 1182411
tx_bytes = 154344950
tx_enqueue_failed = 0
shaper_enqueue_failed = 0
ocm_alloc_failed = 0
if_num 29 stats end:

if_num 31 stats start:

rx_packets = 5244618
rx_bytes = 2258864104
rx_dropped = 15919
tx_packets = 1291009
tx_bytes = 351511316
tx_enqueue_failed = 0
shaper_enqueue_failed = 0
ocm_alloc_failed = 0
if_num 31 stats end:

base node stats begin (shown on if_num 31):

active_interfaces = 4
ocm_alloc_failed = 0
ddr_alloc_failed = 0
base node stats end.

That is the actual confusion, i need to check i f we have stats in a original oem firmware for the wifi stats in the sense of "cat /sys/kernel/debug/qca-nss-drv/stats/wifi"
I suspect they actually accellerate part of the wifi handling and we never notice that

If we confirm this idea the crazy part will be check if i can manage to create an entire driver to make use of the api

I've read thru some of the nss-drv WiFi codes. It appears that the ipq806x NSS firmware is handling a lot of MAC functionalitites. If my memory serves, the firmware is doing what hostapd is doing for OpenWRT. If true, it will be a big tasks to write drivers to replace those functionalities.

Have you come across some driver codes somewhere that will make the task easier?

they have an entire custom wifi driver and i notice some call to the wifi api that are not actually the wifili (used by new ipq807x)

So i got curious if the wifi api are actually for ipq806x that offload only some part of the wifi driver

we have source code of the wifi driver that use these api in the leaked ipq807x qsdk10 sdk

From what I know, the wifili driver is meant for the 60GHz band radio, so probably not useful for us.

Maybe someone with existing stock firmware can check, as you suggested, if nss-drv stats has values for the WiFi counters. Maybe at the same time check if hostapd is used for stock firmware.

I would think trying to replicate what QCA did to accelerate WiFi for ipq806x would be a huge tasks tho. as the mac80211 stack is quite complicated.

wifili is also used for wifi in ipq807x... it what they use with the new soc...

all the wifi api are for legacy stuff and not used at all on new soc so my idea is that they use that api for the ipq806x... they don't offload all the stuff but could be they offload all the wmi and mgmt stuff to nss

but for now crazy idea is to add support for the upstream gmac driver for the offload stuff LOL...

1 Like

Interesting


OpenWrt SNAPSHOT, r17092+16-e4cfefa9fc
 -----------------------------------------------------
root@OpenWrt:~# uptime
 07:23:38 up 2 days, 19:57,  load average: 0.08, 0.03, 0.01


OpenWrt SNAPSHOT, r17092+16-e4cfefa9fc
 -----------------------------------------------------
root@OpenWrt:~# cat /sys/kernel/debug/qca-nss-drv/stats/wifi
wifi stats start:

WIFI ID: 0
RX_PACKETS = 0
RX_QUEUE_0_DROPPED = 0
RX_QUEUE_1_DROPPED = 0
RX_QUEUE_2_DROPPED = 0
RX_QUEUE_3_DROPPED = 0
TX_PACKETS = 0
TX_DROPPED = 0
TX_TRANSMIT_COMPLETED = 0
TX_MGMT_RECEIVED = 0
TX_MGMT_TRANSMITTED = 0
TX_MGMT_DROPPED = 0
TX_MGMT_COMPLETED = 0
TX_INV_PEER_ENQ_CNT = 0
RX_INV_PEER_RCV_CNT = 0
RX_PN_CHECK_FAILED = 0
RX_PKTS_DELIVERD = 0
RX_BYTES_DELIVERED = 0
TX_BYTES_COMPLETED = 0
RX_DELIVER_UNALIGNED_DROP_CNT = 0
TIDQ_ENQUEUE_CNT_0 = 0
TIDQ_ENQUEUE_CNT_1 = 0
TIDQ_ENQUEUE_CNT_2 = 0
TIDQ_ENQUEUE_CNT_3 = 0
TIDQ_ENQUEUE_CNT_4 = 0
TIDQ_ENQUEUE_CNT_5 = 0
TIDQ_ENQUEUE_CNT_6 = 0
TIDQ_ENQUEUE_CNT_7 = 0
TIDQ_DEQUEUE_CNT_0 = 0
TIDQ_DEQUEUE_CNT_1 = 0
TIDQ_DEQUEUE_CNT_2 = 0
TIDQ_DEQUEUE_CNT_3 = 0
TIDQ_DEQUEUE_CNT_4 = 0
TIDQ_DEQUEUE_CNT_5 = 0
TIDQ_DEQUEUE_CNT_6 = 0
TIDQ_DEQUEUE_CNT_7 = 0
TIDQ_ENQUEUE_FAIL_CNT_0 = 0
TIDQ_ENQUEUE_FAIL_CNT_1 = 0
TIDQ_ENQUEUE_FAIL_CNT_2 = 0
TIDQ_ENQUEUE_FAIL_CNT_3 = 0
TIDQ_ENQUEUE_FAIL_CNT_4 = 0
TIDQ_ENQUEUE_FAIL_CNT_5 = 0
TIDQ_ENQUEUE_FAIL_CNT_6 = 0
TIDQ_ENQUEUE_FAIL_CNT_7 = 0
TIDQ_TTL_EXPIRE_CNT_0 = 0
TIDQ_TTL_EXPIRE_CNT_1 = 0
TIDQ_TTL_EXPIRE_CNT_2 = 0
TIDQ_TTL_EXPIRE_CNT_3 = 0
TIDQ_TTL_EXPIRE_CNT_4 = 0
TIDQ_TTL_EXPIRE_CNT_5 = 0
TIDQ_TTL_EXPIRE_CNT_6 = 0
TIDQ_TTL_EXPIRE_CNT_7 = 0
TIDQ_DEQUEUE_REQ_CNT_0 = 0
TIDQ_DEQUEUE_REQ_CNT_1 = 0
TIDQ_DEQUEUE_REQ_CNT_2 = 0
TIDQ_DEQUEUE_REQ_CNT_3 = 0
TIDQ_DEQUEUE_REQ_CNT_4 = 0
TIDQ_DEQUEUE_REQ_CNT_5 = 0
TIDQ_DEQUEUE_REQ_CNT_6 = 0
TIDQ_DEQUEUE_REQ_CNT_7 = 0
TOTAL_TIDQ_DEPTH = 0
RX_HTT_FETCH_CNT = 0
TOTAL_TIDQ_BYPASS_CNT = 0
GLOBAL_Q_FULL_CNT = 0
TIDQ_FULL_CNT = 0

WIFI ID: 1
RX_PACKETS = 0
RX_QUEUE_0_DROPPED = 0
RX_QUEUE_1_DROPPED = 0
RX_QUEUE_2_DROPPED = 0
RX_QUEUE_3_DROPPED = 0
TX_PACKETS = 0
TX_DROPPED = 0
TX_TRANSMIT_COMPLETED = 0
TX_MGMT_RECEIVED = 0
TX_MGMT_TRANSMITTED = 0
TX_MGMT_DROPPED = 0
TX_MGMT_COMPLETED = 0
TX_INV_PEER_ENQ_CNT = 0
RX_INV_PEER_RCV_CNT = 0
RX_PN_CHECK_FAILED = 0
RX_PKTS_DELIVERD = 0
RX_BYTES_DELIVERED = 0
TX_BYTES_COMPLETED = 0
RX_DELIVER_UNALIGNED_DROP_CNT = 0
TIDQ_ENQUEUE_CNT_0 = 0
TIDQ_ENQUEUE_CNT_1 = 0
TIDQ_ENQUEUE_CNT_2 = 0
TIDQ_ENQUEUE_CNT_3 = 0
TIDQ_ENQUEUE_CNT_4 = 0
TIDQ_ENQUEUE_CNT_5 = 0
TIDQ_ENQUEUE_CNT_6 = 0
TIDQ_ENQUEUE_CNT_7 = 0
TIDQ_DEQUEUE_CNT_0 = 0
TIDQ_DEQUEUE_CNT_1 = 0
TIDQ_DEQUEUE_CNT_2 = 0
TIDQ_DEQUEUE_CNT_3 = 0
TIDQ_DEQUEUE_CNT_4 = 0
TIDQ_DEQUEUE_CNT_5 = 0
TIDQ_DEQUEUE_CNT_6 = 0
TIDQ_DEQUEUE_CNT_7 = 0
TIDQ_ENQUEUE_FAIL_CNT_0 = 0
TIDQ_ENQUEUE_FAIL_CNT_1 = 0
TIDQ_ENQUEUE_FAIL_CNT_2 = 0
TIDQ_ENQUEUE_FAIL_CNT_3 = 0
TIDQ_ENQUEUE_FAIL_CNT_4 = 0
TIDQ_ENQUEUE_FAIL_CNT_5 = 0
TIDQ_ENQUEUE_FAIL_CNT_6 = 0
TIDQ_ENQUEUE_FAIL_CNT_7 = 0
TIDQ_TTL_EXPIRE_CNT_0 = 0
TIDQ_TTL_EXPIRE_CNT_1 = 0
TIDQ_TTL_EXPIRE_CNT_2 = 0
TIDQ_TTL_EXPIRE_CNT_3 = 0
TIDQ_TTL_EXPIRE_CNT_4 = 0
TIDQ_TTL_EXPIRE_CNT_5 = 0
TIDQ_TTL_EXPIRE_CNT_6 = 0
TIDQ_TTL_EXPIRE_CNT_7 = 0
TIDQ_DEQUEUE_REQ_CNT_0 = 0
TIDQ_DEQUEUE_REQ_CNT_1 = 0
TIDQ_DEQUEUE_REQ_CNT_2 = 0
TIDQ_DEQUEUE_REQ_CNT_3 = 0
TIDQ_DEQUEUE_REQ_CNT_4 = 0
TIDQ_DEQUEUE_REQ_CNT_5 = 0
TIDQ_DEQUEUE_REQ_CNT_6 = 0
TIDQ_DEQUEUE_REQ_CNT_7 = 0
TOTAL_TIDQ_DEPTH = 0
RX_HTT_FETCH_CNT = 0
TOTAL_TIDQ_BYPASS_CNT = 0
GLOBAL_Q_FULL_CNT = 0
TIDQ_FULL_CNT = 0

WIFI ID: 2
RX_PACKETS = 0
RX_QUEUE_0_DROPPED = 0
RX_QUEUE_1_DROPPED = 0
RX_QUEUE_2_DROPPED = 0
RX_QUEUE_3_DROPPED = 0
TX_PACKETS = 0
TX_DROPPED = 0
TX_TRANSMIT_COMPLETED = 0
TX_MGMT_RECEIVED = 0
TX_MGMT_TRANSMITTED = 0
TX_MGMT_DROPPED = 0
TX_MGMT_COMPLETED = 0
TX_INV_PEER_ENQ_CNT = 0
RX_INV_PEER_RCV_CNT = 0
RX_PN_CHECK_FAILED = 0
RX_PKTS_DELIVERD = 0
RX_BYTES_DELIVERED = 0
TX_BYTES_COMPLETED = 0
RX_DELIVER_UNALIGNED_DROP_CNT = 0
TIDQ_ENQUEUE_CNT_0 = 0
TIDQ_ENQUEUE_CNT_1 = 0
TIDQ_ENQUEUE_CNT_2 = 0
TIDQ_ENQUEUE_CNT_3 = 0
TIDQ_ENQUEUE_CNT_4 = 0
TIDQ_ENQUEUE_CNT_5 = 0
TIDQ_ENQUEUE_CNT_6 = 0
TIDQ_ENQUEUE_CNT_7 = 0
TIDQ_DEQUEUE_CNT_0 = 0
TIDQ_DEQUEUE_CNT_1 = 0
TIDQ_DEQUEUE_CNT_2 = 0
TIDQ_DEQUEUE_CNT_3 = 0
TIDQ_DEQUEUE_CNT_4 = 0
TIDQ_DEQUEUE_CNT_5 = 0
TIDQ_DEQUEUE_CNT_6 = 0
TIDQ_DEQUEUE_CNT_7 = 0
TIDQ_ENQUEUE_FAIL_CNT_0 = 0
TIDQ_ENQUEUE_FAIL_CNT_1 = 0
TIDQ_ENQUEUE_FAIL_CNT_2 = 0
TIDQ_ENQUEUE_FAIL_CNT_3 = 0
TIDQ_ENQUEUE_FAIL_CNT_4 = 0
TIDQ_ENQUEUE_FAIL_CNT_5 = 0
TIDQ_ENQUEUE_FAIL_CNT_6 = 0
TIDQ_ENQUEUE_FAIL_CNT_7 = 0
TIDQ_TTL_EXPIRE_CNT_0 = 0
TIDQ_TTL_EXPIRE_CNT_1 = 0
TIDQ_TTL_EXPIRE_CNT_2 = 0
TIDQ_TTL_EXPIRE_CNT_3 = 0
TIDQ_TTL_EXPIRE_CNT_4 = 0
TIDQ_TTL_EXPIRE_CNT_5 = 0
TIDQ_TTL_EXPIRE_CNT_6 = 0
TIDQ_TTL_EXPIRE_CNT_7 = 0
TIDQ_DEQUEUE_REQ_CNT_0 = 0
TIDQ_DEQUEUE_REQ_CNT_1 = 0
TIDQ_DEQUEUE_REQ_CNT_2 = 0
TIDQ_DEQUEUE_REQ_CNT_3 = 0
TIDQ_DEQUEUE_REQ_CNT_4 = 0
TIDQ_DEQUEUE_REQ_CNT_5 = 0
TIDQ_DEQUEUE_REQ_CNT_6 = 0
TIDQ_DEQUEUE_REQ_CNT_7 = 0
TOTAL_TIDQ_DEPTH = 0
RX_HTT_FETCH_CNT = 0
TOTAL_TIDQ_BYPASS_CNT = 0
GLOBAL_Q_FULL_CNT = 0
TIDQ_FULL_CNT = 0


wifi stats end

This is from what firmware? and using wifi i assume

NSS won't do much for "single" wifi device usage right? Say I copy a file using wifi to to a local device (that's on wired ethernet) using SMB, the bandwidth will be limited by AC specifications and not the software?