Yuchung Cheng
fd2123a3d7
tcp: avoid resetting ACK timer upon receiving packet with ECN CWR flag
...
Previously commit 9aee40006190 ("tcp: ack immediately when a cwr
packet arrives") calls tcp_enter_quickack_mode to force sending
two immediate ACKs upon receiving a packet w/ CWR flag. The side
effect is it'll also reset the delayed ACK timer and interactive
session tracking. This patch removes that side effect by using the
new ACK_NOW flag to force an immmediate ACK.
Packetdrill to demonstrate:
0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
+0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
+0 setsockopt(3, SOL_TCP, TCP_CONGESTION, "dctcp", 5) = 0
+0 bind(3, ..., ...) = 0
+0 listen(3, 1) = 0
+0 < [ect0] SEW 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>
+0 > SE. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 8>
+.1 < [ect0] . 1:1(0) ack 1 win 257
+0 accept(3, ..., ...) = 4
+0 < [ect0] . 1:1001(1000) ack 1 win 257
+0 > [ect01] . 1:1(0) ack 1001
+0 write(4, ..., 1) = 1
+0 > [ect01] P. 1:2(1) ack 1001
+0 < [ect0] . 1001:2001(1000) ack 2 win 257
+0 write(4, ..., 1) = 1
+0 > [ect01] P. 2:3(1) ack 2001
+0 < [ect0] . 2001:3001(1000) ack 3 win 257
+0 < [ect0] . 3001:4001(1000) ack 3 win 257
// Ack delayed ...
+.01 < [ce] P. 4001:4501(500) ack 3 win 257
+0 > [ect01] . 3:3(0) ack 4001
+0 > [ect01] E. 3:3(0) ack 4501
+.001 read(4, ..., 4500) = 4500
+0 write(4, ..., 1) = 1
+0 > [ect01] PE. 3:4(1) ack 4501 win 100
+.01 < [ect0] W. 4501:5501(1000) ack 4 win 257
// No delayed ACK on CWR flag
+0 > [ect01] . 4:4(0) ack 5501
+.31 < [ect0] . 5501:6501(1000) ack 4 win 257
+0 > [ect01] . 4:4(0) ack 6501
Fixes: 9aee40006190 ("tcp: ack immediately when a cwr packet arrives")
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-08-11 11:31:35 -07:00
..
2018-07-06 12:32:12 +02:00
2018-08-08 09:40:44 -07:00
2018-07-24 14:10:43 -07:00
2018-06-28 10:40:47 -07:00
2018-07-30 09:10:25 -07:00
2018-07-24 14:10:42 -07:00
2018-07-20 21:17:12 -07:00
2018-08-10 16:57:57 +02:00
2018-08-03 00:47:32 +02:00
2018-07-24 14:10:42 -07:00
2018-08-06 10:33:44 -07:00
2018-07-30 09:10:25 -07:00
2018-06-28 10:40:47 -07:00
2018-06-15 07:24:58 +09:00
2018-08-09 14:25:06 -07:00
2018-07-27 13:17:50 -07:00
2018-08-09 11:52:36 -07:00
2018-08-09 14:11:24 -07:00
2018-07-24 14:10:43 -07:00
2018-08-09 11:52:36 -07:00
2018-06-26 11:33:04 +09:00
2018-08-06 11:21:15 +02:00
2018-04-22 21:12:00 -04:00
2018-08-11 11:31:35 -07:00
2018-08-09 14:07:38 -07:00
2018-08-08 09:39:36 -07:00
2018-07-24 14:10:43 -07:00
2018-07-27 09:33:37 -07:00
2018-08-05 13:04:31 -07:00
2018-08-09 11:52:36 -07:00
2018-07-24 19:21:58 -07:00
2018-08-06 11:21:37 +02:00
2018-07-24 14:10:42 -07:00
2018-06-20 07:26:58 +09:00
2018-08-08 19:05:39 +02:00
2018-05-14 17:24:18 -04:00
2018-08-05 13:04:31 -07:00
2018-06-28 10:40:47 -07:00
2018-07-30 09:10:25 -07:00
2018-07-12 16:55:29 -07:00
2018-08-02 10:55:32 -07:00
2018-08-09 11:52:36 -07:00
2018-06-28 10:40:47 -07:00
2018-07-05 20:20:03 +09:00
2018-08-07 13:19:45 -07:00
2018-05-23 11:26:45 +02:00
2018-06-28 10:40:47 -07:00
2018-08-11 11:25:18 -07:00
2018-08-09 14:12:04 -07:00
2018-07-24 14:10:42 -07:00
2018-08-10 14:38:43 -07:00
2018-08-01 10:00:06 -07:00
2018-08-04 13:05:39 -07:00
2018-08-09 11:52:36 -07:00
2018-08-05 17:13:58 -07:00
2018-08-03 16:44:19 -07:00
2018-08-07 12:39:13 -07:00
2018-07-24 14:10:42 -07:00
2018-07-24 19:21:58 -07:00
2018-07-24 14:10:42 -07:00
2018-08-05 13:04:31 -07:00
2018-08-02 10:55:32 -07:00
2018-08-06 10:42:48 -07:00
2018-07-24 14:10:43 -07:00
2018-06-28 13:36:39 +09:00
2018-08-02 10:55:32 -07:00
2018-03-27 13:18:09 -04:00