From: emellor@leeni.uk.xensource.com Date: Tue, 10 Jan 2006 15:21:00 +0000 (+0000) Subject: Poll for peth0 coming up before trying to attach it to the bridge. This fixes X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~16542 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=41a061e28d98367ff9c65a551337defa2a26750e;p=xen.git Poll for peth0 coming up before trying to attach it to the bridge. This fixes a problem seen with tg3's needing some time for auto-negotiation, and so the script would fail. Patch courtesy of someone who's name has been lost to history. Signed-off-by: Ewan Mellor --- diff --git a/tools/examples/network-bridge b/tools/examples/network-bridge index 652e4aacb2..ce383be86d 100755 --- a/tools/examples/network-bridge +++ b/tools/examples/network-bridge @@ -242,10 +242,10 @@ using loopback.nloopbacks= on the domain 0 kernel command line. ip addr flush ${pdev} ip link set ${netdev} addr ${mac} arp on add_to_bridge ${bridge} ${vif0} - add_to_bridge ${bridge} ${pdev} ip link set ${bridge} up ip link set ${vif0} up ip link set ${pdev} up + add_to_bridge2 ${bridge} ${pdev} do_ifup ${netdev} else # old style without ${vdev} @@ -293,6 +293,27 @@ op_stop () { brctl delbr ${bridge} } +# adds $dev to $bridge but waits for $dev to be in running state first +add_to_bridge2() { + local bridge=$1 + local dev=$2 + local maxtries=10 + + echo -n "Waiting for ${dev} to negotiate link." + for i in `seq ${maxtries}` ; do + if ifconfig ${dev} | grep -q RUNNING ; then + break + else + echo -n '.' + sleep 1 + fi + done + + if [ ${i} -eq ${maxtries} ] ; then echo '(link isnt in running state)' ; fi + + add_to_bridge ${bridge} ${dev} +} + case "$command" in start) op_start