broadcom-wl: improve device cleanup

Move all device cleanup to "disable_broadcom".

Signed-off-by: Nathan Hintz <nlhintz@hotmail.com>

SVN-Revision: 38758
This commit is contained in:
Hauke Mehrtens 2013-11-11 22:02:45 +00:00
parent 3c2904bfb8
commit c926edd72d

View file

@ -50,12 +50,6 @@ scan_broadcom() {
done done
config_set "$device" vifs "${adhoc_if:-$sta_if $ap_if $mon_if}" 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 ap=1
infra=1 infra=1
if [ "$_c" -gt 1 ]; then if [ "$_c" -gt 1 ]; then
@ -96,7 +90,6 @@ scan_broadcom() {
disable_broadcom() { disable_broadcom() {
local device="$1" local device="$1"
set_wifi_down "$device" set_wifi_down "$device"
wlc ifname "$device" down
( (
include /lib/network 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 [ -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 # make sure the interfaces are down and removed from all bridges
local dev local dev ifname
for dev in $device ${device}-1 ${device}-2 ${device}-3; do for dev in /sys/class/net/wds${device##wl}-* /sys/class/net/${device}-* /sys/class/net/${device}; do
ifconfig "$dev" down 2>/dev/null >/dev/null && { if [ -e "$dev" ]; then
unbridge "$dev" ifname=${dev##/sys/class/net/}
} ifconfig "$ifname" down
unbridge "$ifname"
fi
done 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 true
} }
@ -362,8 +371,6 @@ enable_broadcom() {
_c=$(($_c + 1)) _c=$(($_c + 1))
done done
wlc ifname "$device" stdin <<EOF wlc ifname "$device" stdin <<EOF
$ifdown
${macaddr:+bssid $macaddr} ${macaddr:+bssid $macaddr}
${macaddr:+cur_etheraddr $macaddr} ${macaddr:+cur_etheraddr $macaddr}
band ${band:-0} band ${band:-0}
@ -387,7 +394,6 @@ monitor ${monitor:-0}
radio ${radio:-1} radio ${radio:-1}
macfilter ${macfilter:-0} macfilter ${macfilter:-0}
maclist ${maclist:-none} maclist ${maclist:-none}
wds none
${wds:+wds $wds} ${wds:+wds $wds}
country ${country:-US} country ${country:-US}
${channel:+channel $channel} ${channel:+channel $channel}