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>
This commit is contained in:
parent
9a9c9b51e5
commit
522040ea5f
|
@ -263,7 +263,7 @@ static void __tcp_ecn_check_ce(struct tcp_sock *tp, const struct sk_buff *skb)
|
||||||
* it is probably a retransmit.
|
* it is probably a retransmit.
|
||||||
*/
|
*/
|
||||||
if (tp->ecn_flags & TCP_ECN_SEEN)
|
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;
|
break;
|
||||||
case INET_ECN_CE:
|
case INET_ECN_CE:
|
||||||
if (tcp_ca_needs_ecn((struct sock *)tp))
|
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)) {
|
if (!(tp->ecn_flags & TCP_ECN_DEMAND_CWR)) {
|
||||||
/* Better not delay acks, sender can have a very low cwnd */
|
/* 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_DEMAND_CWR;
|
||||||
}
|
}
|
||||||
tp->ecn_flags |= TCP_ECN_SEEN;
|
tp->ecn_flags |= TCP_ECN_SEEN;
|
||||||
|
|
Loading…
Reference in New Issue