diff options
| -rw-r--r-- | package/base-files/brcm-2.4/etc/config/wireless | 14 | ||||
| -rwxr-xr-x | package/base-files/default/etc/init.d/S40network | 4 | ||||
| -rwxr-xr-x | package/base-files/default/sbin/wifi | 60 | ||||
| -rw-r--r-- | package/broadcom-wl/files/lib/wifi/broadcom.sh | 26 | 
4 files changed, 78 insertions, 26 deletions
diff --git a/package/base-files/brcm-2.4/etc/config/wireless b/package/base-files/brcm-2.4/etc/config/wireless deleted file mode 100644 index 9dc4945e0..000000000 --- a/package/base-files/brcm-2.4/etc/config/wireless +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (C) 2006 OpenWrt.org - -config wifi-device	wl0 -	option type 	broadcom -	option channel	5 - -config wifi-iface -	option device	wl0 -	option mode		ap -	option ssid 	OpenWrt -	option hidden	0 -	option encryption none - - diff --git a/package/base-files/default/etc/init.d/S40network b/package/base-files/default/etc/init.d/S40network index be045045e..c7720369f 100755 --- a/package/base-files/default/etc/init.d/S40network +++ b/package/base-files/default/etc/init.d/S40network @@ -6,6 +6,8 @@ start() {  	include /lib/network  	setup_switch -	/sbin/wifi +	[ -e /etc/config/wireless ] || \ +		/sbin/wifi detect > /etc/config/wireless +	/sbin/wifi up  } diff --git a/package/base-files/default/sbin/wifi b/package/base-files/default/sbin/wifi index 4a3ec8cfe..759cfb0a8 100755 --- a/package/base-files/default/sbin/wifi +++ b/package/base-files/default/sbin/wifi @@ -3,6 +3,49 @@  . /etc/functions.sh +wifi_up() { +	for device in ${2:-$DEVICES}; do ( +		config_get iftype "$device" type +		if eval "type enable_$iftype" 2>/dev/null >/dev/null; then +			eval "scan_$iftype '$device'" +			eval "enable_$iftype '$device'" || echo "$device($iftype): Setup failed" +		else +			echo "$device($iftype): Interface type not supported" +		fi +	); done +} + +wifi_down() { +	for device in ${2:-$DEVICES}; do ( +		config_get iftype "$device" type +		if eval "type disable_$iftype" 2>/dev/null >/dev/null; then +			eval "scan_$iftype '$device'" +			eval "disable_$iftype '$device'" || echo "$device($iftype): Setup failed" +		else +			echo "$device($iftype): Interface type not supported" +		fi +	); done +} + +wifi_detect() { +	for driver in ${2:-$DRIVERS}; do ( +		if eval "type detect_$driver" 2>/dev/null >/dev/null; then +			eval "detect_$driver" || echo "$driver: Detect failed" >&2 +		else +			echo "$driver: Hardware detection not supported" >&2 +		fi +	); done +} + +start_net() {( +	local iface="$1" +	local config="$2" + +	include /lib/network +	scan_interfaces +	setup_interface "$1" "$2" +)} +  config_get_bool() {  	local _tmp  	config_get "$1" "$2" "$3" @@ -29,16 +72,13 @@ config_cb() {  	esac  } +DEVICES= +DRIVERS=  config_load wireless  include /lib/wifi -for device in $DEVICES; do ( -	config_get iftype "$device" type -	eval "type setup_$iftype" 2>/dev/null >/dev/null && { -		eval "scan_$iftype '$device'" -		eval "setup_$iftype '$device'" && { -			# TODO: set up network settings -			/bin/true -		} || echo "$device($iftype): Setup failed" || true -	} || echo "$device($iftype): Interface type not supported" -); done +case "$1" in +	down) wifi_down "$2";; +	detect) wifi_detect "$2";; +	*) wifi_up "$2";; +esac diff --git a/package/broadcom-wl/files/lib/wifi/broadcom.sh b/package/broadcom-wl/files/lib/wifi/broadcom.sh index 435c440e2..1ce85c4c5 100644 --- a/package/broadcom-wl/files/lib/wifi/broadcom.sh +++ b/package/broadcom-wl/files/lib/wifi/broadcom.sh @@ -1,3 +1,5 @@ +append DRIVERS "broadcom" +  bridge_interface() {  	(  		. /etc/functions.sh @@ -71,8 +73,12 @@ scan_broadcom() {  	esac  } +disable_broadcom() { +	wlc down +	ifconfig wl0 down +} -setup_broadcom() { +enable_broadcom() {  	local _c  	config_get channel "$device" channel  	config_get country "$device" country @@ -175,3 +181,21 @@ EOF  } +detect_broadcom() { +	[ -f /proc/net/wl0 ] || return +	config_get type wl0 type +	[ "$type" = broadcom ] && return +	cat <<EOF +config wifi-device  wl0 +	option type     broadcom +	option channel  5 + +config wifi-iface +	option device   wl0 +	option mode     ap +	option ssid     OpenWrt +	option hidden   0 +	option encryption none + +EOF +}  | 
