diff options
| -rwxr-xr-x | package/base-files/files/sbin/wifi | 19 | ||||
| -rw-r--r-- | package/broadcom-wl/files/lib/wifi/broadcom.sh | 2 | ||||
| -rwxr-xr-x | package/madwifi/files/lib/wifi/madwifi.sh | 2 | 
3 files changed, 23 insertions, 0 deletions
diff --git a/package/base-files/files/sbin/wifi b/package/base-files/files/sbin/wifi index d653620ca..0d26468ba 100755 --- a/package/base-files/files/sbin/wifi +++ b/package/base-files/files/sbin/wifi @@ -72,6 +72,25 @@ start_net() {(  	setup_interface "$1" "$2"  )} +set_wifi_up() { +	local cfg="$1" +	local ifname="$2" +	uci set "/var/state/wireless.${cfg}.up=1" +	uci set "/var/state/wireless.${cfg}.ifname=$ifname" +} + +set_wifi_down() { +	local cfg="$1" +	local vifs vif vifstr +	config_get vifs "$cfg" vifs +	for vif in $vifs; do +		append vifstr "$vif" "|" +	done +	FILE="/var/state/wireless.$$" +	grep -vE "^config_set '($vifstr)' " /var/state/wireless > "$FILE" +	mv "$FILE" /var/state/wireless +} +  scan_wifi() {  	local cfgfile="$1"  	config_cb() { diff --git a/package/broadcom-wl/files/lib/wifi/broadcom.sh b/package/broadcom-wl/files/lib/wifi/broadcom.sh index 3a8bebd17..61672472d 100644 --- a/package/broadcom-wl/files/lib/wifi/broadcom.sh +++ b/package/broadcom-wl/files/lib/wifi/broadcom.sh @@ -71,6 +71,7 @@ scan_broadcom() {  }  disable_broadcom() { +	set_wifi_down "$1"  	wlc down  	(  		include /lib/network @@ -197,6 +198,7 @@ enable_broadcom() {  		[ -z "$net_cfg" ] || {  			bridge="$(bridge_interface "$net_cfg")"  			append if_up "start_net '$ifname' '$net_cfg'" ";$N" +			append if_up "set_wifi_up '$vif' '$ifname'" ";$N"  		}  		[ -z "$nasopts" ] || {  			eval "${vif}_ssid=\"\$ssid\"" diff --git a/package/madwifi/files/lib/wifi/madwifi.sh b/package/madwifi/files/lib/wifi/madwifi.sh index 222e2a9dd..07a6cd78b 100755 --- a/package/madwifi/files/lib/wifi/madwifi.sh +++ b/package/madwifi/files/lib/wifi/madwifi.sh @@ -50,6 +50,7 @@ scan_atheros() {  disable_atheros() (  	local device="$1" +	set_wifi_down "$device"  	# kill all running hostapd and wpa_supplicant processes that  	# are running on atheros vifs   	for pid in `pidof hostapd wpa_supplicant`; do @@ -204,6 +205,7 @@ enable_atheros() {  			start_net "$ifname" "$net_cfg"  		}  		iwconfig "$ifname" essid "$ssid" +		set_wifi_up "$vif" "$ifname"  		case "$mode" in  			ap)  				config_get_bool isolate "$vif" isolate 0  | 
