mac80211/hostapd: fix HT mode setup for RSN ad-hoc networks
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 44100
This commit is contained in:
		@@ -490,6 +490,38 @@ mac80211_setup_supplicant() {
 | 
			
		||||
	wpa_supplicant_run "$ifname" ${hostapd_ctrl:+-H $hostapd_ctrl}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mac80211_setup_adhoc_htmode() {
 | 
			
		||||
	case "$htmode" in
 | 
			
		||||
		VHT20|HT20) ibss_htmode=HT20;;
 | 
			
		||||
		HT40*|VHT40|VHT80|VHT160)
 | 
			
		||||
			case "$hwmode" in
 | 
			
		||||
				a)
 | 
			
		||||
					case "$(( ($channel / 4) % 2 ))" in
 | 
			
		||||
						1) ibss_htmode="HT40+" ;;
 | 
			
		||||
						0) ibss_htmode="HT40-";;
 | 
			
		||||
					esac
 | 
			
		||||
				;;
 | 
			
		||||
				*)
 | 
			
		||||
					case "$htmode" in
 | 
			
		||||
						HT40+) ibss_htmode="HT40+";;
 | 
			
		||||
						HT40-) ibss_htmode="HT40-";;
 | 
			
		||||
						*)
 | 
			
		||||
							if [ "$channel" -lt 7 ]; then
 | 
			
		||||
								ibss_htmode="HT40+"
 | 
			
		||||
							else
 | 
			
		||||
								ibss_htmode="HT40-"
 | 
			
		||||
							fi
 | 
			
		||||
						;;
 | 
			
		||||
					esac
 | 
			
		||||
				;;
 | 
			
		||||
			esac
 | 
			
		||||
			[ "$auto_channel" -gt 0 ] && ibss_htmode="HT40+"
 | 
			
		||||
		;;
 | 
			
		||||
		*) ibss_htmode="" ;;
 | 
			
		||||
	esac
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mac80211_setup_adhoc() {
 | 
			
		||||
	json_get_vars bssid ssid key mcast_rate
 | 
			
		||||
 | 
			
		||||
@@ -523,35 +555,6 @@ mac80211_setup_adhoc() {
 | 
			
		||||
	mcval=
 | 
			
		||||
	[ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
 | 
			
		||||
 | 
			
		||||
	case "$htmode" in
 | 
			
		||||
		VHT20|HT20) ibss_htmode=HT20;;
 | 
			
		||||
		HT40*|VHT40|VHT80|VHT160)
 | 
			
		||||
			case "$hwmode" in
 | 
			
		||||
				a)
 | 
			
		||||
					case "$(( ($channel / 4) % 2 ))" in
 | 
			
		||||
						1) ibss_htmode="HT40+" ;;
 | 
			
		||||
						0) ibss_htmode="HT40-";;
 | 
			
		||||
					esac
 | 
			
		||||
				;;
 | 
			
		||||
				*)
 | 
			
		||||
					case "$htmode" in
 | 
			
		||||
						HT40+) ibss_htmode="HT40+";;
 | 
			
		||||
						HT40-) ibss_htmode="HT40-";;
 | 
			
		||||
						*)
 | 
			
		||||
							if [ "$channel" -lt 7 ]; then
 | 
			
		||||
								ibss_htmode="HT40+"
 | 
			
		||||
							else
 | 
			
		||||
								ibss_htmode="HT40-"
 | 
			
		||||
							fi
 | 
			
		||||
						;;
 | 
			
		||||
					esac
 | 
			
		||||
				;;
 | 
			
		||||
			esac
 | 
			
		||||
			[ "$auto_channel" -gt 0 ] && ibss_htmode="HT40+"
 | 
			
		||||
		;;
 | 
			
		||||
		*) ibss_htmode="" ;;
 | 
			
		||||
	esac
 | 
			
		||||
 | 
			
		||||
	iw dev "$ifname" ibss join "$ssid" $freq $ibss_htmode fixed-freq $bssid \
 | 
			
		||||
		${beacon_int:+beacon-interval $beacon_int} \
 | 
			
		||||
		${brstr:+basic-rates $brstr} \
 | 
			
		||||
@@ -602,6 +605,7 @@ mac80211_setup_vif() {
 | 
			
		||||
		;;
 | 
			
		||||
		adhoc)
 | 
			
		||||
			wireless_vif_parse_encryption
 | 
			
		||||
			mac80211_setup_adhoc_htmode
 | 
			
		||||
			if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ]; then
 | 
			
		||||
				mac80211_setup_supplicant || failed=1
 | 
			
		||||
			else
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user