Skip to content

Commit c4bb187

Browse files
Chengchang Tangrleon
authored andcommitted
RDMA/hns: Dump whole QP/CQ/MR resource in raw
Currently, some fields in the QP/CQ/MR resource can be dumped by rdma-tool, but this information is not enough. It is very inconvenient to continue to expand on the current field, and it will also introduce some trouble to parse these raw data. This patch dump whole resource in raw to avoid the above problems. Signed-off-by: Chengchang Tang <[email protected]> Signed-off-by: Junxian Huang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Leon Romanovsky <[email protected]>
1 parent 5f513c8 commit c4bb187

File tree

1 file changed

+3
-72
lines changed

1 file changed

+3
-72
lines changed

drivers/infiniband/hw/hns/hns_roce_restrack.c

Lines changed: 3 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
#include "hns_roce_device.h"
1010
#include "hns_roce_hw_v2.h"
1111

12-
#define MAX_ENTRY_NUM 256
13-
1412
int hns_roce_fill_res_cq_entry(struct sk_buff *msg, struct ib_cq *ib_cq)
1513
{
1614
struct hns_roce_cq *hr_cq = to_hr_cq(ib_cq);
@@ -47,8 +45,6 @@ int hns_roce_fill_res_cq_entry_raw(struct sk_buff *msg, struct ib_cq *ib_cq)
4745
struct hns_roce_dev *hr_dev = to_hr_dev(ib_cq->device);
4846
struct hns_roce_cq *hr_cq = to_hr_cq(ib_cq);
4947
struct hns_roce_v2_cq_context context;
50-
u32 data[MAX_ENTRY_NUM] = {};
51-
int offset = 0;
5248
int ret;
5349

5450
if (!hr_dev->hw->query_cqc)
@@ -58,23 +54,7 @@ int hns_roce_fill_res_cq_entry_raw(struct sk_buff *msg, struct ib_cq *ib_cq)
5854
if (ret)
5955
return -EINVAL;
6056

61-
data[offset++] = hr_reg_read(&context, CQC_CQ_ST);
62-
data[offset++] = hr_reg_read(&context, CQC_SHIFT);
63-
data[offset++] = hr_reg_read(&context, CQC_CQE_SIZE);
64-
data[offset++] = hr_reg_read(&context, CQC_CQE_CNT);
65-
data[offset++] = hr_reg_read(&context, CQC_CQ_PRODUCER_IDX);
66-
data[offset++] = hr_reg_read(&context, CQC_CQ_CONSUMER_IDX);
67-
data[offset++] = hr_reg_read(&context, CQC_DB_RECORD_EN);
68-
data[offset++] = hr_reg_read(&context, CQC_ARM_ST);
69-
data[offset++] = hr_reg_read(&context, CQC_CMD_SN);
70-
data[offset++] = hr_reg_read(&context, CQC_CEQN);
71-
data[offset++] = hr_reg_read(&context, CQC_CQ_MAX_CNT);
72-
data[offset++] = hr_reg_read(&context, CQC_CQ_PERIOD);
73-
data[offset++] = hr_reg_read(&context, CQC_CQE_HOP_NUM);
74-
data[offset++] = hr_reg_read(&context, CQC_CQE_BAR_PG_SZ);
75-
data[offset++] = hr_reg_read(&context, CQC_CQE_BUF_PG_SZ);
76-
77-
ret = nla_put(msg, RDMA_NLDEV_ATTR_RES_RAW, offset * sizeof(u32), data);
57+
ret = nla_put(msg, RDMA_NLDEV_ATTR_RES_RAW, sizeof(context), &context);
7858

7959
return ret;
8060
}
@@ -118,8 +98,6 @@ int hns_roce_fill_res_qp_entry_raw(struct sk_buff *msg, struct ib_qp *ib_qp)
11898
struct hns_roce_dev *hr_dev = to_hr_dev(ib_qp->device);
11999
struct hns_roce_qp *hr_qp = to_hr_qp(ib_qp);
120100
struct hns_roce_v2_qp_context context;
121-
u32 data[MAX_ENTRY_NUM] = {};
122-
int offset = 0;
123101
int ret;
124102

125103
if (!hr_dev->hw->query_qpc)
@@ -129,42 +107,7 @@ int hns_roce_fill_res_qp_entry_raw(struct sk_buff *msg, struct ib_qp *ib_qp)
129107
if (ret)
130108
return -EINVAL;
131109

