diff options
author | Dragos Motrea <Dragos.Motrea@enea.com> | 2017-03-17 16:35:21 +0100 |
---|---|---|
committer | Adrian Dudau <adrian.dudau@enea.com> | 2017-03-21 11:41:09 +0100 |
commit | 689239d283d02a74ed2df7e112ad19cd5f837f6d (patch) | |
tree | 0ef72e1b89f6d17746b753f15101fe33c45a7855 /patches/ipv4 | |
parent | 1cd2607bb0937d79afc1f7331c0f93db555ee2d8 (diff) | |
download | enea-kernel-cache-689239d283d02a74ed2df7e112ad19cd5f837f6d.tar.gz |
ipv4: fix for waiting 2 minutes at boot time
Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
Diffstat (limited to 'patches/ipv4')
-rw-r--r-- | patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch | 44 | ||||
-rw-r--r-- | patches/ipv4/ipv4wait.scc | 1 |
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 @@ | |||
1 | From 1828e68d8f0b99dbe388de4b6703afd90fdd7493 Mon Sep 17 00:00:00 2001 | ||
2 | From: Dragos Motrea <Dragos.Motrea@enea.com> | ||
3 | Date: Thu, 16 Mar 2017 14:04:17 +0100 | ||
4 | Subject: [PATCH] IPV4: unlock rtnl_mutex before waiting for carrier on | ||
5 | |||
6 | There is a race condition between ip auto configuration and the ethernet | ||
7 | driver. The ip configuration is taking the rtnl_mutex in the ic_open_devs() | ||
8 | function and then is waiting 120 seconds for a carrier on at least | ||
9 | one network device. The driver is locked in the mutex and the carrier on | ||
10 | is not sent. After 120 seconds, the mutex is unlocked and the driver is | ||
11 | continuing its task execution. | ||
12 | |||
13 | The mutex should be unlocked in the ip auto configuration before waiting the | ||
14 | carrier on from the ethernet driver. | ||
15 | |||
16 | Signed-off-by: Dragos Motrea <Dragos.Motrea@enea.com> | ||
17 | --- | ||
18 | net/ipv4/ipconfig.c | 3 +-- | ||
19 | 1 file changed, 1 insertion(+), 2 deletions(-) | ||
20 | |||
21 | diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c | ||
22 | index 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 | -- | ||
43 | 2.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 | |||