Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright (c) 2018, Mellanox Technologies inc.  All rights reserved.
0003  *
0004  * This software is available to you under a choice of one of two
0005  * licenses.  You may choose to be licensed under the terms of the GNU
0006  * General Public License (GPL) Version 2, available from the file
0007  * COPYING in the main directory of this source tree, or the
0008  * OpenIB.org BSD license below:
0009  *
0010  *     Redistribution and use in source and binary forms, with or
0011  *     without modification, are permitted provided that the following
0012  *     conditions are met:
0013  *
0014  *      - Redistributions of source code must retain the above
0015  *        copyright notice, this list of conditions and the following
0016  *        disclaimer.
0017  *
0018  *      - Redistributions in binary form must reproduce the above
0019  *        copyright notice, this list of conditions and the following
0020  *        disclaimer in the documentation and/or other materials
0021  *        provided with the distribution.
0022  *
0023  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
0024  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
0025  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0026  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
0027  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
0028  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
0029  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
0030  * SOFTWARE.
0031  */
0032 
0033 #ifndef MLX5_USER_IOCTL_CMDS_H
0034 #define MLX5_USER_IOCTL_CMDS_H
0035 
0036 #include <linux/types.h>
0037 #include <rdma/ib_user_ioctl_cmds.h>
0038 
0039 enum mlx5_ib_create_flow_action_attrs {
0040     /* This attribute belong to the driver namespace */
0041     MLX5_IB_ATTR_CREATE_FLOW_ACTION_FLAGS = (1U << UVERBS_ID_NS_SHIFT),
0042 };
0043 
0044 enum mlx5_ib_dm_methods {
0045     MLX5_IB_METHOD_DM_MAP_OP_ADDR  = (1U << UVERBS_ID_NS_SHIFT),
0046     MLX5_IB_METHOD_DM_QUERY,
0047 };
0048 
0049 enum mlx5_ib_dm_map_op_addr_attrs {
0050     MLX5_IB_ATTR_DM_MAP_OP_ADDR_REQ_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0051     MLX5_IB_ATTR_DM_MAP_OP_ADDR_REQ_OP,
0052     MLX5_IB_ATTR_DM_MAP_OP_ADDR_RESP_START_OFFSET,
0053     MLX5_IB_ATTR_DM_MAP_OP_ADDR_RESP_PAGE_INDEX,
0054 };
0055 
0056 enum mlx5_ib_query_dm_attrs {
0057     MLX5_IB_ATTR_QUERY_DM_REQ_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0058     MLX5_IB_ATTR_QUERY_DM_RESP_START_OFFSET,
0059     MLX5_IB_ATTR_QUERY_DM_RESP_PAGE_INDEX,
0060     MLX5_IB_ATTR_QUERY_DM_RESP_LENGTH,
0061 };
0062 
0063 enum mlx5_ib_alloc_dm_attrs {
0064     MLX5_IB_ATTR_ALLOC_DM_RESP_START_OFFSET = (1U << UVERBS_ID_NS_SHIFT),
0065     MLX5_IB_ATTR_ALLOC_DM_RESP_PAGE_INDEX,
0066     MLX5_IB_ATTR_ALLOC_DM_REQ_TYPE,
0067 };
0068 
0069 enum mlx5_ib_devx_methods {
0070     MLX5_IB_METHOD_DEVX_OTHER  = (1U << UVERBS_ID_NS_SHIFT),
0071     MLX5_IB_METHOD_DEVX_QUERY_UAR,
0072     MLX5_IB_METHOD_DEVX_QUERY_EQN,
0073     MLX5_IB_METHOD_DEVX_SUBSCRIBE_EVENT,
0074 };
0075 
0076 enum  mlx5_ib_devx_other_attrs {
0077     MLX5_IB_ATTR_DEVX_OTHER_CMD_IN = (1U << UVERBS_ID_NS_SHIFT),
0078     MLX5_IB_ATTR_DEVX_OTHER_CMD_OUT,
0079 };
0080 
0081 enum mlx5_ib_devx_obj_create_attrs {
0082     MLX5_IB_ATTR_DEVX_OBJ_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0083     MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_IN,
0084     MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_OUT,
0085 };
0086 
0087 enum  mlx5_ib_devx_query_uar_attrs {
0088     MLX5_IB_ATTR_DEVX_QUERY_UAR_USER_IDX = (1U << UVERBS_ID_NS_SHIFT),
0089     MLX5_IB_ATTR_DEVX_QUERY_UAR_DEV_IDX,
0090 };
0091 
0092 enum mlx5_ib_devx_obj_destroy_attrs {
0093     MLX5_IB_ATTR_DEVX_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0094 };
0095 
0096 enum mlx5_ib_devx_obj_modify_attrs {
0097     MLX5_IB_ATTR_DEVX_OBJ_MODIFY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0098     MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN,
0099     MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_OUT,
0100 };
0101 
0102 enum mlx5_ib_devx_obj_query_attrs {
0103     MLX5_IB_ATTR_DEVX_OBJ_QUERY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0104     MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN,
0105     MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT,
0106 };
0107 
0108 enum mlx5_ib_devx_obj_query_async_attrs {
0109     MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0110     MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_CMD_IN,
0111     MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_FD,
0112     MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_WR_ID,
0113     MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_OUT_LEN,
0114 };
0115 
0116 enum mlx5_ib_devx_subscribe_event_attrs {
0117     MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0118     MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_OBJ_HANDLE,
0119     MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_TYPE_NUM_LIST,
0120     MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_NUM,
0121     MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_COOKIE,
0122 };
0123 
0124 enum  mlx5_ib_devx_query_eqn_attrs {
0125     MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC = (1U << UVERBS_ID_NS_SHIFT),
0126     MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN,
0127 };
0128 
0129 enum mlx5_ib_devx_obj_methods {
0130     MLX5_IB_METHOD_DEVX_OBJ_CREATE = (1U << UVERBS_ID_NS_SHIFT),
0131     MLX5_IB_METHOD_DEVX_OBJ_DESTROY,
0132     MLX5_IB_METHOD_DEVX_OBJ_MODIFY,
0133     MLX5_IB_METHOD_DEVX_OBJ_QUERY,
0134     MLX5_IB_METHOD_DEVX_OBJ_ASYNC_QUERY,
0135 };
0136 
0137 enum mlx5_ib_var_alloc_attrs {
0138     MLX5_IB_ATTR_VAR_OBJ_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0139     MLX5_IB_ATTR_VAR_OBJ_ALLOC_MMAP_OFFSET,
0140     MLX5_IB_ATTR_VAR_OBJ_ALLOC_MMAP_LENGTH,
0141     MLX5_IB_ATTR_VAR_OBJ_ALLOC_PAGE_ID,
0142 };
0143 
0144 enum mlx5_ib_var_obj_destroy_attrs {
0145     MLX5_IB_ATTR_VAR_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0146 };
0147 
0148 enum mlx5_ib_var_obj_methods {
0149     MLX5_IB_METHOD_VAR_OBJ_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
0150     MLX5_IB_METHOD_VAR_OBJ_DESTROY,
0151 };
0152 
0153 enum mlx5_ib_uar_alloc_attrs {
0154     MLX5_IB_ATTR_UAR_OBJ_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0155     MLX5_IB_ATTR_UAR_OBJ_ALLOC_TYPE,
0156     MLX5_IB_ATTR_UAR_OBJ_ALLOC_MMAP_OFFSET,
0157     MLX5_IB_ATTR_UAR_OBJ_ALLOC_MMAP_LENGTH,
0158     MLX5_IB_ATTR_UAR_OBJ_ALLOC_PAGE_ID,
0159 };
0160 
0161 enum mlx5_ib_uar_obj_destroy_attrs {
0162     MLX5_IB_ATTR_UAR_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0163 };
0164 
0165 enum mlx5_ib_uar_obj_methods {
0166     MLX5_IB_METHOD_UAR_OBJ_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
0167     MLX5_IB_METHOD_UAR_OBJ_DESTROY,
0168 };
0169 
0170 enum mlx5_ib_devx_umem_reg_attrs {
0171     MLX5_IB_ATTR_DEVX_UMEM_REG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0172     MLX5_IB_ATTR_DEVX_UMEM_REG_ADDR,
0173     MLX5_IB_ATTR_DEVX_UMEM_REG_LEN,
0174     MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
0175     MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
0176     MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
0177 };
0178 
0179 enum mlx5_ib_devx_umem_dereg_attrs {
0180     MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0181 };
0182 
0183 enum mlx5_ib_pp_obj_methods {
0184     MLX5_IB_METHOD_PP_OBJ_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
0185     MLX5_IB_METHOD_PP_OBJ_DESTROY,
0186 };
0187 
0188 enum mlx5_ib_pp_alloc_attrs {
0189     MLX5_IB_ATTR_PP_OBJ_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0190     MLX5_IB_ATTR_PP_OBJ_ALLOC_CTX,
0191     MLX5_IB_ATTR_PP_OBJ_ALLOC_FLAGS,
0192     MLX5_IB_ATTR_PP_OBJ_ALLOC_INDEX,
0193 };
0194 
0195 enum mlx5_ib_pp_obj_destroy_attrs {
0196     MLX5_IB_ATTR_PP_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0197 };
0198 
0199 enum mlx5_ib_devx_umem_methods {
0200     MLX5_IB_METHOD_DEVX_UMEM_REG = (1U << UVERBS_ID_NS_SHIFT),
0201     MLX5_IB_METHOD_DEVX_UMEM_DEREG,
0202 };
0203 
0204 enum mlx5_ib_devx_async_cmd_fd_alloc_attrs {
0205     MLX5_IB_ATTR_DEVX_ASYNC_CMD_FD_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0206 };
0207 
0208 enum mlx5_ib_devx_async_event_fd_alloc_attrs {
0209     MLX5_IB_ATTR_DEVX_ASYNC_EVENT_FD_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0210     MLX5_IB_ATTR_DEVX_ASYNC_EVENT_FD_ALLOC_FLAGS,
0211 };
0212 
0213 enum mlx5_ib_devx_async_cmd_fd_methods {
0214     MLX5_IB_METHOD_DEVX_ASYNC_CMD_FD_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
0215 };
0216 
0217 enum mlx5_ib_devx_async_event_fd_methods {
0218     MLX5_IB_METHOD_DEVX_ASYNC_EVENT_FD_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
0219 };
0220 
0221 enum mlx5_ib_objects {
0222     MLX5_IB_OBJECT_DEVX = (1U << UVERBS_ID_NS_SHIFT),
0223     MLX5_IB_OBJECT_DEVX_OBJ,
0224     MLX5_IB_OBJECT_DEVX_UMEM,
0225     MLX5_IB_OBJECT_FLOW_MATCHER,
0226     MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD,
0227     MLX5_IB_OBJECT_DEVX_ASYNC_EVENT_FD,
0228     MLX5_IB_OBJECT_VAR,
0229     MLX5_IB_OBJECT_PP,
0230     MLX5_IB_OBJECT_UAR,
0231     MLX5_IB_OBJECT_STEERING_ANCHOR,
0232 };
0233 
0234 enum mlx5_ib_flow_matcher_create_attrs {
0235     MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0236     MLX5_IB_ATTR_FLOW_MATCHER_MATCH_MASK,
0237     MLX5_IB_ATTR_FLOW_MATCHER_FLOW_TYPE,
0238     MLX5_IB_ATTR_FLOW_MATCHER_MATCH_CRITERIA,
0239     MLX5_IB_ATTR_FLOW_MATCHER_FLOW_FLAGS,
0240     MLX5_IB_ATTR_FLOW_MATCHER_FT_TYPE,
0241 };
0242 
0243 enum mlx5_ib_flow_matcher_destroy_attrs {
0244     MLX5_IB_ATTR_FLOW_MATCHER_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0245 };
0246 
0247 enum mlx5_ib_flow_matcher_methods {
0248     MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
0249     MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
0250 };
0251 
0252 enum mlx5_ib_flow_steering_anchor_create_attrs {
0253     MLX5_IB_ATTR_STEERING_ANCHOR_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0254     MLX5_IB_ATTR_STEERING_ANCHOR_FT_TYPE,
0255     MLX5_IB_ATTR_STEERING_ANCHOR_PRIORITY,
0256     MLX5_IB_ATTR_STEERING_ANCHOR_FT_ID,
0257 };
0258 
0259 enum mlx5_ib_flow_steering_anchor_destroy_attrs {
0260     MLX5_IB_ATTR_STEERING_ANCHOR_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0261 };
0262 
0263 enum mlx5_ib_steering_anchor_methods {
0264     MLX5_IB_METHOD_STEERING_ANCHOR_CREATE = (1U << UVERBS_ID_NS_SHIFT),
0265     MLX5_IB_METHOD_STEERING_ANCHOR_DESTROY,
0266 };
0267 
0268 enum mlx5_ib_device_query_context_attrs {
0269     MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
0270 };
0271 
0272 #define MLX5_IB_DW_MATCH_PARAM 0xA0
0273 
0274 struct mlx5_ib_match_params {
0275     __u32   match_params[MLX5_IB_DW_MATCH_PARAM];
0276 };
0277 
0278 enum mlx5_ib_flow_type {
0279     MLX5_IB_FLOW_TYPE_NORMAL,
0280     MLX5_IB_FLOW_TYPE_SNIFFER,
0281     MLX5_IB_FLOW_TYPE_ALL_DEFAULT,
0282     MLX5_IB_FLOW_TYPE_MC_DEFAULT,
0283 };
0284 
0285 enum mlx5_ib_create_flow_flags {
0286     MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DEFAULT_MISS = 1 << 0,
0287     MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DROP = 1 << 1,
0288 };
0289 
0290 enum mlx5_ib_create_flow_attrs {
0291     MLX5_IB_ATTR_CREATE_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0292     MLX5_IB_ATTR_CREATE_FLOW_MATCH_VALUE,
0293     MLX5_IB_ATTR_CREATE_FLOW_DEST_QP,
0294     MLX5_IB_ATTR_CREATE_FLOW_DEST_DEVX,
0295     MLX5_IB_ATTR_CREATE_FLOW_MATCHER,
0296     MLX5_IB_ATTR_CREATE_FLOW_ARR_FLOW_ACTIONS,
0297     MLX5_IB_ATTR_CREATE_FLOW_TAG,
0298     MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX,
0299     MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX_OFFSET,
0300     MLX5_IB_ATTR_CREATE_FLOW_FLAGS,
0301 };
0302 
0303 enum mlx5_ib_destroy_flow_attrs {
0304     MLX5_IB_ATTR_DESTROY_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0305 };
0306 
0307 enum mlx5_ib_flow_methods {
0308     MLX5_IB_METHOD_CREATE_FLOW = (1U << UVERBS_ID_NS_SHIFT),
0309     MLX5_IB_METHOD_DESTROY_FLOW,
0310 };
0311 
0312 enum mlx5_ib_flow_action_methods {
0313     MLX5_IB_METHOD_FLOW_ACTION_CREATE_MODIFY_HEADER = (1U << UVERBS_ID_NS_SHIFT),
0314     MLX5_IB_METHOD_FLOW_ACTION_CREATE_PACKET_REFORMAT,
0315 };
0316 
0317 enum mlx5_ib_create_flow_action_create_modify_header_attrs {
0318     MLX5_IB_ATTR_CREATE_MODIFY_HEADER_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0319     MLX5_IB_ATTR_CREATE_MODIFY_HEADER_ACTIONS_PRM,
0320     MLX5_IB_ATTR_CREATE_MODIFY_HEADER_FT_TYPE,
0321 };
0322 
0323 enum mlx5_ib_create_flow_action_create_packet_reformat_attrs {
0324     MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0325     MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_TYPE,
0326     MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_FT_TYPE,
0327     MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_DATA_BUF,
0328 };
0329 
0330 enum mlx5_ib_query_pd_attrs {
0331     MLX5_IB_ATTR_QUERY_PD_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
0332     MLX5_IB_ATTR_QUERY_PD_RESP_PDN,
0333 };
0334 
0335 enum mlx5_ib_pd_methods {
0336     MLX5_IB_METHOD_PD_QUERY = (1U << UVERBS_ID_NS_SHIFT),
0337 
0338 };
0339 
0340 enum mlx5_ib_device_methods {
0341     MLX5_IB_METHOD_QUERY_PORT = (1U << UVERBS_ID_NS_SHIFT),
0342 };
0343 
0344 enum mlx5_ib_query_port_attrs {
0345     MLX5_IB_ATTR_QUERY_PORT_PORT_NUM = (1U << UVERBS_ID_NS_SHIFT),
0346     MLX5_IB_ATTR_QUERY_PORT,
0347 };
0348 
0349 #endif