lib: remove unnecessary void cast
[dpdk.git] / lib / librte_vhost / vhost_user.c
index 4337ce7..5c8058b 100644 (file)
@@ -167,6 +167,11 @@ vhost_user_set_features(struct virtio_net *dev, uint64_t features)
        if (features & ~vhost_features)
                return -1;
 
+       if ((dev->flags & VIRTIO_DEV_RUNNING) && dev->features != features) {
+               if (dev->notify_ops->features_changed)
+                       dev->notify_ops->features_changed(dev->vid, features);
+       }
+
        dev->features = features;
        if (dev->features &
                ((1 << VIRTIO_NET_F_MRG_RXBUF) | (1ULL << VIRTIO_F_VERSION_1))) {
@@ -233,6 +238,8 @@ numa_realloc(struct virtio_net *dev, int index)
        struct vhost_virtqueue *old_vq, *vq;
        int ret;
 
+       enum {VIRTIO_RXQ, VIRTIO_TXQ, VIRTIO_QNUM};
+
        old_dev = dev;
        vq = old_vq = dev->virtqueue[index];
 
@@ -497,12 +504,6 @@ vhost_user_set_mem_table(struct virtio_net *dev, struct VhostUserMsg *pmsg)
        uint32_t i;
        int fd;
 
-       /* Remove from the data plane. */
-       if (dev->flags & VIRTIO_DEV_RUNNING) {
-               dev->flags &= ~VIRTIO_DEV_RUNNING;
-               dev->notify_ops->destroy_device(dev->vid);
-       }
-
        if (dev->mem) {
                free_mem_region(dev);
                rte_free(dev->mem);
@@ -615,14 +616,14 @@ virtio_is_ready(struct virtio_net *dev)
        struct vhost_virtqueue *vq;
        uint32_t i;
 
+       if (dev->nr_vring == 0)
+               return 0;
+
        for (i = 0; i < dev->nr_vring; i++) {
                vq = dev->virtqueue[i];
 
-               if (!vq_is_ready(vq)) {
-                       RTE_LOG(INFO, VHOST_CONFIG,
-                               "virtio is not ready for processing.\n");
+               if (!vq_is_ready(vq))
                        return 0;
-               }
        }
 
        RTE_LOG(INFO, VHOST_CONFIG,
@@ -651,10 +652,6 @@ vhost_user_set_vring_call(struct virtio_net *dev, struct VhostUserMsg *pmsg)
        vq->callfd = file.fd;
 }
 
-/*
- *  In vhost-user, when we receive kick message, will test whether virtio
- *  device is ready for packet processing.
- */
 static void
 vhost_user_set_vring_kick(struct virtio_net *dev, struct VhostUserMsg *pmsg)
 {
@@ -673,20 +670,6 @@ vhost_user_set_vring_kick(struct virtio_net *dev, struct VhostUserMsg *pmsg)
        if (vq->kickfd >= 0)
                close(vq->kickfd);
        vq->kickfd = file.fd;
-
-       if (virtio_is_ready(dev)) {
-               dev->flags |= VIRTIO_DEV_READY;
-
-               if (!(dev->flags & VIRTIO_DEV_RUNNING)) {
-                       if (dev->dequeue_zero_copy) {
-                               RTE_LOG(INFO, VHOST_CONFIG,
-                                               "dequeue zero copy is enabled\n");
-                       }
-
-                       if (dev->notify_ops->new_device(dev->vid) == 0)
-                               dev->flags |= VIRTIO_DEV_RUNNING;
-               }
-       }
 }
 
 static void
@@ -1108,5 +1091,19 @@ vhost_user_msg_handler(int vid, int fd)
                send_vhost_message(fd, &msg);
        }
 
+       if (!(dev->flags & VIRTIO_DEV_RUNNING) && virtio_is_ready(dev)) {
+               dev->flags |= VIRTIO_DEV_READY;
+
+               if (!(dev->flags & VIRTIO_DEV_RUNNING)) {
+                       if (dev->dequeue_zero_copy) {
+                               RTE_LOG(INFO, VHOST_CONFIG,
+                                               "dequeue zero copy is enabled\n");
+                       }
+
+                       if (dev->notify_ops->new_device(dev->vid) == 0)
+                               dev->flags |= VIRTIO_DEV_RUNNING;
+               }
+       }
+
        return 0;
 }