tcp: remove thin_dupack feature
Thin stream DUPACK is to start fast recovery on only one DUPACK provided the connection is a thin stream (i.e., low inflight). But this older feature is now subsumed with RACK. If a connection receives only a single DUPACK, RACK would arm a reordering timer and soon starts fast recovery instead of timeout if no further ACKs are received. The socket option (THIN_DUPACK) is kept as a nop for compatibility. Note that this patch does not change another thin-stream feature which enables linear RTO. Although it might be good to generalize that in the future (i.e., linear RTO for the first say 3 retries). Signed-off-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: Neal Cardwell <ncardwell@google.com> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committato da
David S. Miller

parent
ac229dca7e
commit
4a7f600944
@@ -536,13 +536,6 @@ static struct ctl_table ipv4_table[] = {
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.procname = "tcp_thin_dupack",
|
||||
.data = &sysctl_tcp_thin_dupack,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.procname = "tcp_early_retrans",
|
||||
.data = &sysctl_tcp_early_retrans,
|
||||
|
@@ -2474,9 +2474,6 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
|
||||
case TCP_THIN_DUPACK:
|
||||
if (val < 0 || val > 1)
|
||||
err = -EINVAL;
|
||||
else {
|
||||
tp->thin_dupack = val;
|
||||
}
|
||||
break;
|
||||
|
||||
case TCP_REPAIR:
|
||||
@@ -2966,8 +2963,9 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
|
||||
case TCP_THIN_LINEAR_TIMEOUTS:
|
||||
val = tp->thin_lto;
|
||||
break;
|
||||
|
||||
case TCP_THIN_DUPACK:
|
||||
val = tp->thin_dupack;
|
||||
val = 0;
|
||||
break;
|
||||
|
||||
case TCP_REPAIR:
|
||||
|
@@ -95,9 +95,6 @@ int sysctl_tcp_rfc1337 __read_mostly;
|
||||
int sysctl_tcp_max_orphans __read_mostly = NR_FILE;
|
||||
int sysctl_tcp_frto __read_mostly = 2;
|
||||
int sysctl_tcp_min_rtt_wlen __read_mostly = 300;
|
||||
|
||||
int sysctl_tcp_thin_dupack __read_mostly;
|
||||
|
||||
int sysctl_tcp_moderate_rcvbuf __read_mostly = 1;
|
||||
int sysctl_tcp_early_retrans __read_mostly = 3;
|
||||
int sysctl_tcp_invalid_ratelimit __read_mostly = HZ/2;
|
||||
@@ -2170,16 +2167,6 @@ static bool tcp_time_to_recover(struct sock *sk, int flag)
|
||||
if (tcp_dupack_heuristics(tp) > tp->reordering)
|
||||
return true;
|
||||
|
||||
/* If a thin stream is detected, retransmit after first
|
||||
* received dupack. Employ only if SACK is supported in order
|
||||
* to avoid possible corner-case series of spurious retransmissions
|
||||
* Use only if there are no unsent data.
|
||||
*/
|
||||
if ((tp->thin_dupack || sysctl_tcp_thin_dupack) &&
|
||||
tcp_stream_is_thin(tp) && tcp_dupack_heuristics(tp) > 1 &&
|
||||
tcp_is_sack(tp) && !tcp_send_head(sk))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Fai riferimento in un nuovo problema
Block a user