Messages in this thread | | | From | Vitaliy Gusev <> | Subject | Re: [RFC][PATCH][NET] Fix never pruned tcp out-of-order queue | Date | Tue, 15 Apr 2008 17:47:19 +0400 |
| |
On 15 April 2008 15:59:24 Alexey Kuznetsov wrote: > Hello! > > > I still think the guards are pretty much the same as before, sorry:) > > Guards inside tcp_prune_queue() are the same exactly. > > But the patch adds the second point where out-of-order queue is discarded. > It is when the socket is under rcvbuf, but nevertheless skb cannot > be queued due to system-wide limit. In that case out-of-order queue > is dropped and the limits are rechecked. > > > > But why not repeat the whole prune for all cases in this case then? > > Collapsing and tuning rcv_ssthresh was done once, they are not guarded > by rcvbuf check. So, repeating those steps would be useless. > > The only thing is: > > > e.g. you should probably at least repeat the third step (setting > > pred_flags to 0) too. > > Formally, this is correct. But this is not necessary, pred_flags reset > is redundant even in the first place. The fast path is not so fast, > memory limit is checked explicitly there. > > > The patch is not perfect. F.e. tcp_prune_ofo_queue() could see empty > out-of-order queue, in this case the second sk_stream_rmem_schedule() > is useless and could be skipped. But it is the second order effect. > > I think this will work.
Thanks for comments. I will correct second call sk_stream_rmem_schedule() and resend new patch.
-- Thank, Vitaliy Gusev
| |