[PATCH 20.11] vdpa/mlx5: fix maximum number of virtqs

Xueming(Steven) Li xuemingl at nvidia.com
Tue Aug 9 16:57:39 CEST 2022


Thanks, applied.

> -----Original Message-----
> From: Li Zhang <lizh at nvidia.com>
> Sent: Wednesday, July 20, 2022 6:49 PM
> To: Ori Kam <orika at nvidia.com>; Slava Ovsiienko <viacheslavo at nvidia.com>; Matan Azrad <matan at nvidia.com>; Shahaf Shuler
> <shahafs at nvidia.com>; Maxime Coquelin <maxime.coquelin at redhat.com>
> Cc: stable at dpdk.org; NBU-Contact-Thomas Monjalon (EXTERNAL) <thomas at monjalon.net>; Raslan Darawsheh <rasland at nvidia.com>;
> Roni Bar Yanai <roniba at nvidia.com>
> Subject: [PATCH 20.11] vdpa/mlx5: fix maximum number of virtqs
> 
> [ upstream commit 6f065d1539bed56602e3c6159c99cccb3bca38e4 ]
> 
> The driver wrongly takes the capability value for the number of virtq pairs instead of just the number of virtqs.
> 
> Adjust all the usages of it to be the number of virtqs.
> 
> Fixes: c2eb33aaf967 ("vdpa/mlx5: manage virtqs by array")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Li Zhang <lizh at nvidia.com>
> Acked-by: Matan Azrad <matan at nvidia.com>
> Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
> ---
>  drivers/vdpa/mlx5/mlx5_vdpa.c       | 6 +++---
>  drivers/vdpa/mlx5/mlx5_vdpa_virtq.c | 4 ++--
>  2 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c index 6519b9c9a..65a1edc33 100644
> --- a/drivers/vdpa/mlx5/mlx5_vdpa.c
> +++ b/drivers/vdpa/mlx5/mlx5_vdpa.c
> @@ -82,7 +82,7 @@ mlx5_vdpa_get_queue_num(struct rte_vdpa_device *vdev, uint32_t *queue_num)
>  		DRV_LOG(ERR, "Invalid vDPA device: %s.", vdev->device->name);
>  		return -1;
>  	}
> -	*queue_num = priv->caps.max_num_virtio_queues;
> +	*queue_num = priv->caps.max_num_virtio_queues / 2;
>  	return 0;
>  }
> 
> @@ -139,7 +139,7 @@ mlx5_vdpa_set_vring_state(int vid, int vring, int state)
>  		DRV_LOG(ERR, "Invalid vDPA device: %s.", vdev->device->name);
>  		return -EINVAL;
>  	}
> -	if (vring >= (int)priv->caps.max_num_virtio_queues * 2) {
> +	if (vring >= (int)priv->caps.max_num_virtio_queues) {
>  		DRV_LOG(ERR, "Too big vring id: %d.", vring);
>  		return -E2BIG;
>  	}
> @@ -726,7 +726,7 @@ mlx5_vdpa_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
>  		DRV_LOG(DEBUG, "No capability to support virtq statistics.");
>  	priv = rte_zmalloc("mlx5 vDPA device private", sizeof(*priv) +
>  			   sizeof(struct mlx5_vdpa_virtq) *
> -			   attr.vdpa.max_num_virtio_queues * 2,
> +			   attr.vdpa.max_num_virtio_queues,
>  			   RTE_CACHE_LINE_SIZE);
>  	if (!priv) {
>  		DRV_LOG(ERR, "Failed to allocate private memory."); diff --git a/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
> b/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
> index 0d31e1d95..a1ae02292 100644
> --- a/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
> +++ b/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
> @@ -450,9 +450,9 @@ mlx5_vdpa_virtqs_prepare(struct mlx5_vdpa_priv *priv)
>  		DRV_LOG(INFO, "TSO is enabled without CSUM, force CSUM.");
>  		priv->features |= (1ULL << VIRTIO_NET_F_CSUM);
>  	}
> -	if (nr_vring > priv->caps.max_num_virtio_queues * 2) {
> +	if (nr_vring > priv->caps.max_num_virtio_queues) {
>  		DRV_LOG(ERR, "Do not support more than %d virtqs(%d).",
> -			(int)priv->caps.max_num_virtio_queues * 2,
> +			(int)priv->caps.max_num_virtio_queues,
>  			(int)nr_vring);
>  		return -1;
>  	}
> --
> 2.30.2



More information about the stable mailing list