Skip to content

Commit 3e537df

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 92b572c commit 3e537df

File tree

14 files changed

+190
-313
lines changed

14 files changed

+190
-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/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,11 @@ if(TARGET zrdma-rdmav${IBVERBS_PABI_VERSION})
2525
rdma_pkg_config("zrdma-rdmav${IBVERBS_PABI_VERSION}" "libibverbs" "${CMAKE_THREAD_LIBS_INIT}")
2626
endif()
2727

28+
install(CODE "
29+
execute_process(
30+
COMMAND \${CMAKE_COMMAND} -E create_symlink
31+
libzrdma-rdmav${IBVERBS_PABI_VERSION}.so
32+
\$ENV{DESTDIR}\${CMAKE_INSTALL_LIBDIR}/libzrdma.so
33+
)
34+
")
35+

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
@@ -69,8 +69,92 @@ static int _zxdh_query_qpc(struct ibv_qp *qp, struct zxdh_rdma_qpc *qpc)
6969
return 0;
7070
}
7171

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

76160
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)