diff --git a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity b/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity deleted file mode 100644 index 060bdc04ce..0000000000 --- a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -[ "$ACTION" = add ] || exit - -get_device_irq() { - local device="$1" - local line - local seconds - - for seconds in $(seq 0 9); do - line=$(grep -m 1 "${device}\$" /proc/interrupts) && break - sleep 1 - 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 -friendlyarm,nanopi-r2s) - set_interface_core 2 "eth0" - set_interface_core 4 "eth1" "xhci-hcd:usb3" - ;; -friendlyarm,nanopi-r4se|\ -friendlyarm,nanopi-r4s) - set_interface_core 10 "eth0" - set_interface_core 20 "eth1" - ;; -esac diff --git a/target/linux/rockchip/armv8/base-files/lib/board/init.sh b/target/linux/rockchip/armv8/base-files/lib/board/init.sh new file mode 100755 index 0000000000..794815b6b0 --- /dev/null +++ b/target/linux/rockchip/armv8/base-files/lib/board/init.sh @@ -0,0 +1,52 @@ +#!/bin/sh +. /lib/functions.sh + +set_iface_cpumask() { + local core_mask="$1" + local interface="$2" + local device="$3" + local irq + local seconds + + [ -z "${device}" ] && device="$interface" + + ip link set dev "$interface" up + + for seconds in $(seq 0 2); do + irq=$(grep -m1 " ${device}\$" /proc/interrupts | sed -n -e 's/^ *\([^ :]\+\):.*$/\1/p') + if [ -n "${irq}" ]; then + echo "${core_mask}" > /proc/irq/${irq}/smp_affinity + return 0 + fi + sleep 1 + done +} + +wait_for_iface() { + local interface="$1" + local seconds + for seconds in $(seq 0 2); do + [ -e "/sys/class/net/$interface" ] && return 0 + sleep 1 + done +} + +board_set_iface_smp_affinity() { + case $(board_name) in + friendlyarm,nanopi-r2s) + set_iface_cpumask 2 "eth0" + set_iface_cpumask 4 "eth1" "xhci-hcd:usb3" + ;; + friendlyarm,nanopi-r4se|\ + friendlyarm,nanopi-r4s) + set_iface_cpumask 10 "eth0" + set_iface_cpumask 20 "eth1" + ;; + esac +} + +board_name | grep -qF 'friendlyarm,nanopi-r' || exit 0 + +wait_for_iface eth1 + +board_set_iface_smp_affinity diff --git a/target/linux/rockchip/armv8/base-files/lib/upgrade/ota.sh b/target/linux/rockchip/armv8/base-files/lib/upgrade/ota.sh index 982608b4dc..dd23970df0 100644 --- a/target/linux/rockchip/armv8/base-files/lib/upgrade/ota.sh +++ b/target/linux/rockchip/armv8/base-files/lib/upgrade/ota.sh @@ -2,7 +2,7 @@ type 'board_name' >/dev/null 2>/dev/null || . /lib/functions.sh export_ota_url() { - local board="$(board_name)" + local board="$(board_name)" case "$board" in friendlyarm,nanopi-r2s|\ friendlyarm,nanopi-r4s|\ diff --git a/target/linux/rockchip/rk3568/base-files/lib/upgrade/ota.sh b/target/linux/rockchip/rk3568/base-files/lib/upgrade/ota.sh index 7af407ff15..18ded75782 100644 --- a/target/linux/rockchip/rk3568/base-files/lib/upgrade/ota.sh +++ b/target/linux/rockchip/rk3568/base-files/lib/upgrade/ota.sh @@ -2,7 +2,7 @@ type 'board_name' >/dev/null 2>/dev/null || . /lib/functions.sh export_ota_url() { - local board="$(board_name)" + local board="$(board_name)" case "$board" in fastrhino,r66s|\ fastrhino,r68s)