From: Rafał Miłecki <ra...@milecki.pl>

1. Move setup code to independent script file
2. Add init.d script to allow reload_config
3. Support platform specific /lib/platform/packet-steering.sh

Signed-off-by: Rafał Miłecki <ra...@milecki.pl>
---
 package/network/config/netifd/Makefile        |  2 +-
 .../etc/hotplug.d/net/20-smp-packet-steering  | 67 +-----------------
 .../netifd/files/etc/init.d/packet_steering   | 17 +++++
 .../files/lib/network/packet-steering.sh      | 70 +++++++++++++++++++
 4 files changed, 89 insertions(+), 67 deletions(-)
 create mode 100644 
package/network/config/netifd/files/etc/init.d/packet_steering
 create mode 100755 
package/network/config/netifd/files/lib/network/packet-steering.sh

diff --git a/package/network/config/netifd/Makefile 
b/package/network/config/netifd/Makefile
index 500daaa152..f40a990b42 100644
--- a/package/network/config/netifd/Makefile
+++ b/package/network/config/netifd/Makefile
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=netifd
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
diff --git 
a/package/network/config/netifd/files/etc/hotplug.d/net/20-smp-packet-steering 
b/package/network/config/netifd/files/etc/hotplug.d/net/20-smp-packet-steering
index 8a86bf75f6..576f244945 100644
--- 
a/package/network/config/netifd/files/etc/hotplug.d/net/20-smp-packet-steering
+++ 
b/package/network/config/netifd/files/etc/hotplug.d/net/20-smp-packet-steering
@@ -1,67 +1,2 @@
 #!/bin/sh
-[ "$ACTION" = add ] || exit
-
-NPROCS="$(grep -c "^processor.*:" /proc/cpuinfo)"
-[ "$NPROCS" -gt 1 ] || exit
-
-PROC_MASK="$(( (1 << $NPROCS) - 1 ))"
-
-find_irq_cpu() {
-       local dev="$1"
-       local match="$(grep -m 1 "$dev\$" /proc/interrupts)"
-       local cpu=0
-
-       [ -n "$match" ] && {
-               set -- $match
-               shift
-               for cur in $(seq 1 $NPROCS); do
-                       [ "$1" -gt 0 ] && {
-                               cpu=$(($cur - 1))
-                               break
-                       }
-                       shift
-               done
-       }
-
-       echo "$cpu"
-}
-
-set_hex_val() {
-       local file="$1"
-       local val="$2"
-       val="$(printf %x "$val")"
-       [ -n "$DEBUG" ] && echo "$file = $val"
-       echo "$val" > "$file"
-}
-
-packet_steering="$(uci get "network.@globals[0].packet_steering")"
-[ "$packet_steering" != 1 ] && exit 0
-
-exec 512>/var/lock/smp_tune.lock
-flock 512 || exit 1
-
-for dev in /sys/class/net/*; do
-       [ -d "$dev" ] || continue
-
-       # ignore virtual interfaces
-       [ -n "$(ls "${dev}/" | grep '^lower_')" ] && continue
-       [ -d "${dev}/device" ] || continue
-
-       device="$(readlink "${dev}/device")"
-       device="$(basename "$device")"
-       irq_cpu="$(find_irq_cpu "$device")"
-       irq_cpu_mask="$((1 << $irq_cpu))"
-
-       for q in ${dev}/queues/tx-*; do
-               set_hex_val "$q/xps_cpus" "$PROC_MASK"
-       done
-
-       # ignore dsa slave ports for RPS
-       subsys="$(readlink "${dev}/device/subsystem")"
-       subsys="$(basename "$subsys")"
-       [ "$subsys" = "mdio_bus" ] && continue
-
-       for q in ${dev}/queues/rx-*; do
-               set_hex_val "$q/rps_cpus" "$PROC_MASK"
-       done
-done
+[ "$ACTION" = add ] && /lib/network/packet-steering.sh
diff --git a/package/network/config/netifd/files/etc/init.d/packet_steering 
b/package/network/config/netifd/files/etc/init.d/packet_steering
new file mode 100644
index 0000000000..94229998fd
--- /dev/null
+++ b/package/network/config/netifd/files/etc/init.d/packet_steering
@@ -0,0 +1,17 @@
+#!/bin/sh /etc/rc.common
+
+START=25
+USE_PROCD=1
+
+start_service() {
+       reload_service
+}
+
+service_triggers() {
+       procd_add_reload_trigger "network"
+       procd_add_reload_trigger "firewall"
+}
+
+reload_service() {
+       /lib/network/packet-steering.sh
+}
diff --git a/package/network/config/netifd/files/lib/network/packet-steering.sh 
b/package/network/config/netifd/files/lib/network/packet-steering.sh
new file mode 100755
index 0000000000..088c631046
--- /dev/null
+++ b/package/network/config/netifd/files/lib/network/packet-steering.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+NPROCS="$(grep -c "^processor.*:" /proc/cpuinfo)"
+[ "$NPROCS" -gt 1 ] || exit
+
+PROC_MASK="$(( (1 << $NPROCS) - 1 ))"
+
+find_irq_cpu() {
+       local dev="$1"
+       local match="$(grep -m 1 "$dev\$" /proc/interrupts)"
+       local cpu=0
+
+       [ -n "$match" ] && {
+               set -- $match
+               shift
+               for cur in $(seq 1 $NPROCS); do
+                       [ "$1" -gt 0 ] && {
+                               cpu=$(($cur - 1))
+                               break
+                       }
+                       shift
+               done
+       }
+
+       echo "$cpu"
+}
+
+set_hex_val() {
+       local file="$1"
+       local val="$2"
+       val="$(printf %x "$val")"
+       [ -n "$DEBUG" ] && echo "$file = $val"
+       echo "$val" > "$file"
+}
+
+packet_steering="$(uci get "network.@globals[0].packet_steering")"
+[ "$packet_steering" != 1 ] && exit 0
+
+[ -e "/lib/platform/packet-steering.sh" ] && {
+       /lib/platform/packet-steering.sh
+       exit 0
+}
+
+exec 512>/var/lock/smp_tune.lock
+flock 512 || exit 1
+
+for dev in /sys/class/net/*; do
+       [ -d "$dev" ] || continue
+
+       # ignore virtual interfaces
+       [ -n "$(ls "${dev}/" | grep '^lower_')" ] && continue
+       [ -d "${dev}/device" ] || continue
+
+       device="$(readlink "${dev}/device")"
+       device="$(basename "$device")"
+       irq_cpu="$(find_irq_cpu "$device")"
+       irq_cpu_mask="$((1 << $irq_cpu))"
+
+       for q in ${dev}/queues/tx-*; do
+               set_hex_val "$q/xps_cpus" "$PROC_MASK"
+       done
+
+       # ignore dsa slave ports for RPS
+       subsys="$(readlink "${dev}/device/subsystem")"
+       subsys="$(basename "$subsys")"
+       [ "$subsys" = "mdio_bus" ] && continue
+
+       for q in ${dev}/queues/rx-*; do
+               set_hex_val "$q/rps_cpus" "$PROC_MASK"
+       done
+done
-- 
2.34.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to