[dpdk-dev] [PATCH] vhost: introduce rte_vhost_vring_call()
Maxime Coquelin
maxime.coquelin at redhat.com
Thu Dec 21 22:30:56 CET 2017
Hi Stefan,
On 12/21/2017 05:41 PM, Stefan Hajnoczi wrote:
> +int
> +rte_vhost_vring_call(int vid, uint16_t vring_idx)
> +{
> + struct virtio_net *dev;
> + struct vhost_virtqueue *vq;
> +
> + dev = get_device(vid);
> + if (!dev)
> + return -1;
> +
> + if (vring_idx >= VHOST_MAX_VRING)
> + return -1;
> +
> + vq = dev->virtqueue[vring_idx];
> + if (!vq)
> + return -1;
> +
> + /* flush used->idx update before we read avail->flags. */
> + rte_mb();
> +
> + /* Kick the guest if necessary. */
> + if (!(vq->avail->flags & VRING_AVAIL_F_NO_INTERRUPT)
> + && (vq->callfd >= 0))
> + eventfd_write(vq->callfd, (eventfd_t)1);
> + return 0;
> +}
I think it may be better to have an internal function that just take the
vq as argument to avoid getting again the vq from the vid & vring index
in the hot path.
Also, this internal function could be tagged as always inlined.
Thanks,
Maxime
More information about the dev
mailing list