[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