diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2013-11-11 22:02:45 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2013-11-11 22:02:45 +0000 |
commit | c926edd72d57faa839a373dfb29b0537c930c5b4 (patch) | |
tree | b86575f51759adb56411fb050cf4b5a2d0acea45 | |
parent | 3c2904bfb8ead3dd48fdfee728a66ec06561481d (diff) | |
download | upstream-c926edd72d57faa839a373dfb29b0537c930c5b4.tar.gz upstream-c926edd72d57faa839a373dfb29b0537c930c5b4.tar.bz2 upstream-c926edd72d57faa839a373dfb29b0537c930c5b4.zip |
broadcom-wl: improve device cleanup
Move all device cleanup to "disable_broadcom".
Signed-off-by: Nathan Hintz <nlhintz@hotmail.com>
SVN-Revision: 38758
-rw-r--r-- | package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh | 36 |
1 files 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 <<EOF +$ifdown +EOF ) true } @@ -362,8 +371,6 @@ enable_broadcom() { _c=$(($_c + 1)) done wlc ifname "$device" stdin <<EOF -$ifdown - ${macaddr:+bssid $macaddr} ${macaddr:+cur_etheraddr $macaddr} band ${band:-0} @@ -387,7 +394,6 @@ monitor ${monitor:-0} radio ${radio:-1} macfilter ${macfilter:-0} maclist ${maclist:-none} -wds none ${wds:+wds $wds} country ${country:-US} ${channel:+channel $channel} |