|
@@ -206,7 +206,7 @@ static int __init ic_open_devs(void)
|
|
struct ic_device *d, **last;
|
|
struct ic_device *d, **last;
|
|
struct net_device *dev;
|
|
struct net_device *dev;
|
|
unsigned short oflags;
|
|
unsigned short oflags;
|
|
- unsigned long start;
|
|
|
|
|
|
+ unsigned long start, next_msg;
|
|
|
|
|
|
last = &ic_first_dev;
|
|
last = &ic_first_dev;
|
|
rtnl_lock();
|
|
rtnl_lock();
|
|
@@ -263,12 +263,23 @@ static int __init ic_open_devs(void)
|
|
|
|
|
|
/* wait for a carrier on at least one device */
|
|
/* wait for a carrier on at least one device */
|
|
start = jiffies;
|
|
start = jiffies;
|
|
|
|
+ next_msg = start + msecs_to_jiffies(CONF_CARRIER_TIMEOUT/12);
|
|
while (jiffies - start < msecs_to_jiffies(CONF_CARRIER_TIMEOUT)) {
|
|
while (jiffies - start < msecs_to_jiffies(CONF_CARRIER_TIMEOUT)) {
|
|
|
|
+ int wait, elapsed;
|
|
|
|
+
|
|
for_each_netdev(&init_net, dev)
|
|
for_each_netdev(&init_net, dev)
|
|
if (ic_is_init_dev(dev) && netif_carrier_ok(dev))
|
|
if (ic_is_init_dev(dev) && netif_carrier_ok(dev))
|
|
goto have_carrier;
|
|
goto have_carrier;
|
|
|
|
|
|
msleep(1);
|
|
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:
|
|
have_carrier:
|
|
rtnl_unlock();
|
|
rtnl_unlock();
|