mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-31 10:28:06 +00:00 
			
		
		
		
	Compare commits
	
		
			21 Commits
		
	
	
		
			v2.5.0-rc1
			...
			v2.5.0-rc4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 4b07afe59f | ||
|   | 5d53d138b0 | ||
|   | e40631b8cd | ||
|   | 22135129bd | ||
|   | de4b3c4edc | ||
|   | e3b1fe36e5 | ||
|   | 5af7e1e7d8 | ||
|   | 057ebb8660 | ||
|   | 17fe72c6e9 | ||
|   | 834ff2fe4f | ||
|   | ce3849e131 | ||
|   | 66640cdd1a | ||
|   | 300924a4be | ||
|   | 8fb088bcc8 | ||
|   | b08455228f | ||
|   | 09563eadaf | ||
|   | 2df46a2c77 | ||
|   | e4fa57b4d0 | ||
|   | 48677a6943 | ||
|   | e79970ce04 | ||
|   | b4d1d58fc9 | 
							
								
								
									
										2
									
								
								.github/workflows/build-dev.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/build-dev.yml
									
									
									
									
										vendored
									
									
								
							| @@ -11,7 +11,7 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         target: ['actiontec_web7200', 'cig_wf188n', 'cig_wf194c', 'cig_wf194c4', 'cig_wf160d', 'cig_wf808', 'cybertan_eww622-a1', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_ecs4100-12ph', 'edgecore_ecw5211', 'edgecore_ecw5410', 'edgecore_oap100', 'edgecore_ssw2ac2600', 'edgecore_spw2ac1200', 'edgecore_spw2ac1200-lan-poe', 'hfcl_ion4', 'hfcl_ion4xe', 'hfcl_ion4xi', 'indio_um-305ac', 'linksys_ea6350-v4', 'linksys_e8450-ubi', 'linksys_ea8300', 'tp-link_ec420-g1', 'tplink_ex227', 'tplink_ex228', 'tplink_ex447', 'wallys_dr40x9', 'wallys_dr6018', 'wallys_dr6018_v4' ] |         target: ['actiontec_web7200', 'cig_wf188n', 'cig_wf194c', 'cig_wf194c4', 'cig_wf196', 'cig_wf160d', 'cig_wf808', 'cybertan_eww622-a1', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_ecs4100-12ph', 'edgecore_ecw5211', 'edgecore_ecw5410', 'edgecore_oap100', 'edgecore_ssw2ac2600', 'edgecore_spw2ac1200', 'edgecore_spw2ac1200-lan-poe', 'hfcl_ion4', 'hfcl_ion4xe', 'hfcl_ion4xi', 'indio_um-305ac', 'linksys_ea6350-v4', 'linksys_e8450-ubi', 'linksys_ea8300', 'tp-link_ec420-g1', 'tplink_ex227', 'tplink_ex228', 'tplink_ex447', 'wallys_dr40x9', 'wallys_dr6018', 'wallys_dr6018_v4' ] | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|     - uses: actions/checkout@v2 |     - uses: actions/checkout@v2 | ||||||
