remove all broadcom interfaces from bridges and bring them down completely when wifi down is called

SVN-Revision: 5116
This commit is contained in:
Felix Fietkau 2006-10-15 15:50:02 +00:00
parent 5fee2188f5
commit 313556e91e
3 changed files with 28 additions and 8 deletions

View file

@ -70,6 +70,11 @@ setup_interface() {
proto="${3:-$(config_get "$config" proto)}"
config_get iftype "$config" type
ifconfig "$iface" 2>/dev/null >/dev/null && {
# make sure the interface is removed from any existing bridge
unbridge "$iface"
}
# Setup VLAN interfaces
add_vlan "$iface"
@ -141,3 +146,15 @@ setup_interface() {
esac
}
unbridge() {
local dev="$1"
local brdev
brctl show | grep "$dev" >/dev/null && {
# interface is still part of a bridge, correct that
for brdev in $(brctl show | awk '$2 ~ /^[0-9].*\./ { print $1 }'); do
brctl delif "$brdev" "$dev" 2>/dev/null >/dev/null
done
}
}

View file

@ -10,12 +10,5 @@ case "$iftype" in
esac
for dev in $ifname; do
brctl show | grep "$dev" >/dev/null && {
# interface is still part of a bridge, correct that
for brdev in $(brctl show | awk '$2 ~ /^[0-9].*\./ { print $1 }'); do
brctl delif "$brdev" "$dev" 2>/dev/null >/dev/null
done
}
setup_interface "$dev" "$1"
done

View file

@ -75,7 +75,17 @@ scan_broadcom() {
disable_broadcom() {
wlc down
ifconfig wl0 down
(
include /lib/network
scan_interfaces
# make sure the interfaces are down and removed from all bridges
for dev in wl0 wl0.1 wl0.2 wl0.3; do
ifconfig "$dev" down 2>/dev/null >/dev/null && {
unbridge "$dev"
}
done
)
}
enable_broadcom() {