[hacks] Improve the guess_boot_netdev() logic
authorMichael Brown <mcb30@etherboot.org>
Fri, 31 Oct 2008 01:51:26 +0000 (01:51 +0000)
committerMichael Brown <mcb30@etherboot.org>
Fri, 31 Oct 2008 01:51:26 +0000 (01:51 +0000)
This function is a major kludge, but can be made slightly more
accurate by ignoring net devices that aren't open.  Eventually it
needs to be removed entirely.

src/arch/i386/image/nbi.c
src/usr/aoeboot.c
src/usr/iscsiboot.c

index e6a0ab0..ea8375c 100644 (file)
@@ -372,11 +372,12 @@ static int nbi_boot32 ( struct image *image, struct imgheader *imgheader ) {
  * @ret netdev         Boot network device
  */
 static struct net_device * guess_boot_netdev ( void ) {
-       struct net_device *boot_netdev;
+       struct net_device *netdev;
 
        /* Just use the first network device */
-       for_each_netdev ( boot_netdev ) {
-               return boot_netdev;
+       for_each_netdev ( netdev ) {
+               if ( netdev->state & NETDEV_OPEN )
+                       return netdev;
        }
 
        return NULL;
index 08d21c4..e977b10 100644 (file)
  * @ret netdev         Boot network device
  */
 static struct net_device * guess_boot_netdev ( void ) {
-       struct net_device *boot_netdev;
+       struct net_device *netdev;
 
        /* Just use the first network device */
-       for_each_netdev ( boot_netdev ) {
-               return boot_netdev;
+       for_each_netdev ( netdev ) {
+               if ( netdev->state & NETDEV_OPEN )
+                       return netdev;
        }
 
        return NULL;
index e0098fd..cdf7790 100644 (file)
@@ -26,11 +26,12 @@ struct setting keep_san_setting __setting = {
  * @ret netdev         Boot network device
  */
 static struct net_device * guess_boot_netdev ( void ) {
-       struct net_device *boot_netdev;
+       struct net_device *netdev;
 
        /* Just use the first network device */
-       for_each_netdev ( boot_netdev ) {
-               return boot_netdev;
+       for_each_netdev ( netdev ) {
+               if ( netdev->state & NETDEV_OPEN )
+                       return netdev;
        }
 
        return NULL;