diff options
Diffstat (limited to 'package/madwifi')
| -rwxr-xr-x | package/madwifi/files/lib/wifi/madwifi.sh | 78 | 
1 files changed, 71 insertions, 7 deletions
| diff --git a/package/madwifi/files/lib/wifi/madwifi.sh b/package/madwifi/files/lib/wifi/madwifi.sh index 10e8ab1c0..e7e227bb7 100755 --- a/package/madwifi/files/lib/wifi/madwifi.sh +++ b/package/madwifi/files/lib/wifi/madwifi.sh @@ -127,6 +127,9 @@ enable_atheros() {  				config_get key "$vif" key  				iwconfig "$ifname" enc "${key:-1}"  			;; +			PSK|psk|PSK2|psk2) +				config_get key "$vif" key +			;;  		esac  		case "$mode" in @@ -138,8 +141,37 @@ enable_atheros() {  				config_get ssid "$vif" ssid  			;;  		esac + +		[ "$mode" = "sta" ] && { +			config_get_bool bgscan "$vif" bgscan 1 +			iwpriv "$ifname" bgscan "$bgscan" +		} + +		config_get_bool antdiv "$device" diversity 1 +		sysctl -w dev."$device".diversity="$antdiv" >&- + +		config_get antrx "$device" rxantenna +		if [ -n "$antrx" ]; then +			sysctl -w dev."$device".rxantenna="$antrx" >&- +		fi + +		config_get anttx "$device" txantenna +		if [ -n "$anttx" ]; then +			sysctl -w dev."$device".txantenna="$anttx" >&- +		fi + +		config_get distance "$device" distance +		if [ -n "$distance" ]; then +			athctrl -i "$device" -d "$distance" >&- +		fi + +		config_get txpwr "$vif" txpower +		if [ -n "$txpwr" ]; then +			iwconfig "$ifname" txpower "${txpwr%%.*}" +		fi +  		ifconfig "$ifname" up -		 +  		local net_cfg bridge  		net_cfg="$(find_net_config "$vif")"  		[ -z "$net_cfg" ] || { @@ -159,7 +191,34 @@ enable_atheros() {  				}  			;;  			wds|sta) -				# FIXME: implement wpa_supplicant calls here +				case "$enc" in  +					PSK|psk|PSK2|psk2) +						case "$enc" in +							PSK|psk) +								proto='proto=WPA';; +							PSK2|psk2) +								proto='proto=RSN';; +						esac +						cat > /var/run/wpa_supplicant-$ifname.conf <<EOF +ctrl_interface=/var/run/wpa_supplicant +network={ +	scan_ssid=1 +	ssid="$ssid" +	key_mgmt=WPA-PSK +	$proto +	psk="$key" +} +EOF +					;; +					WPA|wpa|WPA2|wpa2) +						#add wpa_supplicant calls here +					;; +				esac +				net_cfg="$(find_net_config "$vif")" +				[ -z "$net_cfg" ] || { +					bridge="$(bridge_interface "$net_cfg")" +				} +				wpa_supplicant ${bridge:+ -b $bridge} -Bw -D wext -i "$ifname" -c /var/run/wpa_supplicant-$ifname.conf  			;;  		esac  		first=0 @@ -177,16 +236,21 @@ detect_atheros() {  config wifi-device  $dev  	option type     atheros  	option channel  5 +#       option diversity 1 +#       option txantenna 0 +#       option rxantenna 0 +#       option distance  2000  config wifi-iface -	option device   $dev +	option device	$dev  #	option network	lan -	option mode     ap -	option ssid     OpenWrt -	option hidden   0 +	option mode	ap +	option ssid	OpenWrt +	option hidden	0 +#	option txpower	15 +#	option bgscan	enable  	option encryption none  EOF  	done  } - | 
