net/sfc/base: refactor EF10 get datapath capabilities
[dpdk.git] / drivers / net / virtio / virtio_user / virtio_user_dev.c
index 7a70c18..f90fee9 100644 (file)
@@ -99,6 +99,9 @@ virtio_user_start_device(struct virtio_user_dev *dev)
        uint64_t features;
        int ret;
 
+       /* Do not check return as already done in init, or reset in stop */
+       dev->ops->send_request(dev, VHOST_USER_SET_OWNER, NULL);
+
        /* Step 0: tell vhost to create queues */
        if (virtio_user_queue_setup(dev, virtio_user_create_queue) < 0)
                goto error;
@@ -142,6 +145,11 @@ int virtio_user_stop_device(struct virtio_user_dev *dev)
        for (i = 0; i < dev->max_queue_pairs; ++i)
                dev->ops->enable_qp(dev, i, 0);
 
+       if (dev->ops->send_request(dev, VHOST_USER_RESET_OWNER, NULL) < 0) {
+               PMD_DRV_LOG(INFO, "Failed to reset the device\n");
+               return -1;
+       }
+
        return 0;
 }
 
@@ -243,6 +251,7 @@ virtio_user_fill_intr_handle(struct virtio_user_dev *dev)
        eth_dev->intr_handle->type = RTE_INTR_HANDLE_VDEV;
        /* For virtio vdev, no need to read counter for clean */
        eth_dev->intr_handle->efd_counter_size = 0;
+       eth_dev->intr_handle->fd = -1;
        if (dev->vhostfd >= 0)
                eth_dev->intr_handle->fd = dev->vhostfd;
 
@@ -327,6 +336,7 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,
                PMD_INIT_LOG(ERR, "backend set up fails");
                return -1;
        }
+
        if (dev->ops->send_request(dev, VHOST_USER_SET_OWNER, NULL) < 0) {
                PMD_INIT_LOG(ERR, "set_owner fails: %s", strerror(errno));
                return -1;