diff options
author | Felix Fietkau <nbd@openwrt.org> | 2006-10-15 15:27:34 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2006-10-15 15:27:34 +0000 |
commit | e7bfe6d7a72853067d5f97e4c6b927ec9339bb24 (patch) | |
tree | 7d2d7b9f697f0b32614e2772b0315f2b8b81a823 /package/base-files/default | |
parent | aa0072a9384483960fa6ca67a8d028383786eb53 (diff) | |
download | upstream-e7bfe6d7a72853067d5f97e4c6b927ec9339bb24.tar.gz upstream-e7bfe6d7a72853067d5f97e4c6b927ec9339bb24.tar.bz2 upstream-e7bfe6d7a72853067d5f97e4c6b927ec9339bb24.zip |
implement simple device autodetection for wifi drivers
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5113 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/base-files/default')
-rwxr-xr-x | package/base-files/default/etc/init.d/S40network | 4 | ||||
-rwxr-xr-x | package/base-files/default/sbin/wifi | 60 |
2 files changed, 53 insertions, 11 deletions
diff --git a/package/base-files/default/etc/init.d/S40network b/package/base-files/default/etc/init.d/S40network index be045045e7..c7720369fd 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 4a3ec8cfef..759cfb0a84 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 |