RDMA/mlx5: Don't rely on FW to set zeros in ECE response
authorLeon Romanovsky <leonro@mellanox.com>
Tue, 2 Jun 2020 12:55:47 +0000 (15:55 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 3 Jun 2020 18:45:02 +0000 (15:45 -0300)
The FW returns zeros in case feature is not enabled, but it is better to
have the capability check and ensure that returned result is cleared.

Fixes: 3e09a427ae7a ("RDMA/mlx5: Get ECE options from FW during create QP")
Link: https://lore.kernel.org/r/20200602125548.172654-3-leon@kernel.org
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/mlx5/qp.c

index 9f0b7f1..18135f9 100644 (file)
@@ -1906,7 +1906,8 @@ static int create_xrc_tgt_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
 
        base->container_mibqp = qp;
        base->mqp.event = mlx5_ib_qp_event;
-       params->resp.ece_options = MLX5_GET(create_qp_out, out, ece);
+       if (MLX5_CAP_GEN(mdev, ece_support))
+               params->resp.ece_options = MLX5_GET(create_qp_out, out, ece);
 
        spin_lock_irqsave(&dev->reset_flow_resource_lock, flags);
        list_add_tail(&qp->qps_list, &dev->qp_list);
@@ -2082,7 +2083,8 @@ static int create_user_qp(struct mlx5_ib_dev *dev, struct ib_pd *pd,
 
        base->container_mibqp = qp;
        base->mqp.event = mlx5_ib_qp_event;
-       params->resp.ece_options = MLX5_GET(create_qp_out, out, ece);
+       if (MLX5_CAP_GEN(mdev, ece_support))
+               params->resp.ece_options = MLX5_GET(create_qp_out, out, ece);
 
        get_cqs(qp->type, init_attr->send_cq, init_attr->recv_cq,
                &send_cq, &recv_cq);