diff --git a/net/tftp.c b/net/tftp.c
index 2cfa0b1486..479bfa72a8 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -355,6 +355,7 @@ static void tftp_send(void)
 	switch (tftp_state) {
 	case STATE_SEND_RRQ:
 	case STATE_SEND_WRQ:
+	        tftp_next_ack = 0;
 		xp = pkt;
 		s = (ushort *)pkt;
 #ifdef CONFIG_CMD_TFTPPUT
@@ -631,6 +632,7 @@ static void tftp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
 		tftp_cur_block %= TFTP_SEQUENCE_SIZE;
 
 		if (tftp_state == STATE_SEND_RRQ)
+		  tftp_next_ack += tftp_windowsize;
 			debug("Server did not acknowledge any options!\n");
 
 		if (tftp_state == STATE_SEND_RRQ || tftp_state == STATE_OACK ||
