target: Add rockchip target
[librecmc/librecmc.git] / target / linux / rockchip / armv8 / base-files / etc / hotplug.d / net / 40-net-smp-affinity
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
new file mode 100755 (executable)
index 0000000..4471625
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+[ "$ACTION" = add ] || exit
+
+get_device_irq() {
+       local device="$1"
+
+       local line=$(grep -m 1 "${device}\$" /proc/interrupts)
+       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"
+       ;;
+esac
+