Use HCA attributes from context device structure, instead of query it for itself.
Signed-off-by: Michael Baum <michae...@nvidia.com> --- drivers/vdpa/mlx5/mlx5_vdpa.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c index 2b1b521313..317d2e8ed4 100644 --- a/drivers/vdpa/mlx5/mlx5_vdpa.c +++ b/drivers/vdpa/mlx5/mlx5_vdpa.c @@ -506,36 +506,24 @@ static int mlx5_vdpa_dev_probe(struct mlx5_common_device *dev) { struct mlx5_vdpa_priv *priv = NULL; - struct mlx5_hca_attr attr; - int ret; + struct mlx5_hca_attr *attr = &dev->ctx.hca_attr; - ret = mlx5_devx_cmd_query_hca_attr(dev->ctx.ctx, &attr); - if (ret) { - DRV_LOG(ERR, "Unable to read HCA capabilities."); - rte_errno = ENOTSUP; - return -rte_errno; - } else if (!attr.vdpa.valid || !attr.vdpa.max_num_virtio_queues) { - DRV_LOG(ERR, "Not enough capabilities to support vdpa, maybe " - "old FW/OFED version?"); - rte_errno = ENOTSUP; - return -rte_errno; - } - if (!attr.vdpa.queue_counters_valid) + if (!attr->vdpa.queue_counters_valid) 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 * 2, RTE_CACHE_LINE_SIZE); if (!priv) { DRV_LOG(ERR, "Failed to allocate private memory."); rte_errno = ENOMEM; return -rte_errno; } - priv->caps = attr.vdpa; - priv->log_max_rqt_size = attr.log_max_rqt_size; - priv->num_lag_ports = attr.num_lag_ports; - priv->qp_ts_format = attr.qp_ts_format; - if (attr.num_lag_ports == 0) + priv->caps = attr->vdpa; + priv->log_max_rqt_size = attr->log_max_rqt_size; + priv->num_lag_ports = attr->num_lag_ports; + priv->qp_ts_format = attr->qp_ts_format; + if (attr->num_lag_ports == 0) priv->num_lag_ports = 1; priv->dev_ctx = &dev->ctx; priv->var = mlx5_glue->dv_alloc_var(priv->dev_ctx->ctx, 0); -- 2.25.1