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; +} +