set-irq-affinity 530 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/sh /etc/rc.common

START=99

get_irq() {
	local name="$1"
	grep -m 1 "$name" /proc/interrupts | cut -d: -f1 | sed 's, *,,'
}

set_irq_affinity() {
	local name="$1"
	local val="$2"
	local irq="$(get_irq "$name")"
	[ -n "$irq" ] || return
	echo "$val" > "/proc/irq/$irq/smp_affinity"
}

start() {
	if grep -q 'processor.*: 2' /proc/cpuinfo; then
		mask1=4
		mask2=8
	elif grep -q 'processor.*: 1' /proc/cpuinfo; then
		mask1=2
		mask2=2
	else
		return
	fi

	set_irq_affinity mt76x2e $mask1
	set_irq_affinity mt7603e $mask2
}