fastnetwork 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/bin/sh /etc/rc.common
  2. START=25
  3. USE_PROCD=1
  4. start_service() {
  5. reload_service
  6. }
  7. service_triggers() {
  8. procd_add_reload_trigger "network"
  9. procd_add_reload_trigger "firewall"
  10. procd_add_reload_interface_trigger "lan"
  11. }
  12. reload_service() {
  13. local packet_steering="$(uci -q get network.@globals[0].packet_steering)"
  14. local num_cpus="$(grep -c "^processor.*:" /proc/cpuinfo)"
  15. local flow_offloading="$(uci -q get firewall.@defaults[0].flow_offloading)"
  16. local flow_offloading_hw="$(uci -q get firewall.@defaults[0].flow_offloading_hw)"
  17. local rps_eth0=0
  18. local rps_br_lan=0
  19. [ "$num_cpus" -le 1 ] && return
  20. [ "$packet_steering" = 1 ] && {
  21. if [ ${flow_offloading_hw:-0} -gt 0 ]; then
  22. # HW offloading
  23. # Not implemented
  24. :
  25. elif [ ${flow_offloading:-0} -gt 0 ]; then
  26. # SW offloading
  27. # BCM4908 always reaches ~940 Mb/s
  28. :
  29. else
  30. # Default
  31. case "$num_cpus" in
  32. 2) rps_eth0=2; rps_br_lan=2;;
  33. 4) rps_eth0=e; rps_br_lan=e;;
  34. esac
  35. fi
  36. }
  37. echo $rps_eth0 > /sys/class/net/eth0/queues/rx-0/rps_cpus
  38. echo $rps_br_lan > /sys/class/net/br-lan/queues/rx-0/rps_cpus
  39. }