On 2018年07月02日 16:16, Maxime Coquelin wrote:
+static inline int
+vhost_enable_notify_split(struct vhost_virtqueue *vq, int enable)
+{
+       if (enable)
+               vq->used->flags &= ~VRING_USED_F_NO_NOTIFY;
+       else
+               vq->used->flags |= VRING_USED_F_NO_NOTIFY;
+
+       return 0;
+}
+
+static inline int
+vhost_enable_notify_packed(struct virtio_net *dev,
+               struct vhost_virtqueue *vq, int enable)
+{
+       uint16_t flags;
+
+       if (!enable) {
+               vq->device_event->desc_event_flags = RING_EVENT_FLAGS_DISABLE;
+               return 0;
+       }
+
+       flags = RING_EVENT_FLAGS_ENABLE;
+       if (dev->features & (1ULL << VIRTIO_RING_F_EVENT_IDX)) {
+               flags = RING_EVENT_FLAGS_DESC;
+               vq->device_event->desc_event_off_wrap = vq->last_avail_idx |
+                       vq->avail_wrap_counter << 15;
+       }
+
+       rte_smp_wmb();
+
+       vq->device_event->desc_event_flags = flags;
+
+       rte_smp_wmb();
+

We don't do this for split version. Any specific reason for this?

Btw, looks like we don't care about the return value so using void instead?

Thanks

+       return 0;
+}
+


Reply via email to