Commit Graph

266 Commits

Author SHA1 Message Date
Robin Reyes
49611b5e88 Fix typos, mhi quectel connection mananger 2024-07-10 14:34:13 -04:00
Robin Reyes
0c0f106c6b cleanup, initial commit 2024-07-10 14:34:13 -04:00
Sean Khan
4b1cb1d940 wwan: Initial attempt at NSS offload
Initial attempt at getting NSS offload working with 4g/5g based
IPQ807x/50xx platforms.

I don't have a unit to test this on but everything seems to compile
after applying a few patches.

Ensure you are using the "NSS-12.5-K6.x-wwan" branch in your `feeds.conf`

```
src-git nss_packages https://github.com/qosmio/nss-packages.git;NSS-12.5-K6.x-wwan
```

Then install all packages
```
./scripts/feeds install -p nss_packages -a
```

Ensure you select the modules:
```
kmod-pcie_mhi
kmod-qmi_wwan_q
```

Work was derived from `https://github.com/coolsnowwolf/lede` and
`https://git.codelinaro.org/clo/qsdk/platform/vendor/qcom/opensource/qsdk/datarmnet`

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-10 14:34:13 -04:00
Sean Khan
1af951126c nss-drv: limit headers to fw 12.1
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-10 13:50:58 -04:00
Sean Khan
3af307f2e9 nss-drv: fix exports and split backports patch
* Cleaned up backports patch to only bring in header changes if they are
  not tied directly to NSS firmware API. Because the API for NSS
  firmware has strict structure and ordering, it ends up messing with
  driver calls.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-10 13:13:24 -04:00
Sean Khan
872487e55d nss-clients: fix tun6rd and tunipip build
These were accidently configured as 'y' when it was supposed to be 'm'

Should resolve the following build errors:

