Imported Upstream version 17.05
[deb_dpdk.git] / drivers / net / virtio / virtio_user / vhost.h
index 7adb55f..5c983bd 100644 (file)
@@ -42,8 +42,6 @@
 #include "../virtio_logs.h"
 #include "../virtqueue.h"
 
-#define VHOST_MEMORY_MAX_NREGIONS 8
-
 struct vhost_vring_state {
        unsigned int index;
        unsigned int num;
@@ -98,6 +96,8 @@ enum vhost_user_request {
        VHOST_USER_MAX
 };
 
+const char * const vhost_msg_strings[VHOST_USER_MAX];
+
 struct vhost_memory_region {
        uint64_t guest_phys_addr;
        uint64_t memory_size; /* bytes */
@@ -105,42 +105,19 @@ struct vhost_memory_region {
        uint64_t mmap_offset;
 };
 
-struct vhost_memory {
-       uint32_t nregions;
-       uint32_t padding;
-       struct vhost_memory_region regions[VHOST_MEMORY_MAX_NREGIONS];
-};
-
-struct vhost_user_msg {
-       enum vhost_user_request request;
+struct virtio_user_dev;
 
-#define VHOST_USER_VERSION_MASK     0x3
-#define VHOST_USER_REPLY_MASK       (0x1 << 2)
-       uint32_t flags;
-       uint32_t size; /* the following payload size */
-       union {
-#define VHOST_USER_VRING_IDX_MASK   0xff
-#define VHOST_USER_VRING_NOFD_MASK  (0x1 << 8)
-               uint64_t u64;
-               struct vhost_vring_state state;
-               struct vhost_vring_addr addr;
-               struct vhost_memory memory;
-       } payload;
-       int fds[VHOST_MEMORY_MAX_NREGIONS];
-} __attribute((packed));
-
-#define VHOST_USER_HDR_SIZE offsetof(struct vhost_user_msg, payload.u64)
-#define VHOST_USER_PAYLOAD_SIZE \
-       (sizeof(struct vhost_user_msg) - VHOST_USER_HDR_SIZE)
-
-/* The version of the protocol we support */
-#define VHOST_USER_VERSION    0x1
-
-#define VHOST_USER_F_PROTOCOL_FEATURES 30
-#define VHOST_USER_MQ (1ULL << VHOST_USER_F_PROTOCOL_FEATURES)
+struct virtio_user_backend_ops {
+       int (*setup)(struct virtio_user_dev *dev);
+       int (*send_request)(struct virtio_user_dev *dev,
+                           enum vhost_user_request req,
+                           void *arg);
+       int (*enable_qp)(struct virtio_user_dev *dev,
+                        uint16_t pair_idx,
+                        int enable);
+};
 
-int vhost_user_sock(int vhostfd, enum vhost_user_request req, void *arg);
-int vhost_user_setup(const char *path);
-int vhost_user_enable_queue_pair(int vhostfd, uint16_t pair_idx, int enable);
+struct virtio_user_backend_ops ops_user;
+struct virtio_user_backend_ops ops_kernel;
 
 #endif