aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2018-05-21 18:08:57 -0400
committerDavid S. Miller <davem@davemloft.net>2018-05-22 15:43:15 -0400
commit522040ea5fdd1c33bbf75e1d7c7c0422b96a94ef (patch)
treed03e8652fbb29e5b292da90865bfc3f591fa87c7 /net/ipv4/tcp_input.c
parent9a9c9b51e54618861420093ae6e9b50a961914c5 (diff)
tcp: do not aggressively quick ack after ECN events
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 <edumazet@google.com> Acked-by: Soheil Hassas Yeganeh <soheil@google.com> Acked-by: Yuchung Cheng <ycheng@google.com> Acked-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 2e970e9f4e09..1191cac72109 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)
263 * it is probably a retransmit. 263 * it is probably a retransmit.
264 */ 264 */
265 if (tp->ecn_flags & TCP_ECN_SEEN) 265 if (tp->ecn_flags & TCP_ECN_SEEN)
266 tcp_enter_quickack_mode((struct sock *)tp, TCP_MAX_QUICKACKS); 266 tcp_enter_quickack_mode((struct sock *)tp, 1);
267 break; 267 break;
268 case INET_ECN_CE: 268 case INET_ECN_CE:
269 if (tcp_ca_needs_ecn((struct sock *)tp)) 269 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)
271 271
272 if (!(tp->ecn_flags & TCP_ECN_DEMAND_CWR)) { 272 if (!(tp->ecn_flags & TCP_ECN_DEMAND_CWR)) {
273 /* Better not delay acks, sender can have a very low cwnd */ 273 /* Better not delay acks, sender can have a very low cwnd */
274 tcp_enter_quickack_mode((struct sock *)tp, TCP_MAX_QUICKACKS); 274 tcp_enter_quickack_mode((struct sock *)tp, 1);
275 tp->ecn_flags |= TCP_ECN_DEMAND_CWR; 275 tp->ecn_flags |= TCP_ECN_DEMAND_CWR;
276 } 276 }
277 tp->ecn_flags |= TCP_ECN_SEEN; 277 tp->ecn_flags |= TCP_ECN_SEEN;