diff options
Diffstat (limited to 'package/broadcom-wl/files/lib/wifi')
| -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 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"  } | 
