mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 07:33:19 +02:00
RDMA/mlx5: Track DCT, DCI and REG_UMR QPs as diver_detail resources.
Allow user to see driver-specific QPs (the "driver_detail" QPs)
through the rdmatool, when requested.
When creating DCT, DCI and REG_UMR QPs, we designate them as driver_detail
resources.
When filling the QP info for the rdma tool, for the driver_detail QPs:
-the QP type is IB_QPT_DRIVER
-the subtype is a string with the QP name ("DCT", "DCI", "REG_UMR")
Signed-off-by: Chiara Meiohas <cmeiohas@nvidia.com>
Link: https://lore.kernel.org/r/452432d7d0917f053a80a893a614169857fe3b10.1713268997.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
e18fa0bbce
commit
fd3af5e218
|
|
@ -3097,7 +3097,6 @@ static int create_qp(struct mlx5_ib_dev *dev, struct ib_pd *pd,
|
|||
switch (qp->type) {
|
||||
case MLX5_IB_QPT_DCT:
|
||||
err = create_dct(dev, pd, qp, params);
|
||||
rdma_restrack_no_track(&qp->ibqp.res);
|
||||
break;
|
||||
case MLX5_IB_QPT_DCI:
|
||||
err = create_dci(dev, pd, qp, params);
|
||||
|
|
@ -3109,9 +3108,9 @@ static int create_qp(struct mlx5_ib_dev *dev, struct ib_pd *pd,
|
|||
err = mlx5_ib_create_gsi(pd, qp, params->attr);
|
||||
break;
|
||||
case MLX5_IB_QPT_HW_GSI:
|
||||
case MLX5_IB_QPT_REG_UMR:
|
||||
rdma_restrack_no_track(&qp->ibqp.res);
|
||||
fallthrough;
|
||||
case MLX5_IB_QPT_REG_UMR:
|
||||
default:
|
||||
if (params->udata)
|
||||
err = create_user_qp(dev, pd, qp, params);
|
||||
|
|
|
|||
|
|
@ -156,6 +156,34 @@ static int fill_res_cq_entry_raw(struct sk_buff *msg, struct ib_cq *ibcq)
|
|||
return fill_res_raw(msg, dev, MLX5_SGMT_TYPE_PRM_QUERY_CQ, cq->mcq.cqn);
|
||||
}
|
||||
|
||||
static int fill_res_qp_entry(struct sk_buff *msg, struct ib_qp *ibqp)
|
||||
{
|
||||
struct mlx5_ib_qp *qp = to_mqp(ibqp);
|
||||
int ret;
|
||||
|
||||
if (qp->type < IB_QPT_DRIVER)
|
||||
return 0;
|
||||
|
||||
switch (qp->type) {
|
||||
case MLX5_IB_QPT_REG_UMR:
|
||||
ret = nla_put_string(msg, RDMA_NLDEV_ATTR_RES_SUBTYPE,
|
||||
"REG_UMR");
|
||||
break;
|
||||
case MLX5_IB_QPT_DCT:
|
||||
ret = nla_put_string(msg, RDMA_NLDEV_ATTR_RES_SUBTYPE, "DCT");
|
||||
break;
|
||||
case MLX5_IB_QPT_DCI:
|
||||
ret = nla_put_string(msg, RDMA_NLDEV_ATTR_RES_SUBTYPE, "DCI");
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_TYPE, IB_QPT_DRIVER);
|
||||
}
|
||||
|
||||
static int fill_res_qp_entry_raw(struct sk_buff *msg, struct ib_qp *ibqp)
|
||||
{
|
||||
struct mlx5_ib_dev *dev = to_mdev(ibqp->device);
|
||||
|
|
@ -168,6 +196,7 @@ static const struct ib_device_ops restrack_ops = {
|
|||
.fill_res_cq_entry_raw = fill_res_cq_entry_raw,
|
||||
.fill_res_mr_entry = fill_res_mr_entry,
|
||||
.fill_res_mr_entry_raw = fill_res_mr_entry_raw,
|
||||
.fill_res_qp_entry = fill_res_qp_entry,
|
||||
.fill_res_qp_entry_raw = fill_res_qp_entry_raw,
|
||||
.fill_stat_mr_entry = fill_stat_mr_entry,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user