diff mbox

[U-Boot,1/2] dm: eth: Test 'ethrotate' before changing current ethernet device

Message ID 1450766619-24725-1-git-send-email-bmeng.cn@gmail.com
State Accepted
Delegated to: Simon Glass
Headers show

Commit Message

Bin Meng Dec. 22, 2015, 6:43 a.m. UTC
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>
---

 net/eth.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Joe Hershberger Dec. 22, 2015, 7:04 p.m. UTC | #1
On Tue, Dec 22, 2015 at 12:43 AM, Bin Meng <bmeng.cn@gmail.com> wrote:
> 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>
Simon Glass Jan. 3, 2016, 8:52 p.m. UTC | #2
On 22 December 2015 at 12:04, Joe Hershberger <joe.hershberger@gmail.com> wrote:
> On Tue, Dec 22, 2015 at 12:43 AM, Bin Meng <bmeng.cn@gmail.com> wrote:
>> 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 on sandbox:
Tested-by: Simon Glass <sjg@chromium.org>
Simon Glass Jan. 3, 2016, 11:05 p.m. UTC | #3
On 3 January 2016 at 13:52, Simon Glass <sjg@chromium.org> wrote:
> On 22 December 2015 at 12:04, Joe Hershberger <joe.hershberger@gmail.com> wrote:
>> On Tue, Dec 22, 2015 at 12:43 AM, Bin Meng <bmeng.cn@gmail.com> wrote:
>>> 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 on sandbox:
> Tested-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm/master, thanks!
diff mbox

Patch

diff --git a/net/eth.c b/net/eth.c
index 6cf3a35..6c490a6 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)