tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics()
We need to set tp->snd_ssthresh to TCP_INFINITE_SSTHRESH in the case tcp_get_metrics() fails for some reason. Fixes: 9ad7c049f0f7 ("tcp: RFC2988bis + taking RTT sample from 3WHS for the passive open side") Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: David Ahern <dsahern@kernel.org> Acked-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
cbc3a15322
commit
081480014a
@ -470,6 +470,10 @@ void tcp_init_metrics(struct sock *sk)
|
||||
u32 val, crtt = 0; /* cached RTT scaled by 8 */
|
||||
|
||||
sk_dst_confirm(sk);
|
||||
/* ssthresh may have been reduced unnecessarily during.
|
||||
* 3WHS. Restore it back to its initial default.
|
||||
*/
|
||||
tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
|
||||
if (!dst)
|
||||
goto reset;
|
||||
|
||||
@ -489,11 +493,6 @@ void tcp_init_metrics(struct sock *sk)
|
||||
tp->snd_ssthresh = val;
|
||||
if (tp->snd_ssthresh > tp->snd_cwnd_clamp)
|
||||
tp->snd_ssthresh = tp->snd_cwnd_clamp;
|
||||
} else {
|
||||
/* ssthresh may have been reduced unnecessarily during.
|
||||
* 3WHS. Restore it back to its initial default.
|
||||
*/
|
||||
tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
|
||||
}
|
||||
val = tcp_metric_get(tm, TCP_METRIC_REORDERING);
|
||||
if (val && tp->reordering != val)
|
||||
|
Loading…
x
Reference in New Issue
Block a user