From 08d9321321bbeca783fe439a1fbbe327fdc617b0 Mon Sep 17 00:00:00 2001 From: Liangbin Lian Date: Wed, 5 Jul 2023 15:27:12 +0800 Subject: [PATCH] target/rockchip: rk35xx update nic smp affinity --- .../rk3568/base-files/lib/board/init.sh | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/target/linux/rockchip/rk3568/base-files/lib/board/init.sh b/target/linux/rockchip/rk3568/base-files/lib/board/init.sh index 7b89ad8e4f..3d803a9b0a 100755 --- a/target/linux/rockchip/rk3568/base-files/lib/board/init.sh +++ b/target/linux/rockchip/rk3568/base-files/lib/board/init.sh @@ -5,6 +5,7 @@ NPROCS="$(grep -c "^processor.*:" /proc/cpuinfo)" PROC_MASK="$(( (1 << $NPROCS) - 1 ))" +PROC_MASK="$(printf %x "$PROC_MASK")" rename_iface() { ip link set $1 down && ip link set $1 name $2 @@ -21,8 +22,10 @@ set_iface_cpumask() { local irq local seconds local mq - local queue_mask=$(( $PROC_MASK ^ 0x${core_mask} )) + local q + local queue_mask=$(( 0x${PROC_MASK} ^ 0x${core_mask} )) queue_mask="$(printf %x "$queue_mask")" + local mq_mask="$4" [[ -d "/sys/class/net/${interface}" ]] || return 1 @@ -36,8 +39,18 @@ set_iface_cpumask() { irq=$(grep -m1 " ${device}\$" /proc/interrupts | sed -n -e 's/^ *\([^ :]\+\):.*$/\1/p') if [ -n "${irq}" ]; then echo "${core_mask}" > /proc/irq/${irq}/smp_affinity - [[ -z "${mq}" ]] && echo "${queue_mask}" > /sys/class/net/$interface/queues/rx-0/rps_cpus - [[ -z "${mq}" ]] && echo "${queue_mask}" > /sys/class/net/$interface/queues/tx-0/xps_cpus + if [[ -z "${mq}" ]]; then + echo "${queue_mask}" > /sys/class/net/$interface/queues/rx-0/rps_cpus + echo "${queue_mask}" > /sys/class/net/$interface/queues/tx-0/xps_cpus + elif [[ "${device}" = "${interface}-0" ]]; then + [[ -n "$mq_mask" ]] || mq_mask="${queue_mask}" + for q in /sys/class/net/$interface/queues/rx-*; do + echo "$mq_mask" > "$q/rps_cpus" + done + # for q in /sys/class/net/$interface/queues/tx-*; do + # echo "$mq_mask" > "$q/xps_cpus" + # done + fi return 0 fi sleep 1 @@ -169,11 +182,11 @@ board_set_iface_smp_affinity() { set_iface_cpumask 4 "eth0" set_iface_cpumask 8 "eth1" else - set_iface_cpumask 4 "eth0" "eth0-0" && \ - set_iface_cpumask 4 "eth0" "eth0-16" && \ - set_iface_cpumask 2 "eth0" "eth0-18" && \ - set_iface_cpumask 8 "eth1" "eth1-0" && \ - set_iface_cpumask 8 "eth1" "eth1-18" && \ + set_iface_cpumask 2 "eth0" "eth0-0" && \ + set_iface_cpumask 2 "eth0" "eth0-16" && \ + set_iface_cpumask 8 "eth0" "eth0-18" && \ + set_iface_cpumask 4 "eth1" "eth1-0" && \ + set_iface_cpumask 4 "eth1" "eth1-18" && \ set_iface_cpumask 1 "eth1" "eth1-16" fi ;;