Subject: Re: [PATCH net-next RFC 1/2] tun: enable NAPI for TUN/TAP driver

From: Stephen Hemminger <[email-masked]>
Date: Tue, 5 Sep 2017 15:51:27 -0700

On Tue,  5 Sep 2017 15:35:50 -0700
Petar Penkov <[email-masked]> wrote:

> Changes TUN driver to use napi_gro_receive() upon receiving packets
> rather than netif_rx_ni(). Adds flag CONFIG_TUN_NAPI that enables
> these changes and operation is not affected if the flag is disabled.
> SKBs are constructed upon packet arrival and are queued to be
> processed later.
> 
> The new path was evaluated with a benchmark with the following setup:
> Open two tap devices and a receiver thread that reads in a loop for
> each device. Start one sender thread and pin all threads to different
> CPUs. Send 1M minimum UDP packets to each device and measure sending
> time for each of the sending methods:
> 	napi_gro_receive(): 	4.90s
> 	netif_rx_ni(): 		4.90s
> 	netif_receive_skb(): 	7.20s
> 
> Signed-off-by: Petar Penkov <[email-masked]>
> Cc: Eric Dumazet <[email-masked]>
> Cc: Mahesh Bandewar <[email-masked]>
> Cc: Willem de Bruijn <[email-masked]>
> Cc: [email-masked]
> Cc: [email-masked]

Why is this optional? It adds two code paths both of which need
to be tested.