vhost: add flag to enable IOMMU support
[dpdk.git] / lib / librte_vhost / rte_vhost.h
index d482a72..f653644 100644 (file)
  */
 
 #include <stdint.h>
-#include <linux/vhost.h>
-#include <linux/virtio_ring.h>
 #include <sys/eventfd.h>
 
 #include <rte_memory.h>
 #include <rte_mempool.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* These are not C++-aware. */
+#include <linux/vhost.h>
+#include <linux/virtio_ring.h>
+
 #define RTE_VHOST_USER_CLIENT          (1ULL << 0)
 #define RTE_VHOST_USER_NO_RECONNECT    (1ULL << 1)
 #define RTE_VHOST_USER_DEQUEUE_ZERO_COPY       (1ULL << 2)
+#define RTE_VHOST_USER_IOMMU_SUPPORT   (1ULL << 3)
 
 /**
  * Information relating to memory regions including offsets to
@@ -70,7 +77,7 @@ struct rte_vhost_mem_region {
  */
 struct rte_vhost_memory {
        uint32_t nregions;
-       struct rte_vhost_mem_region regions[0];
+       struct rte_vhost_mem_region regions[];
 };
 
 struct rte_vhost_vring {
@@ -101,7 +108,10 @@ struct vhost_device_ops {
         */
        int (*features_changed)(int vid, uint64_t features);
 
-       void *reserved[4]; /**< Reserved for future extension */
+       int (*new_connection)(int vid);
+       void (*destroy_connection)(int vid);
+
+       void *reserved[2]; /**< Reserved for future extension */
 };
 
 /**
@@ -114,7 +124,7 @@ struct vhost_device_ops {
  * @return
  *  the host virtual address on success, 0 on failure
  */
-static inline uint64_t __attribute__((always_inline))
+static __rte_always_inline uint64_t
 rte_vhost_gpa_to_vva(struct rte_vhost_memory *mem, uint64_t gpa)
 {
        struct rte_vhost_mem_region *reg;
@@ -354,10 +364,12 @@ int rte_vhost_get_ifname(int vid, char *buf, size_t len);
  */
 uint16_t rte_vhost_avail_entries(int vid, uint16_t queue_id);
 
+struct rte_mbuf;
+struct rte_mempool;
 /**
  * This function adds buffers to the virtio devices RX virtqueue. Buffers can
  * be received from the physical port or from another virtual device. A packet
- * count is returned to indicate the number of packets that were succesfully
+ * count is returned to indicate the number of packets that were successfully
  * added to the RX queue.
  * @param vid
  *  vhost device ID
@@ -424,4 +436,20 @@ int rte_vhost_get_mem_table(int vid, struct rte_vhost_memory **mem);
 int rte_vhost_get_vhost_vring(int vid, uint16_t vring_idx,
                              struct rte_vhost_vring *vring);
 
+/**
+ * Get vhost RX queue avail count.
+ *
+ * @param vid
+ *  vhost device ID
+ * @param qid
+ *  virtio queue index in mq case
+ * @return
+ *  num of desc available
+ */
+uint32_t rte_vhost_rx_queue_count(int vid, uint16_t qid);
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* _RTE_VHOST_H_ */