On Fri, 2016-12-02 at 10:25 -0800, Eric Dumazet wrote:
> Under high stress, I've seen tcp_tasklet_func() consuming
> ~700 usec, handling ~150 tcp sockets.
> 
> By setting TCP_TSQ_DEFERRED in tcp_wfree(), we give a chance
> for other cpus/threads entering tcp_write_xmit() to grab it,
> allowing tcp_tasklet_func() to skip sockets that already did
> an xmit cycle.
> 
> Signed-off-by: Eric Dumazet <eduma...@google.com>

...

> @@ -884,7 +884,7 @@ void tcp_wfree(struct sk_buff *skb)
>               if (!(oval & TSQF_THROTTLED) || (oval & TSQF_QUEUED))
>                       goto out;
>  
> -             nval = (oval & ~TSQF_THROTTLED) | TSQF_QUEUED;
> +             nval = (oval & ~TSQF_THROTTLED) | TSQF_QUEUED | 
> TCP_TSQ_DEFERRED;

Typo here...

Should be :
                nval = (oval & ~TSQF_THROTTLED) | TSQF_QUEUED | 
TCPF_TSQ_DEFERRED;

>               nval = cmpxchg(&tp->tsq_flags, oval, nval);
>               if (nval != oval)
>                       continue;


Reply via email to