vhost: add private context field
[dpdk.git] / lib / librte_vhost / rte_virtio_net.h
index 0c9c716..0606143 100644 (file)
@@ -85,6 +85,7 @@ struct virtio_net
        uint64_t                                features;                                       /* Negotiated feature set. */
        uint64_t                                device_fh;                                      /* device identifier. */
        uint32_t                                flags;                                          /* Device flags. Only used to check if device is running on data core. */
+       void                    *priv;                          /**< private context */
 } __rte_cache_aligned;
 
 /*
@@ -119,10 +120,12 @@ struct virtio_net_device_ops {
        void (* destroy_device) (volatile struct virtio_net *); /* Remove device. */
 };
 
-int init_virtio_net(struct virtio_net_device_ops const * const);
-int deinit_virtio_net(void);
-
-struct vhost_net_device_ops const * get_virtio_net_callbacks(void);
+static inline uint16_t __attribute__((always_inline))
+rte_vring_available_entries(struct virtio_net *dev, uint16_t queue_id)
+{
+       struct vhost_virtqueue *vq = dev->virtqueue[queue_id];
+       return *(volatile uint16_t *)&vq->avail->idx - vq->last_used_idx_res;
+}
 
 /**
  * Function to convert guest physical addresses to vhost virtual addresses.
@@ -146,9 +149,26 @@ gpa_to_vva(struct virtio_net *dev, uint64_t guest_pa)
        return vhost_va;
 }
 
+/**
+ *  Disable features in feature_mask. Returns 0 on success.
+ */
+int rte_vhost_feature_disable(uint64_t feature_mask);
+
+/**
+ *  Enable features in feature_mask. Returns 0 on success.
+ */
+int rte_vhost_feature_enable(uint64_t feature_mask);
+
+/* Returns currently supported vhost features */
+uint64_t rte_vhost_feature_get(void);
+
+int rte_vhost_enable_guest_notification(struct virtio_net *dev, uint16_t queue_id, int enable);
+
 /* Register vhost driver. dev_name could be different for multiple instance support. */
 int rte_vhost_driver_register(const char *dev_name);
 
+/* Register callbacks. */
+int rte_vhost_driver_callback_register(struct virtio_net_device_ops const * const);
 /* Start vhost driver session blocking loop. */
 int rte_vhost_driver_session_start(void);