1
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-11-18 14:47:46 +01:00

implement simple device autodetection for wifi drivers

SVN-Revision: 5113
This commit is contained in:
Felix Fietkau 2006-10-15 15:27:34 +00:00
parent 6c27c88271
commit 2d072c5997
4 changed files with 78 additions and 26 deletions

@ -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

@ -6,6 +6,8 @@ start() {
include /lib/network include /lib/network
setup_switch setup_switch
/sbin/wifi [ -e /etc/config/wireless ] || \
/sbin/wifi detect > /etc/config/wireless
/sbin/wifi up
} }

@ -3,6 +3,49 @@
. /etc/functions.sh . /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() { config_get_bool() {
local _tmp local _tmp
config_get "$1" "$2" "$3" config_get "$1" "$2" "$3"
@ -29,16 +72,13 @@ config_cb() {
esac esac
} }
DEVICES=
DRIVERS=
config_load wireless config_load wireless
include /lib/wifi include /lib/wifi
for device in $DEVICES; do ( case "$1" in
config_get iftype "$device" type down) wifi_down "$2";;
eval "type setup_$iftype" 2>/dev/null >/dev/null && { detect) wifi_detect "$2";;
eval "scan_$iftype '$device'" *) wifi_up "$2";;
eval "setup_$iftype '$device'" && { esac
# TODO: set up network settings
/bin/true
} || echo "$device($iftype): Setup failed" || true
} || echo "$device($iftype): Interface type not supported"
); done

@ -1,3 +1,5 @@
append DRIVERS "broadcom"
bridge_interface() { bridge_interface() {
( (
. /etc/functions.sh . /etc/functions.sh
@ -71,8 +73,12 @@ scan_broadcom() {
esac esac
} }
disable_broadcom() {
wlc down
ifconfig wl0 down
}
setup_broadcom() { enable_broadcom() {
local _c local _c
config_get channel "$device" channel config_get channel "$device" channel
config_get country "$device" country 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
}