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 |
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>
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 --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) {
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(-)