[PATCH] vdpa/mlx5: Correct default number of queues when MQ is on

Dragos Tatulea posted 1 patch 2 years, 6 months ago
drivers/vdpa/mlx5/net/mlx5_vnet.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
[PATCH] vdpa/mlx5: Correct default number of queues when MQ is on
Posted by Dragos Tatulea 2 years, 6 months ago
The standard specifies that the initial number of queues is the
default, which is 1 (1 tx, 1 rx).

Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
Reviewed-by: Eugenio Pérez <eperezma@redhat.com>
---
 drivers/vdpa/mlx5/net/mlx5_vnet.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c
index 9138ef2fb2c8..6b6eb69a8a90 100644
--- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
+++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
@@ -2517,7 +2517,15 @@ static int mlx5_vdpa_set_driver_features(struct vdpa_device *vdev, u64 features)
 	else
 		ndev->rqt_size = 1;
 
-	ndev->cur_num_vqs = 2 * ndev->rqt_size;
+	/* Device must start with 1 queue pair, as per VIRTIO v1.2 spec, section
+	 * 5.1.6.5.5 "Device operation in multiqueue mode":
+	 *
+	 * Multiqueue is disabled by default.
+	 * The driver enables multiqueue by sending a command using class
+	 * VIRTIO_NET_CTRL_MQ. The command selects the mode of multiqueue
+	 * operation, as follows: ...
+	 */
+	ndev->cur_num_vqs = 2;
 
 	update_cvq_info(mvdev);
 	return err;
-- 
2.41.0

Re: [PATCH] vdpa/mlx5: Correct default number of queues when MQ is on
Posted by Jason Wang 2 years, 6 months ago
On Fri, Jul 28, 2023 at 1:25 AM Dragos Tatulea <dtatulea@nvidia.com> wrote:
>
> The standard specifies that the initial number of queues is the
> default, which is 1 (1 tx, 1 rx).
>
> Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
> Reviewed-by: Eugenio Pérez <eperezma@redhat.com>

Acked-by: Jason Wang <jasowang@redhat.com>

Thanks

> ---
>  drivers/vdpa/mlx5/net/mlx5_vnet.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> index 9138ef2fb2c8..6b6eb69a8a90 100644
> --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
> +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> @@ -2517,7 +2517,15 @@ static int mlx5_vdpa_set_driver_features(struct vdpa_device *vdev, u64 features)
>         else
>                 ndev->rqt_size = 1;
>
> -       ndev->cur_num_vqs = 2 * ndev->rqt_size;
> +       /* Device must start with 1 queue pair, as per VIRTIO v1.2 spec, section
> +        * 5.1.6.5.5 "Device operation in multiqueue mode":
> +        *
> +        * Multiqueue is disabled by default.
> +        * The driver enables multiqueue by sending a command using class
> +        * VIRTIO_NET_CTRL_MQ. The command selects the mode of multiqueue
> +        * operation, as follows: ...
> +        */
> +       ndev->cur_num_vqs = 2;
>
>         update_cvq_info(mvdev);
>         return err;
> --
> 2.41.0
>
Re: [PATCH] vdpa/mlx5: Correct default number of queues when MQ is on
Posted by Lei Yang 2 years, 6 months ago
QE performed sanity testing on this patch using a real nic's
vhost_vdpa device with multi queues, everything works fine.

Tested-by: Lei Yang <leiyang@redhat.com>




On Fri, Jul 28, 2023 at 9:42 AM Jason Wang <jasowang@redhat.com> wrote:
>
> On Fri, Jul 28, 2023 at 1:25 AM Dragos Tatulea <dtatulea@nvidia.com> wrote:
> >
> > The standard specifies that the initial number of queues is the
> > default, which is 1 (1 tx, 1 rx).
> >
> > Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
> > Reviewed-by: Eugenio Pérez <eperezma@redhat.com>
>
> Acked-by: Jason Wang <jasowang@redhat.com>
>
> Thanks
>
> > ---
> >  drivers/vdpa/mlx5/net/mlx5_vnet.c | 10 +++++++++-
> >  1 file changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> > index 9138ef2fb2c8..6b6eb69a8a90 100644
> > --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
> > +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> > @@ -2517,7 +2517,15 @@ static int mlx5_vdpa_set_driver_features(struct vdpa_device *vdev, u64 features)
> >         else
> >                 ndev->rqt_size = 1;
> >
> > -       ndev->cur_num_vqs = 2 * ndev->rqt_size;
> > +       /* Device must start with 1 queue pair, as per VIRTIO v1.2 spec, section
> > +        * 5.1.6.5.5 "Device operation in multiqueue mode":
> > +        *
> > +        * Multiqueue is disabled by default.
> > +        * The driver enables multiqueue by sending a command using class
> > +        * VIRTIO_NET_CTRL_MQ. The command selects the mode of multiqueue
> > +        * operation, as follows: ...
> > +        */
> > +       ndev->cur_num_vqs = 2;
> >
> >         update_cvq_info(mvdev);
> >         return err;
> > --
> > 2.41.0
> >
>