
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.
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@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);