0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #ifndef IB_USER_IOCTL_CMDS_H
0035 #define IB_USER_IOCTL_CMDS_H
0036
0037 #define UVERBS_ID_NS_MASK 0xF000
0038 #define UVERBS_ID_NS_SHIFT 12
0039
0040 #define UVERBS_UDATA_DRIVER_DATA_NS 1
0041 #define UVERBS_UDATA_DRIVER_DATA_FLAG (1UL << UVERBS_ID_NS_SHIFT)
0042
0043 enum uverbs_default_objects {
0044 UVERBS_OBJECT_DEVICE,
0045 UVERBS_OBJECT_PD,
0046 UVERBS_OBJECT_COMP_CHANNEL,
0047 UVERBS_OBJECT_CQ,
0048 UVERBS_OBJECT_QP,
0049 UVERBS_OBJECT_SRQ,
0050 UVERBS_OBJECT_AH,
0051 UVERBS_OBJECT_MR,
0052 UVERBS_OBJECT_MW,
0053 UVERBS_OBJECT_FLOW,
0054 UVERBS_OBJECT_XRCD,
0055 UVERBS_OBJECT_RWQ_IND_TBL,
0056 UVERBS_OBJECT_WQ,
0057 UVERBS_OBJECT_FLOW_ACTION,
0058 UVERBS_OBJECT_DM,
0059 UVERBS_OBJECT_COUNTERS,
0060 UVERBS_OBJECT_ASYNC_EVENT,
0061 };
0062
0063 enum {
0064 UVERBS_ATTR_UHW_IN = UVERBS_UDATA_DRIVER_DATA_FLAG,
0065 UVERBS_ATTR_UHW_OUT,
0066 };
0067
0068 enum uverbs_methods_device {
0069 UVERBS_METHOD_INVOKE_WRITE,
0070 UVERBS_METHOD_INFO_HANDLES,
0071 UVERBS_METHOD_QUERY_PORT,
0072 UVERBS_METHOD_GET_CONTEXT,
0073 UVERBS_METHOD_QUERY_CONTEXT,
0074 UVERBS_METHOD_QUERY_GID_TABLE,
0075 UVERBS_METHOD_QUERY_GID_ENTRY,
0076 };
0077
0078 enum uverbs_attrs_invoke_write_cmd_attr_ids {
0079 UVERBS_ATTR_CORE_IN,
0080 UVERBS_ATTR_CORE_OUT,
0081 UVERBS_ATTR_WRITE_CMD,
0082 };
0083
0084 enum uverbs_attrs_query_port_cmd_attr_ids {
0085 UVERBS_ATTR_QUERY_PORT_PORT_NUM,
0086 UVERBS_ATTR_QUERY_PORT_RESP,
0087 };
0088
0089 enum uverbs_attrs_get_context_attr_ids {
0090 UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS,
0091 UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT,
0092 };
0093
0094 enum uverbs_attrs_query_context_attr_ids {
0095 UVERBS_ATTR_QUERY_CONTEXT_NUM_COMP_VECTORS,
0096 UVERBS_ATTR_QUERY_CONTEXT_CORE_SUPPORT,
0097 };
0098
0099 enum uverbs_attrs_create_cq_cmd_attr_ids {
0100 UVERBS_ATTR_CREATE_CQ_HANDLE,
0101 UVERBS_ATTR_CREATE_CQ_CQE,
0102 UVERBS_ATTR_CREATE_CQ_USER_HANDLE,
0103 UVERBS_ATTR_CREATE_CQ_COMP_CHANNEL,
0104 UVERBS_ATTR_CREATE_CQ_COMP_VECTOR,
0105 UVERBS_ATTR_CREATE_CQ_FLAGS,
0106 UVERBS_ATTR_CREATE_CQ_RESP_CQE,
0107 UVERBS_ATTR_CREATE_CQ_EVENT_FD,
0108 };
0109
0110 enum uverbs_attrs_destroy_cq_cmd_attr_ids {
0111 UVERBS_ATTR_DESTROY_CQ_HANDLE,
0112 UVERBS_ATTR_DESTROY_CQ_RESP,
0113 };
0114
0115 enum uverbs_attrs_create_flow_action_esp {
0116 UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE,
0117 UVERBS_ATTR_FLOW_ACTION_ESP_ATTRS,
0118 UVERBS_ATTR_FLOW_ACTION_ESP_ESN,
0119 UVERBS_ATTR_FLOW_ACTION_ESP_KEYMAT,
0120 UVERBS_ATTR_FLOW_ACTION_ESP_REPLAY,
0121 UVERBS_ATTR_FLOW_ACTION_ESP_ENCAP,
0122 };
0123
0124 enum uverbs_attrs_modify_flow_action_esp {
0125 UVERBS_ATTR_MODIFY_FLOW_ACTION_ESP_HANDLE =
0126 UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE,
0127 };
0128
0129 enum uverbs_attrs_destroy_flow_action_esp {
0130 UVERBS_ATTR_DESTROY_FLOW_ACTION_HANDLE,
0131 };
0132
0133 enum uverbs_attrs_create_qp_cmd_attr_ids {
0134 UVERBS_ATTR_CREATE_QP_HANDLE,
0135 UVERBS_ATTR_CREATE_QP_XRCD_HANDLE,
0136 UVERBS_ATTR_CREATE_QP_PD_HANDLE,
0137 UVERBS_ATTR_CREATE_QP_SRQ_HANDLE,
0138 UVERBS_ATTR_CREATE_QP_SEND_CQ_HANDLE,
0139 UVERBS_ATTR_CREATE_QP_RECV_CQ_HANDLE,
0140 UVERBS_ATTR_CREATE_QP_IND_TABLE_HANDLE,
0141 UVERBS_ATTR_CREATE_QP_USER_HANDLE,
0142 UVERBS_ATTR_CREATE_QP_CAP,
0143 UVERBS_ATTR_CREATE_QP_TYPE,
0144 UVERBS_ATTR_CREATE_QP_FLAGS,
0145 UVERBS_ATTR_CREATE_QP_SOURCE_QPN,
0146 UVERBS_ATTR_CREATE_QP_EVENT_FD,
0147 UVERBS_ATTR_CREATE_QP_RESP_CAP,
0148 UVERBS_ATTR_CREATE_QP_RESP_QP_NUM,
0149 };
0150
0151 enum uverbs_attrs_destroy_qp_cmd_attr_ids {
0152 UVERBS_ATTR_DESTROY_QP_HANDLE,
0153 UVERBS_ATTR_DESTROY_QP_RESP,
0154 };
0155
0156 enum uverbs_methods_qp {
0157 UVERBS_METHOD_QP_CREATE,
0158 UVERBS_METHOD_QP_DESTROY,
0159 };
0160
0161 enum uverbs_attrs_create_srq_cmd_attr_ids {
0162 UVERBS_ATTR_CREATE_SRQ_HANDLE,
0163 UVERBS_ATTR_CREATE_SRQ_PD_HANDLE,
0164 UVERBS_ATTR_CREATE_SRQ_XRCD_HANDLE,
0165 UVERBS_ATTR_CREATE_SRQ_CQ_HANDLE,
0166 UVERBS_ATTR_CREATE_SRQ_USER_HANDLE,
0167 UVERBS_ATTR_CREATE_SRQ_MAX_WR,
0168 UVERBS_ATTR_CREATE_SRQ_MAX_SGE,
0169 UVERBS_ATTR_CREATE_SRQ_LIMIT,
0170 UVERBS_ATTR_CREATE_SRQ_MAX_NUM_TAGS,
0171 UVERBS_ATTR_CREATE_SRQ_TYPE,
0172 UVERBS_ATTR_CREATE_SRQ_EVENT_FD,
0173 UVERBS_ATTR_CREATE_SRQ_RESP_MAX_WR,
0174 UVERBS_ATTR_CREATE_SRQ_RESP_MAX_SGE,
0175 UVERBS_ATTR_CREATE_SRQ_RESP_SRQ_NUM,
0176 };
0177
0178 enum uverbs_attrs_destroy_srq_cmd_attr_ids {
0179 UVERBS_ATTR_DESTROY_SRQ_HANDLE,
0180 UVERBS_ATTR_DESTROY_SRQ_RESP,
0181 };
0182
0183 enum uverbs_methods_srq {
0184 UVERBS_METHOD_SRQ_CREATE,
0185 UVERBS_METHOD_SRQ_DESTROY,
0186 };
0187
0188 enum uverbs_methods_cq {
0189 UVERBS_METHOD_CQ_CREATE,
0190 UVERBS_METHOD_CQ_DESTROY,
0191 };
0192
0193 enum uverbs_attrs_create_wq_cmd_attr_ids {
0194 UVERBS_ATTR_CREATE_WQ_HANDLE,
0195 UVERBS_ATTR_CREATE_WQ_PD_HANDLE,
0196 UVERBS_ATTR_CREATE_WQ_CQ_HANDLE,
0197 UVERBS_ATTR_CREATE_WQ_USER_HANDLE,
0198 UVERBS_ATTR_CREATE_WQ_TYPE,
0199 UVERBS_ATTR_CREATE_WQ_EVENT_FD,
0200 UVERBS_ATTR_CREATE_WQ_MAX_WR,
0201 UVERBS_ATTR_CREATE_WQ_MAX_SGE,
0202 UVERBS_ATTR_CREATE_WQ_FLAGS,
0203 UVERBS_ATTR_CREATE_WQ_RESP_MAX_WR,
0204 UVERBS_ATTR_CREATE_WQ_RESP_MAX_SGE,
0205 UVERBS_ATTR_CREATE_WQ_RESP_WQ_NUM,
0206 };
0207
0208 enum uverbs_attrs_destroy_wq_cmd_attr_ids {
0209 UVERBS_ATTR_DESTROY_WQ_HANDLE,
0210 UVERBS_ATTR_DESTROY_WQ_RESP,
0211 };
0212
0213 enum uverbs_methods_wq {
0214 UVERBS_METHOD_WQ_CREATE,
0215 UVERBS_METHOD_WQ_DESTROY,
0216 };
0217
0218 enum uverbs_methods_actions_flow_action_ops {
0219 UVERBS_METHOD_FLOW_ACTION_ESP_CREATE,
0220 UVERBS_METHOD_FLOW_ACTION_DESTROY,
0221 UVERBS_METHOD_FLOW_ACTION_ESP_MODIFY,
0222 };
0223
0224 enum uverbs_attrs_alloc_dm_cmd_attr_ids {
0225 UVERBS_ATTR_ALLOC_DM_HANDLE,
0226 UVERBS_ATTR_ALLOC_DM_LENGTH,
0227 UVERBS_ATTR_ALLOC_DM_ALIGNMENT,
0228 };
0229
0230 enum uverbs_attrs_free_dm_cmd_attr_ids {
0231 UVERBS_ATTR_FREE_DM_HANDLE,
0232 };
0233
0234 enum uverbs_methods_dm {
0235 UVERBS_METHOD_DM_ALLOC,
0236 UVERBS_METHOD_DM_FREE,
0237 };
0238
0239 enum uverbs_attrs_reg_dm_mr_cmd_attr_ids {
0240 UVERBS_ATTR_REG_DM_MR_HANDLE,
0241 UVERBS_ATTR_REG_DM_MR_OFFSET,
0242 UVERBS_ATTR_REG_DM_MR_LENGTH,
0243 UVERBS_ATTR_REG_DM_MR_PD_HANDLE,
0244 UVERBS_ATTR_REG_DM_MR_ACCESS_FLAGS,
0245 UVERBS_ATTR_REG_DM_MR_DM_HANDLE,
0246 UVERBS_ATTR_REG_DM_MR_RESP_LKEY,
0247 UVERBS_ATTR_REG_DM_MR_RESP_RKEY,
0248 };
0249
0250 enum uverbs_methods_mr {
0251 UVERBS_METHOD_DM_MR_REG,
0252 UVERBS_METHOD_MR_DESTROY,
0253 UVERBS_METHOD_ADVISE_MR,
0254 UVERBS_METHOD_QUERY_MR,
0255 UVERBS_METHOD_REG_DMABUF_MR,
0256 };
0257
0258 enum uverbs_attrs_mr_destroy_ids {
0259 UVERBS_ATTR_DESTROY_MR_HANDLE,
0260 };
0261
0262 enum uverbs_attrs_advise_mr_cmd_attr_ids {
0263 UVERBS_ATTR_ADVISE_MR_PD_HANDLE,
0264 UVERBS_ATTR_ADVISE_MR_ADVICE,
0265 UVERBS_ATTR_ADVISE_MR_FLAGS,
0266 UVERBS_ATTR_ADVISE_MR_SGE_LIST,
0267 };
0268
0269 enum uverbs_attrs_query_mr_cmd_attr_ids {
0270 UVERBS_ATTR_QUERY_MR_HANDLE,
0271 UVERBS_ATTR_QUERY_MR_RESP_LKEY,
0272 UVERBS_ATTR_QUERY_MR_RESP_RKEY,
0273 UVERBS_ATTR_QUERY_MR_RESP_LENGTH,
0274 UVERBS_ATTR_QUERY_MR_RESP_IOVA,
0275 };
0276
0277 enum uverbs_attrs_reg_dmabuf_mr_cmd_attr_ids {
0278 UVERBS_ATTR_REG_DMABUF_MR_HANDLE,
0279 UVERBS_ATTR_REG_DMABUF_MR_PD_HANDLE,
0280 UVERBS_ATTR_REG_DMABUF_MR_OFFSET,
0281 UVERBS_ATTR_REG_DMABUF_MR_LENGTH,
0282 UVERBS_ATTR_REG_DMABUF_MR_IOVA,
0283 UVERBS_ATTR_REG_DMABUF_MR_FD,
0284 UVERBS_ATTR_REG_DMABUF_MR_ACCESS_FLAGS,
0285 UVERBS_ATTR_REG_DMABUF_MR_RESP_LKEY,
0286 UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY,
0287 };
0288
0289 enum uverbs_attrs_create_counters_cmd_attr_ids {
0290 UVERBS_ATTR_CREATE_COUNTERS_HANDLE,
0291 };
0292
0293 enum uverbs_attrs_destroy_counters_cmd_attr_ids {
0294 UVERBS_ATTR_DESTROY_COUNTERS_HANDLE,
0295 };
0296
0297 enum uverbs_attrs_read_counters_cmd_attr_ids {
0298 UVERBS_ATTR_READ_COUNTERS_HANDLE,
0299 UVERBS_ATTR_READ_COUNTERS_BUFF,
0300 UVERBS_ATTR_READ_COUNTERS_FLAGS,
0301 };
0302
0303 enum uverbs_methods_actions_counters_ops {
0304 UVERBS_METHOD_COUNTERS_CREATE,
0305 UVERBS_METHOD_COUNTERS_DESTROY,
0306 UVERBS_METHOD_COUNTERS_READ,
0307 };
0308
0309 enum uverbs_attrs_info_handles_id {
0310 UVERBS_ATTR_INFO_OBJECT_ID,
0311 UVERBS_ATTR_INFO_TOTAL_HANDLES,
0312 UVERBS_ATTR_INFO_HANDLES_LIST,
0313 };
0314
0315 enum uverbs_methods_pd {
0316 UVERBS_METHOD_PD_DESTROY,
0317 };
0318
0319 enum uverbs_attrs_pd_destroy_ids {
0320 UVERBS_ATTR_DESTROY_PD_HANDLE,
0321 };
0322
0323 enum uverbs_methods_mw {
0324 UVERBS_METHOD_MW_DESTROY,
0325 };
0326
0327 enum uverbs_attrs_mw_destroy_ids {
0328 UVERBS_ATTR_DESTROY_MW_HANDLE,
0329 };
0330
0331 enum uverbs_methods_xrcd {
0332 UVERBS_METHOD_XRCD_DESTROY,
0333 };
0334
0335 enum uverbs_attrs_xrcd_destroy_ids {
0336 UVERBS_ATTR_DESTROY_XRCD_HANDLE,
0337 };
0338
0339 enum uverbs_methods_ah {
0340 UVERBS_METHOD_AH_DESTROY,
0341 };
0342
0343 enum uverbs_attrs_ah_destroy_ids {
0344 UVERBS_ATTR_DESTROY_AH_HANDLE,
0345 };
0346
0347 enum uverbs_methods_rwq_ind_tbl {
0348 UVERBS_METHOD_RWQ_IND_TBL_DESTROY,
0349 };
0350
0351 enum uverbs_attrs_rwq_ind_tbl_destroy_ids {
0352 UVERBS_ATTR_DESTROY_RWQ_IND_TBL_HANDLE,
0353 };
0354
0355 enum uverbs_methods_flow {
0356 UVERBS_METHOD_FLOW_DESTROY,
0357 };
0358
0359 enum uverbs_attrs_flow_destroy_ids {
0360 UVERBS_ATTR_DESTROY_FLOW_HANDLE,
0361 };
0362
0363 enum uverbs_method_async_event {
0364 UVERBS_METHOD_ASYNC_EVENT_ALLOC,
0365 };
0366
0367 enum uverbs_attrs_async_event_create {
0368 UVERBS_ATTR_ASYNC_EVENT_ALLOC_FD_HANDLE,
0369 };
0370
0371 enum uverbs_attrs_query_gid_table_cmd_attr_ids {
0372 UVERBS_ATTR_QUERY_GID_TABLE_ENTRY_SIZE,
0373 UVERBS_ATTR_QUERY_GID_TABLE_FLAGS,
0374 UVERBS_ATTR_QUERY_GID_TABLE_RESP_ENTRIES,
0375 UVERBS_ATTR_QUERY_GID_TABLE_RESP_NUM_ENTRIES,
0376 };
0377
0378 enum uverbs_attrs_query_gid_entry_cmd_attr_ids {
0379 UVERBS_ATTR_QUERY_GID_ENTRY_PORT,
0380 UVERBS_ATTR_QUERY_GID_ENTRY_GID_INDEX,
0381 UVERBS_ATTR_QUERY_GID_ENTRY_FLAGS,
0382 UVERBS_ATTR_QUERY_GID_ENTRY_RESP_ENTRY,
0383 };
0384
0385 #endif