diff options
author | Felix Fietkau <nbd@nbd.name> | 2019-01-21 17:14:52 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2019-01-29 11:27:02 +0100 |
commit | 01895c315f0485779a2e312c58708a32b4ea1f9a (patch) | |
tree | fb5c231a696d3812c9a91f926d4d00ce3cef584e | |
parent | e1496d631eb23407a45e5d3a42627d5d591fdb0a (diff) | |
download | upstream-01895c315f0485779a2e312c58708a32b4ea1f9a.tar.gz upstream-01895c315f0485779a2e312c58708a32b4ea1f9a.tar.bz2 upstream-01895c315f0485779a2e312c58708a32b4ea1f9a.zip |
ramips: move wifi related interrupts off the main core on SMP systems
Improves LAN<->WLAN bridging/routing performance
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rwxr-xr-x | target/linux/ramips/base-files/etc/init.d/set-irq-affinity | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/target/linux/ramips/base-files/etc/init.d/set-irq-affinity b/target/linux/ramips/base-files/etc/init.d/set-irq-affinity new file mode 100755 index 0000000000..9a3afefa5a --- /dev/null +++ b/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 +} |