@@ -976,8 +976,15 @@ struct ib_cq *mlx5_ib_create_cq(struct ib_device *ibdev,
goto err_cmd;
}
-
kvfree(cqb);
+
+ cq->ibcq.device = ibdev;
+ rdma_rt_set_type(&cq->ibcq.res, RDMA_RESTRACK_CQ);
+ rdma_rt_set_id(&cq->ibcq.res, cq->mcq.cqn);
+ err = rdma_restrack_add(&cq->ibcq.res);
+ if (err)
+ goto err_cmd;
+
return &cq->ibcq;
err_cmd:
@@ -1012,6 +1019,7 @@ int mlx5_ib_destroy_cq(struct ib_cq *cq)
else
destroy_cq_kernel(dev, mcq);
+ rdma_restrack_del(&cq->res);
kfree(mcq);
return 0;
@@ -6527,6 +6527,8 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
/* PD ID managed by FW */
rdma_rt_set_id_range(&dev->ib_dev, RDMA_RESTRACK_PD, 0, 0);
+ /* CQ ID managed by FW */
+ rdma_rt_set_id_range(&dev->ib_dev, RDMA_RESTRACK_CQ, 0, 0);
dev->mdev = mdev;
dev->num_ports = max(MLX5_CAP_GEN(mdev, num_ports),