]> git.proxmox.com Git - qemu.git/commit
tap: multiqueue support
authorJason Wang <jasowang@redhat.com>
Wed, 30 Jan 2013 11:12:34 +0000 (19:12 +0800)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 1 Feb 2013 17:03:02 +0000 (11:03 -0600)
commit264986e2c8f14a0f4a32ac6f1e083905833a5fc7
treeb109c87bb400c12501553ed966607e33a9050e75
parente5dc0b402e64d245956c47cf22776e5206f322dc
tap: multiqueue support

Recently, linux support multiqueue tap which could let userspace call TUNSETIFF
for a signle device many times to create multiple file descriptors as
independent queues. User could also enable/disabe a specific queue through
TUNSETQUEUE.

The patch adds the generic infrastructure to create multiqueue taps. To achieve
this a new parameter "queues" were introduced to specify how many queues were
expected to be created for tap by qemu itself. Alternatively, management could
also pass multiple pre-created tap file descriptors separated with ':' through a
new parameter fds like -netdev tap,id=hn0,fds="X:Y:..:Z". Multiple vhost file
descriptors could also be passed in this way.

Each TAPState were still associated to a tap fd, which mean multiple TAPStates
were created when user needs multiqueue taps. Since each TAPState contains one
NetClientState, with the multiqueue nic support, an N peers of NetClientState
were built up.

A new parameter, mq_required were introduce in tap_open() to create multiqueue
tap fds.

Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
include/net/tap.h
net/tap-aix.c
net/tap-bsd.c
net/tap-haiku.c
net/tap-linux.c
net/tap-solaris.c
net/tap.c
net/tap_int.h
qapi-schema.json