Hi Maxime,

> -----Original Message-----
> From: Maxime Coquelin <maxime.coque...@redhat.com>
> Sent: Monday, December 21, 2020 5:14 AM
> To: dev@dpdk.org; Xia, Chenbo <chenbo....@intel.com>; olivier.m...@6wind.com;
> amore...@redhat.com; david.march...@redhat.com
> Cc: Maxime Coquelin <maxime.coque...@redhat.com>
> Subject: [PATCH 28/40] net/virtio: add Virtio-user vring setting ops
> 
> This patch introduces new callbacks for setting
> and getting vring state.
> 
> Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com>
> ---
>  drivers/net/virtio/virtio_user/vhost.h        |   4 +
>  drivers/net/virtio/virtio_user/vhost_kernel.c |  49 +++++++-
>  drivers/net/virtio/virtio_user/vhost_user.c   | 114 +++++++++++++-----
>  drivers/net/virtio/virtio_user/vhost_vdpa.c   |  40 ++++--
>  .../net/virtio/virtio_user/virtio_user_dev.c  |   9 +-
>  5 files changed, 168 insertions(+), 48 deletions(-)
> 
> diff --git a/drivers/net/virtio/virtio_user/vhost.h
> b/drivers/net/virtio/virtio_user/vhost.h
> index 0a582a6844..1385c1563b 100644
> --- a/drivers/net/virtio/virtio_user/vhost.h
> +++ b/drivers/net/virtio/virtio_user/vhost.h
> @@ -107,6 +107,10 @@ struct virtio_user_backend_ops {
>       int (*get_protocol_features)(struct virtio_user_dev *dev, uint64_t
> *features);
>       int (*set_protocol_features)(struct virtio_user_dev *dev, uint64_t
> features);
>       int (*set_memory_table)(struct virtio_user_dev *dev);
> +     int (*set_vring_enable)(struct virtio_user_dev *dev, struct
> vhost_vring_state *state);
> +     int (*set_vring_num)(struct virtio_user_dev *dev, struct
> vhost_vring_state *state);
> +     int (*set_vring_base)(struct virtio_user_dev *dev, struct
> vhost_vring_state *state);
> +     int (*get_vring_base)(struct virtio_user_dev *dev, struct
> vhost_vring_state *state);
>       int (*send_request)(struct virtio_user_dev *dev,
>                           enum vhost_user_request req,
>                           void *arg);
> diff --git a/drivers/net/virtio/virtio_user/vhost_kernel.c
> b/drivers/net/virtio/virtio_user/vhost_kernel.c
> index 2d30f572b6..2f1b4840ee 100644
> --- a/drivers/net/virtio/virtio_user/vhost_kernel.c
> +++ b/drivers/net/virtio/virtio_user/vhost_kernel.c
> @@ -219,12 +219,49 @@ vhost_kernel_set_memory_table(struct virtio_user_dev
> *dev)
>       return -1;
>  }
> 
> +static int
> +vhost_kernel_set_vring(struct virtio_user_dev *dev, uint64_t req, struct
> vhost_vring_state *state)
> +{
> +     int ret, fd;
> +     uint32_t index = state->index;

Better use 'unsigned int index' here? It can hardly cause problem but I think 
it's better
to use the type in struct vhost_vring_state.

> +
> +     /* Convert from queue index to queue-pair & offset */
> +     fd = dev->vhostfds[state->index / 2];
> +     state->index %= 2;
> +
> +     ret = vhost_kernel_ioctl(fd, req, state);
> +     if (ret < 0) {
> +             PMD_DRV_LOG(ERR, "Failed to set vring (request %lu)", req);

Seems David has also noticed here: better use PRIu64 here instead of %lu ?

Thanks,
Chenbo

> +             return -1;
> +     }
> +

Reply via email to