summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2011-10-24 18:00:03 +0000
committerGerrit <chrome-bot@google.com>2011-11-17 17:09:52 -0800
commitfc1b6262079e4b2cc8402e80b5d98303d773c48a (patch)
tree7e8bc82f7ac84b1d482ad803c0b12c7616545309 /net
parent52d640d58d0bba723df03de4493cdcab167ca2ee (diff)
BACKPORT: net: tftpput: move common code into separate functions
We want to show block markers on completion of get and put, so move this common code into separate functions. (cherry-picked from f5329bb) Change-Id: I579a0db0e088ecd947bdfbf3049ec94a930fbed6 Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/11797
Diffstat (limited to 'net')
-rw-r--r--net/tftp.c77
1 files changed, 38 insertions, 39 deletions
diff --git a/net/tftp.c b/net/tftp.c
index b3cd8647af..39f4d69e20 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -199,6 +199,40 @@ static void TftpTimeout(void);
/**********************************************************************/
+static void show_block_marker(void)
+{
+#ifdef CONFIG_TFTP_TSIZE
+ if (TftpTsize) {
+ ulong pos = TftpBlock * TftpBlkSize + TftpBlockWrapOffset;
+
+ while (TftpNumchars < pos * 50 / TftpTsize) {
+ putc('#');
+ TftpNumchars++;
+ }
+ }
+#endif
+ else {
+ if (((TftpBlock - 1) % 10) == 0)
+ putc('#');
+ else if ((TftpBlock % (10 * HASHES_PER_LINE)) == 0)
+ puts("\n\t ");
+ }
+}
+
+/* The TFTP get or put is complete */
+static void tftp_complete(void)
+{
+#ifdef CONFIG_TFTP_TSIZE
+ /* Print hash marks for the last packet received */
+ while (TftpTsize && TftpNumchars < 49) {
+ putc('#');
+ TftpNumchars++;
+ }
+#endif
+ puts("\ndone\n");
+ NetState = NETLOOP_SUCCESS;
+}
+
static void
TftpSend(void)
{
@@ -404,21 +438,8 @@ TftpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,
TftpBlkSize * TFTP_SEQUENCE_SIZE;
printf("\n\t %lu MB received\n\t ",
TftpBlockWrapOffset>>20);
- }
-#ifdef CONFIG_TFTP_TSIZE
- else if (TftpTsize) {
- while (TftpNumchars <
- NetBootFileXferSize * 50 / TftpTsize) {
- putc('#');
- TftpNumchars++;
- }
- }
-#endif
- else {
- if (((TftpBlock - 1) % 10) == 0)
- putc('#');
- else if ((TftpBlock % (10 * HASHES_PER_LINE)) == 0)
- puts("\n\t ");
+ } else {
+ show_block_marker();
}
if (TftpState == STATE_SEND_RRQ)
@@ -502,30 +523,8 @@ TftpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,
}
else
#endif
- if (len < TftpBlkSize) {
- /*
- * We received the whole thing. Try to
- * run it.
- */
-#ifdef CONFIG_TFTP_TSIZE
- /* Print hash marks for the last packet received */
- while (TftpTsize && TftpNumchars < 49) {
- putc('#');
- TftpNumchars++;
- }
-#endif
- puts("\ndone\n");
-#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");
- NetState = NETLOOP_SUCCESS;
- }
+ if (len < TftpBlkSize)
+ tftp_complete();
break;
case TFTP_ERROR: