aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 3d6156f07a8d..715d541b52dd 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -247,8 +247,15 @@ static void tcp_ecn_queue_cwr(struct tcp_sock *tp)
247 247
248static void tcp_ecn_accept_cwr(struct tcp_sock *tp, const struct sk_buff *skb) 248static void tcp_ecn_accept_cwr(struct tcp_sock *tp, const struct sk_buff *skb)
249{ 249{
250 if (tcp_hdr(skb)->cwr) 250 if (tcp_hdr(skb)->cwr) {
251 tp->ecn_flags &= ~TCP_ECN_DEMAND_CWR; 251 tp->ecn_flags &= ~TCP_ECN_DEMAND_CWR;
252
253 /* If the sender is telling us it has entered CWR, then its
254 * cwnd may be very low (even just 1 packet), so we should ACK
255 * immediately.
256 */
257 tcp_enter_quickack_mode((struct sock *)tp, 2);
258 }
252} 259}
253 260
254static void tcp_ecn_withdraw_cwr(struct tcp_sock *tp) 261static void tcp_ecn_withdraw_cwr(struct tcp_sock *tp)