Yuchung Cheng 93b174ad71 tcp: bug fix Fast Open client retransmission
If SYN-ACK partially acks SYN-data, the client retransmits the
remaining data by tcp_retransmit_skb(). This increments lost recovery
state variables like tp->retrans_out in Open state. If loss recovery
happens before the retransmission is acked, it triggers the WARN_ON
check in tcp_fastretrans_alert(). For example: the client sends
SYN-data, gets SYN-ACK acking only ISN, retransmits data, sends
another 4 data packets and get 3 dupacks.

Since the retransmission is not caused by network drop it should not
update the recovery state variables. Further the server may return a
smaller MSS than the cached MSS used for SYN-data, so the retranmission
needs a loop. Otherwise some data will not be retransmitted until timeout
or other loss recovery events.

Signed-off-by: Yuchung Cheng <ycheng@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-12-07 14:39:28 -05:00
..
2012-06-12 15:50:24 -07:00
2012-06-08 14:27:23 -07:00
2012-08-09 16:18:06 -07:00
2012-04-15 12:44:40 -04:00
2012-04-15 12:44:40 -04:00
2010-06-03 03:21:52 -07:00
2012-04-15 12:44:40 -04:00
2012-07-19 10:43:03 -07:00
2012-10-08 17:42:36 -04:00
2011-03-31 11:26:23 -03:00
2012-10-01 17:01:46 -04:00
2012-04-15 12:44:40 -04:00
2012-09-24 16:31:37 -04:00
2012-07-18 08:59:58 -07:00
2012-08-14 14:28:32 -07:00
2012-10-04 13:58:26 -04:00
2012-10-01 17:01:57 -04:00
2011-03-31 11:26:23 -03:00
2012-05-17 18:45:20 -04:00
2010-06-03 03:21:52 -07:00
2012-08-09 16:18:06 -07:00
2012-08-07 16:24:55 -07:00
2011-05-17 14:16:58 -04:00
2012-07-26 15:50:39 -07:00
2009-03-21 19:06:50 -07:00
2012-05-19 01:08:16 -04:00
2012-10-08 17:42:36 -04:00
2012-08-06 13:40:47 -07:00
2009-10-07 16:39:43 -04:00
2012-04-15 12:44:40 -04:00
2012-05-16 15:17:08 -04:00
2012-04-15 12:44:40 -04:00