nss-drv: rework smp affinity hangling

Reworked SMP affinity handling for better balancing of PPDU and USBs

```
Pinning IRQ(46) nss_queue0               to CPU 0 (NSS Core 0)
Pinning IRQ(47) nss_queue1               to CPU 1 (NSS Core 0)
Pinning IRQ(48) nss_queue2               to CPU 2 (NSS Core 0)
Pinning IRQ(49) nss_queue3               to CPU 3 (NSS Core 0)
Pinning IRQ(57) nss_queue0               to CPU 3 (NSS Core 1)
Pinning IRQ(58) nss_queue1               to CPU 2 (NSS Core 1)
Pinning IRQ(59) nss_queue2               to CPU 1 (NSS Core 1)
Pinning IRQ(60) nss_queue3               to CPU 0 (NSS Core 1)
Pinning IRQ(43) nss_empty_buf_sos        to CPU 0 (NSS Core 0)
Pinning IRQ(44) nss_empty_buf_queue      to CPU 0 (NSS Core 0)
Pinning IRQ(53) nss_empty_buf_sos        to CPU 3 (NSS Core 1)
Pinning IRQ(55) nss_empty_buf_queue      to CPU 3 (NSS Core 1)
Pinning IRQ(41) xhci-hcd:usb1            to CPU 2
Pinning IRQ(42) xhci-hcd:usb3            to CPU 2
Pinning IRQ(79) ppdu-end-interrupts-mac1 to CPU 2
Pinning IRQ(83) ppdu-end-interrupts-mac2 to CPU 3
Pinning IRQ(81) ppdu-end-interrupts-mac3 to CPU 1
```

Primarily meant to improve performance on Arcadyan AW1000 which uses USB
based cellular modems (xhci-hcd:usb3). They are now pinned to CPU 2

Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
Sean Khan 2025-06-01 23:20:42 -04:00
parent 370137d0bf
commit 2f4750a191
2 changed files with 15 additions and 7 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=qca-nss-drv
PKG_RELEASE:=16
PKG_RELEASE:=17
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-drv.git
PKG_SOURCE_PROTO:=git

View File

@ -2,6 +2,7 @@
# vim: set syn=bash
# shellcheck disable=2155,3010,3019,3043,3057,3060
# shellcheck disable=2034
START=94
PROG="qca-nss-drv"
@ -92,29 +93,36 @@ set_affinity() {
enable_rps() {
# NSS Core 0 : 4 nss queues to each core
set_affinity "nss_queue0" 0-3 1
set_affinity "nss_queue0" 0 1
set_affinity "nss_queue1" 1 1
set_affinity "nss_queue2" 2 1
set_affinity "nss_queue3" 3 1
# NSS Core 1 : 1 nss queue to 3rd core
set_affinity "nss_queue0" 3 2
set_affinity "nss_queue1" 2 2
set_affinity "nss_queue2" 1 2
set_affinity "nss_queue3" 0 2
# NSS Core 0 : 2 nss sos/queues to last core
set_affinity "nss_empty_buf_sos" 1-3 1
set_affinity "nss_empty_buf_queue" 2,3 1
set_affinity "nss_empty_buf_sos" 0 1
set_affinity "nss_empty_buf_queue" 0 1
# NSS Core 1 : 1 nss sos to last core
set_affinity "nss_empty_buf_sos" 3 2
set_affinity "nss_empty_buf_queue" 3 2
# USB 3.0 : pin to 3rd core
set_affinity "xhci-hcd:usb1" 1,3 1
set_affinity "xhci-hcd:usb1" 2 1
set_affinity "xhci-hcd:usb2" 2 1
set_affinity "xhci-hcd:usb3" 2 1
# TCL Completion, REO Dest, ERR, Exception and h2rxdma
# are offloaded, so balance remaining IRQs accordingly.
# PPDU IRQ : pin to 2nd and 3rd core
set_affinity 'ppdu-end-interrupts-mac1' 1 1
set_affinity 'ppdu-end-interrupts-mac3' 2 1
set_affinity 'ppdu-end-interrupts-mac1' 2 1
set_affinity 'ppdu-end-interrupts-mac2' 3 1
set_affinity 'ppdu-end-interrupts-mac3' 1 1
set_affinity 'ath10k_pci' 2,3 1