X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fvirtio%2Fvirtio_user%2Fvirtio_user_dev.c;h=450404ba6975983f592a0eda2085bab4cf91c50a;hb=d82094b7eac559f4014b5faec9d7a22227c3449c;hp=c9e8ac5b16fb7008fa75f008a255ab8442d7d30f;hpb=4bf9e26d29caccda42d77601b26791e146d08d9a;p=dpdk.git diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c index c9e8ac5b16..450404ba69 100644 --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c @@ -271,6 +271,8 @@ virtio_user_fill_intr_handle(struct virtio_user_dev *dev) eth_dev->intr_handle->nb_efd = dev->max_queue_pairs; eth_dev->intr_handle->max_intr = dev->max_queue_pairs + 1; eth_dev->intr_handle->type = RTE_INTR_HANDLE_VDEV; + if (dev->vhostfd >= 0) + eth_dev->intr_handle->fd = dev->vhostfd; return 0; } @@ -284,12 +286,6 @@ virtio_user_dev_setup(struct virtio_user_dev *dev) dev->vhostfds = NULL; dev->tapfds = NULL; - if (virtio_user_dev_init_notify(dev) < 0) - return -1; - - if (virtio_user_fill_intr_handle(dev) < 0) - return -1; - if (is_vhost_user_by_type(dev->path)) { dev->ops = &ops_user; } else { @@ -308,7 +304,16 @@ virtio_user_dev_setup(struct virtio_user_dev *dev) } } - return dev->ops->setup(dev); + if (dev->ops->setup(dev) < 0) + return -1; + + if (virtio_user_dev_init_notify(dev) < 0) + return -1; + + if (virtio_user_fill_intr_handle(dev) < 0) + return -1; + + return 0; } /* Use below macro to filter features from vhost backend */