[U-Boot-Users] [PATCH] in tftp client, recover from lost ACKs
Brenda J. Butler
bbutler at symbium.com
Mon Jul 25 21:38:53 CEST 2005
CHANGELOG entry:
* Patch by John McCarthy and Brenda J. Butler, 8 July 2005
When the tftp client sends an ack but it gets lost,
the server will resend the block. The client was now
expecting the next block and ignored this block, the
server never got an ack, and they got stuck. Now the
tftp client will ack the block the second (and subsequent)
time(s) allowing the tftp session to proceed. This little
fix assumes that the server will resend exactly the same
contents (same size from same offset).
Here is the patch for you to look at; it is also in an attachment where
the tabs and lines are preserved better. Apply to top of head checkout
with patch -p0 < uboot2.patch
Index: net/tftp.c
===================================================================
RCS file: /u00/cvs/u-boot3/net/tftp.c,v
retrieving revision 1.1
retrieving revision 1.3
diff -u -r1.1 -r1.3
--- net/tftp.c 15 Mar 2005 17:53:28 -0000 1.1
+++ net/tftp.c 5 Jul 2005 19:48:46 -0000 1.3
@@ -246,17 +246,17 @@
}
}
- if (TftpBlock == TftpLastBlock) {
- /*
- * Same block again; ignore it.
- */
- break;
- }
-
TftpLastBlock = TftpBlock;
NetSetTimeout (TIMEOUT * CFG_HZ, TftpTimeout);
- store_block (TftpBlock - 1, pkt + 2, len);
+ if (TftpBlock != TftpLastBlock) {
+ /*
+ * Same block again; do everything again
+ * except store it. Hope the server sent
+ * exactly the same length/contents.
+ */
+ store_block (TftpBlock - 1, pkt + 2, len);
+ }
/*
* Acknoledge the block just received, which will
prompt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: uboot2.patch
Type: text/x-patch
Size: 913 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20050725/5b10c27a/attachment.bin
More information about the U-Boot
mailing list