bcm53xx: refactor packet steering init
Replace a standalone init.d script with a platform implementation as supported by netifd. This avoids a race between netifd and target specific setups. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
		| @@ -1,44 +0,0 @@ | |||||||
| #!/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" |  | ||||||
| 	procd_add_reload_interface_trigger "lan" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| reload_service() { |  | ||||||
| 	local packet_steering="$(uci -q get network.@globals[0].packet_steering)" |  | ||||||
| 	local num_cpus="$(grep -c "^processor.*:" /proc/cpuinfo)" |  | ||||||
| 	local flow_offloading="$(uci -q get firewall.@defaults[0].flow_offloading)" |  | ||||||
| 	local flow_offloading_hw="$(uci -q get firewall.@defaults[0].flow_offloading_hw)" |  | ||||||
|  |  | ||||||
| 	# Any steering on 1 CPU (BCM47081) worsens network performance |  | ||||||
| 	[ "$num_cpus" != 2 ] && return |  | ||||||
|  |  | ||||||
| 	[ "$packet_steering" != 1 ] && { |  | ||||||
| 		echo 0 > /sys/class/net/br-lan/queues/rx-0/rps_cpus |  | ||||||
| 		echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if [ ${flow_offloading_hw:-0} -gt 0 ]; then |  | ||||||
| 		# HW offloading |  | ||||||
| 		echo 0 > /sys/class/net/br-lan/queues/rx-0/rps_cpus |  | ||||||
| 		echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus |  | ||||||
| 	elif [ ${flow_offloading:-0} -gt 0 ]; then |  | ||||||
| 		# SW offloading |  | ||||||
| 		# br-lan setup doesn't seem to matter for offloading case |  | ||||||
| 		echo 2 > /sys/class/net/eth0/queues/rx-0/rps_cpus |  | ||||||
| 	else |  | ||||||
| 		# Default |  | ||||||
| 		echo 2 > /sys/class/net/br-lan/queues/rx-0/rps_cpus |  | ||||||
| 		echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus |  | ||||||
| 	fi |  | ||||||
| } |  | ||||||
							
								
								
									
										25
									
								
								target/linux/bcm53xx/base-files/usr/libexec/platform/packet-steering.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										25
									
								
								target/linux/bcm53xx/base-files/usr/libexec/platform/packet-steering.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | #!/bin/sh /etc/rc.common | ||||||
|  |  | ||||||
|  | packet_steering="$(uci -q get network.@globals[0].packet_steering)" | ||||||
|  | flow_offloading="$(uci -q get firewall.@defaults[0].flow_offloading)" | ||||||
|  | flow_offloading_hw="$(uci -q get firewall.@defaults[0].flow_offloading_hw)" | ||||||
|  |  | ||||||
|  | [ "$packet_steering" != 1 ] && { | ||||||
|  | 	echo 0 > /sys/class/net/br-lan/queues/rx-0/rps_cpus | ||||||
|  | 	echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus | ||||||
|  | 	exit 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | if [ ${flow_offloading_hw:-0} -gt 0 ]; then | ||||||
|  | 	# HW offloading | ||||||
|  | 	echo 0 > /sys/class/net/br-lan/queues/rx-0/rps_cpus | ||||||
|  | 	echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus | ||||||
|  | elif [ ${flow_offloading:-0} -gt 0 ]; then | ||||||
|  | 	# SW offloading | ||||||
|  | 	# br-lan setup doesn't seem to matter for offloading case | ||||||
|  | 	echo 2 > /sys/class/net/eth0/queues/rx-0/rps_cpus | ||||||
|  | else | ||||||
|  | 	# Default | ||||||
|  | 	echo 2 > /sys/class/net/br-lan/queues/rx-0/rps_cpus | ||||||
|  | 	echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus | ||||||
|  | fi | ||||||
		Reference in New Issue
	
	Block a user
	 Rafał Miłecki
					Rafał Miłecki