Skip to content

Commit cd9e8a0

Browse files
committed
libzrdma: Add support for query interface and some other optimization
Thia patch add the following verbs: query_device_ex query_port attach_mcast detach_mcast This patch also add the following function: add support for new vendor id and device id add support for private verbs interface use ZXDH_DEBUG_MASK to control debug level log use ZXDH_WRITE_IMM_SPILIT_RNABLE to fix write with immediate bug on-behalf-of: @ZTE [email protected] Signed-off-by: zte_lifuyan <[email protected]>
1 parent 2bfe202 commit cd9e8a0

File tree

13 files changed

+182
-313
lines changed

13 files changed

+182
-313
lines changed

debian/libibverbs-dev.install

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ usr/include/infiniband/sa.h
1313
usr/include/infiniband/tm_types.h
1414
usr/include/infiniband/verbs.h
1515
usr/include/infiniband/verbs_api.h
16+
usr/include/infiniband/zxdh_devids.h
17+
usr/include/infiniband/zxdh_dv.h
1618
usr/lib/*/lib*-rdmav*.a
1719
usr/lib/*/libefa.a
1820
usr/lib/*/libefa.so
@@ -26,12 +28,14 @@ usr/lib/*/libmlx4.a
2628
usr/lib/*/libmlx4.so
2729
usr/lib/*/libmlx5.a
2830
usr/lib/*/libmlx5.so
31+
usr/lib/*/libzrdma.so
2932
usr/lib/*/pkgconfig/libefa.pc
3033
usr/lib/*/pkgconfig/libhns.pc
3134
usr/lib/*/pkgconfig/libibverbs.pc
3235
usr/lib/*/pkgconfig/libmana.pc
3336
usr/lib/*/pkgconfig/libmlx4.pc
3437
usr/lib/*/pkgconfig/libmlx5.pc
38+
usr/lib/*//pkgconfig/libzrdma.pc
3539
usr/share/man/man3/efadv_*.3
3640
usr/share/man/man3/hnsdv_*.3
3741
usr/share/man/man3/ibv_*

debian/libibverbs1.install

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
usr/lib/*/libibverbs*.so.*
2+
usr/lib/*/libzrdma.so.*
3+
usr/lib/*/libzrdma.a
24
usr/share/doc/rdma-core/libibverbs.md usr/share/doc/libibverbs1/

kernel-headers/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ publish_internal_headers(rdma
2727
rdma/siw-abi.h
2828
rdma/vmw_pvrdma-abi.h
2929
rdma/zxdh-abi.h
30+
rdma/zxdh_user_ioctl_cmds.h
3031
rdma/zxdh_user_ioctl_verbs.h
3132
)
3233

providers/zrdma/libzrdma.map

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
/* Export symbols should be added below according to
22
Documentation/versioning.md document. */
33
ZRDMA_1.0 {
4+
global:
5+
zxdh_get_log_trace_switch;
46
local: *;
57
};
8+
9+
ZRDMA_1.1 {
10+
global:
11+
zxdh_set_log_trace_switch;
12+
zxdh_modify_qp_udp_sport;
13+
zxdh_query_qpc;
14+
zxdh_modify_qpc;
15+
zxdh_reset_qp;
16+
} ZRDMA_1.0;

providers/zrdma/private_verbs_cmd.c

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,92 @@ static int _zxdh_query_qpc(struct ibv_qp *qp, struct zxdh_rdma_qpc *qpc)
7878
return 0;
7979
}
8080