|   | |||||||
| @@ -37,6 +37,9 @@ define Package/cc2652/install | |||||||
|  |  | ||||||
| 	$(INSTALL_DIR) $(1)/etc/config | 	$(INSTALL_DIR) $(1)/etc/config | ||||||
| 	$(INSTALL_BIN) ./files/tisbl.config $(1)/etc/config/tisbl | 	$(INSTALL_BIN) ./files/tisbl.config $(1)/etc/config/tisbl | ||||||
|  |  | ||||||
|  | 	$(INSTALL_DIR) $(1)/etc/uci-defaults | ||||||
|  | 	$(INSTALL_BIN) ./files/tisbl.defaults $(1)/etc/uci-defaults | ||||||
| endef | endef | ||||||
|  |  | ||||||
| $(eval $(call BuildPackage,cc2652)) | $(eval $(call BuildPackage,cc2652)) | ||||||
|   | |||||||
| @@ -1,9 +1,7 @@ | |||||||
| config tisbl 'tisbl' | config tisbl 'tisbl' | ||||||
|     option firmware '/etc/tifirmware/ble5_host_test_bd9.bin' | 	option firmware '/etc/tifirmware/ble5_host_test_bd9.bin' | ||||||
|     option tty '/dev/ttyMSM1'	# for EAP101 board | 	option tty '/dev/ttyMSM1' | ||||||
| #    option tty '/dev/ttyACM0'	# for virtualbox openwrt 19.07 with TI CC26X2R launchpad | 	option tichip '2652' | ||||||
|     option tichip '2652' | 	option baudrate '115200' | ||||||
|     option baudrate '115200' | 	option resetpin '79' | ||||||
|     option resetpin '79' | 	option backdoorpin '34' | ||||||
|     option backdoorpin '34' 	#EAP101-R1 |  | ||||||
| #    option backdoorpin '67'	#EAP101-R0A-HW-modification |  | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								feeds/bluetooth-cc2652/cc2652/files/tisbl.defaults
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								feeds/bluetooth-cc2652/cc2652/files/tisbl.defaults
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | #!/bin/sh | ||||||
|  |  | ||||||
|  | . /lib/functions.sh | ||||||
|  | . /lib/functions/system.sh | ||||||
|  |  | ||||||
|  | board=$(board_name) | ||||||
|  |  | ||||||
|  | case $board in | ||||||
|  | edgecore,eap104) | ||||||
|  |         uci set tisbl.tisbl.backdoorpin=31 | ||||||
|  |         uci set tisbl.tisbl.resetpin=35 | ||||||
|  |         ;; | ||||||
|  | esac | ||||||
| @@ -17,9 +17,6 @@ cig,wf194c4) | |||||||
|         ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tpt" |         ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tpt" | ||||||
|         ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tpt" |         ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tpt" | ||||||
| 	;; | 	;; | ||||||
| esac |  | ||||||
|  |  | ||||||
| case "$board" in |  | ||||||
| edgecore,eap101) | edgecore,eap101) | ||||||
|         ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tpt" |         ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tpt" | ||||||
|         ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tpt" |         ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tpt" | ||||||
| @@ -32,6 +29,11 @@ edgecore,eap102) | |||||||
|         ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tpt" |         ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tpt" | ||||||
|         ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tpt" |         ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tpt" | ||||||
| 	;; | 	;; | ||||||
|  | edgecore,eap104) | ||||||
|  |         ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy0tpt" | ||||||
|  |         ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy1tpt" | ||||||
|  | 	ucidef_set_led_netdev "wan" "wan" "yellow:uplink" "eth0" | ||||||
|  | 	;; | ||||||
| hfcl,ion4xi|\ | hfcl,ion4xi|\ | ||||||
| hfcl,ion4xe) | hfcl,ion4xe) | ||||||
|         ucidef_set_led_wlan "wlan5g" "WLAN5G" "blue:wifi5" "phy0tpt" |         ucidef_set_led_wlan "wlan5g" "WLAN5G" "blue:wifi5" "phy0tpt" | ||||||
|   | |||||||
| @@ -41,6 +41,7 @@ qcom_setup_interfaces() | |||||||
| 		ucidef_set_interface_wan "eth0" | 		ucidef_set_interface_wan "eth0" | ||||||
| 		;; | 		;; | ||||||
| 	edgecore,eap102|\ | 	edgecore,eap102|\ | ||||||
|  | 	edgecore,eap104|\ | ||||||
| 	wallys,dr6018|\ | 	wallys,dr6018|\ | ||||||
| 	cig,wf188n|\ | 	cig,wf188n|\ | ||||||
| 	cig,wf196) | 	cig,wf196) | ||||||
| @@ -91,7 +92,6 @@ qcom_setup_macs() | |||||||
|  |  | ||||||
| board_config_update | board_config_update | ||||||
| board=$(board_name) | board=$(board_name) | ||||||
| ucidef_set_bridge_device bridge |  | ||||||
| qcom_setup_interfaces $board | qcom_setup_interfaces $board | ||||||
| qcom_setup_macs $board | qcom_setup_macs $board | ||||||
| board_config_flush | board_config_flush | ||||||
|   | |||||||
| @@ -104,11 +104,19 @@ case "$FIRMWARE" in | |||||||
| ath11k/IPQ5018/hw1.0/caldata.bin) | ath11k/IPQ5018/hw1.0/caldata.bin) | ||||||
| 	case "$board" in | 	case "$board" in | ||||||
| 	cybertan,eww622-a1|\ | 	cybertan,eww622-a1|\ | ||||||
|  | 	edgecore,eap104|\ | ||||||
| 	qcom,ipq5018-mp03.1) | 	qcom,ipq5018-mp03.1) | ||||||
|                 caldata_extract "0:ART" 0x1000 0x20000   |                 caldata_extract "0:ART" 0x1000 0x20000   | ||||||
| 		;; | 		;; | ||||||
| 	esac | 	esac | ||||||
| 	;; | 	;; | ||||||
|  | ath11k/qcn6122/hw1.0/caldata_2.bin) | ||||||
|  | 	case "$board" in | ||||||
|  | 	edgecore,eap104) | ||||||
|  |                 caldata_extract "0:ART" 0x4c000 0x20000   | ||||||
|  | 		;; | ||||||
|  | 	esac | ||||||
|  | 	;; | ||||||
| ath11k/QCN9074/hw1.0/caldata_1.bin) | ath11k/QCN9074/hw1.0/caldata_1.bin) | ||||||
| 	case "$board" in | 	case "$board" in | ||||||
| 	cig,wf196|\ | 	cig,wf196|\ | ||||||
|   | |||||||
| @@ -1,67 +0,0 @@ | |||||||
| #!/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" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| default_ps="$(uci get "network.@globals[0].default_ps")" |  | ||||||
| [ -n "$default_ps" -a "$default_ps" != 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/rx-*; do |  | ||||||
| 		set_hex_val "$q/rps_cpus" "$(($PROC_MASK & ~$irq_cpu_mask))" |  | ||||||
| 	done |  | ||||||
|  |  | ||||||
| 	ntxq="$(ls -d ${dev}/queues/tx-* | wc -l)" |  | ||||||
|  |  | ||||||
| 	idx=$(($irq_cpu + 1)) |  | ||||||
| 	for q in ${dev}/queues/tx-*; do |  | ||||||
| 		set_hex_val "$q/xps_cpus" "$((1 << $idx))" |  | ||||||
| 		let "idx = idx + 1" |  | ||||||
| 		[ "$idx" -ge "$NPROCS" ] && idx=0 |  | ||||||
| 	done |  | ||||||
| done |  | ||||||
| @@ -1,58 +0,0 @@ | |||||||
| #!/bin/sh /etc/rc.common |  | ||||||
|  |  | ||||||
| START=80 |  | ||||||
|  |  | ||||||
| set_affinity() { |  | ||||||
| 	local affinity=$1 |  | ||||||
| 	local name=$2 |  | ||||||
| 	local irq=`grep -E -m1 $name /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` |  | ||||||
|         [ -n "$irq" ] && { |  | ||||||
| 		logger ath11k setting affinity for $name/$irq to $affinity |  | ||||||
| 		echo $affinity > /proc/irq/$irq/smp_affinity |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| boot() { |  | ||||||
| 	. /lib/functions/system.sh |  | ||||||
|  |  | ||||||
| 	board=$(board_name) |  | ||||||
| 	case $board in |  | ||||||
| 	cig,wf196) |  | ||||||
| 		set_affinity 1 reo2host-destination-ring2 |  | ||||||
| 		set_affinity 2 reo2host-destination-ring1 |  | ||||||
| 		;; |  | ||||||
| 	*) |  | ||||||
| 		set_affinity 2 reo2host-destination-ring2 |  | ||||||
| 		set_affinity 1 reo2host-destination-ring1 |  | ||||||
| 		;; |  | ||||||
| 	esac |  | ||||||
|  |  | ||||||
| 	case $board in |  | ||||||
| 	maple) |  | ||||||
| 		;; |  | ||||||
| 	*) |  | ||||||
| 		set_affinity 8 reo2host-destination-ring4 |  | ||||||
| 		set_affinity 4 reo2host-destination-ring3 |  | ||||||
| 	 |  | ||||||
| 		set_affinity 8 wbm2host-tx-completions-ring3 |  | ||||||
| 		set_affinity 4 wbm2host-tx-completions-ring2 |  | ||||||
| 		set_affinity 2 wbm2host-tx-completions-ring1 |  | ||||||
|  |  | ||||||
| 		set_affinity 8 ppdu-end-interrupts-mac1 |  | ||||||
| 		set_affinity 8 rxdma2host-monitor-status-ring-mac1 |  | ||||||
| 		set_affinity 8 rxdma2host-monitor-destination-mac1 |  | ||||||
| 		set_affinity 8 host2rxdma-monitor-ring1 |  | ||||||
| 		;; |  | ||||||
| 	esac |  | ||||||
|  |  | ||||||
| 	set_affinity 4 ppdu-end-interrupts-mac2 |  | ||||||
| 	set_affinity 4 rxdma2host-monitor-status-ring-mac2 |  | ||||||
| 	set_affinity 4 rxdma2host-monitor-destination-mac2 |  | ||||||
| 	set_affinity 4 host2rxdma-monitor-ring2 |  | ||||||
|  |  | ||||||
| 	set_affinity 2 ppdu-end-interrupts-mac3 |  | ||||||
| 	set_affinity 2 rxdma2host-monitor-status-ring-mac3 |  | ||||||
| 	set_affinity 2 rxdma2host-monitor-destination-mac3 |  | ||||||
| 	set_affinity 2 host2rxdma-monitor-ring3 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| @@ -30,6 +30,7 @@ platform_check_image() { | |||||||
| 	wallys,dr6018-v4|\ | 	wallys,dr6018-v4|\ | ||||||
| 	edgecore,eap101|\ | 	edgecore,eap101|\ | ||||||
| 	edgecore,eap102|\ | 	edgecore,eap102|\ | ||||||
|  | 	edgecore,eap104|\ | ||||||
| 	edgecore,eap106|\ | 	edgecore,eap106|\ | ||||||
| 	hfcl,ion4xi|\ | 	hfcl,ion4xi|\ | ||||||
| 	hfcl,ion4xe|\ | 	hfcl,ion4xe|\ | ||||||
| @@ -60,6 +61,7 @@ platform_do_upgrade() { | |||||||
| 	cig,wf194c4|\ | 	cig,wf194c4|\ | ||||||
| 	cig,wf196|\ | 	cig,wf196|\ | ||||||
| 	cybertan,eww622-a1|\ | 	cybertan,eww622-a1|\ | ||||||
|  | 	edgecore,eap104|\ | ||||||
| 	hfcl,ion4xi|\ | 	hfcl,ion4xi|\ | ||||||
| 	hfcl,ion4xe|\ | 	hfcl,ion4xe|\ | ||||||
| 	qcom,ipq6018-cp01|\ | 	qcom,ipq6018-cp01|\ | ||||||
|   | |||||||
| @@ -0,0 +1,23 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. | ||||||
|  |  * | ||||||
|  |  * Permission to use, copy, modify, and/or distribute this software for any | ||||||
|  |  * purpose with or without fee is hereby granted, provided that the above | ||||||
|  |  * copyright notice and this permission notice appear in all copies. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||||
|  |  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||||
|  |  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||||
|  |  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||||
|  |  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||||
|  |  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||||
|  |  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include "../../../arm64/boot/dts/qcom/qcom-ipq5018-eap104.dts" | ||||||
|  |  | ||||||
|  | / { | ||||||
|  | 	pmuv8: pmu { | ||||||
|  | 		compatible = "arm,cortex-a7-pmu"; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
							
								
								
									
										1015
									
								
								feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-eap104.dts
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1015
									
								
								feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-eap104.dts
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -39,6 +39,11 @@ | |||||||
| 		ethernet3 = "/soc/dp4"; | 		ethernet3 = "/soc/dp4"; | ||||||
| 		ethernet4 = "/soc/dp5"; | 		ethernet4 = "/soc/dp5"; | ||||||
| 		ethernet5 = "/soc/dp6"; | 		ethernet5 = "/soc/dp6"; | ||||||
|  |  | ||||||
|  | 		led-boot = &led_power; | ||||||
|  | 		led-failsafe = &led_power; | ||||||
|  | 		led-running = &led_power; | ||||||
|  | 		led-upgrade = &led_power; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	chosen { | 	chosen { | ||||||
| @@ -325,15 +330,22 @@ | |||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	led_pins: led_pins { | 	led_pins: led_pins { | ||||||
| 		led_2g { | 		led_red { | ||||||
| 			pins = "gpio42"; | 			pins = "gpio25"; | ||||||
| 			function = "gpio"; | 			function = "gpio"; | ||||||
| 			drive-strength = <8>; | 			drive-strength = <8>; | ||||||
| 			bias-pull-down; | 			bias-pull-down; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		led_5g { | 		led_green { | ||||||
| 			pins = "gpio43"; | 			pins = "gpio26"; | ||||||
|  | 			function = "gpio"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		led_blue { | ||||||
|  | 			pins = "gpio27"; | ||||||
| 			function = "gpio"; | 			function = "gpio"; | ||||||
| 			drive-strength = <8>; | 			drive-strength = <8>; | ||||||
| 			bias-pull-down; | 			bias-pull-down; | ||||||
| @@ -379,7 +391,7 @@ | |||||||
|                 pinctrl-0 = <&pwm_pins>; |                 pinctrl-0 = <&pwm_pins>; | ||||||
|                 pinctrl-names = "default"; |                 pinctrl-names = "default"; | ||||||
|                 used-pwm-indices = <1>, <1>, <1>, <0>; |                 used-pwm-indices = <1>, <1>, <1>, <0>; | ||||||
|                 status = "ok"; |          //       status = "ok"; | ||||||
|         }; |         }; | ||||||
| 	gpio_keys { | 	gpio_keys { | ||||||
| 		compatible = "gpio-keys"; | 		compatible = "gpio-keys"; | ||||||
| @@ -810,15 +822,21 @@ | |||||||
| 		pinctrl-0 = <&led_pins>; | 		pinctrl-0 = <&led_pins>; | ||||||
| 		pinctrl-names = "default"; | 		pinctrl-names = "default"; | ||||||
|  |  | ||||||
| 		led_2g { | 		led_red { | ||||||
| 			label = "led_2g"; | 			label = "red:status"; | ||||||
| 			gpio = <&tlmm 42 GPIO_ACTIVE_HIGH>; | 			gpio = <&tlmm 25 GPIO_ACTIVE_HIGH>; | ||||||
| 			default-state = "off"; | 			default-state = "off"; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		led_5g { | 		led_power: led_green { | ||||||
| 			label = "led_5g"; | 			label = "green:status"; | ||||||
| 			gpio = <&tlmm 43 GPIO_ACTIVE_HIGH>; | 			gpio = <&tlmm 26 GPIO_ACTIVE_HIGH>; | ||||||
|  | 			default-state = "on"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		led_blue { | ||||||
|  | 			label = "blue:status"; | ||||||
|  | 			gpio = <&tlmm 27 GPIO_ACTIVE_HIGH>; | ||||||
| 			default-state = "off"; | 			default-state = "off"; | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
|   | |||||||
| @@ -9,6 +9,15 @@ define Device/cybertan_eww622_a1 | |||||||
| endef | endef | ||||||
| TARGET_DEVICES += cybertan_eww622_a1 | TARGET_DEVICES += cybertan_eww622_a1 | ||||||
|  |  | ||||||
|  | define Device/edgecore_eap104 | ||||||
|  |   DEVICE_TITLE := EdgeCore EAP104 | ||||||
|  |   DEVICE_DTS := qcom-ipq5018-eap104 | ||||||
|  |   SUPPORTED_DEVICES := edgecore,eap104 | ||||||
|  |   DEVICE_PACKAGES := ath11k-wifi-edgecore-eap104 ath11k-firmware-ipq50xx-spruce ath11k-firmware-qcn6122 | ||||||
|  |   DEVICE_DTS_CONFIG := config@mp03.5-c1 | ||||||
|  | endef | ||||||
|  | TARGET_DEVICES += edgecore_eap104 | ||||||
|  |  | ||||||
| define Device/qcom_mp03_1 | define Device/qcom_mp03_1 | ||||||
|   DEVICE_TITLE := Qualcomm Maple 03.1 |   DEVICE_TITLE := Qualcomm Maple 03.1 | ||||||
|   DEVICE_DTS := qcom-ipq5018-mp03.1 |   DEVICE_DTS := qcom-ipq5018-mp03.1 | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ SUBTARGET:=ipq50xx | |||||||
| BOARDNAME:=IPQ50XX | BOARDNAME:=IPQ50XX | ||||||
| CPU_TYPE:=cortex-a7 | CPU_TYPE:=cortex-a7 | ||||||
|  |  | ||||||
| DEFAULT_PACKAGES += ath11k-firmware-ipq50xx qca-nss-fw-ipq50xx | DEFAULT_PACKAGES += qca-nss-fw-ipq50xx | ||||||
|  |  | ||||||
| define Target/Description | define Target/Description | ||||||
| 	Build firmware image for IPQ50xx SoC devices. | 	Build firmware image for IPQ50xx SoC devices. | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								feeds/ipq807x/ipq807x/patches/108-add-W25N01GW.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								feeds/ipq807x/ipq807x/patches/108-add-W25N01GW.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/mtd/nand/qcom_nandc.c | ||||||
|  | =================================================================== | ||||||
|  | --- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/drivers/mtd/nand/qcom_nandc.c | ||||||
|  | +++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/mtd/nand/qcom_nandc.c | ||||||
|  | @@ -405,6 +405,9 @@ struct nand_flash_dev qspinand_flash_ids | ||||||
|  |  	{"MX35UF1GE4AC SPI NAND 1G 1.8V", | ||||||
|  |  		{ .id = {0xc2, 0x92} }, | ||||||
|  |  		SZ_2K, SZ_128, SZ_128K, 0, 2, 64, NAND_ECC_INFO(4, SZ_512), 0}, | ||||||
|  | +	{"W25N01GW SPI NAND 1.8V 1G-BIT", | ||||||
|  | +		{ .id = {0xef, 0xba} }, | ||||||
|  | +		SZ_2K, SZ_128, SZ_128K, 0, 2, 64, NAND_ECC_INFO(4, SZ_512), 0}, | ||||||
|  |  	{NULL} | ||||||
|  |  }; | ||||||
|  |   | ||||||
| @@ -1,88 +0,0 @@ | |||||||
| From: Felix Fietkau <nbd@nbd.name> |  | ||||||
| Date: Mon, 8 Feb 2021 11:34:08 -0800 |  | ||||||
| Subject: [PATCH] net: extract napi poll functionality to __napi_poll() |  | ||||||
|  |  | ||||||
| This commit introduces a new function __napi_poll() which does the main |  | ||||||
| logic of the existing napi_poll() function, and will be called by other |  | ||||||
| functions in later commits. |  | ||||||
| This idea and implementation is done by Felix Fietkau <nbd@nbd.name> and |  | ||||||
| is proposed as part of the patch to move napi work to work_queue |  | ||||||
| context. |  | ||||||
| This commit by itself is a code restructure. |  | ||||||
|  |  | ||||||
| Signed-off-by: Felix Fietkau <nbd@nbd.name> |  | ||||||
| Signed-off-by: Wei Wang <weiwan@google.com> |  | ||||||
| Reviewed-by: Alexander Duyck <alexanderduyck@fb.com> |  | ||||||
| Signed-off-by: David S. Miller <davem@davemloft.net> |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| --- a/net/core/dev.c |  | ||||||
| +++ b/net/core/dev.c |  | ||||||
| @@ -6322,15 +6322,10 @@ void netif_napi_del(struct napi_struct * |  | ||||||
|  } |  | ||||||
|  EXPORT_SYMBOL(netif_napi_del); |  | ||||||
|   |  | ||||||
| -static int napi_poll(struct napi_struct *n, struct list_head *repoll) |  | ||||||
| +static int __napi_poll(struct napi_struct *n, bool *repoll) |  | ||||||
|  { |  | ||||||
| -	void *have; |  | ||||||
|  	int work, weight; |  | ||||||
|   |  | ||||||
| -	list_del_init(&n->poll_list); |  | ||||||
| - |  | ||||||
| -	have = netpoll_poll_lock(n); |  | ||||||
| - |  | ||||||
|  	weight = n->weight; |  | ||||||
|   |  | ||||||
|  	/* This NAPI_STATE_SCHED test is for avoiding a race |  | ||||||
| @@ -6348,7 +6343,7 @@ static int napi_poll(struct napi_struct |  | ||||||
|  	WARN_ON_ONCE(work > weight); |  | ||||||
|   |  | ||||||
|  	if (likely(work < weight)) |  | ||||||
| -		goto out_unlock; |  | ||||||
| +		return work; |  | ||||||
|   |  | ||||||
|  	/* Drivers must not modify the NAPI state if they |  | ||||||
|  	 * consume the entire weight.  In such cases this code |  | ||||||
| @@ -6357,7 +6352,7 @@ static int napi_poll(struct napi_struct |  | ||||||
|  	 */ |  | ||||||
|  	if (unlikely(napi_disable_pending(n))) { |  | ||||||
|  		napi_complete(n); |  | ||||||
| -		goto out_unlock; |  | ||||||
| +		return work; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
|  	if (n->gro_bitmask) { |  | ||||||
| @@ -6375,12 +6370,29 @@ static int napi_poll(struct napi_struct |  | ||||||
|  	if (unlikely(!list_empty(&n->poll_list))) { |  | ||||||
|  		pr_warn_once("%s: Budget exhausted after napi rescheduled\n", |  | ||||||
|  			     n->dev ? n->dev->name : "backlog"); |  | ||||||
| -		goto out_unlock; |  | ||||||
| +		return work; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| -	list_add_tail(&n->poll_list, repoll); |  | ||||||
| +	*repoll = true; |  | ||||||
| + |  | ||||||
| +	return work; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
| +static int napi_poll(struct napi_struct *n, struct list_head *repoll) |  | ||||||
| +{ |  | ||||||
| +	bool do_repoll = false; |  | ||||||
| +	void *have; |  | ||||||
| +	int work; |  | ||||||
| + |  | ||||||
| +	list_del_init(&n->poll_list); |  | ||||||
| + |  | ||||||
| +	have = netpoll_poll_lock(n); |  | ||||||
| + |  | ||||||
| +	work = __napi_poll(n, &do_repoll); |  | ||||||
| + |  | ||||||
| +	if (do_repoll) |  | ||||||
| +		list_add_tail(&n->poll_list, repoll); |  | ||||||
|   |  | ||||||
| -out_unlock: |  | ||||||
|  	netpoll_poll_unlock(have); |  | ||||||
|   |  | ||||||
|  	return work; |  | ||||||
| @@ -1,245 +0,0 @@ | |||||||
| From: Wei Wang <weiwan@google.com> |  | ||||||
| Date: Mon, 8 Feb 2021 11:34:09 -0800 |  | ||||||
| Subject: [PATCH] net: implement threaded-able napi poll loop support |  | ||||||
|  |  | ||||||
| This patch allows running each napi poll loop inside its own |  | ||||||
| kernel thread. |  | ||||||
| The kthread is created during netif_napi_add() if dev->threaded |  | ||||||
| is set. And threaded mode is enabled in napi_enable(). We will |  | ||||||
| provide a way to set dev->threaded and enable threaded mode |  | ||||||
| without a device up/down in the following patch. |  | ||||||
|  |  | ||||||
| Once that threaded mode is enabled and the kthread is |  | ||||||
| started, napi_schedule() will wake-up such thread instead |  | ||||||
| of scheduling the softirq. |  | ||||||
|  |  | ||||||
| The threaded poll loop behaves quite likely the net_rx_action, |  | ||||||
| but it does not have to manipulate local irqs and uses |  | ||||||
| an explicit scheduling point based on netdev_budget. |  | ||||||
|  |  | ||||||
| Co-developed-by: Paolo Abeni <pabeni@redhat.com> |  | ||||||
| Signed-off-by: Paolo Abeni <pabeni@redhat.com> |  | ||||||
| Co-developed-by: Hannes Frederic Sowa <hannes@stressinduktion.org> |  | ||||||
| Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> |  | ||||||
| Co-developed-by: Jakub Kicinski <kuba@kernel.org> |  | ||||||
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |  | ||||||
| Signed-off-by: Wei Wang <weiwan@google.com> |  | ||||||
| Reviewed-by: Alexander Duyck <alexanderduyck@fb.com> |  | ||||||
| Signed-off-by: David S. Miller <davem@davemloft.net> |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| --- a/include/linux/netdevice.h |  | ||||||
| +++ b/include/linux/netdevice.h |  | ||||||
| @@ -319,6 +319,7 @@ struct napi_struct { |  | ||||||
|  	struct list_head	dev_list; |  | ||||||
|  	struct hlist_node	napi_hash_node; |  | ||||||
|  	unsigned int		napi_id; |  | ||||||
| +	struct task_struct	*thread; |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
|  enum { |  | ||||||
| @@ -326,6 +327,7 @@ enum { |  | ||||||
|  	NAPI_STATE_DISABLE,	/* Disable pending */ |  | ||||||
|  	NAPI_STATE_NPSVC,	/* Netpoll - don't dequeue from poll_list */ |  | ||||||
|  	NAPI_STATE_HASHED,	/* In NAPI hash */ |  | ||||||
| +	NAPI_STATE_THREADED,	/* The poll is performed inside its own thread*/ |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
|  enum gro_result { |  | ||||||
| @@ -501,13 +503,7 @@ void napi_disable(struct napi_struct *n) |  | ||||||
|   * Resume NAPI from being scheduled on this context. |  | ||||||
|   * Must be paired with napi_disable. |  | ||||||
|   */ |  | ||||||
| -static inline void napi_enable(struct napi_struct *n) |  | ||||||
| -{ |  | ||||||
| -	BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state)); |  | ||||||
| -	smp_mb__before_atomic(); |  | ||||||
| -	clear_bit(NAPI_STATE_SCHED, &n->state); |  | ||||||
| -	clear_bit(NAPI_STATE_NPSVC, &n->state); |  | ||||||
| -} |  | ||||||
| +void napi_enable(struct napi_struct *n); |  | ||||||
|   |  | ||||||
|  /** |  | ||||||
|   *	napi_synchronize - wait until NAPI is not running |  | ||||||
| @@ -1573,6 +1569,8 @@ enum netdev_priv_flags_ext { |  | ||||||
|   *			switch driver and used to set the phys state of the |  | ||||||
|   *			switch port. |  | ||||||
|   * |  | ||||||
| + *	@threaded:	napi threaded mode is enabled |  | ||||||
| + * |  | ||||||
|   *	FIXME: cleanup struct net_device such that network protocol info |  | ||||||
|   *	moves out. |  | ||||||
|   */ |  | ||||||
| @@ -1852,6 +1850,7 @@ struct net_device { |  | ||||||
|  	struct phy_device *phydev; |  | ||||||
|  	struct lock_class_key *qdisc_tx_busylock; |  | ||||||
|  	bool proto_down; |  | ||||||
| +	unsigned		threaded:1; |  | ||||||
|  }; |  | ||||||
|  #define to_net_dev(d) container_of(d, struct net_device, dev) |  | ||||||
|   |  | ||||||
| --- a/net/core/dev.c |  | ||||||
| +++ b/net/core/dev.c |  | ||||||
| @@ -94,6 +94,7 @@ |  | ||||||
|  #include <linux/ethtool.h> |  | ||||||
|  #include <linux/notifier.h> |  | ||||||
|  #include <linux/skbuff.h> |  | ||||||
| +#include <linux/kthread.h> |  | ||||||
|  #include <net/net_namespace.h> |  | ||||||
|  #include <net/sock.h> |  | ||||||
|  #include <linux/rtnetlink.h> |  | ||||||
| @@ -1304,6 +1305,27 @@ void netdev_notify_peers(struct net_devi |  | ||||||
|  } |  | ||||||
|  EXPORT_SYMBOL(netdev_notify_peers); |  | ||||||
|   |  | ||||||
| +static int napi_threaded_poll(void *data); |  | ||||||
| + |  | ||||||
| +static int napi_kthread_create(struct napi_struct *n) |  | ||||||
| +{ |  | ||||||
| +	int err = 0; |  | ||||||
| + |  | ||||||
| +	/* Create and wake up the kthread once to put it in |  | ||||||
| +	 * TASK_INTERRUPTIBLE mode to avoid the blocked task |  | ||||||
| +	 * warning and work with loadavg. |  | ||||||
| +	 */ |  | ||||||
| +	n->thread = kthread_run(napi_threaded_poll, n, "napi/%s-%d", |  | ||||||
| +				n->dev->name, n->napi_id); |  | ||||||
| +	if (IS_ERR(n->thread)) { |  | ||||||
| +		err = PTR_ERR(n->thread); |  | ||||||
| +		pr_err("kthread_run failed with err %d\n", err); |  | ||||||
| +		n->thread = NULL; |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
| +	return err; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
|  static int __dev_open(struct net_device *dev) |  | ||||||
|  { |  | ||||||
|  	const struct net_device_ops *ops = dev->netdev_ops; |  | ||||||
| @@ -3248,6 +3270,21 @@ int weight_p __read_mostly = 64; |  | ||||||
|  static inline void ____napi_schedule(struct softnet_data *sd, |  | ||||||
|  				     struct napi_struct *napi) |  | ||||||
|  { |  | ||||||
| +	struct task_struct *thread; |  | ||||||
| + |  | ||||||
| +	if (test_bit(NAPI_STATE_THREADED, &napi->state)) { |  | ||||||
| +		/* Paired with smp_mb__before_atomic() in |  | ||||||
| +		 * napi_enable(). Use READ_ONCE() to guarantee |  | ||||||
| +		 * a complete read on napi->thread. Only call |  | ||||||
| +		 * wake_up_process() when it's not NULL. |  | ||||||
| +		 */ |  | ||||||
| +		thread = READ_ONCE(napi->thread); |  | ||||||
| +		if (thread) { |  | ||||||
| +			wake_up_process(thread); |  | ||||||
| +			return; |  | ||||||
| +		} |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
|  	list_add_tail(&napi->poll_list, &sd->poll_list); |  | ||||||
|  	__raise_softirq_irqoff(NET_RX_SOFTIRQ); |  | ||||||
|  } |  | ||||||
| @@ -4828,9 +4865,33 @@ void netif_napi_add(struct net_device *d |  | ||||||
|  	napi->poll_owner = -1; |  | ||||||
|  #endif |  | ||||||
|  	set_bit(NAPI_STATE_SCHED, &napi->state); |  | ||||||
| +	/* Create kthread for this napi if dev->threaded is set. |  | ||||||
| +	 * Clear dev->threaded if kthread creation failed so that |  | ||||||
| +	 * threaded mode will not be enabled in napi_enable(). |  | ||||||
| +	 */ |  | ||||||
| +	if (dev->threaded && napi_kthread_create(napi)) |  | ||||||
| +		dev->threaded = 0; |  | ||||||
|  } |  | ||||||
|  EXPORT_SYMBOL(netif_napi_add); |  | ||||||
|   |  | ||||||
| +/** |  | ||||||
| + *	napi_enable - enable NAPI scheduling |  | ||||||
| + *	@n: NAPI context |  | ||||||
| + * |  | ||||||
| + * Resume NAPI from being scheduled on this context. |  | ||||||
| + * Must be paired with napi_disable. |  | ||||||
| + */ |  | ||||||
| +void napi_enable(struct napi_struct *n) |  | ||||||
| +{ |  | ||||||
| +	BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state)); |  | ||||||
| +	smp_mb__before_atomic(); |  | ||||||
| +	clear_bit(NAPI_STATE_SCHED, &n->state); |  | ||||||
| +	clear_bit(NAPI_STATE_NPSVC, &n->state); |  | ||||||
| +	if (n->dev->threaded && n->thread) |  | ||||||
| +		set_bit(NAPI_STATE_THREADED, &n->state); |  | ||||||
| +} |  | ||||||
| +EXPORT_SYMBOL(napi_enable); |  | ||||||
| + |  | ||||||
|  void napi_disable(struct napi_struct *n) |  | ||||||
|  { |  | ||||||
|  	might_sleep(); |  | ||||||
| @@ -4844,6 +4905,7 @@ void napi_disable(struct napi_struct *n) |  | ||||||
|  	hrtimer_cancel(&n->timer); |  | ||||||
|   |  | ||||||
|  	clear_bit(NAPI_STATE_DISABLE, &n->state); |  | ||||||
| +	clear_bit(NAPI_STATE_THREADED, &n->state); |  | ||||||
|  } |  | ||||||
|  EXPORT_SYMBOL(napi_disable); |  | ||||||
|   |  | ||||||
| @@ -4855,6 +4917,11 @@ void netif_napi_del(struct napi_struct * |  | ||||||
|  	kfree_skb_list(napi->gro_list); |  | ||||||
|  	napi->gro_list = NULL; |  | ||||||
|  	napi->gro_count = 0; |  | ||||||
| + |  | ||||||
| +	if (napi->thread) { |  | ||||||
| +		kthread_stop(napi->thread); |  | ||||||
| +		napi->thread = NULL; |  | ||||||
| +	} |  | ||||||
|  } |  | ||||||
|  EXPORT_SYMBOL(netif_napi_del); |  | ||||||
|   |  | ||||||
| @@ -4940,6 +5007,50 @@ static int napi_poll(struct napi_struct |  | ||||||
|  	return work; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| +static int napi_thread_wait(struct napi_struct *napi) |  | ||||||
| +{ |  | ||||||
| +	set_current_state(TASK_INTERRUPTIBLE); |  | ||||||
| + |  | ||||||
| +	while (!kthread_should_stop() && !napi_disable_pending(napi)) { |  | ||||||
| +		if (test_bit(NAPI_STATE_SCHED, &napi->state)) { |  | ||||||
| +			WARN_ON(!list_empty(&napi->poll_list)); |  | ||||||
| +			__set_current_state(TASK_RUNNING); |  | ||||||
| +			return 0; |  | ||||||
| +		} |  | ||||||
| + |  | ||||||
| +		schedule(); |  | ||||||
| +		set_current_state(TASK_INTERRUPTIBLE); |  | ||||||
| +	} |  | ||||||
| +	__set_current_state(TASK_RUNNING); |  | ||||||
| +	return -1; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
| +static int napi_threaded_poll(void *data) |  | ||||||
| +{ |  | ||||||
| +	struct napi_struct *napi = data; |  | ||||||
| +	void *have; |  | ||||||
| + |  | ||||||
| +	while (!napi_thread_wait(napi)) { |  | ||||||
| +		for (;;) { |  | ||||||
| +			bool repoll = false; |  | ||||||
| + |  | ||||||
| +			local_bh_disable(); |  | ||||||
| + |  | ||||||
| +			have = netpoll_poll_lock(napi); |  | ||||||
| +			__napi_poll(napi, &repoll); |  | ||||||
| +			netpoll_poll_unlock(have); |  | ||||||
| + |  | ||||||
| +			local_bh_enable(); |  | ||||||
| + |  | ||||||
| +			if (!repoll) |  | ||||||
| +				break; |  | ||||||
| + |  | ||||||
| +			cond_resched(); |  | ||||||
| +		} |  | ||||||
| +	} |  | ||||||
| +	return 0; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
|  static void net_rx_action(struct softirq_action *h) |  | ||||||
|  { |  | ||||||
|  	struct softnet_data *sd = this_cpu_ptr(&softnet_data); |  | ||||||
| @@ -1,156 +0,0 @@ | |||||||
| From: Wei Wang <weiwan@google.com> |  | ||||||
| Date: Mon, 8 Feb 2021 11:34:10 -0800 |  | ||||||
| Subject: [PATCH] net: add sysfs attribute to control napi threaded mode |  | ||||||
|  |  | ||||||
| This patch adds a new sysfs attribute to the network device class. |  | ||||||
| Said attribute provides a per-device control to enable/disable the |  | ||||||
| threaded mode for all the napi instances of the given network device, |  | ||||||
| without the need for a device up/down. |  | ||||||
| User sets it to 1 or 0 to enable or disable threaded mode. |  | ||||||
| Note: when switching between threaded and the current softirq based mode |  | ||||||
| for a napi instance, it will not immediately take effect if the napi is |  | ||||||
| currently being polled. The mode switch will happen for the next time |  | ||||||
| napi_schedule() is called. |  | ||||||
|  |  | ||||||
| Co-developed-by: Paolo Abeni <pabeni@redhat.com> |  | ||||||
| Signed-off-by: Paolo Abeni <pabeni@redhat.com> |  | ||||||
| Co-developed-by: Hannes Frederic Sowa <hannes@stressinduktion.org> |  | ||||||
| Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> |  | ||||||
| Co-developed-by: Felix Fietkau <nbd@nbd.name> |  | ||||||
| Signed-off-by: Felix Fietkau <nbd@nbd.name> |  | ||||||
| Signed-off-by: Wei Wang <weiwan@google.com> |  | ||||||
| Reviewed-by: Alexander Duyck <alexanderduyck@fb.com> |  | ||||||
| Signed-off-by: David S. Miller <davem@davemloft.net> |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| --- a/include/linux/netdevice.h |  | ||||||
| +++ b/include/linux/netdevice.h |  | ||||||
| @@ -496,6 +496,8 @@ void napi_hash_del(struct napi_struct *n |  | ||||||
|   */ |  | ||||||
|  void napi_disable(struct napi_struct *n); |  | ||||||
|   |  | ||||||
| +int dev_set_threaded(struct net_device *dev, bool threaded); |  | ||||||
| + |  | ||||||
|  /** |  | ||||||
|   *	napi_enable - enable NAPI scheduling |  | ||||||
|   *	@n: napi context |  | ||||||
| --- a/net/core/dev.c |  | ||||||
| +++ b/net/core/dev.c |  | ||||||
| @@ -3274,8 +3274,9 @@ static inline void ____napi_schedule(str |  | ||||||
|   |  | ||||||
|  	if (test_bit(NAPI_STATE_THREADED, &napi->state)) { |  | ||||||
|  		/* Paired with smp_mb__before_atomic() in |  | ||||||
| -		 * napi_enable(). Use READ_ONCE() to guarantee |  | ||||||
| -		 * a complete read on napi->thread. Only call |  | ||||||
| +		 * napi_enable()/dev_set_threaded(). |  | ||||||
| +		 * Use READ_ONCE() to guarantee a complete |  | ||||||
| +		 * read on napi->thread. Only call |  | ||||||
|  		 * wake_up_process() when it's not NULL. |  | ||||||
|  		 */ |  | ||||||
|  		thread = READ_ONCE(napi->thread); |  | ||||||
| @@ -4844,6 +4845,49 @@ static enum hrtimer_restart napi_watchdo |  | ||||||
|  	return HRTIMER_NORESTART; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| +int dev_set_threaded(struct net_device *dev, bool threaded) |  | ||||||
| +{ |  | ||||||
| +	struct napi_struct *napi; |  | ||||||
| +	int err = 0; |  | ||||||
| + |  | ||||||
| +	if (dev->threaded == threaded) |  | ||||||
| +		return 0; |  | ||||||
| + |  | ||||||
| +	if (threaded) { |  | ||||||
| +		list_for_each_entry(napi, &dev->napi_list, dev_list) { |  | ||||||
| +			if (!napi->thread) { |  | ||||||
| +				err = napi_kthread_create(napi); |  | ||||||
| +				if (err) { |  | ||||||
| +					threaded = false; |  | ||||||
| +					break; |  | ||||||
| +				} |  | ||||||
| +			} |  | ||||||
| +		} |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
| +	dev->threaded = threaded; |  | ||||||
| + |  | ||||||
| +	/* Make sure kthread is created before THREADED bit |  | ||||||
| +	 * is set. |  | ||||||
| +	 */ |  | ||||||
| +	smp_mb__before_atomic(); |  | ||||||
| + |  | ||||||
| +	/* Setting/unsetting threaded mode on a napi might not immediately |  | ||||||
| +	 * take effect, if the current napi instance is actively being |  | ||||||
| +	 * polled. In this case, the switch between threaded mode and |  | ||||||
| +	 * softirq mode will happen in the next round of napi_schedule(). |  | ||||||
| +	 * This should not cause hiccups/stalls to the live traffic. |  | ||||||
| +	 */ |  | ||||||
| +	list_for_each_entry(napi, &dev->napi_list, dev_list) { |  | ||||||
| +		if (threaded) |  | ||||||
| +			set_bit(NAPI_STATE_THREADED, &napi->state); |  | ||||||
| +		else |  | ||||||
| +			clear_bit(NAPI_STATE_THREADED, &napi->state); |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
| +	return err; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
|  void netif_napi_add(struct net_device *dev, struct napi_struct *napi, |  | ||||||
|  		    int (*poll)(struct napi_struct *, int), int weight) |  | ||||||
|  { |  | ||||||
| --- a/net/core/net-sysfs.c |  | ||||||
| +++ b/net/core/net-sysfs.c |  | ||||||
| @@ -486,6 +486,45 @@ static ssize_t phys_switch_id_show(struc |  | ||||||
|  } |  | ||||||
|  static DEVICE_ATTR_RO(phys_switch_id); |  | ||||||
|   |  | ||||||
| +static ssize_t threaded_show(struct device *dev, |  | ||||||
| +			     struct device_attribute *attr, char *buf) |  | ||||||
| +{ |  | ||||||
| +	struct net_device *netdev = to_net_dev(dev); |  | ||||||
| +	ssize_t ret = -EINVAL; |  | ||||||
| + |  | ||||||
| +	if (!rtnl_trylock()) |  | ||||||
| +		return restart_syscall(); |  | ||||||
| + |  | ||||||
| +	if (dev_isalive(netdev)) |  | ||||||
| +		ret = sprintf(buf, fmt_dec, netdev->threaded); |  | ||||||
| + |  | ||||||
| +	rtnl_unlock(); |  | ||||||
| +	return ret; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
| +static int modify_napi_threaded(struct net_device *dev, unsigned long val) |  | ||||||
| +{ |  | ||||||
| +	int ret; |  | ||||||
| + |  | ||||||
| +	if (list_empty(&dev->napi_list)) |  | ||||||
| +		return -EOPNOTSUPP; |  | ||||||
| + |  | ||||||
| +	if (val != 0 && val != 1) |  | ||||||
| +		return -EOPNOTSUPP; |  | ||||||
| + |  | ||||||
| +	ret = dev_set_threaded(dev, val); |  | ||||||
| + |  | ||||||
| +	return ret; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
| +static ssize_t threaded_store(struct device *dev, |  | ||||||
| +			      struct device_attribute *attr, |  | ||||||
| +			      const char *buf, size_t len) |  | ||||||
| +{ |  | ||||||
| +	return netdev_store(dev, attr, buf, len, modify_napi_threaded); |  | ||||||
| +} |  | ||||||
| +static DEVICE_ATTR_RW(threaded); |  | ||||||
| + |  | ||||||
|  static struct attribute *net_class_attrs[] = { |  | ||||||
|  	&dev_attr_netdev_group.attr, |  | ||||||
|  	&dev_attr_type.attr, |  | ||||||
| @@ -514,6 +553,7 @@ static struct attribute *net_class_attrs |  | ||||||
|  	&dev_attr_phys_port_name.attr, |  | ||||||
|  	&dev_attr_phys_switch_id.attr, |  | ||||||
|  	&dev_attr_proto_down.attr, |  | ||||||
| +	&dev_attr_threaded.attr, |  | ||||||
|  	NULL, |  | ||||||
|  }; |  | ||||||
|  ATTRIBUTE_GROUPS(net_class); |  | ||||||
| @@ -1,75 +0,0 @@ | |||||||
| From: Wei Wang <weiwan@google.com> |  | ||||||
| Date: Mon, 1 Mar 2021 17:21:13 -0800 |  | ||||||
| Subject: [PATCH] net: fix race between napi kthread mode and busy poll |  | ||||||
|  |  | ||||||
| Currently, napi_thread_wait() checks for NAPI_STATE_SCHED bit to |  | ||||||
| determine if the kthread owns this napi and could call napi->poll() on |  | ||||||
| it. However, if socket busy poll is enabled, it is possible that the |  | ||||||
| busy poll thread grabs this SCHED bit (after the previous napi->poll() |  | ||||||
| invokes napi_complete_done() and clears SCHED bit) and tries to poll |  | ||||||
| on the same napi. napi_disable() could grab the SCHED bit as well. |  | ||||||
| This patch tries to fix this race by adding a new bit |  | ||||||
| NAPI_STATE_SCHED_THREADED in napi->state. This bit gets set in |  | ||||||
| ____napi_schedule() if the threaded mode is enabled, and gets cleared |  | ||||||
| in napi_complete_done(), and we only poll the napi in kthread if this |  | ||||||
| bit is set. This helps distinguish the ownership of the napi between |  | ||||||
| kthread and other scenarios and fixes the race issue. |  | ||||||
|  |  | ||||||
| Fixes: 29863d41bb6e ("net: implement threaded-able napi poll loop support") |  | ||||||
| Reported-by: Martin Zaharinov <micron10@gmail.com> |  | ||||||
| Suggested-by: Jakub Kicinski <kuba@kernel.org> |  | ||||||
| Signed-off-by: Wei Wang <weiwan@google.com> |  | ||||||
| Cc: Alexander Duyck <alexanderduyck@fb.com> |  | ||||||
| Cc: Eric Dumazet <edumazet@google.com> |  | ||||||
| Cc: Paolo Abeni <pabeni@redhat.com> |  | ||||||
| Cc: Hannes Frederic Sowa <hannes@stressinduktion.org> |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| --- a/include/linux/netdevice.h |  | ||||||
| +++ b/include/linux/netdevice.h |  | ||||||
| @@ -328,6 +328,7 @@ enum { |  | ||||||
|  	NAPI_STATE_NPSVC,	/* Netpoll - don't dequeue from poll_list */ |  | ||||||
|  	NAPI_STATE_HASHED,	/* In NAPI hash */ |  | ||||||
|  	NAPI_STATE_THREADED,	/* The poll is performed inside its own thread*/ |  | ||||||
| +	NAPI_STATE_SCHED_THREADED,	/* Napi is currently scheduled in threaded mode */ |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
|  enum gro_result { |  | ||||||
| --- a/net/core/dev.c |  | ||||||
| +++ b/net/core/dev.c |  | ||||||
| @@ -3281,6 +3281,8 @@ static inline void ____napi_schedule(str |  | ||||||
|  		 */ |  | ||||||
|  		thread = READ_ONCE(napi->thread); |  | ||||||
|  		if (thread) { |  | ||||||
| +			if (thread->state != TASK_INTERRUPTIBLE) |  | ||||||
| +				set_bit(NAPI_STATE_SCHED_THREADED, &napi->state); |  | ||||||
|  			wake_up_process(thread); |  | ||||||
|  			return; |  | ||||||
|  		} |  | ||||||
| @@ -5053,16 +5055,25 @@ static int napi_poll(struct napi_struct |  | ||||||
|   |  | ||||||
|  static int napi_thread_wait(struct napi_struct *napi) |  | ||||||
|  { |  | ||||||
| +	bool woken = false; |  | ||||||
| + |  | ||||||
|  	set_current_state(TASK_INTERRUPTIBLE); |  | ||||||
|   |  | ||||||
|  	while (!kthread_should_stop() && !napi_disable_pending(napi)) { |  | ||||||
| -		if (test_bit(NAPI_STATE_SCHED, &napi->state)) { |  | ||||||
| +		/* Testing SCHED_THREADED bit here to make sure the current |  | ||||||
| +		 * kthread owns this napi and could poll on this napi. |  | ||||||
| +		 * Testing SCHED bit is not enough because SCHED bit might be |  | ||||||
| +		 * set by some other busy poll thread or by napi_disable(). |  | ||||||
| +		 */ |  | ||||||
| +		if (test_bit(NAPI_STATE_SCHED_THREADED, &napi->state) || woken) { |  | ||||||
|  			WARN_ON(!list_empty(&napi->poll_list)); |  | ||||||
|  			__set_current_state(TASK_RUNNING); |  | ||||||
|  			return 0; |  | ||||||
|  		} |  | ||||||
|   |  | ||||||
|  		schedule(); |  | ||||||
| +		/* woken being true indicates this thread owns this napi. */ |  | ||||||
| +		woken = true; |  | ||||||
|  		set_current_state(TASK_INTERRUPTIBLE); |  | ||||||
|  	} |  | ||||||
|  	__set_current_state(TASK_RUNNING); |  | ||||||
| @@ -1,53 +0,0 @@ | |||||||
| From: Paolo Abeni <pabeni@redhat.com> |  | ||||||
| Date: Fri, 9 Apr 2021 17:24:17 +0200 |  | ||||||
| Subject: [PATCH] net: fix hangup on napi_disable for threaded napi |  | ||||||
|  |  | ||||||
| napi_disable() is subject to an hangup, when the threaded |  | ||||||
| mode is enabled and the napi is under heavy traffic. |  | ||||||
|  |  | ||||||
| If the relevant napi has been scheduled and the napi_disable() |  | ||||||
| kicks in before the next napi_threaded_wait() completes - so |  | ||||||
| that the latter quits due to the napi_disable_pending() condition, |  | ||||||
| the existing code leaves the NAPI_STATE_SCHED bit set and the |  | ||||||
| napi_disable() loop waiting for such bit will hang. |  | ||||||
|  |  | ||||||
| This patch addresses the issue by dropping the NAPI_STATE_DISABLE |  | ||||||
| bit test in napi_thread_wait(). The later napi_threaded_poll() |  | ||||||
| iteration will take care of clearing the NAPI_STATE_SCHED. |  | ||||||
|  |  | ||||||
| This also addresses a related problem reported by Jakub: |  | ||||||
| before this patch a napi_disable()/napi_enable() pair killed |  | ||||||
| the napi thread, effectively disabling the threaded mode. |  | ||||||
| On the patched kernel napi_disable() simply stops scheduling |  | ||||||
| the relevant thread. |  | ||||||
|  |  | ||||||
| v1 -> v2: |  | ||||||
|   - let the main napi_thread_poll() loop clear the SCHED bit |  | ||||||
|  |  | ||||||
| Reported-by: Jakub Kicinski <kuba@kernel.org> |  | ||||||
| Fixes: 29863d41bb6e ("net: implement threaded-able napi poll loop support") |  | ||||||
| Signed-off-by: Paolo Abeni <pabeni@redhat.com> |  | ||||||
| Reviewed-by: Eric Dumazet <edumazet@google.com> |  | ||||||
| Link: https://lore.kernel.org/r/883923fa22745a9589e8610962b7dc59df09fb1f.1617981844.git.pabeni@redhat.com |  | ||||||
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| --- a/net/core/dev.c |  | ||||||
| +++ b/net/core/dev.c |  | ||||||
| @@ -5059,7 +5059,7 @@ static int napi_thread_wait(struct napi_ |  | ||||||
|   |  | ||||||
|  	set_current_state(TASK_INTERRUPTIBLE); |  | ||||||
|   |  | ||||||
| -	while (!kthread_should_stop() && !napi_disable_pending(napi)) { |  | ||||||
| +	while (!kthread_should_stop()) { |  | ||||||
|  		/* Testing SCHED_THREADED bit here to make sure the current |  | ||||||
|  		 * kthread owns this napi and could poll on this napi. |  | ||||||
|  		 * Testing SCHED bit is not enough because SCHED bit might be |  | ||||||
| @@ -5077,6 +5077,7 @@ static int napi_thread_wait(struct napi_ |  | ||||||
|  		set_current_state(TASK_INTERRUPTIBLE); |  | ||||||
|  	} |  | ||||||
|  	__set_current_state(TASK_RUNNING); |  | ||||||
| + |  | ||||||
|  	return -1; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| @@ -13,6 +13,7 @@ PKG_RELEASE:=1 | |||||||
|  |  | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_URL:=https://github.com/dtaht/sch_cake.git | PKG_SOURCE_URL:=https://github.com/dtaht/sch_cake.git | ||||||
|  | PKG_MIRROR_HASH:=8bb4fa43368be5b5839a350419701b0bb3881b1641e037affea42630d75e56e6 | ||||||
| PKG_SOURCE_DATE:=2021-07-09 | PKG_SOURCE_DATE:=2021-07-09 | ||||||
| PKG_SOURCE_VERSION:=d9e1398cc9091e9e7c7a740361e4617b75c24427 | PKG_SOURCE_VERSION:=d9e1398cc9091e9e7c7a740361e4617b75c24427 | ||||||
| #PKG_MIRROR_HASH:=5bf06a804824db36ae393fc174aeec7b12633176e05a765c0931b39df5bd34df | #PKG_MIRROR_HASH:=5bf06a804824db36ae393fc174aeec7b12633176e05a765c0931b39df5bd34df | ||||||
|   | |||||||
| @@ -6,6 +6,7 @@ PKG_SOURCE_PROTO:=git | |||||||
| PKG_BRANCH:=master | PKG_BRANCH:=master | ||||||
| PKG_RELEASE:=2 | PKG_RELEASE:=2 | ||||||
| PKG_SOURCE_URL:=https://source.codeaurora.org/quic/qsdk/oss/lklm/nss-clients/ | PKG_SOURCE_URL:=https://source.codeaurora.org/quic/qsdk/oss/lklm/nss-clients/ | ||||||
|  | PKG_MIRROR_HASH:=802bf8b2dac8da0549e108b873afd982d127370c07d6574ece71f902eafe7698 | ||||||
| PKG_VERSION:=153998d70fdba508a59a28c13a606032cbf32686 | PKG_VERSION:=153998d70fdba508a59a28c13a606032cbf32686 | ||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | ||||||
|   | |||||||
| @@ -7,12 +7,15 @@ boot() { | |||||||
| 	. /lib/functions.sh | 	. /lib/functions.sh | ||||||
| 	mkdir -p /certificates /etc/ucentral/ | 	mkdir -p /certificates /etc/ucentral/ | ||||||
| 	local mtd=$(find_mtd_index certificates) | 	local mtd=$(find_mtd_index certificates) | ||||||
| 	[ -n "$mtd" -a -f /sys/class/mtd/mtd$mtd/oobsize ] && ubiattach -p /dev/mtd$mtd | 	 | ||||||
| 	if [ -n "$(ubinfo -a | grep certificates)" ]; then | 	if [ "$(head -c 4 /dev/mtd$mtd)" == "hsqs" ]; then | ||||||
| 		[ -e /dev/ubi0 ] && mount -t ubifs ubi0:certificates /certificates |  | ||||||
| 		[ -e /dev/ubi1 ] && mount -t ubifs ubi1:certificates /certificates |  | ||||||
| 	else |  | ||||||
| 		mount -t squashfs /dev/mtdblock$mtd /certificates | 		mount -t squashfs /dev/mtdblock$mtd /certificates | ||||||
|  | 	else | ||||||
|  | 		[ -n "$mtd" -a -f /sys/class/mtd/mtd$mtd/oobsize ] && ubiattach -p /dev/mtd$mtd | ||||||
|  | 		if [ -n "$(ubinfo -a | grep certificates)" ]; then | ||||||
|  | 			[ -e /dev/ubi0 ] && mount -t ubifs ubi0:certificates /certificates | ||||||
|  | 			[ -e /dev/ubi1 ] && mount -t ubifs ubi1:certificates /certificates | ||||||
|  | 		fi | ||||||
| 	fi | 	fi | ||||||
| 	[ -f /certificates/dev-id ] && { | 	[ -f /certificates/dev-id ] && { | ||||||
| 		cp /certificates/*.pem /etc/ucentral/ | 		cp /certificates/*.pem /etc/ucentral/ | ||||||
|   | |||||||
| @@ -16,12 +16,14 @@ wifi config | |||||||
|  |  | ||||||
| . /lib/functions.sh | . /lib/functions.sh | ||||||
|  |  | ||||||
|  | SUFFIX=$(uci get system.@system[0].hostname | tail -c 7 | tr a-f A-F | tr -d '\n') | ||||||
|  |  | ||||||
| radio_enable() {  | radio_enable() {  | ||||||
| 	uci set wireless.$1.disabled=0  | 	uci set wireless.$1.disabled=0  | ||||||
| }  | }  | ||||||
|  |  | ||||||
| ssid_set() {  | ssid_set() {  | ||||||
| 	uci set wireless.$1.ssid='Maverick'  | 	uci set wireless.$1.ssid=Maverick-${SUFFIX} | ||||||
| } | } | ||||||
|  |  | ||||||
| delete_forwarding() { | delete_forwarding() { | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ PKG_NAME:=dynamic-vlan | |||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/dynamic-vlan.git | PKG_SOURCE_URL=https://github.com/blogic/dynamic-vlan.git | ||||||
|  | PKG_MIRROR_HASH:=448890cdf182bd1b47edffca242e607594d0d17f6f5017a6fd021aab79f3c351 | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2021-06-04 | PKG_SOURCE_DATE:=2021-06-04 | ||||||
| PKG_SOURCE_VERSION:=55d78d3e7215b601084980d922349bcfdcf9cf20 | PKG_SOURCE_VERSION:=55d78d3e7215b601084980d922349bcfdcf9cf20 | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ PKG_LICENSE:=GPL-2.0 | |||||||
| PKG_MAINTAINER:=John Crispin <john@phrozen.org> | PKG_MAINTAINER:=John Crispin <john@phrozen.org> | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/ieee8021x.git | PKG_SOURCE_URL=https://github.com/blogic/ieee8021x.git | ||||||
|  | PKG_MIRROR_HASH:=7e14e320714b4759f5c393f90165a69d133633612b57d408b3ab6535710bf53c | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2021-04-12 | PKG_SOURCE_DATE:=2021-04-12 | ||||||
| PKG_SOURCE_VERSION:=c1f36559dc0ed2deeac0531a3d5854f1955ae928 | PKG_SOURCE_VERSION:=c1f36559dc0ed2deeac0531a3d5854f1955ae928 | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ PKG_NAME:=ucentral-client | |||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/ucentral-client.git | PKG_SOURCE_URL=https://github.com/blogic/ucentral-client.git | ||||||
|  | PKG_MIRROR_HASH:=f00e800d97335d088281670aa1b459da1fdd5e4a2927ce280b7d9cb369ebc21a | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2022-01-10 | PKG_SOURCE_DATE:=2022-01-10 | ||||||
| PKG_SOURCE_VERSION:=e3b71c61e1a07bb3b5fa34fe835fd8f6f708caa3 | PKG_SOURCE_VERSION:=e3b71c61e1a07bb3b5fa34fe835fd8f6f708caa3 | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ PKG_NAME:=ucentral-event | |||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/ucentral-event.git | PKG_SOURCE_URL=https://github.com/blogic/ucentral-event.git | ||||||
|  | PKG_MIRROR_HASH:=615563b31f55b18b8900f8614c6c8add0d6a812da57d220a7632109b06795036 | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2021-04-13 | PKG_SOURCE_DATE:=2021-04-13 | ||||||
| PKG_SOURCE_VERSION:=7b0d136e8556bb099d7032823139d275448714cb | PKG_SOURCE_VERSION:=7b0d136e8556bb099d7032823139d275448714cb | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ PKG_RELEASE:=1 | |||||||
| PKG_SOURCE_URL=https://github.com/blogic/ucentral-schema.git | PKG_SOURCE_URL=https://github.com/blogic/ucentral-schema.git | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2022-01-17 | PKG_SOURCE_DATE:=2022-01-17 | ||||||
| PKG_SOURCE_VERSION:=07cb6e9fc7a4a8f9868e6efd29edcaf1f3245716 | PKG_SOURCE_VERSION:=19fcc8d8163e84734d34dc7dd9767c2fa133fa16 | ||||||
|  |  | ||||||
| PKG_MAINTAINER:=John Crispin <john@phrozen.org> | PKG_MAINTAINER:=John Crispin <john@phrozen.org> | ||||||
| PKG_LICENSE:=BSD-3-Clause | PKG_LICENSE:=BSD-3-Clause | ||||||
|   | |||||||
| @@ -3,12 +3,12 @@ | |||||||
| 	"radios": [ | 	"radios": [ | ||||||
| 		{ | 		{ | ||||||
| 			"band": "2G", | 			"band": "2G", | ||||||
| 			"country": "CA", | 			"country": "US", | ||||||
| 			"channel-mode": "HE", | 			"channel-mode": "HE", | ||||||
| 			"channel-width": 40 | 			"channel-width": 40 | ||||||
| 		}, { | 		}, { | ||||||
| 			"band": "5G", | 			"band": "5G", | ||||||
| 			"country": "CA", | 			"country": "US", | ||||||
| 			"channel-mode": "HE", | 			"channel-mode": "HE", | ||||||
| 			"channel-width": 80 | 			"channel-width": 80 | ||||||
| 		} | 		} | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								feeds/ucentral/ucentral-schema/files/usr/bin/tcpdump_timeout
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								feeds/ucentral/ucentral-schema/files/usr/bin/tcpdump_timeout
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | #!/bin/sh | ||||||
|  |  | ||||||
|  | n=$1 | ||||||
|  | shift | ||||||
|  |  | ||||||
|  | if [ $n -eq 0]; then | ||||||
|  | 	tcpdump $@ | ||||||
|  | else | ||||||
|  | 	tcpdump $@ & | ||||||
|  | 	x=$! | ||||||
|  | 	sleep $n | ||||||
|  | 	kill $x | ||||||
|  | fi | ||||||
| @@ -0,0 +1,16 @@ | |||||||
|  | #!/usr/bin/ucode -R | ||||||
|  |  | ||||||
|  | let nl = require("nl80211"); | ||||||
|  | let def = nl.const; | ||||||
|  |  | ||||||
|  | function phy_get() { | ||||||
|  | 	let res = nl.request(def.NL80211_CMD_GET_WIPHY, def.NLM_F_DUMP, { split_wiphy_dump: true }); | ||||||
|  |  | ||||||
|  | 	if (res === false) | ||||||
|  | 		warn("Unable to lookup phys: " + nl.error() + "\n"); | ||||||
|  |  | ||||||
|  | 	return res; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | let phys = phy_get(); | ||||||
|  | printf("%d\n", phys[0].max_ap_assoc); | ||||||
| @@ -4,6 +4,7 @@ PKG_NAME:=ucentral-tools | |||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/ucentral-tools.git | PKG_SOURCE_URL=https://github.com/blogic/ucentral-tools.git | ||||||
|  | PKG_MIRROR_HASH:=9ae6a0cd431595871c233550427c4043c2ba7ddb3c5d87e46ab74a03b2b5a947 | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2021-01-28 | PKG_SOURCE_DATE:=2021-01-28 | ||||||
| PKG_SOURCE_VERSION:=b013fc636e48d407870a46aaa68a09ed74de8d6f | PKG_SOURCE_VERSION:=b013fc636e48d407870a46aaa68a09ed74de8d6f | ||||||
|   | |||||||
| @@ -4,9 +4,10 @@ PKG_NAME:=ucentral-wifi | |||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/ucentral-wifi.git | PKG_SOURCE_URL=https://github.com/blogic/ucentral-wifi.git | ||||||
|  | PKG_MIRROR_HASH:=b6a3bfbd0823c54bb6fb3899e583db8580474a24c1b238d97be152ea8eccf6e5 | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2022-01-10 | PKG_SOURCE_DATE:=2022-01-10 | ||||||
| PKG_SOURCE_VERSION:=955fed125e0597dda14cf52fb7224991072d6146 | PKG_SOURCE_VERSION:=40d0eb9d6f36f558d14d6a1783711c3cf07638c5 | ||||||
|  |  | ||||||
| PKG_MAINTAINER:=John Crispin <john@phrozen.org> | PKG_MAINTAINER:=John Crispin <john@phrozen.org> | ||||||
| PKG_LICENSE:=BSD-3-Clause | PKG_LICENSE:=BSD-3-Clause | ||||||
|   | |||||||
| @@ -1,15 +1,15 @@ | |||||||
| From 1c89014c7c0e68e1eeb851ea538fb67a57988dd4 Mon Sep 17 00:00:00 2001 | From eac420899717e2d23f6d13304bd67278a7e91730 Mon Sep 17 00:00:00 2001 | ||||||
| From: John Crispin <john@phrozen.org> | From: John Crispin <john@phrozen.org> | ||||||
| Date: Thu, 20 Jan 2022 10:48:35 +0100 | Date: Thu, 20 Jan 2022 10:48:35 +0100 | ||||||
| Subject: [PATCH 1/2] fixes | Subject: [PATCH 1/2] fixes | ||||||
|  |  | ||||||
| --- | --- | ||||||
|  lib/nl80211.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++---- |  lib/nl80211.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++---- | ||||||
|  lib/rtnl.c    |  1 + |  lib/rtnl.c    |  1 + | ||||||
|  2 files changed, 69 insertions(+), 5 deletions(-) |  2 files changed, 71 insertions(+), 6 deletions(-) | ||||||
|  |  | ||||||
| diff --git a/lib/nl80211.c b/lib/nl80211.c | diff --git a/lib/nl80211.c b/lib/nl80211.c | ||||||
| index fc24fb8..e308ebc 100644 | index fc24fb8..1d0871a 100644 | ||||||
| --- a/lib/nl80211.c | --- a/lib/nl80211.c | ||||||
| +++ b/lib/nl80211.c | +++ b/lib/nl80211.c | ||||||
| @@ -45,6 +45,8 @@ limitations under the License. | @@ -45,6 +45,8 @@ limitations under the License. | ||||||
| @@ -132,7 +132,7 @@ index fc24fb8..e308ebc 100644 | |||||||
|  	.attrs = { |  	.attrs = { | ||||||
|  		{ NL80211_STA_INFO_INACTIVE_TIME, "inactive_time", DT_U32, 0, NULL }, |  		{ NL80211_STA_INFO_INACTIVE_TIME, "inactive_time", DT_U32, 0, NULL }, | ||||||
|  		{ NL80211_STA_INFO_RX_BYTES, "rx_bytes", DT_U32, 0, NULL }, |  		{ NL80211_STA_INFO_RX_BYTES, "rx_bytes", DT_U32, 0, NULL }, | ||||||
| @@ -724,15 +783,16 @@ static const uc_nl_nested_spec_t nl80211_sta_info_nla = { | @@ -724,21 +783,22 @@ static const uc_nl_nested_spec_t nl80211_sta_info_nla = { | ||||||
|  		{ NL80211_STA_INFO_NONPEER_PM, "nonpeer_pm", DT_U32, 0, NULL }, |  		{ NL80211_STA_INFO_NONPEER_PM, "nonpeer_pm", DT_U32, 0, NULL }, | ||||||
|  		{ NL80211_STA_INFO_CHAIN_SIGNAL, "chain_signal", DT_S8, DF_MULTIPLE|DF_AUTOIDX, NULL }, |  		{ NL80211_STA_INFO_CHAIN_SIGNAL, "chain_signal", DT_S8, DF_MULTIPLE|DF_AUTOIDX, NULL }, | ||||||
|  		{ NL80211_STA_INFO_CHAIN_SIGNAL_AVG, "chain_signal_avg", DT_S8, DF_MULTIPLE|DF_AUTOIDX, NULL }, |  		{ NL80211_STA_INFO_CHAIN_SIGNAL_AVG, "chain_signal_avg", DT_S8, DF_MULTIPLE|DF_AUTOIDX, NULL }, | ||||||
| @@ -152,7 +152,22 @@ index fc24fb8..e308ebc 100644 | |||||||
|  	} |  	} | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -1044,6 +1104,9 @@ uc_nl_parse_attrs(struct nl_msg *msg, char *base, const uc_nl_attr_spec_t *attrs |  static const uc_nl_nested_spec_t nl80211_msg = { | ||||||
|  |  	.headsize = 0, | ||||||
|  | -	.nattrs = 124, | ||||||
|  | +	.nattrs = 125, | ||||||
|  |  	.attrs = { | ||||||
|  |  		{ NL80211_ATTR_4ADDR, "4addr", DT_U8, 0, NULL }, | ||||||
|  |  		{ NL80211_ATTR_AIRTIME_WEIGHT, "airtime_weight", DT_U16, 0, NULL }, | ||||||
|  | @@ -864,6 +924,7 @@ static const uc_nl_nested_spec_t nl80211_msg = { | ||||||
|  |  		{ NL80211_ATTR_WPA_VERSIONS, "wpa_versions", DT_U32, 0, NULL }, | ||||||
|  |  		{ NL80211_ATTR_SUPPORTED_IFTYPES, "supported_iftypes", DT_NESTED, 0, &nl80211_ifcomb_limit_types_nla }, | ||||||
|  |  		{ NL80211_ATTR_SOFTWARE_IFTYPES, "software_iftypes", DT_NESTED, 0, &nl80211_ifcomb_limit_types_nla }, | ||||||
|  | +		{ NL80211_ATTR_MAX_AP_ASSOC_STA, "max_ap_assoc", DT_U16, 0, NULL }, | ||||||
|  |  	} | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  | @@ -1044,6 +1105,9 @@ uc_nl_parse_attrs(struct nl_msg *msg, char *base, const uc_nl_attr_spec_t *attrs | ||||||
|  	bool exists; |  	bool exists; | ||||||
|   |   | ||||||
|  	for (i = 0; i < nattrs; i++) { |  	for (i = 0; i < nattrs; i++) { | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ PKG_RELEASE:=1 | |||||||
|  |  | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/udevmand.git | PKG_SOURCE_URL=https://github.com/blogic/udevmand.git | ||||||
|  | PKG_MIRROR_HASH:=25e47c7f3d454cc5eba4e9c19fc9da8431e3c2b1b97b8f0f49798f51c2722df7 | ||||||
| PKG_SOURCE_DATE:=20220112 | PKG_SOURCE_DATE:=20220112 | ||||||
| PKG_SOURCE_VERSION:=065f75cb88aa317441adffeddc8d5302cfaafc8a | PKG_SOURCE_VERSION:=065f75cb88aa317441adffeddc8d5302cfaafc8a | ||||||
| CMAKE_INSTALL:=1 | CMAKE_INSTALL:=1 | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ PKG_LICENSE:=GPL-2.0 | |||||||
| PKG_MAINTAINER:=John Crispin <john@phrozen.org> | PKG_MAINTAINER:=John Crispin <john@phrozen.org> | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/udhcpsnoop.git | PKG_SOURCE_URL=https://github.com/blogic/udhcpsnoop.git | ||||||
|  | PKG_MIRROR_HASH:=721f005e51c46b9381f3e5a6576b8a31afd3903ddb0e7b569d7337a57ca33dd2 | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2021-04-12 | PKG_SOURCE_DATE:=2021-04-12 | ||||||
| PKG_SOURCE_VERSION:=b86639904147a40be32ac43cd89c21109ffc3543 | PKG_SOURCE_VERSION:=b86639904147a40be32ac43cd89c21109ffc3543 | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ PKG_LICENSE:=GPL-2.0 | |||||||
| PKG_MAINTAINER:=John Crispin <john@phrozen.org> | PKG_MAINTAINER:=John Crispin <john@phrozen.org> | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/udnssnoop.git | PKG_SOURCE_URL=https://github.com/blogic/udnssnoop.git | ||||||
|  | PKG_MIRROR_HASH:=afd17cc6aed4a151bc0f437b84491d751932a39f93f429418200e9e8be53dfad | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2021-04-12 | PKG_SOURCE_DATE:=2021-04-12 | ||||||
| PKG_SOURCE_VERSION:=67e1e5f0bfc12222aa59c54e7066b1c00a680e56 | PKG_SOURCE_VERSION:=67e1e5f0bfc12222aa59c54e7066b1c00a680e56 | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ PKG_NAME:=usteer | |||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://git.openwrt.org/project/usteer.git | PKG_SOURCE_URL=https://git.openwrt.org/project/usteer.git | ||||||
|  | PKG_MIRROR_HASH:=34a9f2867b3e9050d4707b986481681f97f6fad71bc3fb3276fa3c3b26e2ab67 | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2021-04-19 | PKG_SOURCE_DATE:=2021-04-19 | ||||||
| PKG_SOURCE_VERSION:=f42bf2962edd0199e4c96ebf19933b2846bcce27 | PKG_SOURCE_VERSION:=f42bf2962edd0199e4c96ebf19933b2846bcce27 | ||||||
|   | |||||||
| @@ -20,6 +20,12 @@ $(Package/ath11k-firmware-default) | |||||||
|   DEPENDS:=@TARGET_ipq807x_ipq50xx |   DEPENDS:=@TARGET_ipq807x_ipq50xx | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  | define Package/ath11k-firmware-ipq50xx-spruce | ||||||
|  | $(Package/ath11k-firmware-default) | ||||||
|  |   TITLE:=ath11k firmware for IPQ50xx devices with spruce | ||||||
|  |   DEPENDS:=@TARGET_ipq807x_ipq50xx | ||||||
|  | endef | ||||||
|  |  | ||||||
| define Package/ath11k-firmware-ipq60xx | define Package/ath11k-firmware-ipq60xx | ||||||
| $(Package/ath11k-firmware-default) | $(Package/ath11k-firmware-default) | ||||||
|   TITLE:=ath11k firmware for IPQ60xx devices |   TITLE:=ath11k firmware for IPQ60xx devices | ||||||
| @@ -48,6 +54,10 @@ define Package/ath11k-firmware-ipq50xx/description | |||||||
| Standard ath11k firmware for IPQ50xx from QCA | Standard ath11k firmware for IPQ50xx from QCA | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  | define Package/ath11k-firmware-ipq50xx-spruce/description | ||||||
|  | Standard ath11k firmware for IPQ50xx/spruce from QCA | ||||||
|  | endef | ||||||
|  |  | ||||||
| define Package/ath11k-firmware-ipq60xx/description | define Package/ath11k-firmware-ipq60xx/description | ||||||
| Standard ath11k firmware for IPQ60xx from QCA | Standard ath11k firmware for IPQ60xx from QCA | ||||||
| endef | endef | ||||||
| @@ -74,6 +84,12 @@ define Package/ath11k-firmware-ipq50xx/install | |||||||
| 		$(1)/lib/firmware/IPQ5018/ | 		$(1)/lib/firmware/IPQ5018/ | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  | define Package/ath11k-firmware-ipq50xx-spruce/install | ||||||
|  | 	$(INSTALL_DIR) $(1)/lib/firmware/IPQ5018 | ||||||
|  | 	$(INSTALL_DATA) ./files/IPQ5018_spruce/* \ | ||||||
|  | 		$(1)/lib/firmware/IPQ5018/ | ||||||
|  | endef | ||||||
|  |  | ||||||
| define Package/ath11k-firmware-ipq60xx/install | define Package/ath11k-firmware-ipq60xx/install | ||||||
| 	$(INSTALL_DIR) $(1)/lib/firmware/IPQ6018 | 	$(INSTALL_DIR) $(1)/lib/firmware/IPQ6018 | ||||||
| 	$(INSTALL_DATA) ./files/IPQ6018/* \ | 	$(INSTALL_DATA) ./files/IPQ6018/* \ | ||||||
| @@ -87,6 +103,7 @@ define Package/ath11k-firmware-ipq807x/install | |||||||
| endef | endef | ||||||
|  |  | ||||||
| define Package/ath11k-firmware-qcn6122/install | define Package/ath11k-firmware-qcn6122/install | ||||||
|  | 	$(INSTALL_DIR) $(1)/lib/firmware/ath11k/qcn6122 | ||||||
| 	$(INSTALL_DIR) $(1)/lib/firmware/qcn6122 | 	$(INSTALL_DIR) $(1)/lib/firmware/qcn6122 | ||||||
| 	$(INSTALL_DATA) ./files/QCN6122/* \ | 	$(INSTALL_DATA) ./files/QCN6122/* \ | ||||||
| 		$(1)/lib/firmware/qcn6122/ | 		$(1)/lib/firmware/qcn6122/ | ||||||
| @@ -99,6 +116,7 @@ define Package/ath11k-firmware-qcn9000/install | |||||||
| endef | endef | ||||||
|  |  | ||||||
| $(eval $(call BuildPackage,ath11k-firmware-ipq50xx)) | $(eval $(call BuildPackage,ath11k-firmware-ipq50xx)) | ||||||
|  | $(eval $(call BuildPackage,ath11k-firmware-ipq50xx-spruce)) | ||||||
| $(eval $(call BuildPackage,ath11k-firmware-ipq60xx)) | $(eval $(call BuildPackage,ath11k-firmware-ipq60xx)) | ||||||
| $(eval $(call BuildPackage,ath11k-firmware-ipq807x)) | $(eval $(call BuildPackage,ath11k-firmware-ipq807x)) | ||||||
| $(eval $(call BuildPackage,ath11k-firmware-qcn6122)) | $(eval $(call BuildPackage,ath11k-firmware-qcn6122)) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | WLAN.HK.2.5.r4-00745-QCAHKSWPL_SILICONZ-1 v1 | ||||||
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/m3_fw.b00
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/m3_fw.b00
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/m3_fw.b01
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/m3_fw.b01
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/m3_fw.b02
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/m3_fw.b02
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/m3_fw.b00 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/m3_fw.b01 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/m3_fw.b02 | ||||||
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/m3_fw.mdt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/m3_fw.mdt
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/mpnv10.bin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/mpnv10.bin
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b00
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b00
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b01
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b01
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b02
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b02
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b03
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b03
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b04
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b04
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b05
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b05
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b07
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b07
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b08
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b08
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b09
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b09
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b10
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b10
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b11
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b11
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b13
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b13
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b14
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b14
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b15
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b15
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b16
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b16
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b17
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b17
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b18
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b18
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b20
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b20
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b21
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b21
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b22
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b22
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b23
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b23
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b25
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b25
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b26
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.b26
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b00 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b01 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b02 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b03 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b04 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b05 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b07 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b08 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b09 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b10 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b11 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b13 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b14 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b15 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b16 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b17 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b18 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b20 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b21 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b22 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b23 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b25 | ||||||
|  | build/ms/bin/5018.wlanfw2.map_spr_spr_eval_cs/PIL_IMAGES/q6_fw.b26 | ||||||
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.mdt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-firmware/files/IPQ5018_spruce/q6_fw.mdt
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -33,6 +33,7 @@ ALLWIFIBOARDS:= \ | |||||||
| 	edgecore-eap101 \ | 	edgecore-eap101 \ | ||||||
| 	sercomm-wallaby \ | 	sercomm-wallaby \ | ||||||
| 	edgecore-eap102 \ | 	edgecore-eap102 \ | ||||||
|  | 	edgecore-eap104 \ | ||||||
| 	wallys-dr6018 \ | 	wallys-dr6018 \ | ||||||
| 	wallys-dr6018-v4 \ | 	wallys-dr6018-v4 \ | ||||||
| 	tplink-ex227 \ | 	tplink-ex227 \ | ||||||
| @@ -96,6 +97,9 @@ define ath11k-wifi-install-one | |||||||
|   $(if $(filter $(suffix $(1)),.QCN9074),\ |   $(if $(filter $(suffix $(1)),.QCN9074),\ | ||||||
|     $(call ath11k-wifi-install-one-to,$(1),$(2),ath11k/QCN9074/hw1.0/),\ |     $(call ath11k-wifi-install-one-to,$(1),$(2),ath11k/QCN9074/hw1.0/),\ | ||||||
|   ) |   ) | ||||||
|  |   $(if $(filter $(suffix $(1)),.QCN6122),\ | ||||||
|  |     $(call ath11k-wifi-install-one-to,$(1),$(2),ath11k/qcn6122/hw1.0/),\ | ||||||
|  |   ) | ||||||
|  |  | ||||||
| endef | endef | ||||||
| # Blank line required at end of above define due to foreach context | # Blank line required at end of above define due to foreach context | ||||||
| @@ -168,6 +172,7 @@ $(eval $(call generate-ath11k-wifi-package,wallys-dr6018,Wallys DR6018)) | |||||||
| $(eval $(call generate-ath11k-wifi-package,wallys-dr6018-v4,Wallys DR6018 V4)) | $(eval $(call generate-ath11k-wifi-package,wallys-dr6018-v4,Wallys DR6018 V4)) | ||||||
| $(eval $(call generate-ath11k-wifi-package,edgecore-eap101,EdgeCore EAP101)) | $(eval $(call generate-ath11k-wifi-package,edgecore-eap101,EdgeCore EAP101)) | ||||||
| $(eval $(call generate-ath11k-wifi-package,edgecore-eap102,Edgecore EAP102)) | $(eval $(call generate-ath11k-wifi-package,edgecore-eap102,Edgecore EAP102)) | ||||||
|  | $(eval $(call generate-ath11k-wifi-package,edgecore-eap104,Edgecore EAP104)) | ||||||
| $(eval $(call generate-ath11k-wifi-package,tplink-ex227,TP-Link EX227)) | $(eval $(call generate-ath11k-wifi-package,tplink-ex227,TP-Link EX227)) | ||||||
| $(eval $(call generate-ath11k-wifi-package,tplink-ex447,TP-Link EX447)) | $(eval $(call generate-ath11k-wifi-package,tplink-ex447,TP-Link EX447)) | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-wifi/board-edgecore-eap104.bin.IPQ5018
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-wifi/board-edgecore-eap104.bin.IPQ5018
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-wifi/board-edgecore-eap104.bin.QCN6122
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/wifi-ax/ath11k-wifi/board-edgecore-eap104.bin.QCN6122
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -60,7 +60,7 @@ CONFIG_RSN_PREAUTH=y | |||||||
| CONFIG_EAP=y | CONFIG_EAP=y | ||||||
|  |  | ||||||
| # EAP Re-authentication Protocol (ERP) in integrated EAP server | # EAP Re-authentication Protocol (ERP) in integrated EAP server | ||||||
| #CONFIG_ERP=y | CONFIG_ERP=y | ||||||
|  |  | ||||||
| # EAP-MD5 for the integrated EAP server | # EAP-MD5 for the integrated EAP server | ||||||
| CONFIG_EAP_MD5=y | CONFIG_EAP_MD5=y | ||||||
|   | |||||||
| @@ -727,7 +727,7 @@ hostapd_set_bss_options() { | |||||||
| 			wps_not_configured=1 | 			wps_not_configured=1 | ||||||
| 			[ "$macfilter" = radius ] && { | 			[ "$macfilter" = radius ] && { | ||||||
| 				append_radius_server | 				append_radius_server | ||||||
| 				vlan_possible = 1 | 				vlan_possible=1 | ||||||
| 			} | 			} | ||||||
| 		;; | 		;; | ||||||
| 		psk|sae|psk-sae) | 		psk|sae|psk-sae) | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								feeds/wifi-ax/hostapd/patches/760-acs_exclude_dfs.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								feeds/wifi-ax/hostapd/patches/760-acs_exclude_dfs.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | Index: hostapd-2021-02-20-59e9794c/src/ap/acs.c | ||||||
|  | =================================================================== | ||||||
|  | --- hostapd-2021-02-20-59e9794c.orig/src/ap/acs.c | ||||||
|  | +++ hostapd-2021-02-20-59e9794c/src/ap/acs.c | ||||||
|  | @@ -672,6 +672,10 @@ acs_find_ideal_chan_mode(struct hostapd_ | ||||||
|  |  			continue; | ||||||
|  |  		} | ||||||
|  |   | ||||||
|  | +		if (iface->conf->acs_exclude_dfs && | ||||||
|  | +                      (chan->flag & HOSTAPD_CHAN_RADAR)) | ||||||
|  | +			continue; | ||||||
|  | + | ||||||
|  |  		/* HT40 on 5 GHz has a limited set of primary channels as per | ||||||
|  |  		 * 11n Annex J */ | ||||||
|  |  		if (mode->mode == HOSTAPD_MODE_IEEE80211A && | ||||||
| @@ -13,7 +13,7 @@ PKG_RELEASE:=1 | |||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz | ||||||
| PKG_SOURCE_URL:=https://www.kernel.org/pub/software/network/iw | PKG_SOURCE_URL:=https://www.kernel.org/pub/software/network/iw | ||||||
| PKG_MD5SUM:=7a47d6f749ec69afcaf351166fd12f6f | PKG_HASH:=293a07109aeb7e36267cf59e3ce52857e9ffae3a6666eb8ac77894b1839fe1f2 | ||||||
|  |  | ||||||
| PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org> | PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org> | ||||||
| PKG_LICENSE:=GPL-2.0 | PKG_LICENSE:=GPL-2.0 | ||||||
|   | |||||||
							
								
								
									
										21
									
								
								feeds/wifi-ax/mac80211/patches/pending/214-no-encap.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								feeds/wifi-ax/mac80211/patches/pending/214-no-encap.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | Index: backports-20210222_001-4.4.60-b157d2276/drivers/net/wireless/ath/ath11k/mac.c | ||||||
|  | =================================================================== | ||||||
|  | --- backports-20210222_001-4.4.60-b157d2276.orig/drivers/net/wireless/ath/ath11k/mac.c | ||||||
|  | +++ backports-20210222_001-4.4.60-b157d2276/drivers/net/wireless/ath/ath11k/mac.c | ||||||
|  | @@ -6590,6 +6590,7 @@ static int ath11k_mac_op_update_vif_offl | ||||||
|  |  	u32 param_id, param_value; | ||||||
|  |  	int ret; | ||||||
|  |   | ||||||
|  | +	return 0; | ||||||
|  |  	if (ab->nss.enabled && vif->type == NL80211_IFTYPE_AP_VLAN) | ||||||
|  |  		return 0; | ||||||
|  |   | ||||||
|  | @@ -6835,6 +6836,8 @@ static int ath11k_mac_op_add_interface(s | ||||||
|  |  	else | ||||||
|  |  		param_value = ATH11K_HW_TXRX_NATIVE_WIFI; | ||||||
|  |   | ||||||
|  | +	param_value = ATH11K_HW_TXRX_NATIVE_WIFI; | ||||||
|  | + | ||||||
|  |  	ret = ath11k_nss_vdev_set_cmd(arvif, NSS_WIFI_VDEV_ENCAP_TYPE_CMD, param_value); | ||||||
|  |   | ||||||
|  |  	if(ret) { | ||||||
| @@ -1,57 +0,0 @@ | |||||||
| --- a/drivers/net/wireless/ath/ath11k/ahb.c |  | ||||||
| +++ b/drivers/net/wireless/ath/ath11k/ahb.c |  | ||||||
| @@ -526,6 +526,7 @@ static int ath11k_ahb_ext_irq_config(str |  | ||||||
|  	int irq; |  | ||||||
|  	int ret; |  | ||||||
|  	bool nss_offload; |  | ||||||
| +	static int devidx = 0; |  | ||||||
|   |  | ||||||
|  	/* TCL Completion, REO Dest, ERR, Exception and h2rxdma rings are offloaded |  | ||||||
|  	 * to nss when its enabled, hence don't enable these interrupts |  | ||||||
| @@ -539,6 +540,9 @@ static int ath11k_ahb_ext_irq_config(str |  | ||||||
|  		irq_grp->ab = ab; |  | ||||||
|  		irq_grp->grp_id = i; |  | ||||||
|  		init_dummy_netdev(&irq_grp->napi_ndev); |  | ||||||
| +		snprintf(irq_grp->napi_ndev.name, sizeof(irq_grp->napi_ndev.name), "%s%d:%d", |  | ||||||
| +			 "ath11k_ahb", devidx, i); |  | ||||||
| +		irq_grp->napi_ndev.threaded = 1; |  | ||||||
|  		netif_napi_add(&irq_grp->napi_ndev, &irq_grp->napi, |  | ||||||
|  			       ath11k_ahb_ext_grp_napi_poll, NAPI_POLL_WEIGHT); |  | ||||||
|   |  | ||||||
| @@ -604,6 +608,8 @@ static int ath11k_ahb_ext_irq_config(str |  | ||||||
|  		} |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| +	devidx++; |  | ||||||
| + |  | ||||||
|  	return 0; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| --- a/drivers/net/wireless/ath/ath11k/pci.c |  | ||||||
| +++ b/drivers/net/wireless/ath/ath11k/pci.c |  | ||||||
| @@ -806,6 +806,7 @@ static int ath11k_pci_ext_irq_config(str |  | ||||||
|  	int i, j, ret, num_vectors = 0; |  | ||||||
|  	u32 user_base_data = 0, base_vector = 0, base_idx; |  | ||||||
|  	u8 domain_id; |  | ||||||
| +	static int devidx = 0; |  | ||||||
|   |  | ||||||
|  	domain_id = ath11k_pci_get_domain_id(ab); |  | ||||||
|  	base_idx = ATH11K_PCI_IRQ_CE0_OFFSET + CE_COUNT_MAX; |  | ||||||
| @@ -822,6 +823,9 @@ static int ath11k_pci_ext_irq_config(str |  | ||||||
|  		irq_grp->ab = ab; |  | ||||||
|  		irq_grp->grp_id = i; |  | ||||||
|  		init_dummy_netdev(&irq_grp->napi_ndev); |  | ||||||
| +		snprintf(irq_grp->napi_ndev.name, sizeof(irq_grp->napi_ndev.name), "%s%d:%d", |  | ||||||
| +			 "ath11k_pci", devidx, i); |  | ||||||
| +		irq_grp->napi_ndev.threaded = 1; |  | ||||||
|  		netif_napi_add(&irq_grp->napi_ndev, &irq_grp->napi, |  | ||||||
|  			       ath11k_pci_ext_grp_napi_poll, NAPI_POLL_WEIGHT); |  | ||||||
|   |  | ||||||
| @@ -868,6 +872,7 @@ static int ath11k_pci_ext_irq_config(str |  | ||||||
|  		} |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| +	devidx++; |  | ||||||
|  	return 0; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| @@ -0,0 +1,30 @@ | |||||||
|  | From a3598bcbc83224faf0d2ecb55761d048a1beb6d1 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Felix Fietkau <nbd@nbd.name> | ||||||
|  | Date: Fri, 10 Dec 2021 10:16:18 +0100 | ||||||
|  | Subject: [PATCH] netifd: on dhcp interfaces, store the dhcp server in | ||||||
|  |  interface data | ||||||
|  |  | ||||||
|  | Among other things, this can be used to auto-configure the DHCP server | ||||||
|  | address for wireless APs using FILS, if the bridged interface is | ||||||
|  | configured to DHCP | ||||||
|  |  | ||||||
|  | Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||||
|  | --- | ||||||
|  |  package/network/config/netifd/files/lib/netifd/dhcp.script | 1 + | ||||||
|  |  1 file changed, 1 insertion(+) | ||||||
|  |  | ||||||
|  | diff --git a/package/network/config/netifd/files/lib/netifd/dhcp.script b/package/network/config/netifd/files/lib/netifd/dhcp.script | ||||||
|  | index e46005d84c..6fcf139beb 100755 | ||||||
|  | --- a/package/network/config/netifd/files/lib/netifd/dhcp.script | ||||||
|  | +++ b/package/network/config/netifd/files/lib/netifd/dhcp.script | ||||||
|  | @@ -60,6 +60,7 @@ setup_interface () { | ||||||
|  |  	[ -n "$message" ]  && json_add_string message "$message" | ||||||
|  |  	[ -n "$timezone" ] && json_add_int timezone "$timezone" | ||||||
|  |  	[ -n "$lease" ]    && json_add_int leasetime "$lease" | ||||||
|  | +	[ -n "$serverid" ] && json_add_string dhcpserver "$serverid" | ||||||
|  |  	proto_close_data | ||||||
|  |   | ||||||
|  |  	proto_send_update "$INTERFACE" | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
| @@ -0,0 +1,32 @@ | |||||||
|  | From d8d342c6d0c4076b509faf1ae1a87df24814abe0 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: John Crispin <john@phrozen.org> | ||||||
|  | Date: Wed, 23 Feb 2022 07:44:56 +0100 | ||||||
|  | Subject: [PATCH] Revert "ipq40xx: ar40xx: reset port status register" | ||||||
|  |  | ||||||
|  | This reverts commit 88151b8303f29f18e8b037076628fd82eda0978a. | ||||||
|  |  | ||||||
|  | This actually causes several boards to have bad eth connectivity | ||||||
|  | after reboot. | ||||||
|  |  | ||||||
|  | Signed-off-by: John Crispin <john@phrozen.org> | ||||||
|  | --- | ||||||
|  |  target/linux/ipq40xx/files/drivers/net/phy/ar40xx.c | 3 ++- | ||||||
|  |  1 file changed, 2 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | diff --git a/target/linux/ipq40xx/files/drivers/net/phy/ar40xx.c b/target/linux/ipq40xx/files/drivers/net/phy/ar40xx.c | ||||||
|  | index 8b3ae53bd9..9758f013f0 100644 | ||||||
|  | --- a/target/linux/ipq40xx/files/drivers/net/phy/ar40xx.c | ||||||
|  | +++ b/target/linux/ipq40xx/files/drivers/net/phy/ar40xx.c | ||||||
|  | @@ -1198,7 +1198,8 @@ ar40xx_init_port(struct ar40xx_priv *priv, int port) | ||||||
|  |  { | ||||||
|  |  	u32 t; | ||||||
|  |   | ||||||
|  | -	ar40xx_write(priv, AR40XX_REG_PORT_STATUS(port), 0); | ||||||
|  | +	ar40xx_rmw(priv, AR40XX_REG_PORT_STATUS(port), | ||||||
|  | +			AR40XX_PORT_AUTO_LINK_EN, 0); | ||||||
|  |   | ||||||
|  |  	/* CPU port is setting headers to limit output ports */ | ||||||
|  |  	if (port == 0) | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
| @@ -89,7 +89,7 @@ index 209ae3dc46..c8e1eca88b 100644 | |||||||
|  			wps_not_configured=1 |  			wps_not_configured=1 | ||||||
| +			[ "$macfilter" = radius ] && { | +			[ "$macfilter" = radius ] && { | ||||||
| +				append_radius_server | +				append_radius_server | ||||||
| +				vlan_possible = 1 | +				vlan_possible=1 | ||||||
| +			} | +			} | ||||||
|  		;; |  		;; | ||||||
|  		psk|sae|psk-sae) |  		psk|sae|psk-sae) | ||||||
|   | |||||||
| @@ -0,0 +1,35 @@ | |||||||
|  | From adaea813b53d2f3cbbaefb9dffa19faf58d670a2 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: John Crispin <john@phrozen.org> | ||||||
|  | Date: Tue, 15 Feb 2022 17:05:18 +0100 | ||||||
|  | Subject: [PATCH] hostapd: add acs_exclude_dfs support for SW ACS | ||||||
|  |  | ||||||
|  | Signed-off-by: John Crispin <john@phrozen.org> | ||||||
|  | --- | ||||||
|  |  .../hostapd/patches/760-acs_exclude_dfs.patch     | 15 +++++++++++++++ | ||||||
|  |  1 file changed, 15 insertions(+) | ||||||
|  |  create mode 100644 package/network/services/hostapd/patches/760-acs_exclude_dfs.patch | ||||||
|  |  | ||||||
|  | diff --git a/package/network/services/hostapd/patches/760-acs_exclude_dfs.patch b/package/network/services/hostapd/patches/760-acs_exclude_dfs.patch | ||||||
|  | new file mode 100644 | ||||||
|  | index 0000000000..52d63c5ff9 | ||||||
|  | --- /dev/null | ||||||
|  | +++ b/package/network/services/hostapd/patches/760-acs_exclude_dfs.patch | ||||||
|  | @@ -0,0 +1,15 @@ | ||||||
|  | +Index: hostapd-2021-02-20-59e9794c/src/ap/acs.c | ||||||
|  | +=================================================================== | ||||||
|  | +--- hostapd-2021-02-20-59e9794c.orig/src/ap/acs.c | ||||||
|  | ++++ hostapd-2021-02-20-59e9794c/src/ap/acs.c | ||||||
|  | +@@ -672,6 +672,10 @@ acs_find_ideal_chan_mode(struct hostapd_ | ||||||
|  | + 			continue; | ||||||
|  | + 		} | ||||||
|  | +  | ||||||
|  | ++		if (iface->conf->acs_exclude_dfs && | ||||||
|  | ++                      (chan->flag & HOSTAPD_CHAN_RADAR)) | ||||||
|  | ++			continue; | ||||||
|  | ++ | ||||||
|  | + 		/* HT40 on 5 GHz has a limited set of primary channels as per | ||||||
|  | + 		 * 11n Annex J */ | ||||||
|  | + 		if (mode->mode == HOSTAPD_MODE_IEEE80211A && | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
							
								
								
									
										20
									
								
								profiles/edgecore_eap104.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								profiles/edgecore_eap104.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | --- | ||||||
|  | profile: edgecore_eap104 | ||||||
|  | target: ipq807x | ||||||
|  | subtarget: ipq50xx | ||||||
|  | description: Build image for the EdgeCore EAP104 | ||||||
|  | image: bin/targets/ipq807x/ipq50xx/openwrt-ipq807x-edgecore_eap104-squashfs-sysupgrade.tar | ||||||
|  | feeds: | ||||||
|  |   - name: ipq807x | ||||||
|  |     path: ../../feeds/ipq807x | ||||||
|  |   - name: bluetooth_cc2652 | ||||||
|  |     path: ../../feeds/bluetooth-cc2652 | ||||||
|  | include: | ||||||
|  |   - wifi-ax | ||||||
|  |   - ucentral-ap | ||||||
|  | packages: | ||||||
|  |   - cc2652 | ||||||
|  | diffconfig: | | ||||||
|  |   CONFIG_KERNEL_IPQ_MEM_PROFILE=512 | ||||||
|  |   CONFIG_BUSYBOX_CUSTOM=y | ||||||
|  |   CONFIG_BUSYBOX_CONFIG_STTY=y | ||||||
		Reference in New Issue
	
	Block a user