From c371ce43efd46976a34b87a0f97dfacc22cd9a79 Mon Sep 17 00:00:00 2001 From: Paul Gortmaker Date: Tue, 2 Apr 2013 09:58:25 -0400 Subject: [PATCH] --- yaml --- r: 368817 b: refs/heads/master c: 5e404cd65860d6da7c08362e9e4d0b5dc40a9985 h: refs/heads/master i: 368815: 977092e16080fa5dd366ec715dd8d76995cd10a6 v: v3 --- [refs] | 2 +- trunk/net/ipv4/ipconfig.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index c218c0553908..da7886d98c19 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f7f22874267bddcf2f2017d5045fdce390aee8c8 +refs/heads/master: 5e404cd65860d6da7c08362e9e4d0b5dc40a9985 diff --git a/trunk/net/ipv4/ipconfig.c b/trunk/net/ipv4/ipconfig.c index bf6c5cf31aed..efa1138fa523 100644 --- a/trunk/net/ipv4/ipconfig.c +++ b/trunk/net/ipv4/ipconfig.c @@ -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();