```
qca-nss-tun6rd.ko' is missing.
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-10 12:21:52 -04:00
Sean Khan
78364afce8 nss-drv: Clean-up unecessary patches
`0012-Makefile-modularize-driver.patch` mistakenly added 'wifi_mesh_init'
when it was already in 'nss_init.c'.

The patch following `0013-backport-12.4.patch` would then
clean up the "duplicated" entries.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-10 04:53:52 -04:00
Sean Khan
841d43b00f treewide: various patches for GCC-14 + build fixes
Also disabled pvxlanmgr and clmapmgr from showing up. It's badly broken
and not suported.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-08 21:03:51 -04:00
Sean Khan
76047d6637 nss-drv: extract and display nss firmware version
Added a custom function to show NSS firmware version during boot.

```
[Mon Jul  8 07:45:21 2024] qca-nss 39000000.nss: NSS FW Version: NSS.FW.12.1-022-HK.R
```

And

```
[Mon Jul  8 07:21:12 2024] qca-nss 39000000.nss: NSS FW Version: NSS.HK.11.4.0.5-5-R
```

Not sure why Qualcomm never included this ability in their drivers, since
it's clearly there in every firmware.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-08 11:19:16 -04:00
Sean Khan
baed4d5a9e nss-ecm: fix logic in rule addition
When using `nft insert rule` the rule is inserted on top of the
`forward_wan` chain, which bypasses any filtering in place. Instead,
append the rule to the end of the chain.

Other changes include renaming chain `RATE-LIMIT` to `ECM-RATE-LIMIT`
for better rule classification, and `shellformat` formatting.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-08 11:12:44 -04:00
Sean Khan
4c8e0ae9f2 nss-ecm: Skip bonding_masters interfaces
`lo` and `bonding_masters` interfaces are not managed by ethtool, so
should be skipped when disabling any interface features.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-08 11:09:04 -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
bacbac33cb nss-drv: 11.4 split out formatting from 12.4 backbort
This is mostly a cosmetic change and meant to make it easier to see
the to see history of commits.

The currently published NSS FW on QUIC's repo is:

NSS.HK.11.4.0.5-5-R which is on branch caf_migration/NHSS.QSDK.11.4.0.5

However, it's not the latest of the `11.4.0.5` release which is

NSS.HK.11.4.0.5-6-R which is on branch `origin/NSS_11.4.0.5`

Although the versions look to be minor releases. NSS driver shows
significant changes in the headers files concerning `wifi` and `wifi
mesh`.

When doing a diff between the 2 releases, it was hard to tell exactly
what changed because most of it seemed to be non-functional changes,
formatting, etc. This patch is only meant to make the files visually
similiar between the two releases, to better show functional changes.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-08 10:16:00 -04:00
Sean Khan
f7d8d21b3d nss-clients: Backport 12.5 changes
Backport some minor patches from QSDK 12.5

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-08 10:08:59 -04:00
Sean Khan
afa7e180cd nss-clients: [nss-qdisc] Replace add_timer() to mod_timer()
commit 1bcef1647804d08e3d00b6f651086878786494e0 (HEAD, origin/NHSS.QSDK.12.5)
Author:     Manish Verma <quic_maniverm@quicinc.com>
AuthorDate: Wed Jun 12 18:05:27 2024 +0530
Commit:     Manish Verma <quic_maniverm@quicinc.com>
CommitDate: Mon Jun 24 22:04:14 2024 -0700

    [nss-qdisc] Replace add_timer() to mod_timer()

    For the unserialized modification of the timer's timerout, mod_timer()
    API seems to be better suited as compared to the add_timer() API

    Change-Id: I53fbb6174b975571dd3cc5cdd4ac3561903e178b
    Signed-off-by: Manish Verma <quic_maniverm@quicinc.com>
    (cherry picked from commit 55146834637d55f081f843e7330d4f1e7fe886dc)

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-08 10:08:09 -04:00
Sean Khan
19f6ecc012 qca-nss-drv: refactor __nss_hal_request_irq
refactored the logic in `__nss_hal_request_irq` to use case statements,
with a single call to `netif_napi_add_weight` and `request_irq`.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-02 21:06:57 -04:00
Sean Khan
cefc1a062d qca-nss-drv: Use devinfo for cleaner kernel logs
Use kernel built-in `devinfo` to show cleaner kernel logs. This allows
showing the module and specific NSS device the message is meant for.

```
[Tue Jul  2 04:27:45 2024] qca-nss 39000000.nss: fw of size 833304 bytes copied to addr: 40000000, nss_id: 0
[Tue Jul  2 04:27:45 2024] qca-nss 39000000.nss: NSS core 0 booted successfully
[Tue Jul  2 04:27:45 2024] qca-nss 39400000.nss: fw of size 292296 bytes copied to addr: 40800000, nss_id: 1
[Tue Jul  2 04:27:45 2024] qca-nss 39400000.nss: NSS core 1 booted successfully
[Tue Jul  2 04:28:03 2024] qca-nss 39000000.nss: Configuring additional NSS pbufs
[Tue Jul  2 04:28:03 2024] qca-nss 39000000.nss: Additional pbufs of size 10002432 got added to NSS
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-02 21:02:06 -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
16716f0305 qca-nss-drv: better align 12.4 backport layout
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-02 20:42:02 -04:00
Sean Khan
4e841d15bb qca-nss-drv: add missing gmac patch
Add in missing gmac. Meant for IPQ806X

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-02 20:38:38 -04:00
Sean Khan
4b43beae97 qca-nss: switch to checking value vs. ifdef
This allows specifiying `CONFIG_NSS_FIRMWARE_VERSION_.*` on
the command line without having to set in .config. This is helpful if
needing to build/test both version quickly.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-02 20:31:01 -04:00
Sean Khan
7d0fa17d0e qca-nss-ecm: Add fw4 check for bridge filter
iptables based bridge filtering is incompatible with nftables (fw4), and
causes just causes NAT loopback issues.

This is only required for systems using legacy iptables (fw3) as the
primary firewalling. nftables doesn't need explicit enablement of bridge filtering.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-02 20:20:10 -04:00
Sean Khan
2dbb426a29 qca-nss-ecm: bump latest 12.5 and fix fortify_memcpy_chk
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-07-02 20:18:13 -04:00
Sean Khan
1ae543092a treewide: Refactor for APK based builds
Update to comply with APK's `pkgver` format.

