Commit Graph

15 Commits

Author SHA1 Message Date
Sean Khan
b217c08798 nss-drv: Add diagnostic gathering utility
This is meant to ease debugging when asking for support. Just run the
command "nss_diag" and include in your issues/forum posts.

Example of output
```
     MODEL: Linksys MX5300
   OPENWRT: r27608+169-3f98f68573
IPQ BRANCH: qualcommax-6.x-nss-mx4300-6.11
IPQ COMMIT: 2153dceb34
  IPQ DATE: 2024-10-03
    NSS FW: NSS.HK.11.4.0.5-6-R
  MAC80211: v6.11-0-g98f7e32f20d2
 ATH11K FW: WLAN.HK.2.12-01368-QCAHKSWPL_SILICONZ-1
       GRO: wan         : on
            br-lan      : on
            lan1        : on
            lan2        : on
            lan3        : on
            lan4        : on
            phy0-mesh0  : on
            phy1-ap0    : on
            phy2-ap0    : on

 NSS PKGS: kmod-qca-nss-cfi-cryptoapi - 6.6.53.12.5.2022.12.15~5cd07ce-r3
           kmod-qca-nss-crypto - 6.6.53.12.5.2022.12.15~3c5a574-r3
           kmod-qca-nss-dp - 6.6.53.2024.04.16~5bf8b91e-r1
           kmod-qca-nss-drv - 6.6.53.11.4.0.5.2021.09.13~53e5863-r13
           kmod-qca-nss-drv-bridge-mgr - 6.6.53.11.4.0.5.2021.08.17~c4049d1-r7
           kmod-qca-nss-drv-igs - 6.6.53.11.4.0.5.2021.08.17~c4049d1-r7
           kmod-qca-nss-drv-qdisc - 6.6.53.11.4.0.5.2021.08.17~c4049d1-r7
           kmod-qca-nss-drv-vlan-mgr - 6.6.53.11.4.0.5.2021.08.17~c4049d1-r7
           kmod-qca-nss-drv-wifi-meshmgr - 6.6.53.11.4.0.5.2021.08.17~c4049d1-r7
           kmod-qca-nss-ecm - 6.6.53.12.5.5.2024.09.02~bd5057b-r1
           nss-eip-firmware - 2.5.7-r3
           nss-firmware-default - 2024.08.04~794fe373-r1
           nss-firmware-ipq8074 - 2024.08.04~794fe373-r1
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-03 06:24:03 -04:00
Sean Khan
0b71120ef6 nss-drv: move nss_empty_buf* to different cores
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-13 19:34:41 -04:00
Sean Khan
ae952634ca nss-drv: fix formatting of hotplug script
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-13 19:31:04 -04:00
Sean Khan
217a4fa43b nss-drv: add skb_recycler init script
This script is meant to set various skb_recycler settings. There is a
similar version in QSDK, but it's packaged in the main repo, rather than
an external package like 'qca-nss-drv'. To avoid making too many changes
in the main repo, introduce this script in `qca-nss-drv`.

This script will read the following config:

/etc/config/skb_recycler

```
config skb_recycler 'opt'
	option max_skbs '1024'
	option max_spare_skbs '256'
	option enable '1'
```

Users are encouraged to experiment disabling `skb_recycler` to see if
memory leaks are still occuring, especially on 512M boards. There are issues
currently where skb_recycler corrupts skbs during times of high traffic, but there
wasn't a way to completely disable it.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-13 18:43:52 -04:00
Sean Khan
cc45b20f63 treewide: remove excutable bit and apply on install
Files should really not stored as executable.

Only make them excutable on package installation.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-08 11:06:17 -04:00
Sean Khan
b290b88fc0 nss-drv: clean up hotplug script
Cleaned up formatting and changed the way console messages are printed.

The message will now properly show up in dmesg output with color, and
date formatting rather than a non descriptive message like the following:

Before:
```
/lib/firmware/qca-nss0-retail.bin 33
/lib/firmware/qca-nss1-retail.bin 33
```

After:
```
[Mon Jul  8 07:21:12 2024] hotplug: symlinking /lib/firmware/qca-nss0.bin to /lib/firmware/qca-nss0-retail.bin
[Mon Jul  8 07:21:12 2024] hotplug: symlinking /lib/firmware/qca-nss1.bin to /lib/firmware/qca-nss1-retail.bin
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-08 10:52:53 -04:00
Sean Khan
07cee3d981 qca-nss-drv: Rework smp_affinity logic
Reworked flawed smp_affinity logic. It was assumed that all 'nss_*' IRQs
needed to be equally balanced across all CPUs. However, what ends up
happening most of the time is messing with scheduling, thrashing, missed
cache and high context switching.

