On Sat, 2016-12-03 at 23:07 -0800, Eric Dumazet wrote: > From: Eric Dumazet <edumazet@xxxxxxxxxx> > > 1) Old code was hard to maintain, due to complex lock chains. > (We probably will be able to remove some kfree_rcu() in callers) > > 2) Using a single timer to update all estimators does not scale. > > 3) Code was buggy on 32bit kernel (WRITE_ONCE() on 64bit quantity > is not supposed to work well) > diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c > index c7adcb57654ea57d1ba6702c91743cb7d2c74d28..859b60bfa86712031186fffc09c65bc43aa065dd 100644 > --- a/net/ipv4/tcp_output.c > +++ b/net/ipv4/tcp_output.c > @@ -2081,6 +2081,14 @@ static bool tcp_small_queue_check(struct sock *sk, const struct sk_buff *skb, > limit <<= factor; > > if (atomic_read(&sk->sk_wmem_alloc) > limit) { > + /* Special case where TX completion is delayed too much : > + * If the skb we try to send is the first skb in write queue, > + * then send it ! > + * No need to wait for TX completion to call us back. > + */ > + if (skb == sk->sk_write_queue.next) > + return false; > + Oups, this has nothing to do here. I will send a v2, sorry. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html