tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics()
[ Upstream commit 081480014a64a69d901f8ef1ffdd56d6085cf87e ]
We need to set tp->snd_ssthresh to TCP_INFINITE_SSTHRESH
in the case tcp_get_metrics() fails for some reason.
Fixes: 9ad7c049f0
("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
e850efcf2b
commit
52ec0669f4
|
@ -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…
Reference in New Issue