diff options
author | Simon Glass <sjg@chromium.org> | 2011-10-24 18:00:03 +0000 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2011-10-26 21:34:04 +0200 |
commit | f5329bbc3f951f01c39c24f06a57c34d865f5a16 (patch) | |
tree | 3473c0bb14bfb66aa9beffb3aa4757b686090293 /net | |
parent | e4bf0c5cfe1d7b2059a6802c9e11d567c928dbb1 (diff) | |
download | u-boot-f5329bbc3f951f01c39c24f06a57c34d865f5a16.tar.gz u-boot-f5329bbc3f951f01c39c24f06a57c34d865f5a16.tar.xz u-boot-f5329bbc3f951f01c39c24f06a57c34d865f5a16.zip |
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.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/tftp.c | 68 |
1 files changed, 38 insertions, 30 deletions
diff --git a/net/tftp.c b/net/tftp.c index da8eeaa58d..70daed033c 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -195,6 +195,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) { @@ -400,21 +434,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) @@ -498,21 +519,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"); - NetState = NETLOOP_SUCCESS; - } + if (len < TftpBlkSize) + tftp_complete(); break; case TFTP_ERROR: |