1/*
2 * This header was generated from the Linux kernel headers by update_headers.py,
3 * to provide necessary information from kernel to userspace, such as constants,
4 * structures, and macros, and thus, contains no copyrightable information.
5 */
6#ifndef _UAPI_RDMA_NETLINK_H
7#define _UAPI_RDMA_NETLINK_H
8#include <linux/types.h>
9enum {
10	RDMA_NL_RDMA_CM = 1,
11	RDMA_NL_IWCM,
12	RDMA_NL_RSVD,
13	RDMA_NL_LS,
14	RDMA_NL_NLDEV,
15	RDMA_NL_NUM_CLIENTS
16};
17enum {
18	RDMA_NL_GROUP_CM = 1,
19	RDMA_NL_GROUP_IWPM,
20	RDMA_NL_GROUP_LS,
21	RDMA_NL_NUM_GROUPS
22};
23#define RDMA_NL_GET_CLIENT(type) ((type & (((1 << 6) - 1) << 10)) >> 10)
24#define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
25#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
26enum {
27	RDMA_NL_RDMA_CM_ID_STATS = 0,
28	RDMA_NL_RDMA_CM_NUM_OPS
29};
30enum {
31	RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1,
32	RDMA_NL_RDMA_CM_ATTR_DST_ADDR,
33	RDMA_NL_RDMA_CM_NUM_ATTR,
34};
35enum {
36	RDMA_NL_IWPM_REG_PID = 0,
37	RDMA_NL_IWPM_ADD_MAPPING,
38	RDMA_NL_IWPM_QUERY_MAPPING,
39	RDMA_NL_IWPM_REMOVE_MAPPING,
40	RDMA_NL_IWPM_REMOTE_INFO,
41	RDMA_NL_IWPM_HANDLE_ERR,
42	RDMA_NL_IWPM_MAPINFO,
43	RDMA_NL_IWPM_MAPINFO_NUM,
44	RDMA_NL_IWPM_NUM_OPS
45};
46struct rdma_cm_id_stats {
47	__u32	qp_num;
48	__u32	bound_dev_if;
49	__u32	port_space;
50	__s32	pid;
51	__u8	cm_state;
52	__u8	node_type;
53	__u8	port_num;
54	__u8	qp_type;
55};
56enum {
57	IWPM_NLA_REG_PID_UNSPEC = 0,
58	IWPM_NLA_REG_PID_SEQ,
59	IWPM_NLA_REG_IF_NAME,
60	IWPM_NLA_REG_IBDEV_NAME,
61	IWPM_NLA_REG_ULIB_NAME,
62	IWPM_NLA_REG_PID_MAX
63};
64enum {
65	IWPM_NLA_RREG_PID_UNSPEC = 0,
66	IWPM_NLA_RREG_PID_SEQ,
67	IWPM_NLA_RREG_IBDEV_NAME,
68	IWPM_NLA_RREG_ULIB_NAME,
69	IWPM_NLA_RREG_ULIB_VER,
70	IWPM_NLA_RREG_PID_ERR,
71	IWPM_NLA_RREG_PID_MAX
72};
73enum {
74	IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
75	IWPM_NLA_MANAGE_MAPPING_SEQ,
76	IWPM_NLA_MANAGE_ADDR,
77	IWPM_NLA_MANAGE_MAPPED_LOC_ADDR,
78	IWPM_NLA_RMANAGE_MAPPING_ERR,
79	IWPM_NLA_RMANAGE_MAPPING_MAX
80};
81#define IWPM_NLA_MANAGE_MAPPING_MAX 3
82#define IWPM_NLA_QUERY_MAPPING_MAX  4
83#define IWPM_NLA_MAPINFO_SEND_MAX   3
84enum {
85	IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
86	IWPM_NLA_QUERY_MAPPING_SEQ,
87	IWPM_NLA_QUERY_LOCAL_ADDR,
88	IWPM_NLA_QUERY_REMOTE_ADDR,
89	IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
90	IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
91	IWPM_NLA_RQUERY_MAPPING_ERR,
92	IWPM_NLA_RQUERY_MAPPING_MAX
93};
94enum {
95	IWPM_NLA_MAPINFO_REQ_UNSPEC = 0,
96	IWPM_NLA_MAPINFO_ULIB_NAME,
97	IWPM_NLA_MAPINFO_ULIB_VER,
98	IWPM_NLA_MAPINFO_REQ_MAX
99};
100enum {
101	IWPM_NLA_MAPINFO_UNSPEC = 0,
102	IWPM_NLA_MAPINFO_LOCAL_ADDR,
103	IWPM_NLA_MAPINFO_MAPPED_ADDR,
104	IWPM_NLA_MAPINFO_MAX
105};
106enum {
107	IWPM_NLA_MAPINFO_NUM_UNSPEC = 0,
108	IWPM_NLA_MAPINFO_SEQ,
109	IWPM_NLA_MAPINFO_SEND_NUM,
110	IWPM_NLA_MAPINFO_ACK_NUM,
111	IWPM_NLA_MAPINFO_NUM_MAX
112};
113enum {
114	IWPM_NLA_ERR_UNSPEC = 0,
115	IWPM_NLA_ERR_SEQ,
116	IWPM_NLA_ERR_CODE,
117	IWPM_NLA_ERR_MAX
118};
119enum {
120	RDMA_NL_LS_OP_RESOLVE = 0,
121	RDMA_NL_LS_OP_SET_TIMEOUT,
122	RDMA_NL_LS_OP_IP_RESOLVE,
123	RDMA_NL_LS_NUM_OPS
124};
125#define RDMA_NL_LS_F_ERR	0x0100
126enum {
127	LS_RESOLVE_PATH_USE_ALL = 0,
128	LS_RESOLVE_PATH_USE_UNIDIRECTIONAL,
129	LS_RESOLVE_PATH_USE_GMP,
130	LS_RESOLVE_PATH_USE_MAX
131};
132#define LS_DEVICE_NAME_MAX 64
133struct rdma_ls_resolve_header {
134	__u8 device_name[LS_DEVICE_NAME_MAX];
135	__u8 port_num;
136	__u8 path_use;
137};
138struct rdma_ls_ip_resolve_header {
139	__u32 ifindex;
140};
141#define RDMA_NLA_F_MANDATORY	(1 << 13)
142#define RDMA_NLA_TYPE_MASK	(~(NLA_F_NESTED | NLA_F_NET_BYTEORDER | \
143				  RDMA_NLA_F_MANDATORY))
144enum {
145	LS_NLA_TYPE_UNSPEC = 0,
146	LS_NLA_TYPE_PATH_RECORD,
147	LS_NLA_TYPE_TIMEOUT,
148	LS_NLA_TYPE_SERVICE_ID,
149	LS_NLA_TYPE_DGID,
150	LS_NLA_TYPE_SGID,
151	LS_NLA_TYPE_TCLASS,
152	LS_NLA_TYPE_PKEY,
153	LS_NLA_TYPE_QOS_CLASS,
154	LS_NLA_TYPE_IPV4,
155	LS_NLA_TYPE_IPV6,
156	LS_NLA_TYPE_MAX
157};
158struct rdma_nla_ls_gid {
159	__u8		gid[16];
160};
161enum rdma_nldev_command {
162	RDMA_NLDEV_CMD_UNSPEC,
163	RDMA_NLDEV_CMD_GET,
164
165	RDMA_NLDEV_CMD_PORT_GET = 5,
166
167	RDMA_NLDEV_CMD_RES_GET = 9,
168	RDMA_NLDEV_CMD_RES_QP_GET,
169	RDMA_NLDEV_CMD_RES_CM_ID_GET,
170	RDMA_NLDEV_CMD_RES_CQ_GET,
171	RDMA_NLDEV_CMD_RES_MR_GET,
172	RDMA_NLDEV_CMD_RES_PD_GET,
173	RDMA_NLDEV_NUM_OPS
174};
175enum {
176	RDMA_NLDEV_ATTR_ENTRY_STRLEN = 16,
177};
178enum rdma_nldev_print_type {
179	RDMA_NLDEV_PRINT_TYPE_UNSPEC,
180	RDMA_NLDEV_PRINT_TYPE_HEX,
181};
182enum rdma_nldev_attr {
183
184	RDMA_NLDEV_ATTR_UNSPEC,
185
186	RDMA_NLDEV_ATTR_PAD = RDMA_NLDEV_ATTR_UNSPEC,
187
188	RDMA_NLDEV_ATTR_DEV_INDEX,
189	RDMA_NLDEV_ATTR_DEV_NAME,
190
191	RDMA_NLDEV_ATTR_PORT_INDEX,
192
193	RDMA_NLDEV_ATTR_CAP_FLAGS,
194
195	RDMA_NLDEV_ATTR_FW_VERSION,
196
197	RDMA_NLDEV_ATTR_NODE_GUID,
198
199	RDMA_NLDEV_ATTR_SYS_IMAGE_GUID,
200
201	RDMA_NLDEV_ATTR_SUBNET_PREFIX,
202
203	RDMA_NLDEV_ATTR_LID,
204	RDMA_NLDEV_ATTR_SM_LID,
205
206	RDMA_NLDEV_ATTR_LMC,
207	RDMA_NLDEV_ATTR_PORT_STATE,
208	RDMA_NLDEV_ATTR_PORT_PHYS_STATE,
209	RDMA_NLDEV_ATTR_DEV_NODE_TYPE,
210	RDMA_NLDEV_ATTR_RES_SUMMARY,
211	RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY,
212	RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_NAME,
213	RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_CURR,
214	RDMA_NLDEV_ATTR_RES_QP,
215	RDMA_NLDEV_ATTR_RES_QP_ENTRY,
216
217	RDMA_NLDEV_ATTR_RES_LQPN,
218
219	RDMA_NLDEV_ATTR_RES_RQPN,
220
221	RDMA_NLDEV_ATTR_RES_RQ_PSN,
222
223	RDMA_NLDEV_ATTR_RES_SQ_PSN,
224	RDMA_NLDEV_ATTR_RES_PATH_MIG_STATE,
225
226	RDMA_NLDEV_ATTR_RES_TYPE,
227	RDMA_NLDEV_ATTR_RES_STATE,
228
229	RDMA_NLDEV_ATTR_RES_PID,
230
231	RDMA_NLDEV_ATTR_RES_KERN_NAME,
232	RDMA_NLDEV_ATTR_RES_CM_ID,
233	RDMA_NLDEV_ATTR_RES_CM_ID_ENTRY,
234
235	RDMA_NLDEV_ATTR_RES_PS,
236
237	RDMA_NLDEV_ATTR_RES_SRC_ADDR,
238	RDMA_NLDEV_ATTR_RES_DST_ADDR,
239	RDMA_NLDEV_ATTR_RES_CQ,
240	RDMA_NLDEV_ATTR_RES_CQ_ENTRY,
241	RDMA_NLDEV_ATTR_RES_CQE,
242	RDMA_NLDEV_ATTR_RES_USECNT,
243	RDMA_NLDEV_ATTR_RES_POLL_CTX,
244	RDMA_NLDEV_ATTR_RES_MR,
245	RDMA_NLDEV_ATTR_RES_MR_ENTRY,
246	RDMA_NLDEV_ATTR_RES_RKEY,
247	RDMA_NLDEV_ATTR_RES_LKEY,
248	RDMA_NLDEV_ATTR_RES_IOVA,
249	RDMA_NLDEV_ATTR_RES_MRLEN,
250	RDMA_NLDEV_ATTR_RES_PD,
251	RDMA_NLDEV_ATTR_RES_PD_ENTRY,
252	RDMA_NLDEV_ATTR_RES_LOCAL_DMA_LKEY,
253	RDMA_NLDEV_ATTR_RES_UNSAFE_GLOBAL_RKEY,
254
255	RDMA_NLDEV_ATTR_NDEV_INDEX,
256	RDMA_NLDEV_ATTR_NDEV_NAME,
257
258	RDMA_NLDEV_ATTR_DRIVER,
259	RDMA_NLDEV_ATTR_DRIVER_ENTRY,
260	RDMA_NLDEV_ATTR_DRIVER_STRING,
261
262	RDMA_NLDEV_ATTR_DRIVER_PRINT_TYPE,
263	RDMA_NLDEV_ATTR_DRIVER_S32,
264	RDMA_NLDEV_ATTR_DRIVER_U32,
265	RDMA_NLDEV_ATTR_DRIVER_S64,
266	RDMA_NLDEV_ATTR_DRIVER_U64,
267
268	RDMA_NLDEV_ATTR_MAX
269};
270#endif
271