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.