brcm47xx: fix network failsafe indication

Remove the code used on the old switch driver.
The Ethernet drive is loaded as a module and needs some time to get up
therefor we added some wait function.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 39254
master
Hauke Mehrtens 11 years ago
parent f4f31511fd
commit edab966e45
  1. 35
      target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm
  2. 18
      target/linux/brcm47xx/base-files/lib/preinit/05_set_failsafe_switch_brcm
  3. 40
      target/linux/brcm47xx/base-files/lib/preinit/15_set_preinit_interface_brcm

@ -1,37 +1,16 @@
#!/bin/sh #!/bin/sh
set_preinit_iface() { preinit_iface() {
ifname=eth0 ifname=eth0
# hardware specific overrides # hardware specific overrides
case "$(cat /proc/diag/model)" in case "$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo)" in
"Linksys WAP54G V1") ifname=eth1;; "Asus WLHDD") ifname=eth1;;
"ASUS WL-HDD") ifname=eth1;; "Asus WL300G") ifname=eth1;;
"ASUS WL-300g") ifname=eth1;;
"ASUS (unknown, BCM4702)") ifname=eth1;;
"Sitecom WL-105b") ifname=eth1;;
esac esac
# The interface has to be up to configure the switch local try=0;
ifconfig $ifname 0.0.0.0 up while [ $((try++)) -le 5 ] && [ ! -f /sys/class/net/$ifname/operstate ]; do sleep 1; done
[ -f /lib/modules/`uname -r`/switch-robo.ko ] && {
rmmod switch-robo
insmod switch-robo
}
[ -f /lib/modules/`uname -r`/switch-adm.ko ] && {
rmmod switch-adm
insmod switch-adm
}
} }
init_iface() { boot_hook_add preinit_main preinit_iface
[ -d /proc/switch/eth0 ] && [ "$ifname" = "eth0" ] && {
case "$(cat /proc/switch/eth0/cpuport)" in
"5") cpu_port="5u*";;
"8") cpu_port="8u*";;
esac
}
}
boot_hook_add preinit_main set_preinit_iface
boot_hook_add preinit_main init_iface

@ -1,18 +0,0 @@
#!/bin/sh
failsafe_ip() {
[ -d /proc/switch/eth0 ] && [ "$ifname" = "eth0" ] && {
# The switch will connect all ports, The switch will leak
# packages from wan to lan and vice versa in failsafe mode
echo 1 > /proc/switch/eth0/reset
echo 1 > /proc/switch/eth0/enable
echo 0 > /proc/switch/eth0/enable_vlan
echo "0 1 2 3 4 ${cpu_port:-5u*}" > /proc/switch/eth0/vlan/1/ports
}
[ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
ifconfig $pi_ifname $pi_ip netmask $pi_netmask broadcast $pi_broadcast up
}
}
boot_hook_add failsafe failsafe_ip

@ -1,34 +1,16 @@
#!/bin/sh #!/bin/sh
preinit_net_echo_send() { preinit_ip() {
preinit_ip # if the preinit interface isn't specified and ifname is set in
# preinit.arch use that interface
if [ -z "$pi_ifname" ]; then
pi_ifname=$ifname
fi
[ -d /proc/switch/eth0 ] && [ "$pi_ifname" = "eth0" ] && {
echo 1 > /proc/switch/eth0/reset
echo 1 > /proc/switch/eth0/enable
echo 1 > /proc/switch/eth0/enable_vlan
# this would be easier if we blasted the message across all ports
# but we don't want packets leaking across interfaces
for port in $(seq 0 4); do {
echo "$port ${cpu_port:-5u*}" > /proc/switch/eth0/vlan/1/ports
sleep 1
netmsg $pi_broadcast "$1"
}; done
} || netmsg $pi_broadcast "$1"
}
preinit_net_echo() {
[ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && { [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
{ ifconfig $pi_ifname $pi_ip netmask $pi_netmask broadcast $pi_broadcast up
[ "$pi_preinit_net_messages" = "y" ] || {
[ "$pi_failsafe_net_message" = "true" ] && local try=0;
[ "$pi_preinit_no_failsafe_netmsg" != "y" ] while [ $((try++)) -le 5 ] && [ ! $(cat /sys/class/net/$pi_ifname/operstate) == "up" ]; do sleep 1; done
} }
} && preinit_net_echo_send $1
}
} }

Loading…
Cancel
Save