Ver Fonte

ramips: move wifi related interrupts off the main core on SMP systems

Improves LAN<->WLAN bridging/routing performance

Signed-off-by: Felix Fietkau <[email protected]>
Felix Fietkau há 7 anos atrás
pai
commit
01895c315f
1 ficheiros alterados com 31 adições e 0 exclusões
  1. 31 0
      target/linux/ramips/base-files/etc/init.d/set-irq-affinity

+ 31 - 0
target/linux/ramips/base-files/etc/init.d/set-irq-affinity

@@ -0,0 +1,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
+}