For each core:
  1. nss_empty_buf_sos
  2. nss_empty_buf_queue
  3. nss_queue0

The IRQs should be kept on the same CPU. Doing so allows NSS cores to
properly feed and empty the queues.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-02 20:44:35 -04:00
Sean Khan
5c4eb1c3b7 qca-nss-drv: Improve nss_stats script
allow users to specify specific metric to view, rather than
everything

Available stats objects:
      cpu
      crypto_cmn
      dma
      drv
      dynamic_if
      edma
      eth_rx
      ipv4
      ipv6
      n2h
      unaligned
      virt_if
      wifi_ext_vdev
      wifi
      mesh

Usage: nss_stats obj1 obj2 ...

Default with no parameters shows all

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-06-23 17:12:55 -04:00
Qosmio
f47aab0ae0 qca-nss-drv: better logging + handle more IRQs + sane defaults
1.) Rather than modify upstream `smp_affinity` script, move changes into
    this init script.

    Primarily: "xhci-hcd:usb1", "ppdu-end-interrupts-mac1", "ppdu-end-interrupts-mac2"

2.) Move logging into separate function, and better account for NSS core
    specific output.

3.) Set the defaults for `enable_rps` and `enable_log` to true ('1').

4.) Change startup to sequence to `94` [after `smp_affinity` (93)]

Signed-off-by: Qosmio <datapronix@protonmail.com>
2024-04-08 18:36:03 -04:00
Qosmio
41f1217c5e qca-nss-drv: Rework smp_affinity + Add nss_stats
1.) Moved `set_affinity` function outside of `enable_rps`
2.) Added 2 new functions `bitmask_to_cpus` and `cpus_to_bitmask`
    a.) bitmask_to_cpus - Takes a bitmask of CPUs and returns a
        list of CPU numbers. (i.e. `bitmask_to_cpus "f"` -> 0,1,2,3)
    b.) cpus_to_bitmask - Takes a comma/space or range list of CPUs and returns
        a bitmask. (i.e. `cpus_to_bitmask "2,3"` -> c)
3.) Changed logic of `set_affinity` to now use physical CPUs rather than
    knowing the bitmask. This should make it more straight forward when
    testing changes
4.) Added an UCI option `enable_log` to enable/disable logging output to
   `logger`. Default is `1` (on)
5.) Removed unused UCI options `nss_firmware *`
6.) Changed the way UCI options are retrieved to account for missing
    options.
7.) Moved '/lib/debug/qca-nss-drv' to '/usr/bin/nss_stats' so it's in
    $PATH and has a more intuitive name
2024-04-06 19:59:50 -04:00
anonymous-one
29f9ba9648
Better handling of nss_queue + etc affinity
Using the previous version, not all nss related interrupts were being balanced across the available CPU cores.

This makes sure they are as well as moving a bit more off cpu0.
2024-04-06 10:32:14 +02:00
Qosmio
911ca7392c qca-nss-drv: show cpu_load_ubi in output 2024-03-15 19:43:57 -04:00
Qosmio
79597046e6 qca-nss-drv: Rework debug script to be more helpful
This version will print all non-zero stats, and highlight certain
keywords to better aide debugging.
2024-02-28 22:55:45 -05:00
Qosmio
dae6cba360 qca-nss-drv: Remove invalid sysctl settings
These values are now module parameters.
2024-02-28 22:54:05 -05:00
Qosmio
8d54d726c2 Move non-upstream NSS packages back into repo
To keep fork as closely synced with upstream, move NSS packages back
into repository. Not sure why they were moved out from my original fork.
* nss-firmware
* qca-nss-crypto
* qca-nss-cfi

Removed the following:
* mhz (already available in packages repo)
* qrtr (unecessary, and has been broken for years)

Also moved packages out of `qca` and back into root directory.
2024-02-19 01:35:04 -05:00