Rather than stick with the same convention as upstream `qca-ssdk` and
`qca-nss-dp` which uses:

```
$(PKG_NAME)-$(PKG_SOURCE_DATE)~$(PKG_SOURCE_VERSION)
```

i.e. `qca-ssdk-2024.06.13~c451136b.tar.zst`

Add in the QSDK version as part of the release since we
have options to build for both 11.4 and 12.5. This makes it easier to
debug build related issues, by knowing exactly which QSDK version is
being built against.

Example:
```
qca-nss-drv-11.4.0.5.2021.06.24~dc14ca2.tar.zst
qca-nss-drv-12.5.2024.04.06~53a0dc1.tar.zst
qca-nss-clients-11.4.0.5.2021.08.17~153998d.tar.zst
qca-nss-clients-12.5.2024.03.05~9a53b18.tar.zst
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-06-24 20:33:28 -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
Sean Khan
b00980f17b treewide: Bump to consolidated release QSDK-12.5
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-06-23 16:39:16 -04:00
Sean Khan
174edae00a nss-firmware: fix building for IPQ60XX/IPQ50XX
Remove the $(NSS_ARCHIVE) variable that conflicts with building for
platforms other than IPQ807X. NSS_ARCHIVE is getting evaluated on very first
platform, rather than each platform.

This was primarily meant for externally hosted NSS firmware, but was mostly used internally.
Can be safely removed.

Reported-by: Shi Jiay (shi05275@gmail.com)

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-06-22 16:10:49 -04:00
Shi JiaYang
1d044076d9 qca-nss-macsec: add ipq6018 support 2024-06-22 16:07:43 -04:00
Sean Khan
5fa030cfed Revert "qca-nss-drv: add NAPI threading"
This reverts commit 5700922738.

Causes panic on IPQ807x platforms after sometime. Drop NAPI patch

[180247.904310] Call trace:
[180247.908300]  dump_backtrace+0xb0/0x10c
[180247.910992]  show_stack+0x18/0x24
[180247.914550]  dump_stack_lvl+0x48/0x60
[180247.918023]  dump_stack+0x18/0x24
[180247.921756]  __schedule_bug+0x54/0x6c
[180247.925141]  __schedule+0x4f0/0x5e8
[180247.928873]  schedule+0x5c/0xc4
[180247.932605]  napi_threaded_poll+0x60/0x1f8
[180247.935819]  kthread+0x10c/0x110
[180247.939724]  ret_from_fork+0x10/0x20
[180609.113998] BUG: scheduling while atomic: napi/nss-9/1264/0x00000201

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-06-05 19:47:31 -04:00
Sean Khan
f9ca66a002 qca-nss: mark nss-cfi and nss-crypto as broken
Because of the way these modules will hook into the kernel certain
applications that use devcrypto will try to offload to it. This just
kernel panics and user confusion.

These modules are broken on IPQ807x and there has been no work upstream
to fix it in over 3 years. Luckily these modules aren't required to get
offloading for over 95% of use cases (mostly just affects
IPSec/OpenVPN).

Rather than removing, I'm disabling these modules from showing up
in default build options when "@BROKEN" isn't explicitly enabled.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-06-02 19:42:51 -04:00
Sean Khan
a4d36065f6 qca-nss-drv: allow mac80211 to disable signal redirection
Added from brainslayer's patch here:

https://svn.dd-wrt.com/changeset/56322

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-06-02 19:38:54 -04:00
Sean Khan
5700922738 qca-nss-drv: add NAPI threading
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-06-02 19:35:52 -04:00
Sean Khan
f5844d3706 qca-nss-ecm: Enable bridge vlan filtering
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-06-02 19:32:34 -04:00
Sean Khan
5f6afea20a nss-ecm: add missing uci option
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-05-05 12:47:59 -04:00
Sean Khan
9308d452f6 nss-packages: Bump to QSDK 12.5 for kernel 6.6
note: qca-nss-crypto, and qca-nss-cfi are non-code change releases, but
align with naming scheme upstream anyways.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-05-05 02:49:54 -04:00
Sean Khan
da8d2acc7a nss-ecm: fix uci config lookup 2024-05-01 14:38:38 -04:00
Sean Khan
d0669b3eb9 qca-mcs: Add support for kernel >= 6.6.29
kernel 6.6.29 added an additional parameter to `br_pass_frame_up` (bool
promisc). Add a check for it and handle accordingly.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-04-28 13:37:50 -04:00
Sean Khan
1891a290e0 nss-ecm: switch to using named sections in uci
The way ECM uci config is handled is pretty ugly due to it not specifying a
named section for 'general'.

Current:
```
➤ uci show ecm
ecm.global=ecm
ecm.global.acceleration_engine='nss'
ecm.@general[0]=general
ecm.@general[0].enable_bridge_filtering='0'
ecm.@general[0].disable_offloads='0'
ecm.@general[0].disable_flow_control='0'
ecm.@general[0].disable_interrupt_moderation='0'
ecm.@general[0].disable_gro='0'
```

None of the options require the use of unnamed sections
(like /etc/config/dhcp does when defining configs for multiple hosts)

With this change the config would produce:
```
ecm.global=ecm
ecm.global.acceleration_engine='nss'
ecm.general=ecm
ecm.general.enable_bridge_filtering='0'
ecm.general.disable_offloads='0'
ecm.general.disable_flow_control='0'
ecm.general.disable_interrupt_moderation='0'
ecm.general.disable_gro='0'
```

Which is a lot easier to read, and access programmatically.

We can also merge `global` and `general` into a single section as it
doesn't really make sense why we need global/general when it's
technically "ALL" globally applied.

For now, to ease users on the change, let's just stick to 2 sections.

**PLEASE NOTE: For users building their own images, and storing their**
**configs in 'files/etc/config/ecm' you will need to manually update the**
**config before compiling.**

For users using **sysupgrade** or installing without custom config at build
time 'files/etc/config/ecm' should be OK.

The following can be run manually on the config file 'ecm'

```sh
conf=/etc/config/ecm
uci -q show ecm.general || {
  echo "Converting 'ECM' config to new format."
  sed -i "s/config.*general.*/config ecm 'general'/g" "$conf"
}
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-04-28 13:10:58 -04:00
Sean Khan
3ffec2d091 nss-ecm: workaround insmod issue
switch to using modprobe vs. insmod as it allows more versatility in
  dependency loading.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-04-25 05:17:18 -04:00
