diff mbox series

net: tftp: Fix incorrect tftp_next_ack on no OACK

Message ID 78b5cf7788fb9ed24bd407105f750a8ff73af324.camel@nedap.com
State Accepted
Commit beb61e13b8134c9aeaf1b2c0a2e13ed71d3be59e
Delegated to: Tom Rini
Headers show
Series net: tftp: Fix incorrect tftp_next_ack on no OACK | expand

Commit Message

Harm Berntsen Nov. 27, 2020, 9:45 p.m. UTC
When the tftp server did not send any OACK, the tftp_next_ack variable
was not set to the correct value . As the server was transmitting 
blocks we generated a lot of 'Received unexpected block: $n, expected 
$n+1' error messages. Depending on the timeout setting the transfer 
could still complete though.

Signed-off-by: Harm Berntsen <harm.berntsen@nedap.com>
CC: Ramon Fried <rfried.dev@gmail.com>
---

 net/tftp.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Ramon Fried Dec. 14, 2020, 9:36 p.m. UTC | #1
On Fri, Nov 27, 2020 at 11:45 PM Harm Berntsen <harm.berntsen@nedap.com> wrote:
>
> When the tftp server did not send any OACK, the tftp_next_ack variable
> was not set to the correct value . As the server was transmitting
> blocks we generated a lot of 'Received unexpected block: $n, expected
> $n+1' error messages. Depending on the timeout setting the transfer
> could still complete though.
>
> Signed-off-by: Harm Berntsen <harm.berntsen@nedap.com>
> CC: Ramon Fried <rfried.dev@gmail.com>
> ---
>
>  net/tftp.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/net/tftp.c b/net/tftp.c
> index 6fdb1a821a..9371d7ef2c 100644
> --- a/net/tftp.c
> +++ b/net/tftp.c
> @@ -624,8 +624,10 @@ static void tftp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
>                 tftp_cur_block++;
>                 tftp_cur_block %= TFTP_SEQUENCE_SIZE;
>
> -               if (tftp_state == STATE_SEND_RRQ)
> +               if (tftp_state == STATE_SEND_RRQ) {
>                         debug("Server did not acknowledge any options!\n");
> +                       tftp_next_ack = tftp_windowsize;
> +               }
>
>                 if (tftp_state == STATE_SEND_RRQ || tftp_state == STATE_OACK ||
>                     tftp_state == STATE_RECV_WRQ) {
> --
> 2.29.2
>
>
Reviewed-By: Ramon Fried <rfried.dev@gmail.com>
Tom Rini Jan. 19, 2021, 8:01 p.m. UTC | #2
On Fri, Nov 27, 2020 at 09:45:56PM +0000, Harm Berntsen wrote:

> When the tftp server did not send any OACK, the tftp_next_ack variable
> was not set to the correct value . As the server was transmitting 
> blocks we generated a lot of 'Received unexpected block: $n, expected 
> $n+1' error messages. Depending on the timeout setting the transfer 
> could still complete though.
> 
> Signed-off-by: Harm Berntsen <harm.berntsen@nedap.com>
> CC: Ramon Fried <rfried.dev@gmail.com>
> Reviewed-By: Ramon Fried <rfried.dev@gmail.com>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/net/tftp.c b/net/tftp.c
index 6fdb1a821a..9371d7ef2c 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -624,8 +624,10 @@  static void tftp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
 		tftp_cur_block++;
 		tftp_cur_block %= TFTP_SEQUENCE_SIZE;
 
-		if (tftp_state == STATE_SEND_RRQ)
+		if (tftp_state == STATE_SEND_RRQ) {
 			debug("Server did not acknowledge any options!\n");
+			tftp_next_ack = tftp_windowsize;
+		}
 
 		if (tftp_state == STATE_SEND_RRQ || tftp_state == STATE_OACK ||
 		    tftp_state == STATE_RECV_WRQ) {