tcp: early retransmit: delayed fast retransmit

Implementing the advanced early retransmit (sysctl_tcp_early_retrans==2).
Delays the fast retransmit by an interval of RTT/4. We borrow the
RTO timer to implement the delay. If we receive another ACK or send
a new packet, the timer is cancelled and restored to original RTO
value offset by time elapsed.  When the delayed-ER timer fires,
we enter fast recovery and perform fast retransmit.

Signed-off-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:
Yuchung Cheng 2012-05-02 13:30:04 +00:00 committed by David S. Miller
parent eed530b6c6
commit 750ea2bafa
5 changed files with 74 additions and 11 deletions

View file

@ -372,7 +372,8 @@ struct tcp_sock {
repair : 1,
unused : 1;
u8 repair_queue;
u8 do_early_retrans:1;/* Enable RFC5827 early-retransmit */
u8 do_early_retrans:1,/* Enable RFC5827 early-retransmit */
early_retrans_delayed:1; /* Delayed ER timer installed */
/* RTT measurement */
u32 srtt; /* smoothed round trip time << 3 */