2022-03-20 21:10:47

by Florian Westphal

[permalink] [raw]
Subject: Re: [PATCH] net:ipv4: send an ack when seg.ack > snd.nxt

[email protected] <[email protected]> wrote:
> - if (after(ack, tp->snd_nxt))
> + if (after(ack, tp->snd_nxt)) {
> + tcp_send_ack(sk);
> return -1;
> + }

If we really need to do this we need to
if (!(flag & FLAG_NO_CHALLENGE_ACK))
tcp_send_challenge_ack(sk);

... else this might result in two acks?
Whats the problem thats being fixed here?


2022-03-21 07:16:16

by Zhouyi Zhou

[permalink] [raw]
Subject: Re: [PATCH] net:ipv4: send an ack when seg.ack > snd.nxt

Dear Florian

Thank you for reviewing my patch ;-)

On Sat, Mar 19, 2022 at 6:04 PM Florian Westphal <[email protected]> wrote:
>
> [email protected] <[email protected]> wrote:
> > - if (after(ack, tp->snd_nxt))
> > + if (after(ack, tp->snd_nxt)) {
> > + tcp_send_ack(sk);
> > return -1;
> > + }
>
> If we really need to do this we need to
> if (!(flag & FLAG_NO_CHALLENGE_ACK))
Yes, we need to check FLAG_NO_CHALLENGE_ACK here to avoid two acks.
> tcp_send_challenge_ack(sk);
>
> ... else this might result in two acks?
> Whats the problem thats being fixed here?
We fix the code to let it match what RFC 793 page 72 has described. I
guess this is also what the intermediate internet devices (routers,
firewalls for example) expect us to do ;-)

Thanks again
Zhouyi