Patch to broadcom.sh to support multiple wireless interface defined in
/etc/config/wireless. Previously, much of the code in
(disable|enable)_broadcom() referred to wl0 explicitly instead of using
the device passed from $1. detect_broadcom() was also updated to create
the config file with multiple interfaces correctly.


Signed-off-by: Michael Leinartas <mleinart at iit.edu>


diff against trunk, rev 13286:

---

Index: package/broadcom-wl/files/lib/wifi/broadcom.sh
===================================================================
--- package/broadcom-wl/files/lib/wifi/broadcom.sh      (revision 13286)
+++ package/broadcom-wl/files/lib/wifi/broadcom.sh      (working copy)
@@ -42,7 +42,7 @@

        local _c=
        for vif in ${adhoc_if:-$sta_if $ap_if $mon_if}; do
-               config_set "$vif" ifname "wl0${_c:+.$_c}"
+               config_set "$vif" ifname "${device}${_c:+.$_c}"
                _c=$((${_c:-0} + 1))
        done
        config_set "$device" vifs "${adhoc_if:-$sta_if $ap_if $mon_if}"
@@ -93,13 +93,14 @@
 }

 disable_broadcom() {
-       set_wifi_down "$1"
-       wlc down
+       local device="$1"
+       set_wifi_down "$device" 
+       wlc ifname "$device" down
        (
                include /lib/network

                # make sure the interfaces are down and removed from all
bridges
-               for dev in wl0 wl0.1 wl0.2 wl0.3; do
+               for dev in $device ${device}.1 ${device}.2 ${device}.3; do
                        ifconfig "$dev" down 2>/dev/null >/dev/null && {
                                unbridge "$dev"
                        }
@@ -109,6 +110,7 @@
 }

 enable_broadcom() {
+       local device="$1"
        local _c
        config_get channel "$device" channel
        config_get country "$device" country
@@ -226,6 +228,7 @@
                config_get ssid "$vif" ssid
                append vif_post_up "vlan_mode 0" "$N"
                append vif_post_up "ssid $ssid" "$N"
+               append vif_post_up "ap $ap" "$N"
                append vif_do_up "ssid $ssid" "$N"

                [ "$mode" = "monitor" ] && {
@@ -263,10 +266,9 @@
                _c=$(($_c + 1)) 
        done
        killall -KILL nas >&- 2>&-
-       wlc stdin <<EOF
+       wlc ifname "$device" stdin <<EOF
 $ifdown

-ap $ap
 ${mssid:+mssid $mssid}
 apsta $apsta
 infra $infra
@@ -294,7 +296,7 @@
 $vif_post_up
 EOF
        eval "$if_up"
-       wlc stdin <<EOF
+       wlc ifname "$device" stdin <<EOF
 $vif_do_up
 EOF
        [ -z "$txpower" ] || iwconfig $device txpower ${txpower}dBm
@@ -304,11 +306,13 @@


 detect_broadcom() {
-       [ -f /proc/net/wl0 ] || return
-       config_get type wl0 type
-       [ "$type" = broadcom ] && return
-       cat <<EOF
-config wifi-device  wl0
+       local i=-1
+
+       while [ -f /proc/net/wl$((++i)) ]; do
+               config_get type wl${i} type
+               [ "$type" = broadcom ] && continue
+               cat <<EOF
+config wifi-device  wl${i}
        option type     broadcom
        option channel  5

@@ -316,10 +320,12 @@
        option disabled 1

 config wifi-iface
-       option device   wl0
+       option device   wl${i}  
        option network  lan
        option mode     ap
-       option ssid     OpenWrt 
+       option ssid     OpenWrt${i#0}
        option encryption none  
+
 EOF
+       done
 }

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to