[U-Boot] [PATCH 03/31] netloop: speed up NetLoop

Kim Phillips kim.phillips at freescale.com
Thu Jan 29 03:09:31 CET 2009


On Wed, 28 Jan 2009 10:38:42 +0100
Heiko Schocher <hs at denx.de> wrote:

> +++ b/common/cmd_nvedit.c
> @@ -75,7 +75,12 @@ DECLARE_GLOBAL_DATA_PTR;
>  static const unsigned long baudrate_table[] = CONFIG_SYS_BAUDRATE_TABLE;
>  #define	N_BAUDRATES (sizeof(baudrate_table) / sizeof(baudrate_table[0]))
> 
> +static int env_id = 1;
> 
> +int get_env_id (void)
> +{
> +	return env_id;
> +}

does getting env_id really need be a function?

> diff --git a/net/eth.c b/net/eth.c
> index b7ef09f..d1d73cb 100644
> --- a/net/eth.c
> +++ b/net/eth.c
> @@ -28,7 +28,11 @@
> 
>  #if defined(CONFIG_CMD_NET) && defined(CONFIG_NET_MULTI)
> 
> +static char *act = 0;
> +static int  env_changed_id = 0;
> +
>  /*
> +*

please don't mess with the already good comment coding style.

>   * CPU and board-specific Ethernet initializations.  Aliased function
>   * signals caller to move on
>   */
> @@ -439,13 +443,16 @@ void eth_try_another(int first_restart)
>  #ifdef CONFIG_NET_MULTI
>  void eth_set_current(void)
>  {
> -	char *act;
>  	struct eth_device* old_current;
> 
>  	if (!eth_current)	/* XXX no current */
>  		return;
> 
> -	act = getenv("ethact");
> +	if ((*act == 0) || (env_changed_id < get_env_id()))

If I'm not mistaken, this will unintentionally dereference address 0
the first time this is executed.

> +	{
> +		act = getenv("ethact");
> +		env_changed_id = get_env_id();
> +	}
>  	if (act != NULL) {
>  		old_current = eth_current;
>  		do {

Kim


More information about the U-Boot mailing list