bcm4908: enable & setup packet steering
[openwrt/staging/hauke.git] / target / linux / bcm4908 / 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 local rps_eth0=0
22 local rps_br_lan=0
23
24 [ "$num_cpus" -le 1 ] && return
25
26 [ "$packet_steering" = 1 ] && {
27 if [ ${flow_offloading_hw:-0} -gt 0 ]; then
28 # HW offloading
29 # Not implemented
30 :
31 elif [ ${flow_offloading:-0} -gt 0 ]; then
32 # SW offloading
33 # BCM4908 always reaches ~940 Mb/s
34 :
35 else
36 # Default
37 case "$num_cpus" in
38 2) rps_eth0=2; rps_br_lan=2;;
39 4) rps_eth0=e; rps_br_lan=e;;
40 esac
41 fi
42 }
43
44 echo $rps_eth0 > /sys/class/net/eth0/queues/rx-0/rps_cpus
45 echo $rps_br_lan > /sys/class/net/br-lan/queues/rx-0/rps_cpus
46 }