diff options
author | Andreas Petlund <apetlund@simula.no> | 2010-02-17 23:48:19 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-18 18:43:09 -0500 |
commit | 7e38017557bc0b87434d184f8804cadb102bb903 (patch) | |
tree | 30c4a0793bd28f6731ade58786c06f9cf33115df /include | |
parent | 36e31b0af58728071e8023cf8e20c5166b700717 (diff) |
net: TCP thin dupack
This patch enables fast retransmissions after one dupACK for
TCP if the stream is identified as thin. This will reduce
latencies for thin streams that are not able to trigger fast
retransmissions due to high packet interarrival time. This
mechanism is only active if enabled by iocontrol or syscontrol
and the stream is identified as thin.
Signed-off-by: Andreas Petlund <apetlund@simula.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/tcp.h | 4 | ||||
-rw-r--r-- | include/net/tcp.h | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 3ba8b074612f..a778ee024590 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
@@ -104,6 +104,7 @@ enum { | |||
104 | #define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */ | 104 | #define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */ |
105 | #define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */ | 105 | #define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */ |
106 | #define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/ | 106 | #define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/ |
107 | #define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */ | ||
107 | 108 | ||
108 | /* for TCP_INFO socket option */ | 109 | /* for TCP_INFO socket option */ |
109 | #define TCPI_OPT_TIMESTAMPS 1 | 110 | #define TCPI_OPT_TIMESTAMPS 1 |
@@ -343,7 +344,8 @@ struct tcp_sock { | |||
343 | u8 frto_counter; /* Number of new acks after RTO */ | 344 | u8 frto_counter; /* Number of new acks after RTO */ |
344 | u8 nonagle : 4,/* Disable Nagle algorithm? */ | 345 | u8 nonagle : 4,/* Disable Nagle algorithm? */ |
345 | thin_lto : 1,/* Use linear timeouts for thin streams */ | 346 | thin_lto : 1,/* Use linear timeouts for thin streams */ |
346 | unused : 3; | 347 | thin_dupack : 1,/* Fast retransmit on first dupack */ |
348 | unused : 2; | ||
347 | 349 | ||
348 | /* RTT measurement */ | 350 | /* RTT measurement */ |
349 | u32 srtt; /* smoothed round trip time << 3 */ | 351 | u32 srtt; /* smoothed round trip time << 3 */ |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 6278fc734abd..56f0aec40ed6 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -245,6 +245,7 @@ extern int sysctl_tcp_slow_start_after_idle; | |||
245 | extern int sysctl_tcp_max_ssthresh; | 245 | extern int sysctl_tcp_max_ssthresh; |
246 | extern int sysctl_tcp_cookie_size; | 246 | extern int sysctl_tcp_cookie_size; |
247 | extern int sysctl_tcp_thin_linear_timeouts; | 247 | extern int sysctl_tcp_thin_linear_timeouts; |
248 | extern int sysctl_tcp_thin_dupack; | ||
248 | 249 | ||
249 | extern atomic_t tcp_memory_allocated; | 250 | extern atomic_t tcp_memory_allocated; |
250 | extern struct percpu_counter tcp_sockets_allocated; | 251 | extern struct percpu_counter tcp_sockets_allocated; |