> The current code checks if icsk->icsk_backoff is not zero, so it looks like
> we have to move
> some code like this.
>
> It looks a silly bug to have no packet in write/rtx queues, and a non zero
> icsk_backoff.
>
>
>
> diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
> index
> 2079145a3b7c5f498af429c9a8289342e4421fca..cf3c5095c10e8e7e56621beae2f93c93de184489
> 100644
> --- a/net/ipv4/tcp.c
> +++ b/net/ipv4/tcp.c
> @@ -2528,6 +2528,7 @@ void tcp_write_queue_purge(struct sock *sk)
> sk_mem_reclaim(sk);
> tcp_clear_all_retrans_hints(tcp_sk(sk));
> tcp_sk(sk)->packets_out = 0;
> + inet_csk(sk)->icsk_backoff = 0;
> }
>
> int tcp_disconnect(struct sock *sk, int flags)
> @@ -2576,7 +2577,6 @@ int tcp_disconnect(struct sock *sk, int flags)
> tp->write_seq += tp->max_window + 2;
> if (tp->write_seq == 0)
> tp->write_seq = 1;
> - icsk->icsk_backoff = 0;
> tp->snd_cwnd = 2;
> icsk->icsk_probes_out = 0;
> tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
>
yes right, queue problems.
I don't know about icsk_backoff :p
this will be work. thanks!