From a671c4f2bea6215140b34726900d4f0aa5892e6a Mon Sep 17 00:00:00 2001
From: Bin Meng <bmeng.cn@gmail.com>
Date: Mon, 21 Dec 2015 22:43:38 -0800
Subject: [PATCH] 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>
---
 net/eth.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

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)
-- 
2.39.5