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-24 14:10:42 -07:00
2018-07-20 22:28:28 -07:00
2018-08-01 09:52:30 -07:00
2017-11-03 22:11:17 +08:00
2018-05-16 07:24:30 +02:00
2017-10-21 01:33:19 +01:00
2018-07-29 12:37:06 -07:00
2018-07-27 09:33:37 -07:00
2018-02-13 13:59:03 +01:00
2018-07-28 19:06:12 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-04-23 10:21:24 -04:00
2018-06-05 12:29:43 -04:00
2018-06-06 18:39:49 -07:00
2018-07-03 10:29:26 +09:00
2018-07-03 10:29:26 +09:00
2018-07-07 10:58:49 +09:00
2018-08-02 10:55:32 -07:00
2018-05-10 17:43:55 -04:00
2018-03-12 11:03:42 -04:00
2018-08-05 17:16:46 -07:00
2018-06-20 08:03:06 +09:00
2018-04-07 22:32:32 -04:00
2018-04-09 10:57:35 -04:00
2018-08-01 09:52:30 -07:00
2018-08-06 13:15:12 -07:00
2018-08-01 09:58:15 -07:00
2018-07-12 16:40:19 -07:00
2017-11-02 11:10:55 +01:00
2018-07-24 19:21:58 -07:00
2018-07-24 16:35:58 -07:00
2018-05-10 15:13:33 -04:00
2018-06-07 16:27:16 -04:00
2018-03-27 13:18:09 -04:00
2018-06-06 18:39:49 -07:00
2018-03-27 13:18:09 -04:00
2018-06-22 13:43:27 +09:00
2018-07-13 14:21:16 -07:00
2018-07-24 14:10:43 -07:00
2018-07-24 14:10:43 -07:00
2018-06-05 12:29:43 -04:00
2018-07-16 17:51:48 +02:00
2018-05-23 15:14:12 -04:00
2018-08-01 09:50:04 -07:00
2018-08-05 17:16:46 -07:00
2017-08-07 11:39:22 -07:00
2018-07-07 10:58:49 +09:00
2018-07-29 12:37:06 -07:00
2018-03-25 20:53:54 -04:00
2018-08-01 09:52:30 -07:00
2018-08-02 10:55:32 -07:00
2017-08-06 21:25:10 -07:00
2017-10-16 21:24:25 +01:00
2017-11-15 14:09:52 +09:00
2017-08-06 21:25:10 -07:00
2018-08-11 11:31:35 -07:00
2017-12-20 14:00:25 -05:00
2017-12-13 15:51:12 -05:00
2017-08-06 21:25:10 -07:00
2017-08-06 21:25:10 -07:00
2018-02-28 12:03:47 -05:00
2018-08-11 11:31:35 -07:00
2018-07-20 21:17:12 -07:00
2017-05-17 16:06:01 -04:00
2018-03-27 13:18:09 -04:00
2018-07-12 14:50:40 -07:00
2018-01-31 10:26:30 -05:00
2018-07-16 00:12:09 -07:00
2018-08-01 09:57:09 -07:00
2018-07-11 23:01:56 -07:00
2018-08-01 09:56:10 -07:00
2017-08-06 21:25:10 -07:00
2018-07-25 16:35:45 -07:00
2018-02-06 11:39:31 +01:00
2017-09-29 06:07:00 +01:00
2017-11-02 11:10:55 +01:00
2017-08-06 21:25:10 -07:00
2017-08-30 11:20:08 -07:00
2017-08-06 21:25:10 -07:00
2018-08-03 16:52:07 -07:00
2018-02-28 11:43:28 -05:00
2018-06-08 19:55:15 -04:00
2017-11-02 11:10:55 +01:00
2018-07-03 10:29:26 +09:00
2017-07-24 13:52:59 -07:00
2018-07-07 10:58:49 +09:00
2018-05-16 07:24:30 +02:00
2017-12-19 08:23:21 +01:00
2017-06-16 11:48:39 -04:00
2017-04-14 10:07:39 +02:00
2018-03-07 10:54:29 +01:00
2018-03-04 17:49:17 -05:00
2018-03-27 13:18:09 -04:00
2017-11-02 11:10:55 +01:00