aboutsummaryrefslogtreecommitdiff
path: root/net/tap-bsd.c
diff options
context:
space:
mode:
authorJason Wang <jasowang@redhat.com>2013-01-30 19:12:34 +0800
committerAnthony Liguori <aliguori@us.ibm.com>2013-02-01 11:03:02 -0600
commit264986e2c8f14a0f4a32ac6f1e083905833a5fc7 (patch)
treeb109c87bb400c12501553ed966607e33a9050e75 /net/tap-bsd.c
parente5dc0b402e64d245956c47cf22776e5206f322dc (diff)
downloadqemu-264986e2c8f14a0f4a32ac6f1e083905833a5fc7.zip
qemu-264986e2c8f14a0f4a32ac6f1e083905833a5fc7.tar.gz
qemu-264986e2c8f14a0f4a32ac6f1e083905833a5fc7.tar.bz2
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>
Diffstat (limited to 'net/tap-bsd.c')
-rw-r--r--net/tap-bsd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/tap-bsd.c b/net/tap-bsd.c
index 4f22109..bcdb268 100644
--- a/net/tap-bsd.c
+++ b/net/tap-bsd.c
@@ -33,7 +33,8 @@
#include <net/if_tap.h>
#endif
-int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required)
+int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
+ int vnet_hdr_required, int mq_required)
{
int fd;
#ifdef TAPGIFNAME