From 8af2a3e75b753856a6d3148cc451df9df9b5e66c Mon Sep 17 00:00:00 2001 From: Qosmio Date: Fri, 26 Jan 2024 16:43:03 -0500 Subject: [PATCH] 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. --- qca/qca-nss-drv/files/qca-nss-drv.init | 44 ++++++++------------------ 1 file changed, 14 insertions(+), 30 deletions(-) diff --git a/qca/qca-nss-drv/files/qca-nss-drv.init b/qca/qca-nss-drv/files/qca-nss-drv.init index 6c9261b..020a2b7 100644 --- a/qca/qca-nss-drv/files/qca-nss-drv.init +++ b/qca/qca-nss-drv/files/qca-nss-drv.init @@ -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 }