From c926edd72d57faa839a373dfb29b0537c930c5b4 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Mon, 11 Nov 2013 22:02:45 +0000 Subject: [PATCH] broadcom-wl: improve device cleanup Move all device cleanup to "disable_broadcom". Signed-off-by: Nathan Hintz SVN-Revision: 38758 --- .../broadcom-wl/files/lib/wifi/broadcom.sh | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh index 892a415b6f..9416f77b23 100644 --- a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh +++ b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh @@ -50,12 +50,6 @@ scan_broadcom() { done config_set "$device" vifs "${adhoc_if:-$sta_if $ap_if $mon_if}" - ifdown="down" - for vif in 0 1 2 3; do - append ifdown "vif $vif" "$N" - append ifdown "enabled 0" "$N" - done - ap=1 infra=1 if [ "$_c" -gt 1 ]; then @@ -96,7 +90,6 @@ scan_broadcom() { disable_broadcom() { local device="$1" set_wifi_down "$device" - wlc ifname "$device" down ( include /lib/network @@ -104,12 +97,28 @@ disable_broadcom() { [ -e $pid_file ] && start-stop-daemon -K -q -s SIGKILL -p $pid_file && rm $pid_file # make sure the interfaces are down and removed from all bridges - local dev - for dev in $device ${device}-1 ${device}-2 ${device}-3; do - ifconfig "$dev" down 2>/dev/null >/dev/null && { - unbridge "$dev" - } + local dev ifname + for dev in /sys/class/net/wds${device##wl}-* /sys/class/net/${device}-* /sys/class/net/${device}; do + if [ -e "$dev" ]; then + ifname=${dev##/sys/class/net/} + ifconfig "$ifname" down + unbridge "$ifname" + fi + done + + # make sure all of the devices are disabled in the driver + local ifdown= + local vif + append ifdown "down" "$N" + append ifdown "wds none" "$N" + for vif in 3 2 1 0; do + append ifdown "vif $vif" "$N" + append ifdown "enabled 0" "$N" done + + wlc ifname "$device" stdin <