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

Simon Glass sjg at chromium.org
Thu Oct 11 02:03:11 CEST 2012


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 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);
-- 
1.7.7.3



More information about the U-Boot mailing list