tap: use one tap fd per rx queue

This matches vhost queues to linux netdev queues and avoids random
packet shuffling across vhost queues on rx.

Change-Id: I9901689d361e440fb0b91c9fbaf8124ce525b316
Type: fix
Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
diff --git a/src/vnet/devices/virtio/virtio.c b/src/vnet/devices/virtio/virtio.c
index 00a588a..858105c 100644
--- a/src/vnet/devices/virtio/virtio.c
+++ b/src/vnet/devices/virtio/virtio.c
@@ -312,7 +312,10 @@
 	    str = format (str, " %d", vif->vhost_fds[i]);
 	  vlib_cli_output (vm, "  vhost-fds%v", str);
 	  vec_free (str);
-	  vlib_cli_output (vm, "  tap-fd %d", vif->tap_fd);
+	  vec_foreach_index (i, vif->tap_fds)
+	    str = format (str, " %d", vif->tap_fds[i]);
+	  vlib_cli_output (vm, "  tap-fds%v", str);
+	  vec_free (str);
 	}
       vlib_cli_output (vm, "  gso-enabled %d", vif->gso_enabled);
       vlib_cli_output (vm, "  csum-enabled %d", vif->csum_offload_enabled);
diff --git a/src/vnet/devices/virtio/virtio.h b/src/vnet/devices/virtio/virtio.h
index 3e8f941..3151c50 100644
--- a/src/vnet/devices/virtio/virtio.h
+++ b/src/vnet/devices/virtio/virtio.h
@@ -156,7 +156,7 @@
   };
   u32 per_interface_next_index;
   int *vhost_fds;
-  int tap_fd;
+  int *tap_fds;
   u32 msix_enabled;
   u32 pci_dev_handle;
   virtio_vring_t *rxq_vrings;