From a671c4f2bea6215140b34726900d4f0aa5892e6a Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 21 Dec 2015 22:43:38 -0800 Subject: 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 Acked-by: Joe Hershberger Acked-by: Simon Glass Tested-by: Simon Glass --- net/eth.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'net') 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) -- cgit v1.2.1