1999d137073e85435b99b7dc9f63bb6038176bd0
[openwrt/staging/aparcar.git] / target / linux / bcm53xx / base-files / etc / init.d / fastnetwork
1 #!/bin/sh /etc/rc.common
2
3 START=25
4 USE_PROCD=1
5
6 start_service() {
7 reload_service
8 }
9
10 service_triggers() {
11 procd_add_reload_trigger "network"
12 procd_add_reload_trigger "firewall"
13 procd_add_reload_interface_trigger "lan"
14 }
15
16 reload_service() {
17 local packet_steering="$(uci -q get network.@globals[0].packet_steering)"
18 local num_cpus="$(grep -c "^processor.*:" /proc/cpuinfo)"
19 local flow_offloading="$(uci -q get firewall.@defaults[0].flow_offloading)"
20 local flow_offloading_hw="$(uci -q get firewall.@defaults[0].flow_offloading_hw)"
21
22 # Any steering on 1 CPU (BCM47081) worsens network performance
23 [ "$num_cpus" != 2 ] && return
24
25 [ "$packet_steering" != 1 ] && {
26 echo 0 > /sys/class/net/br-lan/queues/rx-0/rps_cpus
27 echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus
28 return
29 }
30
31 if [ ${flow_offloading_hw:-0} -gt 0 ]; then
32 # HW offloading
33 echo 0 > /sys/class/net/br-lan/queues/rx-0/rps_cpus
34 echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus
35 elif [ ${flow_offloading:-0} -gt 0 ]; then
36 # SW offloading
37 # br-lan setup doesn't seem to matter for offloading case
38 echo 2 > /sys/class/net/eth0/queues/rx-0/rps_cpus
39 else
40 # Default
41 echo 2 > /sys/class/net/br-lan/queues/rx-0/rps_cpus
42 echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus
43 fi
44 }