diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index 8e54b58fb09c90320756817a9aa2462d95dd4281..9c8e259cf27cc7981bd9c896dbac31318f79da71 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h @@ -231,9 +231,19 @@ static inline unsigned long get_nata_rto(struct sock *sk, unsigned long when_nata; unsigned long shift; - if (!icsk->nata_retries_enabled || what != ICSK_TIME_RETRANS) + if (!icsk->nata_retries_enabled) return when; + switch (what) { + case ICSK_TIME_RETRANS: + case ICSK_TIME_EARLY_RETRANS: + case ICSK_TIME_LOSS_PROBE: + case ICSK_TIME_REO_TIMEOUT: + break; + default: + return when; + } + if (icsk->nata_retries_type == NATA_STL) return sk->sk_state == TCP_SYN_SENT ? icsk->nata_syn_rto : icsk->nata_data_rto;