The nanopi R6S, R6C and nanopc T6 platforms are based on rk3588(s) SoC, which has fast and slow CPU cores. Set up network interrupt affinity to be on the fast CPU cores by default. This is similar to the way this was already configured on nanopi R4S. Signed-off-by: Michel Lespinasse <michel@lespinasse.org> Link: https://github.com/openwrt/openwrt/pull/17638 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
68 lines
1.4 KiB
Bash
68 lines
1.4 KiB
Bash
#!/bin/sh
|
|
|
|
[ "$ACTION" = add ] || exit
|
|
|
|
get_device_irq() {
|
|
local device="$1"
|
|
local line
|
|
local seconds="0"
|
|
|
|
# wait up to 10 seconds for the irq/device to appear
|
|
while [ "${seconds}" -le 10 ]; do
|
|
line=$(grep -E -m 1 "${device}\$" /proc/interrupts) && 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")
|
|
|
|
echo "${core_mask}" > /proc/irq/${irq}/smp_affinity
|
|
}
|
|
|
|
case "$(board_name)" in
|
|
armsom,sige7|\
|
|
friendlyarm,nanopi-r3s|\
|
|
friendlyarm,nanopi-r5c|\
|
|
radxa,e25|\
|
|
sinovoip,rk3568-bpi-r2pro)
|
|
set_interface_core 2 "eth0"
|
|
set_interface_core 4 "eth1"
|
|
;;
|
|
friendlyarm,nanopi-r2c|\
|
|
friendlyarm,nanopi-r2c-plus|\
|
|
friendlyarm,nanopi-r2s|\
|
|
radxa,cm3-io|\
|
|
xunlong,orangepi-r1-plus|\
|
|
xunlong,orangepi-r1-plus-lts)
|
|
set_interface_core 2 "eth0"
|
|
set_interface_core 4 "eth1" "xhci-hcd:usb[0-9]+"
|
|
;;
|
|
friendlyarm,nanopi-r4s|\
|
|
friendlyarm,nanopi-r4s-enterprise|\
|
|
friendlyarm,nanopi-r6c|\
|
|
friendlyarm,nanopc-t6)
|
|
set_interface_core 10 "eth0"
|
|
set_interface_core 20 "eth1"
|
|
;;
|
|
friendlyarm,nanopi-r5s)
|
|
set_interface_core 2 "eth0"
|
|
set_interface_core 4 "eth1"
|
|
set_interface_core 8 "eth2"
|
|
;;
|
|
friendlyarm,nanopi-r6s)
|
|
set_interface_core 10 "eth0"
|
|
set_interface_core 20 "eth1"
|
|
set_interface_core 40 "eth2"
|
|
;;
|
|
esac
|
|
|