Wait longer before giving up on the 2nd tftp block.
authorGreg Darke <greg@tsukasa.net.au>
Mon, 6 Nov 2017 00:55:26 +0000 (16:55 -0800)
committerTim 'mithro' Ansell <me@mith.ro>
Fri, 29 Dec 2017 22:56:32 +0000 (23:56 +0100)
Previously we would wait the same number of iterations as it took us to
receive the first data block after sending the request. When using the
build in tftp server in qemu, the first wait loop succeeds (and thus
breaks when 'i' is still 0.

Since the counter was never reset between the first and second data
block, under qemu the tftp_get call would fail before ever checking if
we have received the second block of data.

Now that we initialise 'i' to 12M, we ensure that we wait the same
amount of time for the second data block as it previously did for the
third (and subsequent) blocks.

litex/soc/software/libnet/tftp.c

index 457968442829ac991c20fab25cc4e53c383810c3..8a9ecf21913a68c8f826b511d1b57f325f73afd0 100644 (file)
@@ -133,6 +133,7 @@ int tftp_get(uint32_t ip, const char *filename, void *buffer)
                }
        }
 
+       i = 12000000;
        length_before = total_length;
        while(!transfer_finished) {
                if(length_before != total_length) {