diff options
author | Bin Meng <bmeng.cn@gmail.com> | 2015-12-22 09:43:38 +0300 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2016-01-07 20:27:07 +0300 |
commit | a671c4f2bea6215140b34726900d4f0aa5892e6a (patch) | |
tree | 42cb0042c2ce43f99466ce83beaeafe7eb49d750 | |
parent | e7cc8d11ad41f4bed7ba0532285091e9a42a7348 (diff) | |
download | u-boot-a671c4f2bea6215140b34726900d4f0aa5892e6a.tar.xz |
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>
-rw-r--r-- | net/eth.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -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) |