> On 08 Dec 2015, at 11:50, Ilpo Järvinen wrote: > > On Tue, 8 Dec 2015, Per Hurtig wrote: > >> This patch implements the RTO restart modification (RTOR). When data is >> ACKed, and the RTO timer is restarted, the time elapsed since the last >> outstanding segment was transmitted is subtracted from the calculated RTO >> value. This way, the RTO timer will expire after exactly RTO seconds, and >> not RTO + RTT [+ delACK] seconds. >> >> This patch also implements a new sysctl (tcp_timer_restart) that is used >> to control the timer restart behavior. >> >> Signed-off-by: Per Hurtig >> --- >> Documentation/networking/ip-sysctl.txt | 12 ++++++++++++ >> include/net/tcp.h | 6 ++++++ >> net/ipv4/sysctl_net_ipv4.c | 10 ++++++++++ >> net/ipv4/tcp_input.c | 29 +++++++++++++++++++++++++++++ >> 4 files changed, 57 insertions(+) >> >> diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt >> index 2ea4c45..4094128 100644 >> --- a/Documentation/networking/ip-sysctl.txt >> +++ b/Documentation/networking/ip-sysctl.txt >> @@ -591,6 +591,18 @@ tcp_syn_retries - INTEGER >> with the current initial RTO of 1second. With this the final timeout >> for an active TCP connection attempt will happen after 127seconds. >> >> +tcp_timer_restart - INTEGER >> + Controls how the RTO and PTO timers are restarted (RTOR and TLPR). >> + If set (per timer or combined) the timers are restarted with >> + respect to the earliest outstanding segment, to not extend tail loss >> + latency unnecessarily. >> + Possible values: >> + 0 disables RTOR and TLPR. >> + 1 enables RTOR. >> + 2 enables TLPR. >> + 3 enables RTOR and TLPR. >> + Default: 3 >> + >> tcp_timestamps - BOOLEAN >> Enable timestamps as defined in RFC1323. >> >> diff --git a/include/net/tcp.h b/include/net/tcp.h >> index f80e74c..833efb7 100644 >> --- a/include/net/tcp.h >> +++ b/include/net/tcp.h >> @@ -76,6 +76,11 @@ void tcp_time_wait(struct sock *sk, int state, int timeo); >> /* After receiving this amount of duplicate ACKs fast retransmit starts. */ >> #define TCP_FASTRETRANS_THRESH 3 >> >> +/* Disable RTO Restart if the number of outstanding segments is at least. */ >> +#define TCP_TIMER_RTORESTART 1 >> +#define TCP_TIMER_TLPRESTART 2 >> +#define TCP_RTORESTART_THRESH 4 > > Unfortunately the comment got now separated from the actual define. > > > -- > i. Darn, I knew I missed something. Well, I’ll fix that in the next round. Suppose there are more things that could be improved. Per