blob: 9347cf36f3ebb93a827d114aea7fb6cb02f2e1a7 [file] [log] [blame]
Christopher Ferris6a9755d2017-01-13 14:09:31 -08001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 *** To edit the content of this header, modify the corresponding
11 *** source file (e.g. under external/kernel-headers/original/) then
12 *** run bionic/libc/kernel/tools/update_all.py
13 ***
14 *** Any manual change here will be lost the next time this script will
15 *** be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef MLX5_ABI_USER_H
20#define MLX5_ABI_USER_H
21#include <linux/types.h>
Christopher Ferris525ce912017-07-26 13:12:53 -070022#include <linux/if_ether.h>
Christopher Ferris6a9755d2017-01-13 14:09:31 -080023enum {
Christopher Ferris6a9755d2017-01-13 14:09:31 -080024 MLX5_QP_FLAG_SIGNATURE = 1 << 0,
25 MLX5_QP_FLAG_SCATTER_CQE = 1 << 1,
Christopher Ferris934ec942018-01-31 15:29:16 -080026 MLX5_QP_FLAG_TUNNEL_OFFLOADS = 1 << 2,
Christopher Ferris6a9755d2017-01-13 14:09:31 -080027};
28enum {
Christopher Ferris6a9755d2017-01-13 14:09:31 -080029 MLX5_SRQ_FLAG_SIGNATURE = 1 << 0,
30};
31enum {
32 MLX5_WQ_FLAG_SIGNATURE = 1 << 0,
Christopher Ferris6a9755d2017-01-13 14:09:31 -080033};
34#define MLX5_IB_UVERBS_ABI_VERSION 1
35struct mlx5_ib_alloc_ucontext_req {
Christopher Ferris525ce912017-07-26 13:12:53 -070036 __u32 total_num_bfregs;
37 __u32 num_low_latency_bfregs;
38};
39enum mlx5_lib_caps {
40 MLX5_LIB_CAP_4K_UAR = (__u64) 1 << 0,
Christopher Ferris6a9755d2017-01-13 14:09:31 -080041};
42struct mlx5_ib_alloc_ucontext_req_v2 {
Christopher Ferris525ce912017-07-26 13:12:53 -070043 __u32 total_num_bfregs;
44 __u32 num_low_latency_bfregs;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080045 __u32 flags;
46 __u32 comp_mask;
47 __u8 max_cqe_version;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080048 __u8 reserved0;
49 __u16 reserved1;
50 __u32 reserved2;
Christopher Ferris525ce912017-07-26 13:12:53 -070051 __u64 lib_caps;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080052};
Christopher Ferris6a9755d2017-01-13 14:09:31 -080053enum mlx5_ib_alloc_ucontext_resp_mask {
54 MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
55};
56enum mlx5_user_cmds_supp_uhw {
Christopher Ferris6a9755d2017-01-13 14:09:31 -080057 MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
Christopher Ferris48af7cb2017-02-21 12:35:09 -080058 MLX5_USER_CMDS_SUPP_UHW_CREATE_AH = 1 << 1,
Christopher Ferris6a9755d2017-01-13 14:09:31 -080059};
Christopher Ferris525ce912017-07-26 13:12:53 -070060enum mlx5_user_inline_mode {
61 MLX5_USER_INLINE_MODE_NA,
62 MLX5_USER_INLINE_MODE_NONE,
63 MLX5_USER_INLINE_MODE_L2,
64 MLX5_USER_INLINE_MODE_IP,
65 MLX5_USER_INLINE_MODE_TCP_UDP,
66};
Christopher Ferris6a9755d2017-01-13 14:09:31 -080067struct mlx5_ib_alloc_ucontext_resp {
Christopher Ferris48af7cb2017-02-21 12:35:09 -080068 __u32 qp_tab_size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080069 __u32 bf_reg_size;
Christopher Ferris525ce912017-07-26 13:12:53 -070070 __u32 tot_bfregs;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080071 __u32 cache_line_size;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080072 __u16 max_sq_desc_sz;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080073 __u16 max_rq_desc_sz;
74 __u32 max_send_wqebb;
75 __u32 max_recv_wr;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080076 __u32 max_srq_recv_wr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080077 __u16 num_ports;
78 __u16 reserved1;
79 __u32 comp_mask;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080080 __u32 response_length;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080081 __u8 cqe_version;
82 __u8 cmds_supp_uhw;
Christopher Ferris525ce912017-07-26 13:12:53 -070083 __u8 eth_min_inline;
84 __u8 reserved2;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080085 __u64 hca_core_clock_offset;
Christopher Ferris525ce912017-07-26 13:12:53 -070086 __u32 log_uar_size;
87 __u32 num_uars_per_page;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080088};
89struct mlx5_ib_alloc_pd_resp {
90 __u32 pdn;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080091};
Christopher Ferris6a9755d2017-01-13 14:09:31 -080092struct mlx5_ib_tso_caps {
93 __u32 max_tso;
94 __u32 supported_qpts;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080095};
Christopher Ferris6a9755d2017-01-13 14:09:31 -080096struct mlx5_ib_rss_caps {
97 __u64 rx_hash_fields_mask;
98 __u8 rx_hash_function;
99 __u8 reserved[7];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800100};
101enum mlx5_ib_cqe_comp_res_format {
102 MLX5_IB_CQE_RES_FORMAT_HASH = 1 << 0,
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800103 MLX5_IB_CQE_RES_FORMAT_CSUM = 1 << 1,
104 MLX5_IB_CQE_RES_RESERVED = 1 << 2,
105};
106struct mlx5_ib_cqe_comp_caps {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800107 __u32 max_num;
108 __u32 supported_format;
109};
110struct mlx5_packet_pacing_caps {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800111 __u32 qp_rate_limit_min;
112 __u32 qp_rate_limit_max;
113 __u32 supported_qpts;
114 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800115};
Christopher Ferris1308ad32017-11-14 17:32:13 -0800116enum mlx5_ib_mpw_caps {
117 MPW_RESERVED = 1 << 0,
118 MLX5_IB_ALLOW_MPW = 1 << 1,
119 MLX5_IB_SUPPORT_EMPW = 1 << 2,
120};
121enum mlx5_ib_sw_parsing_offloads {
122 MLX5_IB_SW_PARSING = 1 << 0,
123 MLX5_IB_SW_PARSING_CSUM = 1 << 1,
124 MLX5_IB_SW_PARSING_LSO = 1 << 2,
125};
126struct mlx5_ib_sw_parsing_caps {
127 __u32 sw_parsing_offloads;
128 __u32 supported_qpts;
129};
Christopher Ferris934ec942018-01-31 15:29:16 -0800130struct mlx5_ib_striding_rq_caps {
131 __u32 min_single_stride_log_num_of_bytes;
132 __u32 max_single_stride_log_num_of_bytes;
133 __u32 min_single_wqe_log_num_of_strides;
134 __u32 max_single_wqe_log_num_of_strides;
135 __u32 supported_qpts;
136 __u32 reserved;
137};
138enum mlx5_ib_query_dev_resp_flags {
139 MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_COMP = 1 << 0,
140 MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_PAD = 1 << 1,
141};
142enum mlx5_ib_tunnel_offloads {
143 MLX5_IB_TUNNELED_OFFLOADS_VXLAN = 1 << 0,
144 MLX5_IB_TUNNELED_OFFLOADS_GRE = 1 << 1,
145 MLX5_IB_TUNNELED_OFFLOADS_GENEVE = 1 << 2
146};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800147struct mlx5_ib_query_device_resp {
148 __u32 comp_mask;
149 __u32 response_length;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800150 struct mlx5_ib_tso_caps tso_caps;
151 struct mlx5_ib_rss_caps rss_caps;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800152 struct mlx5_ib_cqe_comp_caps cqe_comp_caps;
153 struct mlx5_packet_pacing_caps packet_pacing_caps;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800154 __u32 mlx5_ib_support_multi_pkt_send_wqes;
Christopher Ferris934ec942018-01-31 15:29:16 -0800155 __u32 flags;
Christopher Ferris1308ad32017-11-14 17:32:13 -0800156 struct mlx5_ib_sw_parsing_caps sw_parsing_caps;
Christopher Ferris934ec942018-01-31 15:29:16 -0800157 struct mlx5_ib_striding_rq_caps striding_rq_caps;
158 __u32 tunnel_offloads_caps;
159 __u32 reserved;
160};
161enum mlx5_ib_create_cq_flags {
162 MLX5_IB_CREATE_CQ_FLAGS_CQE_128B_PAD = 1 << 0,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800163};
164struct mlx5_ib_create_cq {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800165 __u64 buf_addr;
166 __u64 db_addr;
167 __u32 cqe_size;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800168 __u8 cqe_comp_en;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800169 __u8 cqe_comp_res_format;
Christopher Ferris934ec942018-01-31 15:29:16 -0800170 __u16 flags;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800171};
172struct mlx5_ib_create_cq_resp {
173 __u32 cqn;
174 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800175};
176struct mlx5_ib_resize_cq {
177 __u64 buf_addr;
178 __u16 cqe_size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800179 __u16 reserved0;
180 __u32 reserved1;
181};
182struct mlx5_ib_create_srq {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800183 __u64 buf_addr;
184 __u64 db_addr;
185 __u32 flags;
186 __u32 reserved0;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800187 __u32 uidx;
188 __u32 reserved1;
189};
190struct mlx5_ib_create_srq_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800191 __u32 srqn;
192 __u32 reserved;
193};
194struct mlx5_ib_create_qp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800195 __u64 buf_addr;
196 __u64 db_addr;
197 __u32 sq_wqe_count;
198 __u32 rq_wqe_count;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800199 __u32 rq_wqe_shift;
200 __u32 flags;
201 __u32 uidx;
202 __u32 reserved0;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800203 __u64 sq_buf_addr;
204};
205enum mlx5_rx_hash_function_flags {
206 MLX5_RX_HASH_FUNC_TOEPLITZ = 1 << 0,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800207};
208enum mlx5_rx_hash_fields {
209 MLX5_RX_HASH_SRC_IPV4 = 1 << 0,
210 MLX5_RX_HASH_DST_IPV4 = 1 << 1,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800211 MLX5_RX_HASH_SRC_IPV6 = 1 << 2,
212 MLX5_RX_HASH_DST_IPV6 = 1 << 3,
213 MLX5_RX_HASH_SRC_PORT_TCP = 1 << 4,
214 MLX5_RX_HASH_DST_PORT_TCP = 1 << 5,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800215 MLX5_RX_HASH_SRC_PORT_UDP = 1 << 6,
Christopher Ferris934ec942018-01-31 15:29:16 -0800216 MLX5_RX_HASH_DST_PORT_UDP = 1 << 7,
217 MLX5_RX_HASH_INNER = 1 << 31
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800218};
219struct mlx5_ib_create_qp_rss {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800220 __u64 rx_hash_fields_mask;
221 __u8 rx_hash_function;
222 __u8 rx_key_len;
223 __u8 reserved[6];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800224 __u8 rx_hash_key[128];
225 __u32 comp_mask;
Christopher Ferris934ec942018-01-31 15:29:16 -0800226 __u32 flags;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800227};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800228struct mlx5_ib_create_qp_resp {
Christopher Ferris525ce912017-07-26 13:12:53 -0700229 __u32 bfreg_index;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800230};
231struct mlx5_ib_alloc_mw {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800232 __u32 comp_mask;
233 __u8 num_klms;
234 __u8 reserved1;
235 __u16 reserved2;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800236};
Christopher Ferris934ec942018-01-31 15:29:16 -0800237enum mlx5_ib_create_wq_mask {
238 MLX5_IB_CREATE_WQ_STRIDING_RQ = (1 << 0),
239};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800240struct mlx5_ib_create_wq {
241 __u64 buf_addr;
242 __u64 db_addr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800243 __u32 rq_wqe_count;
244 __u32 rq_wqe_shift;
245 __u32 user_index;
246 __u32 flags;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800247 __u32 comp_mask;
Christopher Ferris934ec942018-01-31 15:29:16 -0800248 __u32 single_stride_log_num_of_bytes;
249 __u32 single_wqe_log_num_of_strides;
250 __u32 two_byte_shift_en;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800251};
252struct mlx5_ib_create_ah_resp {
253 __u32 response_length;
254 __u8 dmac[ETH_ALEN];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800255 __u8 reserved[6];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800256};
257struct mlx5_ib_create_wq_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800258 __u32 response_length;
259 __u32 reserved;
260};
261struct mlx5_ib_create_rwq_ind_tbl_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800262 __u32 response_length;
263 __u32 reserved;
264};
265struct mlx5_ib_modify_wq {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800266 __u32 comp_mask;
267 __u32 reserved;
268};
269#endif