diff options
Diffstat (limited to 'package/broadcom-wl/files/lib/wifi/broadcom.sh')
-rw-r--r-- | package/broadcom-wl/files/lib/wifi/broadcom.sh | 46 |
1 files changed, 34 insertions, 12 deletions
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" } |