2 * Copyright (c) 2018, Mellanox Technologies inc. All rights reserved.
4 * This software is available to you under a choice of one of two
5 * licenses. You may choose to be licensed under the terms of the GNU
6 * General Public License (GPL) Version 2, available from the file
7 * COPYING in the main directory of this source tree, or the
8 * OpenIB.org BSD license below:
10 * Redistribution and use in source and binary forms, with or
11 * without modification, are permitted provided that the following
14 * - Redistributions of source code must retain the above
15 * copyright notice, this list of conditions and the following
18 * - Redistributions in binary form must reproduce the above
19 * copyright notice, this list of conditions and the following
20 * disclaimer in the documentation and/or other materials
21 * provided with the distribution.
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
33 #ifndef MLX5_USER_IOCTL_CMDS_H
34 #define MLX5_USER_IOCTL_CMDS_H
36 #include <linux/types.h>
37 #include <rdma/ib_user_ioctl_cmds.h>
39 enum mlx5_ib_create_flow_action_attrs
{
40 /* This attribute belong to the driver namespace */
41 MLX5_IB_ATTR_CREATE_FLOW_ACTION_FLAGS
= (1U << UVERBS_ID_NS_SHIFT
),
44 enum mlx5_ib_alloc_dm_attrs
{
45 MLX5_IB_ATTR_ALLOC_DM_RESP_START_OFFSET
= (1U << UVERBS_ID_NS_SHIFT
),
46 MLX5_IB_ATTR_ALLOC_DM_RESP_PAGE_INDEX
,
47 MLX5_IB_ATTR_ALLOC_DM_REQ_TYPE
,
50 enum mlx5_ib_devx_methods
{
51 MLX5_IB_METHOD_DEVX_OTHER
= (1U << UVERBS_ID_NS_SHIFT
),
52 MLX5_IB_METHOD_DEVX_QUERY_UAR
,
53 MLX5_IB_METHOD_DEVX_QUERY_EQN
,
54 MLX5_IB_METHOD_DEVX_SUBSCRIBE_EVENT
,
57 enum mlx5_ib_devx_other_attrs
{
58 MLX5_IB_ATTR_DEVX_OTHER_CMD_IN
= (1U << UVERBS_ID_NS_SHIFT
),
59 MLX5_IB_ATTR_DEVX_OTHER_CMD_OUT
,
62 enum mlx5_ib_devx_obj_create_attrs
{
63 MLX5_IB_ATTR_DEVX_OBJ_CREATE_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
64 MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_IN
,
65 MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_OUT
,
68 enum mlx5_ib_devx_query_uar_attrs
{
69 MLX5_IB_ATTR_DEVX_QUERY_UAR_USER_IDX
= (1U << UVERBS_ID_NS_SHIFT
),
70 MLX5_IB_ATTR_DEVX_QUERY_UAR_DEV_IDX
,
73 enum mlx5_ib_devx_obj_destroy_attrs
{
74 MLX5_IB_ATTR_DEVX_OBJ_DESTROY_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
77 enum mlx5_ib_devx_obj_modify_attrs
{
78 MLX5_IB_ATTR_DEVX_OBJ_MODIFY_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
79 MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN
,
80 MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_OUT
,
83 enum mlx5_ib_devx_obj_query_attrs
{
84 MLX5_IB_ATTR_DEVX_OBJ_QUERY_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
85 MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN
,
86 MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT
,
89 enum mlx5_ib_devx_obj_query_async_attrs
{
90 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
91 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_CMD_IN
,
92 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_FD
,
93 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_WR_ID
,
94 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_OUT_LEN
,
97 enum mlx5_ib_devx_subscribe_event_attrs
{
98 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
99 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_OBJ_HANDLE
,
100 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_TYPE_NUM_LIST
,
101 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_FD_NUM
,
102 MLX5_IB_ATTR_DEVX_SUBSCRIBE_EVENT_COOKIE
,
105 enum mlx5_ib_devx_query_eqn_attrs
{
106 MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC
= (1U << UVERBS_ID_NS_SHIFT
),
107 MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN
,
110 enum mlx5_ib_devx_obj_methods
{
111 MLX5_IB_METHOD_DEVX_OBJ_CREATE
= (1U << UVERBS_ID_NS_SHIFT
),
112 MLX5_IB_METHOD_DEVX_OBJ_DESTROY
,
113 MLX5_IB_METHOD_DEVX_OBJ_MODIFY
,
114 MLX5_IB_METHOD_DEVX_OBJ_QUERY
,
115 MLX5_IB_METHOD_DEVX_OBJ_ASYNC_QUERY
,
118 enum mlx5_ib_var_alloc_attrs
{
119 MLX5_IB_ATTR_VAR_OBJ_ALLOC_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
120 MLX5_IB_ATTR_VAR_OBJ_ALLOC_MMAP_OFFSET
,
121 MLX5_IB_ATTR_VAR_OBJ_ALLOC_MMAP_LENGTH
,
122 MLX5_IB_ATTR_VAR_OBJ_ALLOC_PAGE_ID
,
125 enum mlx5_ib_var_obj_destroy_attrs
{
126 MLX5_IB_ATTR_VAR_OBJ_DESTROY_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
129 enum mlx5_ib_var_obj_methods
{
130 MLX5_IB_METHOD_VAR_OBJ_ALLOC
= (1U << UVERBS_ID_NS_SHIFT
),
131 MLX5_IB_METHOD_VAR_OBJ_DESTROY
,
134 enum mlx5_ib_devx_umem_reg_attrs
{
135 MLX5_IB_ATTR_DEVX_UMEM_REG_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
136 MLX5_IB_ATTR_DEVX_UMEM_REG_ADDR
,
137 MLX5_IB_ATTR_DEVX_UMEM_REG_LEN
,
138 MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS
,
139 MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID
,
142 enum mlx5_ib_devx_umem_dereg_attrs
{
143 MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
146 enum mlx5_ib_devx_umem_methods
{
147 MLX5_IB_METHOD_DEVX_UMEM_REG
= (1U << UVERBS_ID_NS_SHIFT
),
148 MLX5_IB_METHOD_DEVX_UMEM_DEREG
,
151 enum mlx5_ib_devx_async_cmd_fd_alloc_attrs
{
152 MLX5_IB_ATTR_DEVX_ASYNC_CMD_FD_ALLOC_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
155 enum mlx5_ib_devx_async_event_fd_alloc_attrs
{
156 MLX5_IB_ATTR_DEVX_ASYNC_EVENT_FD_ALLOC_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
157 MLX5_IB_ATTR_DEVX_ASYNC_EVENT_FD_ALLOC_FLAGS
,
160 enum mlx5_ib_devx_async_cmd_fd_methods
{
161 MLX5_IB_METHOD_DEVX_ASYNC_CMD_FD_ALLOC
= (1U << UVERBS_ID_NS_SHIFT
),
164 enum mlx5_ib_devx_async_event_fd_methods
{
165 MLX5_IB_METHOD_DEVX_ASYNC_EVENT_FD_ALLOC
= (1U << UVERBS_ID_NS_SHIFT
),
168 enum mlx5_ib_objects
{
169 MLX5_IB_OBJECT_DEVX
= (1U << UVERBS_ID_NS_SHIFT
),
170 MLX5_IB_OBJECT_DEVX_OBJ
,
171 MLX5_IB_OBJECT_DEVX_UMEM
,
172 MLX5_IB_OBJECT_FLOW_MATCHER
,
173 MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD
,
174 MLX5_IB_OBJECT_DEVX_ASYNC_EVENT_FD
,
178 enum mlx5_ib_flow_matcher_create_attrs
{
179 MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
180 MLX5_IB_ATTR_FLOW_MATCHER_MATCH_MASK
,
181 MLX5_IB_ATTR_FLOW_MATCHER_FLOW_TYPE
,
182 MLX5_IB_ATTR_FLOW_MATCHER_MATCH_CRITERIA
,
183 MLX5_IB_ATTR_FLOW_MATCHER_FLOW_FLAGS
,
184 MLX5_IB_ATTR_FLOW_MATCHER_FT_TYPE
,
187 enum mlx5_ib_flow_matcher_destroy_attrs
{
188 MLX5_IB_ATTR_FLOW_MATCHER_DESTROY_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
191 enum mlx5_ib_flow_matcher_methods
{
192 MLX5_IB_METHOD_FLOW_MATCHER_CREATE
= (1U << UVERBS_ID_NS_SHIFT
),
193 MLX5_IB_METHOD_FLOW_MATCHER_DESTROY
,
196 #define MLX5_IB_DW_MATCH_PARAM 0x80
198 struct mlx5_ib_match_params
{
199 __u32 match_params
[MLX5_IB_DW_MATCH_PARAM
];
202 enum mlx5_ib_flow_type
{
203 MLX5_IB_FLOW_TYPE_NORMAL
,
204 MLX5_IB_FLOW_TYPE_SNIFFER
,
205 MLX5_IB_FLOW_TYPE_ALL_DEFAULT
,
206 MLX5_IB_FLOW_TYPE_MC_DEFAULT
,
209 enum mlx5_ib_create_flow_attrs
{
210 MLX5_IB_ATTR_CREATE_FLOW_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
211 MLX5_IB_ATTR_CREATE_FLOW_MATCH_VALUE
,
212 MLX5_IB_ATTR_CREATE_FLOW_DEST_QP
,
213 MLX5_IB_ATTR_CREATE_FLOW_DEST_DEVX
,
214 MLX5_IB_ATTR_CREATE_FLOW_MATCHER
,
215 MLX5_IB_ATTR_CREATE_FLOW_ARR_FLOW_ACTIONS
,
216 MLX5_IB_ATTR_CREATE_FLOW_TAG
,
217 MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX
,
218 MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX_OFFSET
,
221 enum mlx5_ib_destoy_flow_attrs
{
222 MLX5_IB_ATTR_DESTROY_FLOW_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
225 enum mlx5_ib_flow_methods
{
226 MLX5_IB_METHOD_CREATE_FLOW
= (1U << UVERBS_ID_NS_SHIFT
),
227 MLX5_IB_METHOD_DESTROY_FLOW
,
230 enum mlx5_ib_flow_action_methods
{
231 MLX5_IB_METHOD_FLOW_ACTION_CREATE_MODIFY_HEADER
= (1U << UVERBS_ID_NS_SHIFT
),
232 MLX5_IB_METHOD_FLOW_ACTION_CREATE_PACKET_REFORMAT
,
235 enum mlx5_ib_create_flow_action_create_modify_header_attrs
{
236 MLX5_IB_ATTR_CREATE_MODIFY_HEADER_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
237 MLX5_IB_ATTR_CREATE_MODIFY_HEADER_ACTIONS_PRM
,
238 MLX5_IB_ATTR_CREATE_MODIFY_HEADER_FT_TYPE
,
241 enum mlx5_ib_create_flow_action_create_packet_reformat_attrs
{
242 MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_HANDLE
= (1U << UVERBS_ID_NS_SHIFT
),
243 MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_TYPE
,
244 MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_FT_TYPE
,
245 MLX5_IB_ATTR_CREATE_PACKET_REFORMAT_DATA_BUF
,