]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - net/tftp.c
karo: tx6: support MIPI variant in board name
[karo-tx-uboot.git] / net / tftp.c
index 3e99e7309116c333576a366735214ccb66c6fdc3..dd880af30f8f9f461a5d40ea30e7aebd3e83d3a5 100644 (file)
 /* Well known TFTP port # */
 #define WELL_KNOWN_PORT        69
 /* Millisecs to timeout for lost pkt */
-#define TIMEOUT                5000UL
+#define TIMEOUT                1000UL
 #ifndef        CONFIG_NET_RETRY_COUNT
 /* # of timeouts before giving up */
-# define TIMEOUT_COUNT 10
+# define TIMEOUT_COUNT 1000
 #else
 # define TIMEOUT_COUNT  (CONFIG_NET_RETRY_COUNT * 2)
 #endif
@@ -249,6 +249,8 @@ static void show_block_marker(void)
        if (tftp_tsize) {
                ulong pos = tftp_cur_block * tftp_block_size +
                        tftp_block_wrap_offset;
+               if (pos > tftp_tsize)
+                       pos = tftp_tsize;
 
                while (tftp_tsize_num_hash < pos * 50 / tftp_tsize) {
                        putc('#');
@@ -359,7 +361,7 @@ static void tftp_send(void)
                pkt += 5 /*strlen("octet")*/ + 1;
                strcpy((char *)pkt, "timeout");
                pkt += 7 /*strlen("timeout")*/ + 1;
-               sprintf((char *)pkt, "%lu", timeout_ms / 1000);
+               sprintf((char *)pkt, "%lu", DIV_ROUND_UP(timeout_ms, 1000));
                debug("send option \"timeout %s\"\n", (char *)pkt);
                pkt += strlen((char *)pkt) + 1;
 #ifdef CONFIG_TFTP_TSIZE
@@ -707,12 +709,12 @@ void tftp_start(enum proto_t protocol)
 
        ep = getenv("tftptimeout");
        if (ep != NULL)
-               timeout_ms = simple_strtol(ep, NULL, 10);
+               timeout_ms = simple_strtol(ep, NULL, 10) * 1000;
 
-       if (timeout_ms < 1000) {
-               printf("TFTP timeout (%ld ms) too low, set min = 1000 ms\n",
-                      timeout_ms);
-               timeout_ms = 1000;
+       if (timeout_ms < TIMEOUT) {
+               printf("TFTP timeout (%lu s) too low, set min = %lu s\n",
+                       timeout_ms / 1000, TIMEOUT / 1000);
+               timeout_ms = TIMEOUT;
        }
 
        debug("TFTP blocksize = %i, timeout = %ld ms\n",