Last active
March 16, 2026 12:52
-
-
Save Arie/9e6834bf0da12fb6f733ff9e7b68a720 to your computer and use it in GitHub Desktop.
OpenWRT NanoPi R6S net-smp-affinity for 8125-rss
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| . /lib/functions/uci-defaults.sh | |
| #!/bin/sh | |
| get_device_irq() { | |
| local device="$1" | |
| local line | |
| while true; do | |
| line=$(grep -m 1 "${device}\$" /proc/interrupts) && break | |
| [ "${seconds}" -le 0 ] && break | |
| seconds="$(( seconds - 2 ))" | |
| sleep 2 | |
| done | |
| echo ${line} | sed 's/:.*//' | |
| } | |
| set_interface_core() { | |
| local core_mask="$1" | |
| local interface="$2" | |
| local device="$3" | |
| [ -z "${device}" ] && device="$interface" | |
| local irq=$(get_device_irq "$device") | |
| [ -z "$irq" ] && return 0 | |
| echo -n "${core_mask}" > /proc/irq/${irq}/smp_affinity | |
| } | |
| set_interface_rps() { | |
| local core_mask="$1" | |
| local interface="$2" | |
| for d in /sys/class/net/${interface}/queues/rx-*; do | |
| [ -d $d ] && echo "${core_mask}" > $d/rps_cpus | |
| done | |
| } | |
| set_interface_core ff "eth0" | |
| set_interface_rps "f" "eth0" | |
| # eth1 (WAN): IRQs -> CPU5 (A76 fast), RPS all queues -> CPU4 (A76 fast) | |
| set_interface_core 20 "eth1-0" | |
| set_interface_core 20 "eth1-1" | |
| set_interface_core 20 "eth1-2" | |
| set_interface_core 20 "eth1-3" | |
| set_interface_core 20 "eth1-16" | |
| set_interface_core 20 "eth1-18" | |
| echo 10 > /sys/class/net/eth1/queues/rx-0/rps_cpus | |
| echo 10 > /sys/class/net/eth1/queues/rx-1/rps_cpus | |
| echo 10 > /sys/class/net/eth1/queues/rx-2/rps_cpus | |
| echo 10 > /sys/class/net/eth1/queues/rx-3/rps_cpus | |
| # eth2 (LAN): IRQs -> CPU7 (A76 fast), RPS all queues -> CPU6 (A76 fast) | |
| set_interface_core 80 "eth2-0" | |
| set_interface_core 80 "eth2-1" | |
| set_interface_core 80 "eth2-2" | |
| set_interface_core 80 "eth2-3" | |
| set_interface_core 80 "eth2-16" | |
| set_interface_core 80 "eth2-18" | |
| echo 40 > /sys/class/net/eth2/queues/rx-0/rps_cpus | |
| echo 40 > /sys/class/net/eth2/queues/rx-1/rps_cpus | |
| echo 40 > /sys/class/net/eth2/queues/rx-2/rps_cpus | |
| echo 40 > /sys/class/net/eth2/queues/rx-3/rps_cpus | |
| seconds="0" | |
| set_interface_core 80 "xhci-hcd:usb3" | |
| set_interface_rps "fe" "wlan0" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment