summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/broadcom-wl/files/lib/wifi/broadcom.sh46
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 bc90f088b..5bb69da94 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"
}