mac80211: refactor non-{sae,dfs} mesh initialization
Refactor mesh initialization into a separate function, do some cleaning on the way to make the code more readable. Changes: * Move iw mesh setup to new mac80211_setup_mesh() * fallback on 'ssid' parameter in case 'mesh_id' isn't set * move setting of freq variable to shared code as it is needed for both, the wpa_supplicant and the iw based setup. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
		@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 | 
				
			|||||||
PKG_NAME:=mac80211
 | 
					PKG_NAME:=mac80211
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PKG_VERSION:=2017-11-01
 | 
					PKG_VERSION:=2017-11-01
 | 
				
			||||||
PKG_RELEASE:=7
 | 
					PKG_RELEASE:=8
 | 
				
			||||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 | 
					PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 | 
				
			||||||
PKG_HASH:=8437ab7886b988c8152e7a4db30b7f41009e49a3b2cb863edd05da1ecd7eb05a
 | 
					PKG_HASH:=8437ab7886b988c8152e7a4db30b7f41009e49a3b2cb863edd05da1ecd7eb05a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -610,6 +610,51 @@ mac80211_setup_adhoc() {
 | 
				
			|||||||
		${keyspec:+keys $keyspec}
 | 
							${keyspec:+keys $keyspec}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mac80211_setup_mesh() {
 | 
				
			||||||
 | 
						json_get_vars ssid mesh_id mcast_rate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mcval=
 | 
				
			||||||
 | 
						[ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
 | 
				
			||||||
 | 
						[ -n "$mesh_id" ] && ssid="$mesh_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						case "$htmode" in
 | 
				
			||||||
 | 
							VHT20|HT20) mesh_htmode=HT20;;
 | 
				
			||||||
 | 
							HT40*|VHT40)
 | 
				
			||||||
 | 
								case "$hwmode" in
 | 
				
			||||||
 | 
									a)
 | 
				
			||||||
 | 
										case "$(( ($channel / 4) % 2 ))" in
 | 
				
			||||||
 | 
											1) mesh_htmode="HT40+" ;;
 | 
				
			||||||
 | 
											0) mesh_htmode="HT40-";;
 | 
				
			||||||
 | 
										esac
 | 
				
			||||||
 | 
									;;
 | 
				
			||||||
 | 
									*)
 | 
				
			||||||
 | 
										case "$htmode" in
 | 
				
			||||||
 | 
											HT40+) mesh_htmode="HT40+";;
 | 
				
			||||||
 | 
											HT40-) mesh_htmode="HT40-";;
 | 
				
			||||||
 | 
											*)
 | 
				
			||||||
 | 
												if [ "$channel" -lt 7 ]; then
 | 
				
			||||||
 | 
													mesh_htmode="HT40+"
 | 
				
			||||||
 | 
												else
 | 
				
			||||||
 | 
													mesh_htmode="HT40-"
 | 
				
			||||||
 | 
												fi
 | 
				
			||||||
 | 
											;;
 | 
				
			||||||
 | 
										esac
 | 
				
			||||||
 | 
									;;
 | 
				
			||||||
 | 
								esac
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
							VHT80)
 | 
				
			||||||
 | 
								mesh_htmode="80Mhz"
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
							VHT160)
 | 
				
			||||||
 | 
								mesh_htmode="160Mhz"
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
							*) mesh_htmode="NOHT" ;;
 | 
				
			||||||
 | 
						esac
 | 
				
			||||||
 | 
						iw dev "$ifname" mesh join "$ssid" freq $freq $mesh_htmode \
 | 
				
			||||||
 | 
							${mcval:+mcast-rate $mcval} \
 | 
				
			||||||
 | 
							beacon-interval $beacon_int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mac80211_setup_vif() {
 | 
					mac80211_setup_vif() {
 | 
				
			||||||
	local name="$1"
 | 
						local name="$1"
 | 
				
			||||||
	local failed
 | 
						local failed
 | 
				
			||||||
@@ -633,57 +678,13 @@ mac80211_setup_vif() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	case "$mode" in
 | 
						case "$mode" in
 | 
				
			||||||
		mesh)
 | 
							mesh)
 | 
				
			||||||
			json_get_vars key
 | 
					 | 
				
			||||||
			wireless_vif_parse_encryption
 | 
								wireless_vif_parse_encryption
 | 
				
			||||||
 | 
								freq="$(get_freq "$phy" "$channel")"
 | 
				
			||||||
			if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ] || chan_is_dfs "$phy" "$channel"; then
 | 
								if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ] || chan_is_dfs "$phy" "$channel"; then
 | 
				
			||||||
				freq="$(get_freq "$phy" "$channel")"
 | 
					 | 
				
			||||||
				mac80211_setup_supplicant || failed=1
 | 
									mac80211_setup_supplicant || failed=1
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				json_get_vars mesh_id mcast_rate
 | 
									mac80211_setup_mesh
 | 
				
			||||||
 | 
					 | 
				
			||||||
				mcval=
 | 
					 | 
				
			||||||
				[ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				case "$htmode" in
 | 
					 | 
				
			||||||
					VHT20|HT20) mesh_htmode=HT20;;
 | 
					 | 
				
			||||||
					HT40*|VHT40)
 | 
					 | 
				
			||||||
						case "$hwmode" in
 | 
					 | 
				
			||||||
							a)
 | 
					 | 
				
			||||||
								case "$(( ($channel / 4) % 2 ))" in
 | 
					 | 
				
			||||||
									1) mesh_htmode="HT40+" ;;
 | 
					 | 
				
			||||||
									0) mesh_htmode="HT40-";;
 | 
					 | 
				
			||||||
								esac
 | 
					 | 
				
			||||||
							;;
 | 
					 | 
				
			||||||
							*)
 | 
					 | 
				
			||||||
								case "$htmode" in
 | 
					 | 
				
			||||||
									HT40+) mesh_htmode="HT40+";;
 | 
					 | 
				
			||||||
									HT40-) mesh_htmode="HT40-";;
 | 
					 | 
				
			||||||
									*)
 | 
					 | 
				
			||||||
										if [ "$channel" -lt 7 ]; then
 | 
					 | 
				
			||||||
											mesh_htmode="HT40+"
 | 
					 | 
				
			||||||
										else
 | 
					 | 
				
			||||||
											mesh_htmode="HT40-"
 | 
					 | 
				
			||||||
										fi
 | 
					 | 
				
			||||||
									;;
 | 
					 | 
				
			||||||
								esac
 | 
					 | 
				
			||||||
							;;
 | 
					 | 
				
			||||||
						esac
 | 
					 | 
				
			||||||
					;;
 | 
					 | 
				
			||||||
					VHT80)
 | 
					 | 
				
			||||||
						mesh_htmode="80Mhz"
 | 
					 | 
				
			||||||
					;;
 | 
					 | 
				
			||||||
					VHT160)
 | 
					 | 
				
			||||||
						mesh_htmode="160Mhz"
 | 
					 | 
				
			||||||
					;;
 | 
					 | 
				
			||||||
					*) mesh_htmode="NOHT" ;;
 | 
					 | 
				
			||||||
				esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				freq="$(get_freq "$phy" "$channel")"
 | 
					 | 
				
			||||||
				iw dev "$ifname" mesh join "$mesh_id" freq $freq $mesh_htmode \
 | 
					 | 
				
			||||||
					${mcval:+mcast-rate $mcval} \
 | 
					 | 
				
			||||||
					beacon-interval $beacon_int
 | 
					 | 
				
			||||||
			fi
 | 
								fi
 | 
				
			||||||
 | 
					 | 
				
			||||||
			for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do
 | 
								for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do
 | 
				
			||||||
				json_get_var mp_val "$var"
 | 
									json_get_var mp_val "$var"
 | 
				
			||||||
				[ -n "$mp_val" ] && iw dev "$ifname" set mesh_param "$var" "$mp_val"
 | 
									[ -n "$mp_val" ] && iw dev "$ifname" set mesh_param "$var" "$mp_val"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user