-
Notifications
You must be signed in to change notification settings - Fork 2
Firmware and Source Pins
Which NSS firmware exists for IPQ807x, which host sources pair with it, and the reasoning behind every pin in the nss-packages feed. Researched 2026-06; re-verify the "newest" claims before bumping anything.
NSS firmware is proprietary and distributed only inside Qualcomm SPF (QSDK) releases. Publicly available blobs:
| Source | Newest release | Newest IPQ807x firmware |
|---|---|---|
| quic/qca-sdk-nss-fw (official) | SPF 12.0 (2022) | NSS.FW.12.1-022-HK.R |
| qosmio/qca-sdk-nss-fw (fork, adds SPF 12.1–12.5) | SPF 12.5 ED1 (2024) | NSS.FW.12.5-210-HK.R |
NSS.FW.12.5-210 is the newest NSS firmware that exists publicly for
IPQ807x, full stop. A GitHub-wide search finds no NSS.FW.13*, no
12.5 build newer than 210, and no firmware from the newer win.*
release trains. The suffix decodes as: HK = Hawkeye (IPQ807x), CP
= Cypress (IPQ60xx), MP = Maple (IPQ50xx); .R = retail build.
Qualcomm's open-source host components live on git.codelinaro.org with one branch per release train:
-
NHSS.QSDK.12.5.x— pairs with SPF 12.5 (the published firmware). Frozen: nss-drv's last 12.5 commit is from April 2024. -
NHSS.QSDK.13.0.x— SPF 13.0 train; no public firmware. -
win.nss.1.0 / 1.1 / 1.10— the current "WIN" train. Actively maintained (nss-drv head December 2025, ECM January 2026), still carries the IPQ807x HAL; its matching firmware has never been published.win.nss.1.10is an April 2025 snapshot fully contained inwin.nss.1.1.
The release-coherent choice ("12.5 host sources for 12.5 firmware") was tried first and rejected on evidence:
- The 12.5 host branches predate kernel API changes that the
maintained line absorbed upstream. Concretely: 12.5-era
nss_core.cstill usesSKBTX_DEV_ZEROCOPY(removed from modern kernels);win.nss.1.1fixed that in the vendor tree. Every such gap on a frozen branch becomes a local patch this project would own forever. - The mixed pairing —
win.nss.1.1host driving 12.5-210 firmware — is what this stack was brought up, gated and production-soaked on, and the same pairing the wider community NSS builds (qosmio) ship. The host/firmware wire interface is exercised constantly at runtime; it is verified, not assumed.
| Package | Repo | Pin | Rationale |
|---|---|---|---|
qca-nss-drv |
clo/qsdk/oss/lklm/nss-drv |
6aa14c7 (2025-12-26) |
Tip of win.nss.1.1. |
qca-nss-ecm |
clo/qsdk/oss/lklm/qca-nss-ecm |
fafe228 (2026-01-16) |
Tip of win.nss.1.1; most recent ECM in existence, NSS front end fully retained. |
qca-nss-clients |
clo/qsdk/oss/lklm/nss-clients |
51be82d (2024-09-11) |
Tip of NHSS.QSDK.12.5.5 — the legacy clients (qdisc, pppoe) were never carried into the win.* lines; this is the newest nss-clients commit anywhere. |
nss-firmware |
qosmio/qca-sdk-nss-fw | 12.5 Release 210 | Newest published firmware (see above). |
When bumping a pin: check the branch heads on CodeLinaro
(git ls-remote --heads <repo> 'win.*'), re-verify the firmware
situation, and expect to re-run the hardware gates — the wire
interface is the contract.
qca-nss-drv sizes its buffer pools by a build-time profile
(Config.in choice in the feed):
-
NSS_MEM_PROFILE_HIGH— 1 GB boards. The ipq807x default. -
NSS_MEM_PROFILE_MEDIUM— 512 MB boards (AX3600 and friends). MEDIUM pbuf pools are 9984 + 1736 buffers; SQM queue limits are capped accordingly (see SQM and Shaping). -
NSS_MEM_PROFILE_LOW— 256 MB boards (untested here).
The profile is per-image, not per-device: pick it to match the board the image targets. A 512 MB board running the HIGH profile risks memory exhaustion under load.
Related observation from soak testing on MEDIUM: a small number of N2H payload-allocation failures and queue-0 drops appear under bursty load (hundreds out of tens of millions of packets) — burst-level pool pressure, with no measured effect on steady-state throughput.
The driver's NSS_DRV_*_ENABLE flags all default off (IPv4 is
always on) and follow package selection: the PPPoE manager forces
NSS_DRV_PPPOE_ENABLE, the qdisc forces NSS_DRV_SHAPER_ENABLE and
NSS_DRV_IGS_ENABLE, ECM brings IPV6/VIRT_IF. Keeping unused
firmware features off keeps firmware memory usage down — relevant on
MEDIUM.