On Mon, May 21, 2018 at 3:08 PM, Eric Dumazet <eduma...@google.com> wrote: > ECN signals currently forces TCP to enter quickack mode for > up to 16 (TCP_MAX_QUICKACKS) following incoming packets. > > We believe this is not needed, and only sending one immediate ack > for the current packet should be enough. > > This should reduce the extra load noticed in DCTCP environments, > after congestion events. > > This is part 2 of our effort to reduce pure ACK packets. > > Signed-off-by: Eric Dumazet <eduma...@google.com> > --- Acked-by: Yuchung Cheng <ych...@google.com>
Thanks for this patch. I am still wondering how much does the "funny extension" help. but this patch definitely reduce the amount of unnecessary immediate ACKs on ECN. > net/ipv4/tcp_input.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c > index > 2e970e9f4e09d966b703af2d14d521a4328eba7e..1191cac72109f2f7e2b688ddbc1d404151d274d6 > 100644 > --- a/net/ipv4/tcp_input.c > +++ b/net/ipv4/tcp_input.c > @@ -263,7 +263,7 @@ static void __tcp_ecn_check_ce(struct tcp_sock *tp, const > struct sk_buff *skb) > * it is probably a retransmit. > */ > if (tp->ecn_flags & TCP_ECN_SEEN) > - tcp_enter_quickack_mode((struct sock *)tp, > TCP_MAX_QUICKACKS); > + tcp_enter_quickack_mode((struct sock *)tp, 1); > break; > case INET_ECN_CE: > if (tcp_ca_needs_ecn((struct sock *)tp)) > @@ -271,7 +271,7 @@ static void __tcp_ecn_check_ce(struct tcp_sock *tp, const > struct sk_buff *skb) > > if (!(tp->ecn_flags & TCP_ECN_DEMAND_CWR)) { > /* Better not delay acks, sender can have a very low > cwnd */ > - tcp_enter_quickack_mode((struct sock *)tp, > TCP_MAX_QUICKACKS); > + tcp_enter_quickack_mode((struct sock *)tp, 1); > tp->ecn_flags |= TCP_ECN_DEMAND_CWR; > } > tp->ecn_flags |= TCP_ECN_SEEN; > -- > 2.17.0.441.gb46fe60e1d-goog >