81+
static void copy_modify_qpc_fields(struct zxdh_modify_qpc_req *req_cmd,
82+
uint64_t attr_mask,
83+
struct zxdh_rdma_qpc *qpc)
84+
{
85+
if (attr_mask & ZXDH_TX_READ_RETRY_FLAG_SET) {
86+
req_cmd->retry_flag = qpc->retry_flag;
87+
req_cmd->rnr_retry_flag = qpc->rnr_retry_flag;
88+
req_cmd->read_retry_flag = qpc->read_retry_flag;
89+
req_cmd->cur_retry_count = qpc->cur_retry_count;
90+
}
91+
if (attr_mask & ZXDH_RETRY_CQE_SQ_OPCODE)
92+
req_cmd->retry_cqe_sq_opcode = qpc->retry_cqe_sq_opcode;
93+
94+
if (attr_mask & ZXDH_ERR_FLAG_SET) {
95+
req_cmd->err_flag = qpc->err_flag;
96+
req_cmd->ack_err_flag = qpc->ack_err_flag;
97+
}
98+
if (attr_mask & ZXDH_PACKAGE_ERR_FLAG)
99+
req_cmd->package_err_flag = qpc->package_err_flag;
100+
}
101+
102+
static int _zxdh_reset_qp(struct ibv_qp *qp, uint64_t opcode)
103+
{
104+
DECLARE_COMMAND_BUFFER(cmd, ZXDH_IB_OBJECT_QP_OBJ,
105+
ZXDH_IB_METHOD_QP_RESET_QP, 2);
106+
fill_attr_in_obj(cmd, ZXDH_IB_ATTR_QP_RESET_QP_HANDLE, qp->handle);
107+
fill_attr_in_uint64(cmd, ZXDH_IB_ATTR_QP_RESET_OP_CODE, opcode);
108+
return execute_ioctl(qp->context, cmd);
109+
}
110+
111+
static int _zxdh_modify_qpc(struct ibv_qp *qp, struct zxdh_rdma_qpc *qpc,
112+
uint64_t qpc_mask)
113+
{
114+
DECLARE_COMMAND_BUFFER(cmd, ZXDH_IB_OBJECT_QP_OBJ,
115+
ZXDH_IB_METHOD_QP_MODIFY_QPC, 3);
116+
struct zxdh_modify_qpc_req req = { 0 };
117+
118+
copy_modify_qpc_fields(&req, qpc_mask, qpc);
119+
fill_attr_in_obj(cmd, ZXDH_IB_ATTR_QP_QUERY_HANDLE, qp->handle);
120+
fill_attr_in_uint64(cmd, ZXDH_IB_ATTR_QP_MODIFY_QPC_MASK, qpc_mask);
121+
fill_attr_in_ptr(cmd, ZXDH_IB_ATTR_QP_MODIFY_QPC_REQ, &req);
122+
return execute_ioctl(qp->context, cmd);
123+
}
124+
125+
static int _zxdh_modify_qp_udp_sport(struct ibv_context *ibctx,
126+
uint16_t udp_sport, uint32_t qpn)
127+
{
128+
if (udp_sport <= MIN_UDP_SPORT || qpn <= MIN_QP_QPN)
129+
return -EINVAL;
130+
131+
DECLARE_COMMAND_BUFFER(cmd, ZXDH_IB_OBJECT_QP_OBJ,
132+
ZXDH_IB_METHOD_QP_MODIFY_UDP_SPORT, 2);
133+
fill_attr_in(cmd, ZXDH_IB_ATTR_QP_UDP_PORT, &udp_sport,
134+
sizeof(udp_sport));
135+
fill_attr_in_uint32(cmd, ZXDH_IB_ATTR_QP_QPN, qpn);
136+
return execute_ioctl(ibctx, cmd);
137+
}
138+
139+
static int _zxdh_get_log_trace_switch(struct ibv_context *ibctx,
140+
uint8_t *switch_status)
141+
{
142+
DECLARE_COMMAND_BUFFER(cmd, ZXDH_IB_OBJECT_DEV,
143+
ZXDH_IB_METHOD_DEV_GET_LOG_TRACE, 1);
144+
145+
fill_attr_out_ptr(cmd, ZXDH_IB_ATTR_DEV_GET_LOG_TARCE_SWITCH,
146+
switch_status);
147+
return execute_ioctl(ibctx, cmd);
148+
}
149+
150+
static int _zxdh_set_log_trace_switch(struct ibv_context *ibctx,
151+
uint8_t switch_status)
152+
{
153+
DECLARE_COMMAND_BUFFER(cmd, ZXDH_IB_OBJECT_DEV,
154+
ZXDH_IB_METHOD_DEV_SET_LOG_TRACE, 1);
155+
fill_attr_in(cmd, ZXDH_IB_ATTR_DEV_SET_LOG_TARCE_SWITCH, &switch_status,
156+
sizeof(switch_status));
157+
return execute_ioctl(ibctx, cmd);
158+
}
159+
81160
static struct zxdh_uvcontext_ops zxdh_ctx_ops = {
161+
.modify_qp_udp_sport = _zxdh_modify_qp_udp_sport,
162+
.get_log_trace_switch = _zxdh_get_log_trace_switch,
163+
.set_log_trace_switch = _zxdh_set_log_trace_switch,
82164
.query_qpc = _zxdh_query_qpc,
165+
.modify_qpc = _zxdh_modify_qpc,
166+
.reset_qp = _zxdh_reset_qp,
83167
};
84168

