qca-nss-drv: Use smp_affinity logic from base-files

Using the framework that's provided in base-files 'smp_affinity' init
script for better readability.
This commit is contained in:
Qosmio 2024-01-26 16:43:03 -05:00
parent 71c2bda76b
commit 8af2a3e75b

View File

@ -18,44 +18,28 @@
START=70
enable_rps() {
irq_nss_rps=$(grep nss_queue1 /proc/interrupts | cut -d ':' -f 1 | tr -d ' ')
for entry in $irq_nss_rps
do
echo 2 > /proc/irq/$entry/smp_affinity
done
set_affinity() {
irq=$(awk "/$1/{ print substr(\$1, 1, length(\$1)-1); exit }" /proc/interrupts)
[ -n "$irq" ] && echo $2 > /proc/irq/$irq/smp_affinity
}
irq_nss_rps=$(grep nss_queue2 /proc/interrupts | cut -d ':' -f 1 | tr -d ' ')
for entry in $irq_nss_rps
do
echo 4 > /proc/irq/$entry/smp_affinity
done
# assign 3 nss queues to each core
set_affinity 'nss_queue1' 2
set_affinity 'nss_queue2' 4
set_affinity 'nss_queue3' 8
set_affinity 'nss_queue0' 1
irq_nss_rps=$(grep nss_queue3 /proc/interrupts | cut -d ':' -f 1 | tr -d ' ')
for entry in $irq_nss_rps
do
echo 8 > /proc/irq/$entry/smp_affinity
done
irq_nss_rps=$(grep nss_queue0 /proc/interrupts | cut -d ':' -f 1 | tr -d ' ')
for entry in $irq_nss_rps
do
echo 8 > /proc/irq/$entry/smp_affinity
done
awk '/nss_empty_buf/{sub(/:/,""); print $1}' /proc/interrupts|while read -r entry
do
echo 4 > /proc/irq/$entry/smp_affinity
done
# assign lan/wan to core 4
set_affinity 'nss_empty_buf_sos' 4
set_affinity 'nss_empty_buf_queue' 4
# Enable NSS RPS
sysctl -w dev.nss.rps.enable=1 >/dev/null 2>/dev/null
sysctl -w dev.nss.rps.enable=1 > /dev/null 2> /dev/null
}
start() {
local rps_enabled="$(uci_get nss @general[0] enable_rps)"
if [ "$rps_enabled" -eq 1 ]; then
enable_rps
enable_rps
fi
}