385 lines · c
1/*2 * Copyright (c) 2018, Mellanox Technologies inc. All rights reserved.3 * Copyright (c) 2020, Intel Corporation. All rights reserved.4 *5 * This software is available to you under a choice of one of two6 * licenses. You may choose to be licensed under the terms of the GNU7 * General Public License (GPL) Version 2, available from the file8 * COPYING in the main directory of this source tree, or the9 * OpenIB.org BSD license below:10 *11 * Redistribution and use in source and binary forms, with or12 * without modification, are permitted provided that the following13 * conditions are met:14 *15 * - Redistributions of source code must retain the above16 * copyright notice, this list of conditions and the following17 * disclaimer.18 *19 * - Redistributions in binary form must reproduce the above20 * copyright notice, this list of conditions and the following21 * disclaimer in the documentation and/or other materials22 * provided with the distribution.23 *24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE31 * SOFTWARE.32 */33 34#ifndef IB_USER_IOCTL_CMDS_H35#define IB_USER_IOCTL_CMDS_H36 37#define UVERBS_ID_NS_MASK 0xF00038#define UVERBS_ID_NS_SHIFT 1239 40enum uverbs_default_objects {41 UVERBS_OBJECT_DEVICE, /* No instances of DEVICE are allowed */42 UVERBS_OBJECT_PD,43 UVERBS_OBJECT_COMP_CHANNEL,44 UVERBS_OBJECT_CQ,45 UVERBS_OBJECT_QP,46 UVERBS_OBJECT_SRQ,47 UVERBS_OBJECT_AH,48 UVERBS_OBJECT_MR,49 UVERBS_OBJECT_MW,50 UVERBS_OBJECT_FLOW,51 UVERBS_OBJECT_XRCD,52 UVERBS_OBJECT_RWQ_IND_TBL,53 UVERBS_OBJECT_WQ,54 UVERBS_OBJECT_FLOW_ACTION,55 UVERBS_OBJECT_DM,56 UVERBS_OBJECT_COUNTERS,57 UVERBS_OBJECT_ASYNC_EVENT,58};59 60enum {61 UVERBS_ID_DRIVER_NS = 1UL << UVERBS_ID_NS_SHIFT,62 UVERBS_ATTR_UHW_IN = UVERBS_ID_DRIVER_NS,63 UVERBS_ATTR_UHW_OUT,64 UVERBS_ID_DRIVER_NS_WITH_UHW,65};66 67enum 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,75};76 77enum uverbs_attrs_invoke_write_cmd_attr_ids {78 UVERBS_ATTR_CORE_IN,79 UVERBS_ATTR_CORE_OUT,80 UVERBS_ATTR_WRITE_CMD,81};82 83enum uverbs_attrs_query_port_cmd_attr_ids {84 UVERBS_ATTR_QUERY_PORT_PORT_NUM,85 UVERBS_ATTR_QUERY_PORT_RESP,86};87 88enum uverbs_attrs_get_context_attr_ids {89 UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS,90 UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT,91};92 93enum uverbs_attrs_query_context_attr_ids {94 UVERBS_ATTR_QUERY_CONTEXT_NUM_COMP_VECTORS,95 UVERBS_ATTR_QUERY_CONTEXT_CORE_SUPPORT,96};97 98enum 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,107};108 109enum uverbs_attrs_destroy_cq_cmd_attr_ids {110 UVERBS_ATTR_DESTROY_CQ_HANDLE,111 UVERBS_ATTR_DESTROY_CQ_RESP,112};113 114enum 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,121};122 123enum uverbs_attrs_modify_flow_action_esp {124 UVERBS_ATTR_MODIFY_FLOW_ACTION_ESP_HANDLE =125 UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE,126};127 128enum uverbs_attrs_destroy_flow_action_esp {129 UVERBS_ATTR_DESTROY_FLOW_ACTION_HANDLE,130};131 132enum 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,148};149 150enum uverbs_attrs_destroy_qp_cmd_attr_ids {151 UVERBS_ATTR_DESTROY_QP_HANDLE,152 UVERBS_ATTR_DESTROY_QP_RESP,153};154 155enum uverbs_methods_qp {156 UVERBS_METHOD_QP_CREATE,157 UVERBS_METHOD_QP_DESTROY,158};159 160enum 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,175};176 177enum uverbs_attrs_destroy_srq_cmd_attr_ids {178 UVERBS_ATTR_DESTROY_SRQ_HANDLE,179 UVERBS_ATTR_DESTROY_SRQ_RESP,180};181 182enum uverbs_methods_srq {183 UVERBS_METHOD_SRQ_CREATE,184 UVERBS_METHOD_SRQ_DESTROY,185};186 187enum uverbs_methods_cq {188 UVERBS_METHOD_CQ_CREATE,189 UVERBS_METHOD_CQ_DESTROY,190};191 192enum 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,205};206 207enum uverbs_attrs_destroy_wq_cmd_attr_ids {208 UVERBS_ATTR_DESTROY_WQ_HANDLE,209 UVERBS_ATTR_DESTROY_WQ_RESP,210};211 212enum uverbs_methods_wq {213 UVERBS_METHOD_WQ_CREATE,214 UVERBS_METHOD_WQ_DESTROY,215};216 217enum 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,221};222 223enum 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,227};228 229enum uverbs_attrs_free_dm_cmd_attr_ids {230 UVERBS_ATTR_FREE_DM_HANDLE,231};232 233enum uverbs_methods_dm {234 UVERBS_METHOD_DM_ALLOC,235 UVERBS_METHOD_DM_FREE,236};237 238enum 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,247};248 249enum 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,255};256 257enum uverbs_attrs_mr_destroy_ids {258 UVERBS_ATTR_DESTROY_MR_HANDLE,259};260 261enum 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,266};267 268enum 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,274};275 276enum 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,286};287 288enum uverbs_attrs_create_counters_cmd_attr_ids {289 UVERBS_ATTR_CREATE_COUNTERS_HANDLE,290};291 292enum uverbs_attrs_destroy_counters_cmd_attr_ids {293 UVERBS_ATTR_DESTROY_COUNTERS_HANDLE,294};295 296enum 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,300};301 302enum uverbs_methods_actions_counters_ops {303 UVERBS_METHOD_COUNTERS_CREATE,304 UVERBS_METHOD_COUNTERS_DESTROY,305 UVERBS_METHOD_COUNTERS_READ,306};307 308enum uverbs_attrs_info_handles_id {309 UVERBS_ATTR_INFO_OBJECT_ID,310 UVERBS_ATTR_INFO_TOTAL_HANDLES,311 UVERBS_ATTR_INFO_HANDLES_LIST,312};313 314enum uverbs_methods_pd {315 UVERBS_METHOD_PD_DESTROY,316};317 318enum uverbs_attrs_pd_destroy_ids {319 UVERBS_ATTR_DESTROY_PD_HANDLE,320};321 322enum uverbs_methods_mw {323 UVERBS_METHOD_MW_DESTROY,324};325 326enum uverbs_attrs_mw_destroy_ids {327 UVERBS_ATTR_DESTROY_MW_HANDLE,328};329 330enum uverbs_methods_xrcd {331 UVERBS_METHOD_XRCD_DESTROY,332};333 334enum uverbs_attrs_xrcd_destroy_ids {335 UVERBS_ATTR_DESTROY_XRCD_HANDLE,336};337 338enum uverbs_methods_ah {339 UVERBS_METHOD_AH_DESTROY,340};341 342enum uverbs_attrs_ah_destroy_ids {343 UVERBS_ATTR_DESTROY_AH_HANDLE,344};345 346enum uverbs_methods_rwq_ind_tbl {347 UVERBS_METHOD_RWQ_IND_TBL_DESTROY,348};349 350enum uverbs_attrs_rwq_ind_tbl_destroy_ids {351 UVERBS_ATTR_DESTROY_RWQ_IND_TBL_HANDLE,352};353 354enum uverbs_methods_flow {355 UVERBS_METHOD_FLOW_DESTROY,356};357 358enum uverbs_attrs_flow_destroy_ids {359 UVERBS_ATTR_DESTROY_FLOW_HANDLE,360};361 362enum uverbs_method_async_event {363 UVERBS_METHOD_ASYNC_EVENT_ALLOC,364};365 366enum uverbs_attrs_async_event_create {367 UVERBS_ATTR_ASYNC_EVENT_ALLOC_FD_HANDLE,368};369 370enum 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,375};376 377enum 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,382};383 384#endif385