Message ID | 20210203080750.18867-1-rfried.dev@gmail.com |
---|---|
State | Superseded |
Delegated to: | Joe Hershberger |
Headers | show |
Series | net: tftp: Avoid sending extra ack on completion | expand |
On Wed, Feb 3, 2021 at 12:05 AM Ramon Fried <rfried.dev@gmail.com> wrote: > > in tftpboot, if ack was already sent previously for this > packet, don't send again. > > Fixes: cc6b87ecaa96 ("net: tftp: Add client support for RFC 7440") > > Reported-by: Suneel Garapati <suneelglinux@gmail.com> > Signed-off-by: Ramon Fried <rfried.dev@gmail.com> > --- > net/tftp.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/net/tftp.c b/net/tftp.c > index 03079ded34..1111834f71 100644 > --- a/net/tftp.c > +++ b/net/tftp.c > @@ -678,7 +678,8 @@ static void tftp_handler(uchar *pkt, unsigned dest, struct in_addr sip, > } > > if (len < tftp_block_size) { > - tftp_send(); > + if (tftp_cur_block != tftp_next_ack) > + tftp_send(); In the 'if' block above this, next_ack is incremented by window size already, so for size 1 this condition is always true. And the extra ack is sent. > tftp_complete(); > } > break; > -- > 2.17.1 >
On Wed, Feb 3, 2021 at 8:43 PM Suneel Garapati <suneelglinux@gmail.com> wrote: > > On Wed, Feb 3, 2021 at 12:05 AM Ramon Fried <rfried.dev@gmail.com> wrote: > > > > in tftpboot, if ack was already sent previously for this > > packet, don't send again. > > > > Fixes: cc6b87ecaa96 ("net: tftp: Add client support for RFC 7440") > > > > Reported-by: Suneel Garapati <suneelglinux@gmail.com> > > Signed-off-by: Ramon Fried <rfried.dev@gmail.com> > > --- > > net/tftp.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/net/tftp.c b/net/tftp.c > > index 03079ded34..1111834f71 100644 > > --- a/net/tftp.c > > +++ b/net/tftp.c > > @@ -678,7 +678,8 @@ static void tftp_handler(uchar *pkt, unsigned dest, struct in_addr sip, > > } > > > > if (len < tftp_block_size) { > > - tftp_send(); > > + if (tftp_cur_block != tftp_next_ack) > > + tftp_send(); > In the 'if' block above this, next_ack is incremented by window size > already, so for size 1 this condition is always true. > And the extra ack is sent. > > > tftp_complete(); > > } > > break; > > -- > > 2.17.1 > > Yes, you're right, I'm not next to my setup, so I can't test it properly. Anyhow, I'm sending V2 now, I think now it's good. Can you test ? Thanks, Ramon.
On Wed, Feb 3, 2021 at 11:26 AM Ramon Fried <rfried.dev@gmail.com> wrote: > > On Wed, Feb 3, 2021 at 8:43 PM Suneel Garapati <suneelglinux@gmail.com> wrote: > > > > On Wed, Feb 3, 2021 at 12:05 AM Ramon Fried <rfried.dev@gmail.com> wrote: > > > > > > in tftpboot, if ack was already sent previously for this > > > packet, don't send again. > > > > > > Fixes: cc6b87ecaa96 ("net: tftp: Add client support for RFC 7440") > > > > > > Reported-by: Suneel Garapati <suneelglinux@gmail.com> > > > Signed-off-by: Ramon Fried <rfried.dev@gmail.com> > > > --- > > > net/tftp.c | 3 ++- > > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > > > diff --git a/net/tftp.c b/net/tftp.c > > > index 03079ded34..1111834f71 100644 > > > --- a/net/tftp.c > > > +++ b/net/tftp.c > > > @@ -678,7 +678,8 @@ static void tftp_handler(uchar *pkt, unsigned dest, struct in_addr sip, > > > } > > > > > > if (len < tftp_block_size) { > > > - tftp_send(); > > > + if (tftp_cur_block != tftp_next_ack) > > > + tftp_send(); > > In the 'if' block above this, next_ack is incremented by window size > > already, so for size 1 this condition is always true. > > And the extra ack is sent. > > > > > tftp_complete(); > > > } > > > break; > > > -- > > > 2.17.1 > > > > Yes, you're right, I'm not next to my setup, so I can't test it properly. > Anyhow, I'm sending V2 now, I think now it's good. Can you test ? > Thanks, > Ramon. Tested without issues for window size 1. Thanks, Suneel
diff --git a/net/tftp.c b/net/tftp.c index 03079ded34..1111834f71 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -678,7 +678,8 @@ static void tftp_handler(uchar *pkt, unsigned dest, struct in_addr sip, } if (len < tftp_block_size) { - tftp_send(); + if (tftp_cur_block != tftp_next_ack) + tftp_send(); tftp_complete(); } break;
in tftpboot, if ack was already sent previously for this packet, don't send again. Fixes: cc6b87ecaa96 ("net: tftp: Add client support for RFC 7440") Reported-by: Suneel Garapati <suneelglinux@gmail.com> Signed-off-by: Ramon Fried <rfried.dev@gmail.com> --- net/tftp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)