[U-Boot] [PATCH] net: Add tftp speed indication

Igor Grinberg grinberg at compulab.co.il
Thu Oct 11 13:00:49 CEST 2012


On 10/11/12 02:03, Simon Glass wrote:
> This prints a tftp speed indication after the download completes. This
> is the 3.6 MiB/s indicator below.
> 
> To enable this, define CONFIG_TFTP_SPEED in your board config.

This is relatively small (and nice) addition to the tftpboot command.
Do we really need to introduce yet another config option for this?
Can this be just added with no need to specify the config option?

> 
> Tegra2 (SeaBoard) # tftp ...
> Using asx0 device
> TFTP from server 172.22.72.144; our IP address is 172.22.73.81
> Filename '/tftpboot/uImage-user-seaboard-1'.
> Load address: 0x408000
> Loading: #################################################  3.6 MiB/s
> done
> 
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>  README     |    9 +++++++++
>  net/tftp.c |   15 +++++++++++++++
>  2 files changed, 24 insertions(+), 0 deletions(-)
> 
> diff --git a/README b/README
> index 0d17e7d..f754bd5 100644
> --- a/README
> +++ b/README
> @@ -2349,6 +2349,15 @@ The following options need to be configured:
>  		A better solution is to properly configure the firewall,
>  		but sometimes that is not allowed.
>  
> +- TFTP Speed:
> +		CONFIG_TFTP_SPEED
> +
> +		If this is defined, the approximate download speed of the
> +		tftp operation will be displayed after the # progress
> +		markers, like this:
> +
> +		Loading: ########### (more #) ############  3.6 MiB/s
> +
>  - Show boot progress:
>  		CONFIG_SHOW_BOOT_PROGRESS
>  
> diff --git a/net/tftp.c b/net/tftp.c
> index 59a8ebb..59161db 100644
> --- a/net/tftp.c
> +++ b/net/tftp.c
> @@ -41,6 +41,10 @@
>  static ulong TftpTimeoutMSecs = TIMEOUT;
>  static int TftpTimeoutCountMax = TIMEOUT_COUNT;
>  
> +#ifdef CONFIG_TFTP_SPEED
> +static ulong time_start;   /* Record time we started tftp */
> +#endif
> +
>  /*
>   * These globals govern the timeout behavior when attempting a connection to a
>   * TFTP server. TftpRRQTimeoutMSecs specifies the number of milliseconds to
> @@ -299,6 +303,14 @@ static void tftp_complete(void)
>  		TftpNumchars++;
>  	}
>  #endif
> +#ifdef CONFIG_TFTP_SPEED
> +	time_start = get_timer(time_start);
> +	if (time_start > 0) {
> +		puts("  ");
> +		print_size(NetBootFileXferSize /
> +			time_start * 1000, "/s");
> +	}
> +#endif
>  	puts("\ndone\n");
>  	net_set_state(NETLOOP_SUCCESS);
>  }
> @@ -775,6 +787,9 @@ void TftpStart(enum proto_t protocol)
>  		TftpState = STATE_SEND_RRQ;
>  	}
>  
> +#ifdef CONFIG_TFTP_SPEED
> +	time_start = get_timer(0);
> +#endif
>  	TftpTimeoutCountMax = TftpRRQTimeoutCountMax;
>  
>  	NetSetTimeout(TftpTimeoutMSecs, TftpTimeout);

-- 
Regards,
Igor.


More information about the U-Boot mailing list