2 * Copyright (c) 2018, Mellanox Technologies inc. All rights reserved.
3 * Copyright (c) 2020, Intel Corporation. All rights reserved.
5 * This software is available to you under a choice of one of two
6 * licenses. You may choose to be licensed under the terms of the GNU
7 * General Public License (GPL) Version 2, available from the file
8 * COPYING in the main directory of this source tree, or the
9 * OpenIB.org BSD license below:
11 * Redistribution and use in source and binary forms, with or
12 * without modification, are permitted provided that the following
15 * - Redistributions of source code must retain the above
16 * copyright notice, this list of conditions and the following
19 * - Redistributions in binary form must reproduce the above
20 * copyright notice, this list of conditions and the following
21 * disclaimer in the documentation and/or other materials
22 * provided with the distribution.
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34 #ifndef IB_USER_IOCTL_CMDS_H
35 #define IB_USER_IOCTL_CMDS_H
37 #define UVERBS_ID_NS_MASK 0xF000
38 #define UVERBS_ID_NS_SHIFT 12
40 enum uverbs_default_objects
{
41 UVERBS_OBJECT_DEVICE
, /* No instances of DEVICE are allowed */
43 UVERBS_OBJECT_COMP_CHANNEL
,
52 UVERBS_OBJECT_RWQ_IND_TBL
,
54 UVERBS_OBJECT_FLOW_ACTION
,
56 UVERBS_OBJECT_COUNTERS
,
57 UVERBS_OBJECT_ASYNC_EVENT
,
61 UVERBS_ID_DRIVER_NS
= 1UL << UVERBS_ID_NS_SHIFT
,
62 UVERBS_ATTR_UHW_IN
= UVERBS_ID_DRIVER_NS
,
64 UVERBS_ID_DRIVER_NS_WITH_UHW
,
67 enum uverbs_methods_device
{
68 UVERBS_METHOD_INVOKE_WRITE
,
69 UVERBS_METHOD_INFO_HANDLES
,
70 UVERBS_METHOD_QUERY_PORT
,
71 UVERBS_METHOD_GET_CONTEXT
,
72 UVERBS_METHOD_QUERY_CONTEXT
,
73 UVERBS_METHOD_QUERY_GID_TABLE
,
74 UVERBS_METHOD_QUERY_GID_ENTRY
,
77 enum uverbs_attrs_invoke_write_cmd_attr_ids
{
80 UVERBS_ATTR_WRITE_CMD
,
83 enum uverbs_attrs_query_port_cmd_attr_ids
{
84 UVERBS_ATTR_QUERY_PORT_PORT_NUM
,
85 UVERBS_ATTR_QUERY_PORT_RESP
,
88 enum uverbs_attrs_get_context_attr_ids
{
89 UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS
,
90 UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT
,
93 enum uverbs_attrs_query_context_attr_ids
{
94 UVERBS_ATTR_QUERY_CONTEXT_NUM_COMP_VECTORS
,
95 UVERBS_ATTR_QUERY_CONTEXT_CORE_SUPPORT
,
98 enum uverbs_attrs_create_cq_cmd_attr_ids
{
99 UVERBS_ATTR_CREATE_CQ_HANDLE
,
100 UVERBS_ATTR_CREATE_CQ_CQE
,
101 UVERBS_ATTR_CREATE_CQ_USER_HANDLE
,
102 UVERBS_ATTR_CREATE_CQ_COMP_CHANNEL
,
103 UVERBS_ATTR_CREATE_CQ_COMP_VECTOR
,
104 UVERBS_ATTR_CREATE_CQ_FLAGS
,
105 UVERBS_ATTR_CREATE_CQ_RESP_CQE
,
106 UVERBS_ATTR_CREATE_CQ_EVENT_FD
,
109 enum uverbs_attrs_destroy_cq_cmd_attr_ids
{
110 UVERBS_ATTR_DESTROY_CQ_HANDLE
,
111 UVERBS_ATTR_DESTROY_CQ_RESP
,
114 enum uverbs_attrs_create_flow_action_esp
{
115 UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE
,
116 UVERBS_ATTR_FLOW_ACTION_ESP_ATTRS
,
117 UVERBS_ATTR_FLOW_ACTION_ESP_ESN
,
118 UVERBS_ATTR_FLOW_ACTION_ESP_KEYMAT
,
119 UVERBS_ATTR_FLOW_ACTION_ESP_REPLAY
,
120 UVERBS_ATTR_FLOW_ACTION_ESP_ENCAP
,
123 enum uverbs_attrs_modify_flow_action_esp
{
124 UVERBS_ATTR_MODIFY_FLOW_ACTION_ESP_HANDLE
=
125 UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE
,
128 enum uverbs_attrs_destroy_flow_action_esp
{
129 UVERBS_ATTR_DESTROY_FLOW_ACTION_HANDLE
,
132 enum uverbs_attrs_create_qp_cmd_attr_ids
{
133 UVERBS_ATTR_CREATE_QP_HANDLE
,
134 UVERBS_ATTR_CREATE_QP_XRCD_HANDLE
,
135 UVERBS_ATTR_CREATE_QP_PD_HANDLE
,
136 UVERBS_ATTR_CREATE_QP_SRQ_HANDLE
,
137 UVERBS_ATTR_CREATE_QP_SEND_CQ_HANDLE
,
138 UVERBS_ATTR_CREATE_QP_RECV_CQ_HANDLE
,
139 UVERBS_ATTR_CREATE_QP_IND_TABLE_HANDLE
,
140 UVERBS_ATTR_CREATE_QP_USER_HANDLE
,
141 UVERBS_ATTR_CREATE_QP_CAP
,
142 UVERBS_ATTR_CREATE_QP_TYPE
,
143 UVERBS_ATTR_CREATE_QP_FLAGS
,
144 UVERBS_ATTR_CREATE_QP_SOURCE_QPN
,
145 UVERBS_ATTR_CREATE_QP_EVENT_FD
,
146 UVERBS_ATTR_CREATE_QP_RESP_CAP
,
147 UVERBS_ATTR_CREATE_QP_RESP_QP_NUM
,
150 enum uverbs_attrs_destroy_qp_cmd_attr_ids
{
151 UVERBS_ATTR_DESTROY_QP_HANDLE
,
152 UVERBS_ATTR_DESTROY_QP_RESP
,
155 enum uverbs_methods_qp
{
156 UVERBS_METHOD_QP_CREATE
,
157 UVERBS_METHOD_QP_DESTROY
,
160 enum uverbs_attrs_create_srq_cmd_attr_ids
{
161 UVERBS_ATTR_CREATE_SRQ_HANDLE
,
162 UVERBS_ATTR_CREATE_SRQ_PD_HANDLE
,
163 UVERBS_ATTR_CREATE_SRQ_XRCD_HANDLE
,
164 UVERBS_ATTR_CREATE_SRQ_CQ_HANDLE
,
165 UVERBS_ATTR_CREATE_SRQ_USER_HANDLE
,
166 UVERBS_ATTR_CREATE_SRQ_MAX_WR
,
167 UVERBS_ATTR_CREATE_SRQ_MAX_SGE
,
168 UVERBS_ATTR_CREATE_SRQ_LIMIT
,
169 UVERBS_ATTR_CREATE_SRQ_MAX_NUM_TAGS
,
170 UVERBS_ATTR_CREATE_SRQ_TYPE
,
171 UVERBS_ATTR_CREATE_SRQ_EVENT_FD
,
172 UVERBS_ATTR_CREATE_SRQ_RESP_MAX_WR
,
173 UVERBS_ATTR_CREATE_SRQ_RESP_MAX_SGE
,
174 UVERBS_ATTR_CREATE_SRQ_RESP_SRQ_NUM
,
177 enum uverbs_attrs_destroy_srq_cmd_attr_ids
{
178 UVERBS_ATTR_DESTROY_SRQ_HANDLE
,
179 UVERBS_ATTR_DESTROY_SRQ_RESP
,
182 enum uverbs_methods_srq
{
183 UVERBS_METHOD_SRQ_CREATE
,
184 UVERBS_METHOD_SRQ_DESTROY
,
187 enum uverbs_methods_cq
{
188 UVERBS_METHOD_CQ_CREATE
,
189 UVERBS_METHOD_CQ_DESTROY
,
192 enum uverbs_attrs_create_wq_cmd_attr_ids
{
193 UVERBS_ATTR_CREATE_WQ_HANDLE
,
194 UVERBS_ATTR_CREATE_WQ_PD_HANDLE
,
195 UVERBS_ATTR_CREATE_WQ_CQ_HANDLE
,
196 UVERBS_ATTR_CREATE_WQ_USER_HANDLE
,
197 UVERBS_ATTR_CREATE_WQ_TYPE
,
198 UVERBS_ATTR_CREATE_WQ_EVENT_FD
,
199 UVERBS_ATTR_CREATE_WQ_MAX_WR
,
200 UVERBS_ATTR_CREATE_WQ_MAX_SGE
,
201 UVERBS_ATTR_CREATE_WQ_FLAGS
,
202 UVERBS_ATTR_CREATE_WQ_RESP_MAX_WR
,
203 UVERBS_ATTR_CREATE_WQ_RESP_MAX_SGE
,
204 UVERBS_ATTR_CREATE_WQ_RESP_WQ_NUM
,
207 enum uverbs_attrs_destroy_wq_cmd_attr_ids
{
208 UVERBS_ATTR_DESTROY_WQ_HANDLE
,
209 UVERBS_ATTR_DESTROY_WQ_RESP
,
212 enum uverbs_methods_wq
{
213 UVERBS_METHOD_WQ_CREATE
,
214 UVERBS_METHOD_WQ_DESTROY
,
217 enum uverbs_methods_actions_flow_action_ops
{
218 UVERBS_METHOD_FLOW_ACTION_ESP_CREATE
,
219 UVERBS_METHOD_FLOW_ACTION_DESTROY
,
220 UVERBS_METHOD_FLOW_ACTION_ESP_MODIFY
,
223 enum uverbs_attrs_alloc_dm_cmd_attr_ids
{
224 UVERBS_ATTR_ALLOC_DM_HANDLE
,
225 UVERBS_ATTR_ALLOC_DM_LENGTH
,
226 UVERBS_ATTR_ALLOC_DM_ALIGNMENT
,
229 enum uverbs_attrs_free_dm_cmd_attr_ids
{
230 UVERBS_ATTR_FREE_DM_HANDLE
,
233 enum uverbs_methods_dm
{
234 UVERBS_METHOD_DM_ALLOC
,
235 UVERBS_METHOD_DM_FREE
,
238 enum uverbs_attrs_reg_dm_mr_cmd_attr_ids
{
239 UVERBS_ATTR_REG_DM_MR_HANDLE
,
240 UVERBS_ATTR_REG_DM_MR_OFFSET
,
241 UVERBS_ATTR_REG_DM_MR_LENGTH
,
242 UVERBS_ATTR_REG_DM_MR_PD_HANDLE
,
243 UVERBS_ATTR_REG_DM_MR_ACCESS_FLAGS
,
244 UVERBS_ATTR_REG_DM_MR_DM_HANDLE
,
245 UVERBS_ATTR_REG_DM_MR_RESP_LKEY
,
246 UVERBS_ATTR_REG_DM_MR_RESP_RKEY
,
249 enum uverbs_methods_mr
{
250 UVERBS_METHOD_DM_MR_REG
,
251 UVERBS_METHOD_MR_DESTROY
,
252 UVERBS_METHOD_ADVISE_MR
,
253 UVERBS_METHOD_QUERY_MR
,
254 UVERBS_METHOD_REG_DMABUF_MR
,
257 enum uverbs_attrs_mr_destroy_ids
{
258 UVERBS_ATTR_DESTROY_MR_HANDLE
,
261 enum uverbs_attrs_advise_mr_cmd_attr_ids
{
262 UVERBS_ATTR_ADVISE_MR_PD_HANDLE
,
263 UVERBS_ATTR_ADVISE_MR_ADVICE
,
264 UVERBS_ATTR_ADVISE_MR_FLAGS
,
265 UVERBS_ATTR_ADVISE_MR_SGE_LIST
,
268 enum uverbs_attrs_query_mr_cmd_attr_ids
{
269 UVERBS_ATTR_QUERY_MR_HANDLE
,
270 UVERBS_ATTR_QUERY_MR_RESP_LKEY
,
271 UVERBS_ATTR_QUERY_MR_RESP_RKEY
,
272 UVERBS_ATTR_QUERY_MR_RESP_LENGTH
,
273 UVERBS_ATTR_QUERY_MR_RESP_IOVA
,
276 enum uverbs_attrs_reg_dmabuf_mr_cmd_attr_ids
{
277 UVERBS_ATTR_REG_DMABUF_MR_HANDLE
,
278 UVERBS_ATTR_REG_DMABUF_MR_PD_HANDLE
,
279 UVERBS_ATTR_REG_DMABUF_MR_OFFSET
,
280 UVERBS_ATTR_REG_DMABUF_MR_LENGTH
,
281 UVERBS_ATTR_REG_DMABUF_MR_IOVA
,
282 UVERBS_ATTR_REG_DMABUF_MR_FD
,
283 UVERBS_ATTR_REG_DMABUF_MR_ACCESS_FLAGS
,
284 UVERBS_ATTR_REG_DMABUF_MR_RESP_LKEY
,
285 UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY
,
288 enum uverbs_attrs_create_counters_cmd_attr_ids
{
289 UVERBS_ATTR_CREATE_COUNTERS_HANDLE
,
292 enum uverbs_attrs_destroy_counters_cmd_attr_ids
{
293 UVERBS_ATTR_DESTROY_COUNTERS_HANDLE
,
296 enum uverbs_attrs_read_counters_cmd_attr_ids
{
297 UVERBS_ATTR_READ_COUNTERS_HANDLE
,
298 UVERBS_ATTR_READ_COUNTERS_BUFF
,
299 UVERBS_ATTR_READ_COUNTERS_FLAGS
,
302 enum uverbs_methods_actions_counters_ops
{
303 UVERBS_METHOD_COUNTERS_CREATE
,
304 UVERBS_METHOD_COUNTERS_DESTROY
,
305 UVERBS_METHOD_COUNTERS_READ
,
308 enum uverbs_attrs_info_handles_id
{
309 UVERBS_ATTR_INFO_OBJECT_ID
,
310 UVERBS_ATTR_INFO_TOTAL_HANDLES
,
311 UVERBS_ATTR_INFO_HANDLES_LIST
,
314 enum uverbs_methods_pd
{
315 UVERBS_METHOD_PD_DESTROY
,
318 enum uverbs_attrs_pd_destroy_ids
{
319 UVERBS_ATTR_DESTROY_PD_HANDLE
,
322 enum uverbs_methods_mw
{
323 UVERBS_METHOD_MW_DESTROY
,
326 enum uverbs_attrs_mw_destroy_ids
{
327 UVERBS_ATTR_DESTROY_MW_HANDLE
,
330 enum uverbs_methods_xrcd
{
331 UVERBS_METHOD_XRCD_DESTROY
,
334 enum uverbs_attrs_xrcd_destroy_ids
{
335 UVERBS_ATTR_DESTROY_XRCD_HANDLE
,
338 enum uverbs_methods_ah
{
339 UVERBS_METHOD_AH_DESTROY
,
342 enum uverbs_attrs_ah_destroy_ids
{
343 UVERBS_ATTR_DESTROY_AH_HANDLE
,
346 enum uverbs_methods_rwq_ind_tbl
{
347 UVERBS_METHOD_RWQ_IND_TBL_DESTROY
,
350 enum uverbs_attrs_rwq_ind_tbl_destroy_ids
{
351 UVERBS_ATTR_DESTROY_RWQ_IND_TBL_HANDLE
,
354 enum uverbs_methods_flow
{
355 UVERBS_METHOD_FLOW_DESTROY
,
358 enum uverbs_attrs_flow_destroy_ids
{
359 UVERBS_ATTR_DESTROY_FLOW_HANDLE
,
362 enum uverbs_method_async_event
{
363 UVERBS_METHOD_ASYNC_EVENT_ALLOC
,
366 enum uverbs_attrs_async_event_create
{
367 UVERBS_ATTR_ASYNC_EVENT_ALLOC_FD_HANDLE
,
370 enum uverbs_attrs_query_gid_table_cmd_attr_ids
{
371 UVERBS_ATTR_QUERY_GID_TABLE_ENTRY_SIZE
,
372 UVERBS_ATTR_QUERY_GID_TABLE_FLAGS
,
373 UVERBS_ATTR_QUERY_GID_TABLE_RESP_ENTRIES
,
374 UVERBS_ATTR_QUERY_GID_TABLE_RESP_NUM_ENTRIES
,
377 enum uverbs_attrs_query_gid_entry_cmd_attr_ids
{
378 UVERBS_ATTR_QUERY_GID_ENTRY_PORT
,
379 UVERBS_ATTR_QUERY_GID_ENTRY_GID_INDEX
,
380 UVERBS_ATTR_QUERY_GID_ENTRY_FLAGS
,
381 UVERBS_ATTR_QUERY_GID_ENTRY_RESP_ENTRY
,