Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[cascardo/linux.git] / net / ipv4 / ipconfig.c
index bf6c5cf..efa1138 100644 (file)
@@ -206,7 +206,7 @@ static int __init ic_open_devs(void)
        struct ic_device *d, **last;
        struct net_device *dev;
        unsigned short oflags;
-       unsigned long start;
+       unsigned long start, next_msg;
 
        last = &ic_first_dev;
        rtnl_lock();
@@ -263,12 +263,23 @@ static int __init ic_open_devs(void)
 
        /* wait for a carrier on at least one device */
        start = jiffies;
+       next_msg = start + msecs_to_jiffies(CONF_CARRIER_TIMEOUT/12);
        while (jiffies - start < msecs_to_jiffies(CONF_CARRIER_TIMEOUT)) {
+               int wait, elapsed;
+
                for_each_netdev(&init_net, dev)
                        if (ic_is_init_dev(dev) && netif_carrier_ok(dev))
                                goto have_carrier;
 
                msleep(1);
+
+               if time_before(jiffies, next_msg)
+                       continue;
+
+               elapsed = jiffies_to_msecs(jiffies - start);
+               wait = (CONF_CARRIER_TIMEOUT - elapsed + 500)/1000;
+               pr_info("Waiting up to %d more seconds for network.\n", wait);
+               next_msg = jiffies + msecs_to_jiffies(CONF_CARRIER_TIMEOUT/12);
        }
 have_carrier:
        rtnl_unlock();