From: Sascha Hauer <s.hauer@pengutronix.de>
To: Barebox List <barebox@lists.infradead.org>
Cc: mtr@pengutronix.de
Subject: [PATCH] net: on ifup -a only detect devices when necessary
Date: Fri, 6 Apr 2018 15:16:39 +0200 [thread overview]
Message-ID: <20180406131639.14100-1-s.hauer@pengutronix.de> (raw)
For network boot we once used to hardcode eth0, but in latest changes
this was changed to work with different network devices and the 'ifup
eth0' was replaced with 'ifup -a' which lead to the result that we now
detect all devices in order to eventually also bring up USB network
adapters. In most of the cases this is not desired. When a board has
internal network support this is likely to be used. With this patch
we only detect all devices when we do not have a network device already.
For the unusual case in which a USB network adapter shall be used
even when an internal network interface is present we introduce the
global variable "global.net.ifup_force_detect" which can be used to
force detection of devices.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
net/ifup.c | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/net/ifup.c b/net/ifup.c
index 827c5c03d1..d550f82530 100644
--- a/net/ifup.c
+++ b/net/ifup.c
@@ -28,6 +28,9 @@
#include <globalvar.h>
#include <string.h>
#include <driver.h>
+#include <init.h>
+#include <globalvar.h>
+#include <magicvar.h>
#include <linux/stat.h>
static int eth_discover(char *file)
@@ -245,6 +248,8 @@ int ifup(const char *ethname, unsigned flags)
return ifup_edev(edev, flags);
}
+static int net_ifup_force_detect;
+
int ifup_all(unsigned flags)
{
struct eth_device *edev;
@@ -266,7 +271,9 @@ int ifup_all(unsigned flags)
closedir(dir);
- device_detect_all();
+ if ((flags & IFUP_FLAG_FORCE) || net_ifup_force_detect ||
+ list_empty(&netdev_list))
+ device_detect_all();
for_each_netdev(edev)
ifup_edev(edev, flags);
@@ -274,6 +281,18 @@ int ifup_all(unsigned flags)
return 0;
}
+static int ifup_all_init(void)
+{
+ globalvar_add_simple_bool("net.ifup_force_detect", &net_ifup_force_detect);
+
+ return 0;
+}
+late_initcall(ifup_all_init);
+
+BAREBOX_MAGICVAR_NAMED(global_net_ifup_force_detect,
+ global.net.ifup_force_detect,
+ "net: force detection of devices on ifup -a");
+
#if IS_ENABLED(CONFIG_NET_CMD_IFUP)
static int do_ifup(int argc, char *argv[])
--
2.16.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next reply other threads:[~2018-04-06 13:16 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-06 13:16 Sascha Hauer [this message]
2018-04-06 19:33 ` Lucas Stach
2018-04-09 6:51 ` Sascha Hauer
2018-04-12 8:53 ` Michael Tretter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180406131639.14100-1-s.hauer@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=mtr@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox