|
@@ -156,12 +156,16 @@ static bool retransmits_timed_out(struct sock *sk,
|
|
|
static int tcp_write_timeout(struct sock *sk)
|
|
|
{
|
|
|
struct inet_connection_sock *icsk = inet_csk(sk);
|
|
|
+ struct tcp_sock *tp = tcp_sk(sk);
|
|
|
int retry_until;
|
|
|
bool do_reset, syn_set = false;
|
|
|
|
|
|
if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) {
|
|
|
- if (icsk->icsk_retransmits)
|
|
|
+ if (icsk->icsk_retransmits) {
|
|
|
dst_negative_advice(sk);
|
|
|
+ if (tp->syn_fastopen || tp->syn_data)
|
|
|
+ tcp_fastopen_cache_set(sk, 0, NULL, true);
|
|
|
+ }
|
|
|
retry_until = icsk->icsk_syn_retries ? : sysctl_tcp_syn_retries;
|
|
|
syn_set = true;
|
|
|
} else {
|