From b11f664f52c2855990107c18f242223377183575 Mon Sep 17 00:00:00 2001 From: Timur Tabi Date: Thu, 9 Apr 2009 10:27:05 -0500 Subject: [PATCH 1/2] net: fix ULI 526x macro usage in netdev.h Change netdev.h to use CONFIG_ULI526X instead of CONFIG_ULI526. CONFIG_ULI526X is used everywhere else, so that's the correct macro name. Without this fix, Ethernet will not work on the Freescale MPC8610 HPCD. Signed-off-by: Timur Tabi Signed-off-by: Ben Warren --- include/netdev.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/netdev.h b/include/netdev.h index 2794ddd57..63cf730a3 100644 --- a/include/netdev.h +++ b/include/netdev.h @@ -108,7 +108,7 @@ static inline int pci_eth_init(bd_t *bis) #if defined(CONFIG_RTL8169) num += rtl8169_initialize(bis); #endif -#if defined(CONFIG_ULI526) +#if defined(CONFIG_ULI526X) num += uli526x_initialize(bis); #endif From 3c172c4fdbbb5858fae38478d6399be4a16be3fc Mon Sep 17 00:00:00 2001 From: Michael Zaidman Date: Sat, 4 Apr 2009 01:43:00 +0300 Subject: [PATCH 2/2] NetLoop initialization bug The patch fixes the bug of partial initialization of global network parameters. Upon u-boot's start up the first ping command causes a failure of the consequent TFTP command. It happens in the recently added mechanism of the NetLoop initialization where initialization of global network parameters is separated in the NetInitLoop routine which is called per env_id change. Thus, ping request will initialize the network parameters necessary for ping operation only, afterwards the env_changed_id will be set to the env_id that will prevent all following initialization requests from other protocols. The problem is that the initialized by ping subset of network parameters is not sufficient for other protocols and particularly for TFTP which requires the NetServerIp also. Signed-off-by: Michael Zaidman Signed-off-by: Ben Warren --- net/net.c | 63 ++++--------------------------------------------------- 1 file changed, 4 insertions(+), 59 deletions(-) diff --git a/net/net.c b/net/net.c index a89f6a00e..b8648bd95 100644 --- a/net/net.c +++ b/net/net.c @@ -285,68 +285,16 @@ NetInitLoop(proto_t protocol) int env_id = get_env_id (); /* update only when the environment has changed */ - if (env_changed_id == env_id) - return 0; - - switch (protocol) { -#if defined(CONFIG_CMD_NFS) - case NFS: -#endif -#if defined(CONFIG_CMD_PING) - case PING: -#endif -#if defined(CONFIG_CMD_SNTP) - case SNTP: -#endif - case NETCONS: - case TFTP: + if (env_changed_id != env_id) { NetCopyIP(&NetOurIP, &bd->bi_ip_addr); NetOurGatewayIP = getenv_IPaddr ("gatewayip"); NetOurSubnetMask= getenv_IPaddr ("netmask"); - NetOurVLAN = getenv_VLAN("vlan"); - NetOurNativeVLAN = getenv_VLAN("nvlan"); - - switch (protocol) { -#if defined(CONFIG_CMD_NFS) - case NFS: -#endif - case NETCONS: - case TFTP: - NetServerIP = getenv_IPaddr ("serverip"); - break; -#if defined(CONFIG_CMD_PING) - case PING: - /* nothing */ - break; -#endif -#if defined(CONFIG_CMD_SNTP) - case SNTP: - /* nothing */ - break; -#endif - default: - break; - } - - break; - case BOOTP: - case RARP: - /* - * initialize our IP addr to 0 in order to accept ANY - * IP addr assigned to us by the BOOTP / RARP server - */ - NetOurIP = 0; NetServerIP = getenv_IPaddr ("serverip"); - NetOurVLAN = getenv_VLAN("vlan"); /* VLANs must be read */ NetOurNativeVLAN = getenv_VLAN("nvlan"); - case CDP: - NetOurVLAN = getenv_VLAN("vlan"); /* VLANs must be read */ - NetOurNativeVLAN = getenv_VLAN("nvlan"); - break; - default: - break; + NetOurVLAN = getenv_VLAN("vlan"); + env_changed_id = env_id; } - env_changed_id = env_id; + return 0; } @@ -440,10 +388,7 @@ restart: #if defined(CONFIG_CMD_DHCP) case DHCP: - /* Start with a clean slate... */ BootpTry = 0; - NetOurIP = 0; - NetServerIP = getenv_IPaddr ("serverip"); DhcpRequest(); /* Basically same as BOOTP */ break; #endif