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. This fixes bugs
#4258 and #5508 and is the same patch attached to the latter. 


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


diff against trunk, rev 16393:


Index: package/broadcom-wl/files/lib/wifi/broadcom.sh
===================================================================
--- package/broadcom-wl/files/lib/wifi/broadcom.sh      (revision 16393)
+++ 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
@@ -273,7 +275,7 @@
                _c=$(($_c + 1))
        done
        killall -KILL nas >&- 2>&-
-       wlc stdin <<EOF
+       wlc ifname "$device" stdin <<EOF
 $ifdown
 
 apsta $apsta
@@ -304,7 +306,7 @@
 $vif_post_up
 EOF
        eval "$if_up"
-       wlc stdin <<EOF
+       wlc ifname "$device" stdin <<EOF
 $vif_do_up
 EOF
 
@@ -318,11 +320,13 @@
 
 
 detect_broadcom() {
-       [ -f /proc/net/wl0 ] || return
-       config_get type wl0 type
-       [ "$type" = broadcom ] && return
-       cat <<EOF
-config wifi-device  wl0
+       local i=0
+
+       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
 
@@ -330,10 +334,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
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to