dm: eth: Test 'ethrotate' before changing current ethernet device
authorBin Meng <bmeng.cn@gmail.com>
Tue, 22 Dec 2015 06:43:38 +0000 (22:43 -0800)
committerSimon Glass <sjg@chromium.org>
Thu, 7 Jan 2016 17:27:07 +0000 (10:27 -0700)
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

index 6cf3a353a347d7a91e1e344d204bd82a27ccc7b4..6c490a6b93e37e809e52a1c285117f418718305d 100644 (file)
--- 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)