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

Reply via email to