85169
static inline struct zxdh_uvcontext *to_zxdhtx(struct ibv_context *ibctx)

providers/zrdma/private_verbs_cmd.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,6 @@
3636
#include "zxdh_zrdma.h"
3737
#include "zxdh_dv.h"
3838

39-
enum zxdh_rdma_tool_flags {
40-
ZXDH_QP_EXTEND_OP = 1 << 0,
41-
ZXDH_CAPTURE = 1 << 1,
42-
ZXDH_GET_HW_DATA = 1 << 2,
43-
ZXDH_GET_HW_OBJECT_DATA = 1 << 3,
44-
ZXDH_CHECK_HW_HEALTH = 1 << 4,
45-
ZXDH_RDMA_TOOL_CFG_DEV_PARAM = 1 << 5,
46-
ZXDH_RDMA_TOOL_SHOW_RES_MAP = 1 << 5,
47-
};
48-
4939
struct zxdh_uvcontext_ops {
5040
int (*modify_qp_udp_sport)(struct ibv_context *ibctx,
5141
uint16_t udp_sport, uint32_t qpn);

providers/zrdma/zxdh_devids.h

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,20 @@
3333
#ifndef __ZXDH_DEVIDS_H__
3434
#define __ZXDH_DEVIDS_H__
3535

36+
#ifdef __cplusplus
37+
extern "C" {
38+
#endif
39+
3640
/* ZXDH VENDOR ID */
3741
#define PCI_VENDOR_ID_ZXDH_EVB 0x16c3
3842
#define PCI_VENDOR_ID_ZXDH_E312 0x1cf2
43+
#define PCI_VENDOR_ID_ZXDH_E312S_D 0x1cf2
3944
#define PCI_VENDOR_ID_ZXDH_E310 0x1cf2
4045
#define PCI_VENDOR_ID_ZXDH_E310_RDMA 0x1cf2
4146
#define PCI_VENDOR_ID_ZXDH_E316 0x1cf2
4247
#define PCI_VENDOR_ID_ZXDH_X512 0x1cf2
48+
#define PCI_VENDOR_ID_ZXDH_E312_TY_CLOUD 0x1b18
49+
#define PCI_VENDOR_ID_ZXDH_E310_TY_CLOUD 0x1b18
4350
/* ZXDH Devices ID */
4451
#define ZXDH_DEV_ID_ADAPTIVE_EVB_PF 0x8040 /* ZXDH EVB PF DEVICE ID*/
4552
#define ZXDH_DEV_ID_ADAPTIVE_EVB_VF 0x8041 /* ZXDH EVB VF DEVICE ID*/
@@ -53,4 +60,15 @@
5360
#define ZXDH_DEV_ID_ADAPTIVE_E316_VF 0x807f /* ZXDH E316 VF DEVICE ID*/
5461
#define ZXDH_DEV_ID_ADAPTIVE_X512_PF 0x806B /* ZXDH X512 PF DEVICE ID*/
5562
#define ZXDH_DEV_ID_ADAPTIVE_X512_VF 0x806C /* ZXDH X512 VF DEVICE ID*/
56-
#endif /* __ZXDH_DEVIDS_H__ */
63+
#define ZXDH_DEV_ID_ADAPTIVE_E312_TY_CLOUD_PF 0x1110 /* ZXDH E312 TY CLOUD PF DEVICE ID*/
64+
#define ZXDH_DEV_ID_ADAPTIVE_E312_TY_CLOUD_VF 0x1111 /* ZXDH E312 TY CLOUD VF DEVICE ID*/
65+
#define ZXDH_DEV_ID_ADAPTIVE_E310_TY_CLOUD_PF 0x1100 /* ZXDH E310 TY CLOUD PF DEVICE ID*/
66+
#define ZXDH_DEV_ID_ADAPTIVE_E310_TY_CLOUD_VF 0x1101 /* ZXDH E310 TY CLOUD VF DEVICE ID*/
67+
#define ZXDH_DEV_ID_ADAPTIVE_E312S_D_PF 0x80a2 /* ZXDH E310 TY CLOUD PF DEVICE ID*/
68+
#define ZXDH_DEV_ID_ADAPTIVE_E312S_D_VF 0x80a3 /* ZXDH E310 TY CLOUD VF DEVICE ID*/
69+
70+
#ifdef __cplusplus
71+
}
72+
#endif
73+
74+
#endif /* ZXDH_DEVIDS_H */

0 commit comments

Comments
 (0)