diff options
Diffstat (limited to 'net/net.c')
| -rw-r--r-- | net/net.c | 49 | 
1 files changed, 32 insertions, 17 deletions
| @@ -82,6 +82,7 @@  #include <common.h>  #include <command.h> +#include <environment.h>  #include <net.h>  #if defined(CONFIG_STATUS_LED)  #include <miiphy.h> @@ -208,32 +209,46 @@ static int NetTryCount;  /**********************************************************************/ +static int on_bootfile(const char *name, const char *value, enum env_op op, +	int flags) +{ +	switch (op) { +	case env_op_create: +	case env_op_overwrite: +		copy_filename(BootFile, value, sizeof(BootFile)); +		break; +	default: +		break; +	} + +	return 0; +} +U_BOOT_ENV_CALLBACK(bootfile, on_bootfile); +  /*   * Check if autoload is enabled. If so, use either NFS or TFTP to download   * the boot file.   */  void net_auto_load(void)  { +#if defined(CONFIG_CMD_NFS)  	const char *s = getenv("autoload"); -	if (s != NULL) { -		if (*s == 'n') { -			/* -			 * Just use BOOTP/RARP to configure system; -			 * Do not use TFTP to load the bootfile. -			 */ -			net_set_state(NETLOOP_SUCCESS); -			return; -		} -#if defined(CONFIG_CMD_NFS) -		if (strcmp(s, "NFS") == 0) { -			/* -			 * Use NFS to load the bootfile. -			 */ -			NfsStart(); -			return; -		} +	if (s != NULL && strcmp(s, "NFS") == 0) { +		/* +		 * Use NFS to load the bootfile. +		 */ +		NfsStart(); +		return; +	}  #endif +	if (getenv_yesno("autoload") == 0) { +		/* +		 * Just use BOOTP/RARP to configure system; +		 * Do not use TFTP to load the bootfile. +		 */ +		net_set_state(NETLOOP_SUCCESS); +		return;  	}  	TftpStart(TFTPGET);  } |