> 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!

Reply via email to