[U-Boot] [PATCH] net: Make sure the ethaddr is updated in net_init()

NetConsole may call NetSendUDPPacket before NetLoop is called. This will cause the source MAC address (NetOurEther) to be wrong. Instead of only changing it in NetLoop, move it to NetLoopInit so that it is also updated when net_init() is called (especially by nc_start()).
Signed-off-by: Joe Hershberger joe.hershberger@ni.com Reported-by: Michael Walle michael@walle.cc --- net/net.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/net/net.c b/net/net.c index 9de7d92..e8ff066 100644 --- a/net/net.c +++ b/net/net.c @@ -256,6 +256,7 @@ static void NetInitLoop(void) #endif env_changed_id = env_id; } + memcpy(NetOurEther, eth_get_dev()->enetaddr, 6);
return; } @@ -322,8 +323,6 @@ int NetLoop(enum proto_t protocol) }
restart: - memcpy(NetOurEther, eth_get_dev()->enetaddr, 6); - net_set_state(NETLOOP_CONTINUE);
/*

Hi Michael,
On Mon, Jul 23, 2012 at 6:11 PM, Joe Hershberger joe.hershberger@ni.com wrote:
NetConsole may call NetSendUDPPacket before NetLoop is called. This will cause the source MAC address (NetOurEther) to be wrong. Instead of only changing it in NetLoop, move it to NetLoopInit so that it is also updated when net_init() is called (especially by nc_start()).
Signed-off-by: Joe Hershberger joe.hershberger@ni.com Reported-by: Michael Walle michael@walle.cc
Please test this and verify that it solves your issue.
Thanks -Joe

On Tue, July 24, 2012 01:11, Joe Hershberger wrote:
NetConsole may call NetSendUDPPacket before NetLoop is called. This will cause the source MAC address (NetOurEther) to be wrong. Instead of only changing it in NetLoop, move it to NetLoopInit so that it is also updated when net_init() is called (especially by nc_start()).
Signed-off-by: Joe Hershberger joe.hershberger@ni.com Reported-by: Michael Walle michael@walle.cc
net/net.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/net/net.c b/net/net.c index 9de7d92..e8ff066 100644 --- a/net/net.c +++ b/net/net.c @@ -256,6 +256,7 @@ static void NetInitLoop(void) #endif env_changed_id = env_id; }
memcpy(NetOurEther, eth_get_dev()->enetaddr, 6);
return;
}
This was exactly my (quick) fix, too. Therefore,
Acked-by: Michael Walle michael@walle.cc
participants (3)
-
Joe Hershberger
-
Joe Hershberger
-
Michael Walle