132-
data[offset++] = hr_reg_read(&context, QPC_QP_ST);
133-
data[offset++] = hr_reg_read(&context, QPC_ERR_TYPE);
134-
data[offset++] = hr_reg_read(&context, QPC_CHECK_FLG);
135-
data[offset++] = hr_reg_read(&context, QPC_SRQ_EN);
136-
data[offset++] = hr_reg_read(&context, QPC_SRQN);
137-
data[offset++] = hr_reg_read(&context, QPC_QKEY_XRCD);
138-
data[offset++] = hr_reg_read(&context, QPC_TX_CQN);
139-
data[offset++] = hr_reg_read(&context, QPC_RX_CQN);
140-
data[offset++] = hr_reg_read(&context, QPC_SQ_PRODUCER_IDX);
141-
data[offset++] = hr_reg_read(&context, QPC_SQ_CONSUMER_IDX);
142-
data[offset++] = hr_reg_read(&context, QPC_RQ_RECORD_EN);
143-
data[offset++] = hr_reg_read(&context, QPC_RQ_PRODUCER_IDX);
144-
data[offset++] = hr_reg_read(&context, QPC_RQ_CONSUMER_IDX);
145-
data[offset++] = hr_reg_read(&context, QPC_SQ_SHIFT);
146-
data[offset++] = hr_reg_read(&context, QPC_RQWS);
147-
data[offset++] = hr_reg_read(&context, QPC_RQ_SHIFT);
148-
data[offset++] = hr_reg_read(&context, QPC_SGE_SHIFT);
149-
data[offset++] = hr_reg_read(&context, QPC_SQ_HOP_NUM);
150-
data[offset++] = hr_reg_read(&context, QPC_RQ_HOP_NUM);
151-
data[offset++] = hr_reg_read(&context, QPC_SGE_HOP_NUM);
152-
data[offset++] = hr_reg_read(&context, QPC_WQE_SGE_BA_PG_SZ);
153-
data[offset++] = hr_reg_read(&context, QPC_WQE_SGE_BUF_PG_SZ);
154-
data[offset++] = hr_reg_read(&context, QPC_RETRY_NUM_INIT);
155-
data[offset++] = hr_reg_read(&context, QPC_RETRY_CNT);
156-
data[offset++] = hr_reg_read(&context, QPC_SQ_CUR_PSN);
157-
data[offset++] = hr_reg_read(&context, QPC_SQ_MAX_PSN);
158-
data[offset++] = hr_reg_read(&context, QPC_SQ_FLUSH_IDX);
159-
data[offset++] = hr_reg_read(&context, QPC_SQ_MAX_IDX);
160-
data[offset++] = hr_reg_read(&context, QPC_SQ_TX_ERR);
161-
data[offset++] = hr_reg_read(&context, QPC_SQ_RX_ERR);
162-
data[offset++] = hr_reg_read(&context, QPC_RQ_RX_ERR);
163-
data[offset++] = hr_reg_read(&context, QPC_RQ_TX_ERR);
164-
data[offset++] = hr_reg_read(&context, QPC_RQ_CQE_IDX);
165-
data[offset++] = hr_reg_read(&context, QPC_RQ_RTY_TX_ERR);
166-
167-
ret = nla_put(msg, RDMA_NLDEV_ATTR_RES_RAW, offset * sizeof(u32), data);
110+
ret = nla_put(msg, RDMA_NLDEV_ATTR_RES_RAW, sizeof(context), &context);
168111

169112
return ret;
170113
}
@@ -204,8 +147,6 @@ int hns_roce_fill_res_mr_entry_raw(struct sk_buff *msg, struct ib_mr *ib_mr)
204147
struct hns_roce_dev *hr_dev = to_hr_dev(ib_mr->device);
205148
struct hns_roce_mr *hr_mr = to_hr_mr(ib_mr);
206149
struct hns_roce_v2_mpt_entry context;
207-
u32 data[MAX_ENTRY_NUM] = {};
208-
int offset = 0;
209150
int ret;
210151

211152
if (!hr_dev->hw->query_mpt)
@@ -215,17 +156,7 @@ int hns_roce_fill_res_mr_entry_raw(struct sk_buff *msg, struct ib_mr *ib_mr)
215156
if (ret)
216157
return -EINVAL;
217158

218-
data[offset++] = hr_reg_read(&context, MPT_ST);
219-
data[offset++] = hr_reg_read(&context, MPT_PD);
220-
data[offset++] = hr_reg_read(&context, MPT_LKEY);
221-
data[offset++] = hr_reg_read(&context, MPT_LEN_L);
222-
data[offset++] = hr_reg_read(&context, MPT_LEN_H);
223-
data[offset++] = hr_reg_read(&context, MPT_PBL_SIZE);
224-
data[offset++] = hr_reg_read(&context, MPT_PBL_HOP_NUM);
225-
data[offset++] = hr_reg_read(&context, MPT_PBL_BA_PG_SZ);
226-
data[offset++] = hr_reg_read(&context, MPT_PBL_BUF_PG_SZ);
227-
228-
ret = nla_put(msg, RDMA_NLDEV_ATTR_RES_RAW, offset * sizeof(u32), data);
159+
ret = nla_put(msg, RDMA_NLDEV_ATTR_RES_RAW, sizeof(context), &context);
229160

230161
return ret;
231162
}

0 commit comments

Comments
 (0)