summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2015-12-21 22:43:38 -0800
committerSimon Glass <sjg@chromium.org>2016-01-07 10:27:07 -0700
commita671c4f2bea6215140b34726900d4f0aa5892e6a (patch)
tree42cb0042c2ce43f99466ce83beaeafe7eb49d750 /net
parente7cc8d11ad41f4bed7ba0532285091e9a42a7348 (diff)
downloadu-boot-a671c4f2bea6215140b34726900d4f0aa5892e6a.tar.gz
dm: eth: Test 'ethrotate' before changing current ethernet device
In eth_current_changed(), the call to eth_get_dev() below has a side effect of rotating ethernet device if uc_priv->current == NULL. This is not what we want when 'ethrotate' variable is 'no'. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com> Acked-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'net')
-rw-r--r--net/eth.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/net/eth.c b/net/eth.c
index 6cf3a353a3..6c490a6b93 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -1039,6 +1039,17 @@ int eth_receive(void *packet, int length)
static void eth_current_changed(void)
{
char *act = getenv("ethact");
+ char *ethrotate;
+
+ /*
+ * The call to eth_get_dev() below has a side effect of rotating
+ * ethernet device if uc_priv->current == NULL. This is not what
+ * we want when 'ethrotate' variable is 'no'.
+ */
+ ethrotate = getenv("ethrotate");
+ if ((ethrotate != NULL) && (strcmp(ethrotate, "no") == 0))
+ return;
+
/* update current ethernet name */
if (eth_get_dev()) {
if (act == NULL || strcmp(act, eth_get_name()) != 0)