On 06/25/2018 12:31 PM, Tiwei Bie wrote:
On Mon, Jun 25, 2018 at 09:19:34AM +0200, Maxime Coquelin wrote:
On 06/25/2018 04:21 AM, Tiwei Bie wrote:
On Sat, Jun 23, 2018 at 09:11:24AM +0200, Maxime Coquelin wrote:
[...]
@@ -293,7 +314,8 @@ fill_vec_buf(struct virtio_net *dev, struct vhost_virtqueue
*vq,
static inline int
reserve_avail_buf(struct virtio_net *dev, struct vhost_virtqueue *vq,
uint32_t size, struct buf_vector *buf_vec,
- uint16_t *num_buffers, uint16_t avail_head)
+ uint16_t *num_buffers, uint16_t avail_head,
+ uint16_t *nr_vec)
{
uint16_t cur_idx;
uint32_t vec_idx = 0;
@@ -315,7 +337,8 @@ reserve_avail_buf(struct virtio_net *dev, struct
vhost_virtqueue *vq,
return -1;
if (unlikely(fill_vec_buf(dev, vq, cur_idx, &vec_idx, buf_vec,
- &head_idx, &len) < 0))
+ &head_idx, &len,
+ VHOST_ACCESS_RO) < 0))
reserve_avail_buf() is called by virtio_dev_rx(),
so the write perm is needed.
Right.
To avoid having to pass the perms, I wonder if it wouldn't be better to
rely on the descriptors' VRING_DESC_F_WRITE flag.
Currently, DPDK vhost net doesn't check this flag,
so it could cause problems in some cases. If we
want to rely on this flag, I think we still need
to pass something similar to tell fill_vec_buf()
whether the bufs will be written or read, so the
flag can be checked.
Right, let's keep the perm parameter for now.
Thanks,
Maxime
Best regards,
Tiwei Bie