From f754f5dc6fe4b6cfbd28a9a6d9d08059d9312101 Mon Sep 17 00:00:00 2001 From: rockly Date: Sat, 3 Aug 2013 18:09:05 +0800 Subject: net: tftp: Make sure timeout will not effect wrap offset When the block 0 store to the memory of client and timeout at this moment. Because of no ACK packet, the server will send block 0 again, if this client reconnect to the server at this time, TftpBlockWrapOffset will become larger than it should be. Signed-off-by: Rockly Patch: 264417 --- net/tftp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'net/tftp.c') diff --git a/net/tftp.c b/net/tftp.c index 6d333d5..2e06808 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -281,7 +281,7 @@ static void update_block_number(void) * number of 0 this means that there was a wrap * around of the (16 bit) counter. */ - if (TftpBlock == 0) { + if (TftpBlock == 0 && TftpLastBlock != 0) { TftpBlockWrap++; TftpBlockWrapOffset += TftpBlkSize * TFTP_SEQUENCE_SIZE; TftpTimeoutCount = 0; /* we've done well, reset thhe timeout */ -- cgit v1.1 From 8e52533d109571915a0006533e2e1adb01face00 Mon Sep 17 00:00:00 2001 From: Andrew Ruder Date: Tue, 22 Oct 2013 19:10:28 -0500 Subject: net: tftpsrv: Get correct client MAC address NetServerEther was not being cleared in the tftp server code, so the destination MAC address would be whatever the last destination MAC address was. Scenario: U-Boot: dhcp tftpsrv Host: Send device WRQ Device: Responds with ACK to dhcp server mac address with host ip address By clearing NetServerEther, we force a lookup of the host MAC address to go with the associated host IP. Signed-off-by: Andrew Ruder --- net/tftp.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'net/tftp.c') diff --git a/net/tftp.c b/net/tftp.c index 2e06808..966d1cf 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -849,6 +849,9 @@ TftpStartServer(void) TftpState = STATE_RECV_WRQ; net_set_udp_handler(TftpHandler); + + /* zero out server ether in case the server ip has changed */ + memset(NetServerEther, 0, 6); } #endif /* CONFIG_CMD_TFTPSRV */ -- cgit v1.1