Guys,

The patch below fixed the recent ethernet not working issue due to absence
of MAC address. It's Acked-by the original guilty commit author, please
consider merging into next release of u-boot.

The real problem, however, is that kernel ethernet driver has an incorrect
assumption on a correct configuration of registers of the MAC address by the
boot loader, which isn't always true.

So the next fix would be the kernel driver to be independent of the boot
loader. Still figuring the correct way for this though.


---------- Forwarded message ----------
From: Eric Miao <eric.m...@linaro.org>
Date: Wed, Aug 17, 2011 at 1:33 PM
Subject: [PATCH] net/eth.c: fix eth_write_hwaddr() to use
dev->enetaddr as fall back
To: u-b...@lists.denx.de
Cc: Simon Glass <s...@chromium.org>, Eric Miao <eric.m...@linaro.org>


Ignore the return value of eth_getenv_enetaddr_by_index(), and if it
fails, fall back to use dev->enetaddr, which could be filled up by
the ethernet device driver.

Actually, this is the original behavior, and was later changed by
commit 48506a2cde2458fa1f8c5993afc98e5a4617e1d3.

Signed-off-by: Eric Miao <eric.m...@linaro.org>
---
 net/eth.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/net/eth.c b/net/eth.c
index a34fe59..c4fbe11 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -195,8 +195,7 @@ int eth_write_hwaddr(struct eth_device *dev, const
char *base_name,
       unsigned char env_enetaddr[6];
       int ret = 0;

-       if (!eth_getenv_enetaddr_by_index(base_name, eth_number, env_enetaddr))
-               return -1;
+       eth_getenv_enetaddr_by_index(base_name, eth_number, env_enetaddr);

       if (memcmp(env_enetaddr, "\0\0\0\0\0\0", 6)) {
               if (memcmp(dev->enetaddr, "\0\0\0\0\0\0", 6) &&
--
1.7.4.1

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to