summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDragos Motrea <Dragos.Motrea@enea.com>2017-03-17 16:35:21 +0100
committerAdrian Dudau <adrian.dudau@enea.com>2017-03-21 11:41:09 +0100
commit689239d283d02a74ed2df7e112ad19cd5f837f6d (patch)
tree0ef72e1b89f6d17746b753f15101fe33c45a7855
parent1cd2607bb0937d79afc1f7331c0f93db555ee2d8 (diff)
downloadenea-kernel-cache-689239d283d02a74ed2df7e112ad19cd5f837f6d.tar.gz
ipv4: fix for waiting 2 minutes at boot time
Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
-rw-r--r--patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch44
-rw-r--r--patches/ipv4/ipv4wait.scc1
2 files changed, 45 insertions, 0 deletions
diff --git a/patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch b/patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch
new file mode 100644
index 0000000..5133075
--- /dev/null
+++ b/patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch
@@ -0,0 +1,44 @@
1From 1828e68d8f0b99dbe388de4b6703afd90fdd7493 Mon Sep 17 00:00:00 2001
2From: Dragos Motrea <Dragos.Motrea@enea.com>
3Date: Thu, 16 Mar 2017 14:04:17 +0100
4Subject: [PATCH] IPV4: unlock rtnl_mutex before waiting for carrier on
5
6There is a race condition between ip auto configuration and the ethernet
7driver. The ip configuration is taking the rtnl_mutex in the ic_open_devs()
8function and then is waiting 120 seconds for a carrier on at least
9one network device. The driver is locked in the mutex and the carrier on
10is not sent. After 120 seconds, the mutex is unlocked and the driver is
11continuing its task execution.
12
13The mutex should be unlocked in the ip auto configuration before waiting the
14carrier on from the ethernet driver.
15
16Signed-off-by: Dragos Motrea <Dragos.Motrea@enea.com>
17---
18 net/ipv4/ipconfig.c | 3 +--
19 1 file changed, 1 insertion(+), 2 deletions(-)
20
21diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
22index 071a785..55c95cc 100644
23--- a/net/ipv4/ipconfig.c
24+++ b/net/ipv4/ipconfig.c
25@@ -254,6 +254,7 @@ static int __init ic_open_devs(void)
26 dev->name, able, d->xid);
27 }
28 }
29+ rtnl_unlock();
30
31 /* no point in waiting if we could not bring up at least one device */
32 if (!ic_first_dev)
33@@ -281,8 +282,6 @@ static int __init ic_open_devs(void)
34 next_msg = jiffies + msecs_to_jiffies(CONF_CARRIER_TIMEOUT/12);
35 }
36 have_carrier:
37- rtnl_unlock();
38-
39 *last = NULL;
40
41 if (!ic_first_dev) {
42--
432.7.4
44
diff --git a/patches/ipv4/ipv4wait.scc b/patches/ipv4/ipv4wait.scc
new file mode 100644
index 0000000..93e8cdc
--- /dev/null
+++ b/patches/ipv4/ipv4wait.scc
@@ -0,0 +1 @@
patch 0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch