virtio: add modern device support

Type: feature

Change-Id: I205f7c146a213d603d9d1e46fcf5195a876608dc
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
diff --git a/src/vnet/devices/virtio/pci.h b/src/vnet/devices/virtio/pci.h
index dfc0711..f9a5828 100644
--- a/src/vnet/devices/virtio/pci.h
+++ b/src/vnet/devices/virtio/pci.h
@@ -82,7 +82,8 @@
  * at the end of the avail ring. Host should ignore the avail->flags field. */ \
 /* The Host publishes the avail index for which it expects a kick \
  * at the end of the used ring. Guest should ignore the used->flags field. */ \
-  _ (VHOST_USER_F_PROTOCOL_FEATURES, 30)
+  _ (VHOST_USER_F_PROTOCOL_FEATURES, 30)                                      \
+  _ (VIRTIO_F_VERSION_1, 32)                                                  \
 
 #define VIRTIO_NET_F_CTRL_GUEST_OFFLOADS 2
 #define VIRTIO_NET_F_MTU 3
@@ -147,8 +148,8 @@
   /* About the whole device. */
   u32 device_feature_select;	/* read-write */
   u32 device_feature;		/* read-only */
-  u32 guest_feature_select;	/* read-write */
-  u32 guest_feature;		/* read-write */
+  u32 driver_feature_select;	/* read-write */
+  u32 driver_feature;		/* read-write */
   u16 msix_config;		/* read-write */
   u16 num_queues;		/* read-only */
   u8 device_status;		/* read-write */
@@ -160,12 +161,9 @@
   u16 queue_msix_vector;	/* read-write */
   u16 queue_enable;		/* read-write */
   u16 queue_notify_off;		/* read-only */
-  u32 queue_desc_lo;		/* read-write */
-  u32 queue_desc_hi;		/* read-write */
-  u32 queue_avail_lo;		/* read-write */
-  u32 queue_avail_hi;		/* read-write */
-  u32 queue_used_lo;		/* read-write */
-  u32 queue_used_hi;		/* read-write */
+  u64 queue_desc;		/* read-write */
+  u64 queue_driver;		/* read-write */
+  u64 queue_device;		/* read-write */
 } virtio_pci_common_cfg_t;
 
 typedef struct
@@ -259,6 +257,7 @@
 } virtio_pci_create_if_args_t;
 
 extern const virtio_pci_func_t virtio_pci_legacy_func;
+extern const virtio_pci_func_t virtio_pci_modern_func;
 
 extern void device_status (vlib_main_t * vm, virtio_if_t * vif);
 void virtio_pci_create_if (vlib_main_t * vm,