diff --git a/package/network/config/netifd/files/etc/init.d/packet_steering b/package/network/config/netifd/files/etc/init.d/packet_steering
index 5266a931ae..cec2002683 100755
--- a/package/network/config/netifd/files/etc/init.d/packet_steering
+++ b/package/network/config/netifd/files/etc/init.d/packet_steering
@@ -1,5 +1,7 @@
 #!/bin/sh /etc/rc.common
 
+. /lib/functions/uci-defaults.sh
+
 START=25
 USE_PROCD=1
 
@@ -16,10 +18,29 @@ service_triggers() {
 reload_service() {
 	packet_steering="$(uci -q get "network.@globals[0].packet_steering")"
 	steering_flows="$(uci -q get "network.@globals[0].steering_flows")"
-	[ "${steering_flows:-0}" -gt 0 ] && opts="-l $steering_flows"
-	if [ -e "/usr/libexec/platform/packet-steering.sh" ]; then
-		/usr/libexec/platform/packet-steering.sh "$packet_steering"
+	if [ "$packet_steering" = "0" ] && [ "$(board_name)" = "friendlyarm,nanopi-r76s" ]; then
+		for iface in eth0 eth1; do
+			[ -d "/sys/class/net/$iface" ] || continue
+
+			case "$iface" in
+				eth0) mask="30" ;;  # CPU4-5
+				eth1) mask="c0" ;;  # CPU6-7
+			esac
+
+			for q in /sys/class/net/$iface/queues/rx-*; do
+				[ -e "$q/rps_cpus" ] && echo "$mask" > "$q/rps_cpus"
+			done
+
+			for q in /sys/class/net/$iface/queues/tx-*; do
+				[ -e "$q/xps_cpus" ] && echo "$mask" > "$q/xps_cpus"
+			done
+		done
 	else
-		/usr/libexec/network/packet-steering.uc $opts "$packet_steering"
+		[ "${steering_flows:-0}" -gt 0 ] && opts="-l $steering_flows"
+		if [ -e "/usr/libexec/platform/packet-steering.sh" ]; then
+			/usr/libexec/platform/packet-steering.sh "$packet_steering"
+		else
+			/usr/libexec/network/packet-steering.uc $opts "$packet_steering"
+		fi
 	fi
 }
