]> git.baikalelectronics.ru Git - kernel.git/commit
tun: switch to use skb array for tx
authorJason Wang <jasowang@redhat.com>
Thu, 30 Jun 2016 06:45:36 +0000 (14:45 +0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 1 Jul 2016 09:32:17 +0000 (05:32 -0400)
commitaf37bdee422ea7f9709c348d47ee8222d7b5f80a
tree20949c1b4243a0e746570b3f08483b40c183ae57
parenta2dee9af1d91cbb673e34f50eb81248169eb61a4
tun: switch to use skb array for tx

We used to queue tx packets in sk_receive_queue, this is less
efficient since it requires spinlocks to synchronize between producer
and consumer.

This patch tries to address this by:

- switch from sk_receive_queue to a skb_array, and resize it when
  tx_queue_len was changed.
- introduce a new proto_ops peek_len which was used for peeking the
  skb length.
- implement a tun version of peek_len for vhost_net to use and convert
  vhost_net to use peek_len if possible.

Pktgen test shows about 15.3% improvement on guest receiving pps for small
buffers:

Before: ~1300000pps
After : ~1500000pps

Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c
drivers/vhost/net.c
include/linux/net.h