123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/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
- 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)
- set_interface_core 10 "eth0"
- set_interface_core 20 "eth1"
- ;;
- friendlyarm,nanopi-r5c|\
- radxa,e25)
- set_interface_core 2 "eth0"
- set_interface_core 4 "eth1"
- ;;
- friendlyarm,nanopi-r5s)
- set_interface_core 2 "eth0"
- set_interface_core 4 "eth1"
- set_interface_core 8 "eth2"
- ;;
- esac
|