On 02/14/2019 05:37 PM, 배석진 wrote:
>> 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!
> 

I am running our packetdrill tests just to be reasonably safe.

Reply via email to