Commit | Line | Data |
---|---|---|
d50e14ab | 1 | /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */ |
e126ba97 | 2 | /* |
6cf0a15f | 3 | * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. |
e126ba97 EC |
4 | * |
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: | |
10 | * | |
11 | * Redistribution and use in source and binary forms, with or | |
12 | * without modification, are permitted provided that the following | |
13 | * conditions are met: | |
14 | * | |
15 | * - Redistributions of source code must retain the above | |
16 | * copyright notice, this list of conditions and the following | |
17 | * disclaimer. | |
18 | * | |
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. | |
23 | * | |
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 | |
31 | * SOFTWARE. | |
32 | */ | |
33 | ||
3085e29e LR |
34 | #ifndef MLX5_ABI_USER_H |
35 | #define MLX5_ABI_USER_H | |
e126ba97 EC |
36 | |
37 | #include <linux/types.h> | |
812755d6 | 38 | #include <linux/if_ether.h> /* For ETH_ALEN. */ |
3b3233fb | 39 | #include <rdma/ib_user_ioctl_verbs.h> |
d727d27d | 40 | #include <rdma/mlx5_user_ioctl_verbs.h> |
e126ba97 EC |
41 | |
42 | enum { | |
43 | MLX5_QP_FLAG_SIGNATURE = 1 << 0, | |
44 | MLX5_QP_FLAG_SCATTER_CQE = 1 << 1, | |
f95ef6cb | 45 | MLX5_QP_FLAG_TUNNEL_OFFLOADS = 1 << 2, |
1ee47ab3 | 46 | MLX5_QP_FLAG_BFREG_INDEX = 1 << 3, |
b4aaa1f0 MS |
47 | MLX5_QP_FLAG_TYPE_DCT = 1 << 4, |
48 | MLX5_QP_FLAG_TYPE_DCI = 1 << 5, | |
175edba8 MB |
49 | MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_UC = 1 << 6, |
50 | MLX5_QP_FLAG_TIR_ALLOW_SELF_LB_MC = 1 << 7, | |
6f4bc0ea | 51 | MLX5_QP_FLAG_ALLOW_SCATTER_CQE = 1 << 8, |
569c6651 | 52 | MLX5_QP_FLAG_PACKET_BASED_CREDIT_MODE = 1 << 9, |
ac42a5ee | 53 | MLX5_QP_FLAG_UAR_PAGE_INDEX = 1 << 10, |
11656f59 | 54 | MLX5_QP_FLAG_DCI_STREAM = 1 << 11, |
e126ba97 EC |
55 | }; |
56 | ||
57 | enum { | |
58 | MLX5_SRQ_FLAG_SIGNATURE = 1 << 0, | |
59 | }; | |
60 | ||
79b20a6c YH |
61 | enum { |
62 | MLX5_WQ_FLAG_SIGNATURE = 1 << 0, | |
63 | }; | |
64 | ||
e126ba97 EC |
65 | /* Increment this value if any changes that break userspace ABI |
66 | * compatibility are made. | |
67 | */ | |
68 | #define MLX5_IB_UVERBS_ABI_VERSION 1 | |
69 | ||
70 | /* Make sure that all structs defined in this file remain laid out so | |
71 | * that they pack the same way on 32-bit and 64-bit architectures (to | |
72 | * avoid incompatibility between 32-bit userspace and 64-bit kernels). | |
73 | * In particular do not use pointer types -- pass pointers in __u64 | |
74 | * instead. | |
75 | */ | |
76 | ||
77 | struct mlx5_ib_alloc_ucontext_req { | |
2f5ff264 EC |
78 | __u32 total_num_bfregs; |
79 | __u32 num_low_latency_bfregs; | |
e126ba97 EC |
80 | }; |
81 | ||
30aa60b3 | 82 | enum mlx5_lib_caps { |
812755d6 | 83 | MLX5_LIB_CAP_4K_UAR = (__u64)1 << 0, |
0a2fd01c | 84 | MLX5_LIB_CAP_DYN_UAR = (__u64)1 << 1, |
30aa60b3 EC |
85 | }; |
86 | ||
a8b92ca1 YH |
87 | enum mlx5_ib_alloc_uctx_v2_flags { |
88 | MLX5_IB_ALLOC_UCTX_DEVX = 1 << 0, | |
89 | }; | |
78c0f98c | 90 | struct mlx5_ib_alloc_ucontext_req_v2 { |
2f5ff264 EC |
91 | __u32 total_num_bfregs; |
92 | __u32 num_low_latency_bfregs; | |
78c0f98c | 93 | __u32 flags; |
b368d7cb | 94 | __u32 comp_mask; |
f72300c5 HA |
95 | __u8 max_cqe_version; |
96 | __u8 reserved0; | |
97 | __u16 reserved1; | |
98 | __u32 reserved2; | |
26b99066 | 99 | __aligned_u64 lib_caps; |
b368d7cb MB |
100 | }; |
101 | ||
102 | enum mlx5_ib_alloc_ucontext_resp_mask { | |
103 | MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0, | |
25bb36e7 | 104 | MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_DUMP_FILL_MKEY = 1UL << 1, |
5f62a521 | 105 | MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2, |
c906b86e | 106 | MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3, |
33652951 | 107 | MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4, |
13ad1125 | 108 | MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_MKEY_UPDATE_TAG = 1UL << 5, |
78c0f98c EC |
109 | }; |
110 | ||
402ca536 BW |
111 | enum mlx5_user_cmds_supp_uhw { |
112 | MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0, | |
6ad279c5 | 113 | MLX5_USER_CMDS_SUPP_UHW_CREATE_AH = 1 << 1, |
402ca536 BW |
114 | }; |
115 | ||
78984898 OG |
116 | /* The eth_min_inline response value is set to off-by-one vs the FW |
117 | * returned value to allow user-space to deal with older kernels. | |
118 | */ | |
119 | enum mlx5_user_inline_mode { | |
120 | MLX5_USER_INLINE_MODE_NA, | |
121 | MLX5_USER_INLINE_MODE_NONE, | |
122 | MLX5_USER_INLINE_MODE_L2, | |
123 | MLX5_USER_INLINE_MODE_IP, | |
124 | MLX5_USER_INLINE_MODE_TCP_UDP, | |
125 | }; | |
126 | ||
c03faa56 MB |
127 | enum { |
128 | MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM = 1 << 0, | |
129 | MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_REQ_METADATA = 1 << 1, | |
130 | MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_SPI_STEERING = 1 << 2, | |
131 | MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_FULL_OFFLOAD = 1 << 3, | |
132 | MLX5_USER_ALLOC_UCONTEXT_FLOW_ACTION_FLAGS_ESP_AES_GCM_TX_IV_IS_ESN = 1 << 4, | |
133 | }; | |
134 | ||
e126ba97 EC |
135 | struct mlx5_ib_alloc_ucontext_resp { |
136 | __u32 qp_tab_size; | |
137 | __u32 bf_reg_size; | |
2f5ff264 | 138 | __u32 tot_bfregs; |
e126ba97 EC |
139 | __u32 cache_line_size; |
140 | __u16 max_sq_desc_sz; | |
141 | __u16 max_rq_desc_sz; | |
142 | __u32 max_send_wqebb; | |
143 | __u32 max_recv_wr; | |
144 | __u32 max_srq_recv_wr; | |
145 | __u16 num_ports; | |
c03faa56 | 146 | __u16 flow_action_flags; |
b368d7cb MB |
147 | __u32 comp_mask; |
148 | __u32 response_length; | |
f72300c5 | 149 | __u8 cqe_version; |
402ca536 | 150 | __u8 cmds_supp_uhw; |
78984898 | 151 | __u8 eth_min_inline; |
5c99eaec | 152 | __u8 clock_info_versions; |
26b99066 | 153 | __aligned_u64 hca_core_clock_offset; |
30aa60b3 EC |
154 | __u32 log_uar_size; |
155 | __u32 num_uars_per_page; | |
31a78a5a | 156 | __u32 num_dyn_bfregs; |
25bb36e7 | 157 | __u32 dump_fill_mkey; |
e126ba97 EC |
158 | }; |
159 | ||
160 | struct mlx5_ib_alloc_pd_resp { | |
161 | __u32 pdn; | |
162 | }; | |
163 | ||
402ca536 BW |
164 | struct mlx5_ib_tso_caps { |
165 | __u32 max_tso; /* Maximum tso payload size in bytes */ | |
166 | ||
167 | /* Corresponding bit will be set if qp type from | |
168 | * 'enum ib_qp_type' is supported, e.g. | |
169 | * supported_qpts |= 1 << IB_QPT_UD | |
170 | */ | |
171 | __u32 supported_qpts; | |
172 | }; | |
173 | ||
31f69a82 | 174 | struct mlx5_ib_rss_caps { |
26b99066 | 175 | __aligned_u64 rx_hash_fields_mask; /* enum mlx5_rx_hash_fields */ |
31f69a82 YH |
176 | __u8 rx_hash_function; /* enum mlx5_rx_hash_function_flags */ |
177 | __u8 reserved[7]; | |
178 | }; | |
179 | ||
7e43a2a5 BW |
180 | enum mlx5_ib_cqe_comp_res_format { |
181 | MLX5_IB_CQE_RES_FORMAT_HASH = 1 << 0, | |
182 | MLX5_IB_CQE_RES_FORMAT_CSUM = 1 << 1, | |
6f1006a4 | 183 | MLX5_IB_CQE_RES_FORMAT_CSUM_STRIDX = 1 << 2, |
7e43a2a5 BW |
184 | }; |
185 | ||
186 | struct mlx5_ib_cqe_comp_caps { | |
187 | __u32 max_num; | |
188 | __u32 supported_format; /* enum mlx5_ib_cqe_comp_res_format */ | |
189 | }; | |
190 | ||
61147f39 BW |
191 | enum mlx5_ib_packet_pacing_cap_flags { |
192 | MLX5_IB_PP_SUPPORT_BURST = 1 << 0, | |
193 | }; | |
194 | ||
d949167d BW |
195 | struct mlx5_packet_pacing_caps { |
196 | __u32 qp_rate_limit_min; | |
197 | __u32 qp_rate_limit_max; /* In kpbs */ | |
198 | ||
199 | /* Corresponding bit will be set if qp type from | |
200 | * 'enum ib_qp_type' is supported, e.g. | |
201 | * supported_qpts |= 1 << IB_QPT_RAW_PACKET | |
202 | */ | |
203 | __u32 supported_qpts; | |
61147f39 BW |
204 | __u8 cap_flags; /* enum mlx5_ib_packet_pacing_cap_flags */ |
205 | __u8 reserved[3]; | |
d949167d BW |
206 | }; |
207 | ||
795b609c BW |
208 | enum mlx5_ib_mpw_caps { |
209 | MPW_RESERVED = 1 << 0, | |
210 | MLX5_IB_ALLOW_MPW = 1 << 1, | |
050da902 | 211 | MLX5_IB_SUPPORT_EMPW = 1 << 2, |
795b609c BW |
212 | }; |
213 | ||
96dc3fc5 NO |
214 | enum mlx5_ib_sw_parsing_offloads { |
215 | MLX5_IB_SW_PARSING = 1 << 0, | |
216 | MLX5_IB_SW_PARSING_CSUM = 1 << 1, | |
217 | MLX5_IB_SW_PARSING_LSO = 1 << 2, | |
218 | }; | |
219 | ||
220 | struct mlx5_ib_sw_parsing_caps { | |
221 | __u32 sw_parsing_offloads; /* enum mlx5_ib_sw_parsing_offloads */ | |
222 | ||
223 | /* Corresponding bit will be set if qp type from | |
224 | * 'enum ib_qp_type' is supported, e.g. | |
225 | * supported_qpts |= 1 << IB_QPT_RAW_PACKET | |
226 | */ | |
227 | __u32 supported_qpts; | |
228 | }; | |
229 | ||
b4f34597 NO |
230 | struct mlx5_ib_striding_rq_caps { |
231 | __u32 min_single_stride_log_num_of_bytes; | |
232 | __u32 max_single_stride_log_num_of_bytes; | |
233 | __u32 min_single_wqe_log_num_of_strides; | |
234 | __u32 max_single_wqe_log_num_of_strides; | |
235 | ||
236 | /* Corresponding bit will be set if qp type from | |
237 | * 'enum ib_qp_type' is supported, e.g. | |
238 | * supported_qpts |= 1 << IB_QPT_RAW_PACKET | |
239 | */ | |
240 | __u32 supported_qpts; | |
f17966f1 | 241 | __u32 reserved; |
b4f34597 NO |
242 | }; |
243 | ||
11656f59 LN |
244 | struct mlx5_ib_dci_streams_caps { |
245 | __u8 max_log_num_concurent; | |
246 | __u8 max_log_num_errored; | |
247 | }; | |
248 | ||
de57f2ad GL |
249 | enum mlx5_ib_query_dev_resp_flags { |
250 | /* Support 128B CQE compression */ | |
251 | MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_COMP = 1 << 0, | |
7a0c8f42 | 252 | MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_PAD = 1 << 1, |
7e11b911 | 253 | MLX5_IB_QUERY_DEV_RESP_PACKET_BASED_CREDIT_MODE = 1 << 2, |
7249c8ea | 254 | MLX5_IB_QUERY_DEV_RESP_FLAGS_SCAT2CQE_DCT = 1 << 3, |
8b36f7c3 | 255 | MLX5_IB_QUERY_DEV_RESP_FLAGS_OOO_DP = 1 << 4, |
de57f2ad GL |
256 | }; |
257 | ||
f95ef6cb MG |
258 | enum mlx5_ib_tunnel_offloads { |
259 | MLX5_IB_TUNNELED_OFFLOADS_VXLAN = 1 << 0, | |
260 | MLX5_IB_TUNNELED_OFFLOADS_GRE = 1 << 1, | |
e818e255 AL |
261 | MLX5_IB_TUNNELED_OFFLOADS_GENEVE = 1 << 2, |
262 | MLX5_IB_TUNNELED_OFFLOADS_MPLS_GRE = 1 << 3, | |
263 | MLX5_IB_TUNNELED_OFFLOADS_MPLS_UDP = 1 << 4, | |
f95ef6cb MG |
264 | }; |
265 | ||
402ca536 BW |
266 | struct mlx5_ib_query_device_resp { |
267 | __u32 comp_mask; | |
268 | __u32 response_length; | |
269 | struct mlx5_ib_tso_caps tso_caps; | |
31f69a82 | 270 | struct mlx5_ib_rss_caps rss_caps; |
7e43a2a5 | 271 | struct mlx5_ib_cqe_comp_caps cqe_comp_caps; |
d949167d | 272 | struct mlx5_packet_pacing_caps packet_pacing_caps; |
191ded4a | 273 | __u32 mlx5_ib_support_multi_pkt_send_wqes; |
de57f2ad | 274 | __u32 flags; /* Use enum mlx5_ib_query_dev_resp_flags */ |
96dc3fc5 | 275 | struct mlx5_ib_sw_parsing_caps sw_parsing_caps; |
b4f34597 | 276 | struct mlx5_ib_striding_rq_caps striding_rq_caps; |
f95ef6cb | 277 | __u32 tunnel_offloads_caps; /* enum mlx5_ib_tunnel_offloads */ |
11656f59 LN |
278 | struct mlx5_ib_dci_streams_caps dci_streams_caps; |
279 | __u16 reserved; | |
d727d27d | 280 | struct mlx5_ib_uapi_reg reg_c0; |
402ca536 BW |
281 | }; |
282 | ||
7a0c8f42 GL |
283 | enum mlx5_ib_create_cq_flags { |
284 | MLX5_IB_CREATE_CQ_FLAGS_CQE_128B_PAD = 1 << 0, | |
64d99f6a | 285 | MLX5_IB_CREATE_CQ_FLAGS_UAR_PAGE_INDEX = 1 << 1, |
33652951 | 286 | MLX5_IB_CREATE_CQ_FLAGS_REAL_TIME_TS = 1 << 2, |
402ca536 BW |
287 | }; |
288 | ||
e126ba97 | 289 | struct mlx5_ib_create_cq { |
26b99066 JG |
290 | __aligned_u64 buf_addr; |
291 | __aligned_u64 db_addr; | |
e126ba97 | 292 | __u32 cqe_size; |
1cbe6fc8 BW |
293 | __u8 cqe_comp_en; |
294 | __u8 cqe_comp_res_format; | |
7a0c8f42 | 295 | __u16 flags; |
64d99f6a YH |
296 | __u16 uar_page_index; |
297 | __u16 reserved0; | |
298 | __u32 reserved1; | |
e126ba97 EC |
299 | }; |
300 | ||
301 | struct mlx5_ib_create_cq_resp { | |
302 | __u32 cqn; | |
303 | __u32 reserved; | |
304 | }; | |
305 | ||
306 | struct mlx5_ib_resize_cq { | |
26b99066 | 307 | __aligned_u64 buf_addr; |
bde51583 EC |
308 | __u16 cqe_size; |
309 | __u16 reserved0; | |
310 | __u32 reserved1; | |
e126ba97 EC |
311 | }; |
312 | ||
313 | struct mlx5_ib_create_srq { | |
26b99066 JG |
314 | __aligned_u64 buf_addr; |
315 | __aligned_u64 db_addr; | |
e126ba97 | 316 | __u32 flags; |
cfb5e088 HA |
317 | __u32 reserved0; /* explicit padding (optional on i386) */ |
318 | __u32 uidx; | |
319 | __u32 reserved1; | |
e126ba97 EC |
320 | }; |
321 | ||
322 | struct mlx5_ib_create_srq_resp { | |
323 | __u32 srqn; | |
324 | __u32 reserved; | |
325 | }; | |
326 | ||
11656f59 LN |
327 | struct mlx5_ib_create_qp_dci_streams { |
328 | __u8 log_num_concurent; | |
329 | __u8 log_num_errored; | |
330 | }; | |
331 | ||
e126ba97 | 332 | struct mlx5_ib_create_qp { |
26b99066 JG |
333 | __aligned_u64 buf_addr; |
334 | __aligned_u64 db_addr; | |
e126ba97 EC |
335 | __u32 sq_wqe_count; |
336 | __u32 rq_wqe_count; | |
337 | __u32 rq_wqe_shift; | |
338 | __u32 flags; | |
cfb5e088 | 339 | __u32 uidx; |
1ee47ab3 | 340 | __u32 bfreg_index; |
b4aaa1f0 | 341 | union { |
26b99066 JG |
342 | __aligned_u64 sq_buf_addr; |
343 | __aligned_u64 access_key; | |
b4aaa1f0 | 344 | }; |
e383085c | 345 | __u32 ece_options; |
11656f59 LN |
346 | struct mlx5_ib_create_qp_dci_streams dci_streams; |
347 | __u16 reserved; | |
e126ba97 EC |
348 | }; |
349 | ||
28d61370 YH |
350 | /* RX Hash function flags */ |
351 | enum mlx5_rx_hash_function_flags { | |
352 | MLX5_RX_HASH_FUNC_TOEPLITZ = 1 << 0, | |
353 | }; | |
354 | ||
355 | /* | |
356 | * RX Hash flags, these flags allows to set which incoming packet's field should | |
357 | * participates in RX Hash. Each flag represent certain packet's field, | |
358 | * when the flag is set the field that is represented by the flag will | |
359 | * participate in RX Hash calculation. | |
360 | * Note: *IPV4 and *IPV6 flags can't be enabled together on the same QP | |
361 | * and *TCP and *UDP flags can't be enabled together on the same QP. | |
362 | */ | |
363 | enum mlx5_rx_hash_fields { | |
364 | MLX5_RX_HASH_SRC_IPV4 = 1 << 0, | |
365 | MLX5_RX_HASH_DST_IPV4 = 1 << 1, | |
366 | MLX5_RX_HASH_SRC_IPV6 = 1 << 2, | |
367 | MLX5_RX_HASH_DST_IPV6 = 1 << 3, | |
368 | MLX5_RX_HASH_SRC_PORT_TCP = 1 << 4, | |
369 | MLX5_RX_HASH_DST_PORT_TCP = 1 << 5, | |
370 | MLX5_RX_HASH_SRC_PORT_UDP = 1 << 6, | |
309fa347 | 371 | MLX5_RX_HASH_DST_PORT_UDP = 1 << 7, |
2d93fc85 | 372 | MLX5_RX_HASH_IPSEC_SPI = 1 << 8, |
309fa347 | 373 | /* Save bits for future fields */ |
4e2b53a5 | 374 | MLX5_RX_HASH_INNER = (1UL << 31), |
28d61370 YH |
375 | }; |
376 | ||
377 | struct mlx5_ib_create_qp_rss { | |
26b99066 | 378 | __aligned_u64 rx_hash_fields_mask; /* enum mlx5_rx_hash_fields */ |
28d61370 YH |
379 | __u8 rx_hash_function; /* enum mlx5_rx_hash_function_flags */ |
380 | __u8 rx_key_len; /* valid only for Toeplitz */ | |
381 | __u8 reserved[6]; | |
382 | __u8 rx_hash_key[128]; /* valid only for Toeplitz */ | |
383 | __u32 comp_mask; | |
f95ef6cb | 384 | __u32 flags; |
28d61370 YH |
385 | }; |
386 | ||
7f72052c YH |
387 | enum mlx5_ib_create_qp_resp_mask { |
388 | MLX5_IB_CREATE_QP_RESP_MASK_TIRN = 1UL << 0, | |
389 | MLX5_IB_CREATE_QP_RESP_MASK_TISN = 1UL << 1, | |
390 | MLX5_IB_CREATE_QP_RESP_MASK_RQN = 1UL << 2, | |
391 | MLX5_IB_CREATE_QP_RESP_MASK_SQN = 1UL << 3, | |
1f1d6abb | 392 | MLX5_IB_CREATE_QP_RESP_MASK_TIR_ICM_ADDR = 1UL << 4, |
7f72052c YH |
393 | }; |
394 | ||
e126ba97 | 395 | struct mlx5_ib_create_qp_resp { |
2f5ff264 | 396 | __u32 bfreg_index; |
3e09a427 | 397 | __u32 ece_options; |
7f72052c YH |
398 | __u32 comp_mask; |
399 | __u32 tirn; | |
400 | __u32 tisn; | |
401 | __u32 rqn; | |
402 | __u32 sqn; | |
403 | __u32 reserved1; | |
1f1d6abb | 404 | __u64 tir_icm_addr; |
e126ba97 | 405 | }; |
cfb5e088 | 406 | |
d2370e0a MB |
407 | struct mlx5_ib_alloc_mw { |
408 | __u32 comp_mask; | |
409 | __u8 num_klms; | |
410 | __u8 reserved1; | |
411 | __u16 reserved2; | |
412 | }; | |
413 | ||
ccc87087 NO |
414 | enum mlx5_ib_create_wq_mask { |
415 | MLX5_IB_CREATE_WQ_STRIDING_RQ = (1 << 0), | |
416 | }; | |
417 | ||
79b20a6c | 418 | struct mlx5_ib_create_wq { |
26b99066 JG |
419 | __aligned_u64 buf_addr; |
420 | __aligned_u64 db_addr; | |
79b20a6c YH |
421 | __u32 rq_wqe_count; |
422 | __u32 rq_wqe_shift; | |
423 | __u32 user_index; | |
424 | __u32 flags; | |
425 | __u32 comp_mask; | |
ccc87087 NO |
426 | __u32 single_stride_log_num_of_bytes; |
427 | __u32 single_wqe_log_num_of_strides; | |
428 | __u32 two_byte_shift_en; | |
79b20a6c YH |
429 | }; |
430 | ||
5097e71f MS |
431 | struct mlx5_ib_create_ah_resp { |
432 | __u32 response_length; | |
433 | __u8 dmac[ETH_ALEN]; | |
434 | __u8 reserved[6]; | |
435 | }; | |
436 | ||
61147f39 BW |
437 | struct mlx5_ib_burst_info { |
438 | __u32 max_burst_sz; | |
439 | __u16 typical_pkt_sz; | |
440 | __u16 reserved; | |
441 | }; | |
442 | ||
8b36f7c3 ES |
443 | enum mlx5_ib_modify_qp_mask { |
444 | MLX5_IB_MODIFY_QP_OOO_DP = 1 << 0, | |
445 | }; | |
446 | ||
61147f39 BW |
447 | struct mlx5_ib_modify_qp { |
448 | __u32 comp_mask; | |
449 | struct mlx5_ib_burst_info burst_info; | |
5f62a521 | 450 | __u32 ece_options; |
61147f39 BW |
451 | }; |
452 | ||
776a3906 MS |
453 | struct mlx5_ib_modify_qp_resp { |
454 | __u32 response_length; | |
455 | __u32 dctn; | |
50aec2c3 LR |
456 | __u32 ece_options; |
457 | __u32 reserved; | |
776a3906 MS |
458 | }; |
459 | ||
79b20a6c YH |
460 | struct mlx5_ib_create_wq_resp { |
461 | __u32 response_length; | |
462 | __u32 reserved; | |
463 | }; | |
464 | ||
c5f90929 YH |
465 | struct mlx5_ib_create_rwq_ind_tbl_resp { |
466 | __u32 response_length; | |
467 | __u32 reserved; | |
468 | }; | |
469 | ||
79b20a6c YH |
470 | struct mlx5_ib_modify_wq { |
471 | __u32 comp_mask; | |
472 | __u32 reserved; | |
473 | }; | |
24d33d2c FD |
474 | |
475 | struct mlx5_ib_clock_info { | |
476 | __u32 sign; | |
477 | __u32 resv; | |
26b99066 JG |
478 | __aligned_u64 nsec; |
479 | __aligned_u64 cycles; | |
480 | __aligned_u64 frac; | |
24d33d2c FD |
481 | __u32 mult; |
482 | __u32 shift; | |
26b99066 JG |
483 | __aligned_u64 mask; |
484 | __aligned_u64 overflow_period; | |
24d33d2c FD |
485 | }; |
486 | ||
5c99eaec FD |
487 | enum mlx5_ib_mmap_cmd { |
488 | MLX5_IB_MMAP_REGULAR_PAGE = 0, | |
489 | MLX5_IB_MMAP_GET_CONTIGUOUS_PAGES = 1, | |
490 | MLX5_IB_MMAP_WC_PAGE = 2, | |
491 | MLX5_IB_MMAP_NC_PAGE = 3, | |
492 | /* 5 is chosen in order to be compatible with old versions of libmlx5 */ | |
493 | MLX5_IB_MMAP_CORE_CLOCK = 5, | |
494 | MLX5_IB_MMAP_ALLOC_WC = 6, | |
495 | MLX5_IB_MMAP_CLOCK_INFO = 7, | |
24da0016 | 496 | MLX5_IB_MMAP_DEVICE_MEM = 8, |
5c99eaec FD |
497 | }; |
498 | ||
24d33d2c FD |
499 | enum { |
500 | MLX5_IB_CLOCK_INFO_KERNEL_UPDATING = 1, | |
501 | }; | |
5c99eaec FD |
502 | |
503 | /* Bit indexes for the mlx5_alloc_ucontext_resp.clock_info_versions bitmap */ | |
504 | enum { | |
505 | MLX5_IB_CLOCK_INFO_V1 = 0, | |
506 | }; | |
3b3233fb RS |
507 | |
508 | struct mlx5_ib_flow_counters_desc { | |
509 | __u32 description; | |
510 | __u32 index; | |
511 | }; | |
512 | ||
513 | struct mlx5_ib_flow_counters_data { | |
514 | RDMA_UAPI_PTR(struct mlx5_ib_flow_counters_desc *, counters_data); | |
515 | __u32 ncounters; | |
516 | __u32 reserved; | |
517 | }; | |
518 | ||
519 | struct mlx5_ib_create_flow { | |
520 | __u32 ncounters_data; | |
521 | __u32 reserved; | |
522 | /* | |
523 | * Following are counters data based on ncounters_data, each | |
524 | * entry in the data[] should match a corresponding counter object | |
525 | * that was pointed by a counters spec upon the flow creation | |
526 | */ | |
527 | struct mlx5_ib_flow_counters_data data[]; | |
528 | }; | |
529 | ||
3085e29e | 530 | #endif /* MLX5_ABI_USER_H */ |