[dhcp] Await link-up before starting DHCP
authorJoshua Oreman <oremanj@rwcr.net>
Sat, 20 Jun 2009 08:52:41 +0000 (01:52 -0700)
committerMichael Brown <mcb30@etherboot.org>
Wed, 24 Jun 2009 12:18:31 +0000 (13:18 +0100)
Modified-by: Michael Brown <mcb30@etherboot.org>
Signed-off-by: Michael Brown <mcb30@etherboot.org>
src/usr/autoboot.c
src/usr/dhcpmgmt.c

index 41b6d3f..70b7e92 100644 (file)
@@ -39,9 +39,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
  *
  */
 
  *
  */
 
-/** Time to wait for link-up */
-#define LINK_WAIT_MS 15000
-
 /** Shutdown flags for exit */
 int shutdown_exit_flags = 0;
 
 /** Shutdown flags for exit */
 int shutdown_exit_flags = 0;
 
@@ -153,10 +150,6 @@ static int netboot ( struct net_device *netdev ) {
                return rc;
        ifstat ( netdev );
 
                return rc;
        ifstat ( netdev );
 
-       /* Wait for link-up */
-       if ( ( rc = iflinkwait ( netdev, LINK_WAIT_MS ) ) != 0 )
-               return rc;
-
        /* Configure device via DHCP */
        if ( ( rc = dhcp ( netdev ) ) != 0 )
                return rc;
        /* Configure device via DHCP */
        if ( ( rc = dhcp ( netdev ) ) != 0 )
                return rc;
index a0ac4c3..c1cc36e 100644 (file)
@@ -28,6 +28,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
 #include <usr/ifmgmt.h>
 #include <usr/dhcpmgmt.h>
 
 #include <usr/ifmgmt.h>
 #include <usr/dhcpmgmt.h>
 
+#define LINK_WAIT_MS   15000
+
 /** @file
  *
  * DHCP management
 /** @file
  *
  * DHCP management
@@ -41,6 +43,10 @@ int dhcp ( struct net_device *netdev ) {
        if ( ( rc = ifopen ( netdev ) ) != 0 )
                return rc;
 
        if ( ( rc = ifopen ( netdev ) ) != 0 )
                return rc;
 
+       /* Wait for link-up */
+       if ( ( rc = iflinkwait ( netdev, LINK_WAIT_MS ) ) != 0 )
+               return rc;
+
        /* Perform DHCP */
        printf ( "DHCP (%s %s)", netdev->name, netdev_hwaddr ( netdev ) );
        if ( ( rc = start_dhcp ( &monojob, netdev ) ) == 0 )
        /* Perform DHCP */
        printf ( "DHCP (%s %s)", netdev->name, netdev_hwaddr ( netdev ) );
        if ( ( rc = start_dhcp ( &monojob, netdev ) ) == 0 )