Sean Khan
7173bd647c ssdk-shell: add qca-ssdk dependency
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-04-14 05:46:47 -04:00
Sean Khan
387da654c2 ssdk-shell: clean leftovers in Makefile
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-04-13 16:08:33 -04:00
Sean Khan
de0a338571 ssdk-shell: fix uninitialized tmpbool
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-04-13 15:59:09 -04:00
Sean Khan
2b4e3b2b37 ssdk-shell: bump 12.0.5 to match ssdk 12.4.r4
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-04-13 15:49:49 -04:00
Qosmio
2151cf9df5 Merge branch 'NSS-12.4-K6.x' of https://github.com/qosmio/nss-packages into NSS-12.4-K6.x 2024-04-09 00:27:29 -04:00
Qosmio
2075ebd759 nss-packages: update hashes for 'zst'
Signed-off-by: Qosmio <datapronix@protonmail.com>
2024-04-09 00:25:58 -04:00
Qosmio
61ac52c7d0 nss-packages: update hashes for 'zst'
Signed-off-by: Qosmio <datapronix@protonmail.com>
2024-04-08 22:36:19 -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
2670f4c75a qca-nss-drv: Fix missing /usr/bin for nss_stats 2024-04-07 00:01:31 -04:00
Qosmio
ac967d3fc0 Merge branch 'NSS-12.4-K6.x' of https://github.com/qosmio/nss-packages into NSS-12.4-K6.x 2024-04-06 20:06:36 -04:00