Skip to content

Instantly share code, notes, and snippets.

@Arie
Last active March 16, 2026 12:52
Show Gist options
  • Select an option

  • Save Arie/9e6834bf0da12fb6f733ff9e7b68a720 to your computer and use it in GitHub Desktop.

Select an option

Save Arie/9e6834bf0da12fb6f733ff9e7b68a720 to your computer and use it in GitHub Desktop.
OpenWRT NanoPi R6S net-smp-affinity for 8125-rss
. /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