X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fsvn-archive%2Farchive.git;a=blobdiff_plain;f=package%2Fbroadcom-wl%2Ffiles%2Flib%2Fwifi%2Fbroadcom.sh;h=5bb69da94f3fd0a104fb8e4fd34e29b703431f46;hp=bc90f088b4c473d41eb377db64b534e4d7e2d164;hb=a502090981e0519487db4426215e2fb8f1328c0c;hpb=bf076a2b7c245354ca8ff5fae9143b290ac80a9e diff --git a/package/broadcom-wl/files/lib/wifi/broadcom.sh b/package/broadcom-wl/files/lib/wifi/broadcom.sh index bc90f088b4..5bb69da94f 100644 --- a/package/broadcom-wl/files/lib/wifi/broadcom.sh +++ b/package/broadcom-wl/files/lib/wifi/broadcom.sh @@ -1,16 +1,34 @@ append DRIVERS "broadcom" -bridge_interface() { - ( - . /etc/functions.sh - include network +find_vif_config() {( + local vif="$1" + local cfg + local ifname + + config_get cfg "$vif" network + + [ -z "$cfg" ] && { + include /lib/network scan_interfaces - cfg="$(find_config "$1")" - [ -z "$cfg" ] && return 0 - config_get iftype "$cfg" type - [ "$iftype" = bridge ] && config_get "$iftype" bridge - ) -} + + config_get ifname "$vif" ifnamea + + cfg="$(find_config "$ifname")" + } + [ -z "$cfg" ] && return 0 + echo "$cfg" +)} + +bridge_interface() {( + local cfg="$1" + [ -z "$cfg" ] && return 0 + + include /lib/network + scan_interfaces + + config_get iftype "$cfg" type + [ "$iftype" = bridge ] && config_get "$iftype" ifname +)} scan_broadcom() { local device="$1" @@ -154,8 +172,12 @@ enable_broadcom() { config_get ifname "$vif" ifname append if_up "ifconfig $ifname up" ";$N" + net_cfg="$(find_vif_config "$vif")" + [ -z "$net_cfg" ] || { + bridge="$(bridge_interface "$net_cfg")" + append if_up "start_net '$ifname' '$net_cfg'" ";$N" + } [ -z "$nasopts" ] || { - bridge="$(bridge_interface "$ifname")" eval "${vif}_ssid=\"\$ssid\"" mode="-A" [ "$vif" = "$sta_if" ] && mode="-S" @@ -185,8 +207,8 @@ $vif_pre_up up $vif_post_up EOF - eval "$nas_cmd" eval "$if_up" + eval "$nas_cmd" }