mlx5-abi.h revision 525ce914edf136d2bd02ac8c404d56c52e737f4d
1/****************************************************************************
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>
22#include <linux/if_ether.h>
23enum {
24  MLX5_QP_FLAG_SIGNATURE = 1 << 0,
25  MLX5_QP_FLAG_SCATTER_CQE = 1 << 1,
26};
27enum {
28  MLX5_SRQ_FLAG_SIGNATURE = 1 << 0,
29};
30enum {
31  MLX5_WQ_FLAG_SIGNATURE = 1 << 0,
32};
33#define MLX5_IB_UVERBS_ABI_VERSION 1
34struct mlx5_ib_alloc_ucontext_req {
35  __u32 total_num_bfregs;
36  __u32 num_low_latency_bfregs;
37};
38enum mlx5_lib_caps {
39  MLX5_LIB_CAP_4K_UAR = (__u64) 1 << 0,
40};
41struct mlx5_ib_alloc_ucontext_req_v2 {
42  __u32 total_num_bfregs;
43  __u32 num_low_latency_bfregs;
44  __u32 flags;
45  __u32 comp_mask;
46  __u8 max_cqe_version;
47  __u8 reserved0;
48  __u16 reserved1;
49  __u32 reserved2;
50  __u64 lib_caps;
51};
52enum mlx5_ib_alloc_ucontext_resp_mask {
53  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
54};
55enum mlx5_user_cmds_supp_uhw {
56  MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
57  MLX5_USER_CMDS_SUPP_UHW_CREATE_AH = 1 << 1,
58};
59enum mlx5_user_inline_mode {
60  MLX5_USER_INLINE_MODE_NA,
61  MLX5_USER_INLINE_MODE_NONE,
62  MLX5_USER_INLINE_MODE_L2,
63  MLX5_USER_INLINE_MODE_IP,
64  MLX5_USER_INLINE_MODE_TCP_UDP,
65};
66struct mlx5_ib_alloc_ucontext_resp {
67  __u32 qp_tab_size;
68  __u32 bf_reg_size;
69  __u32 tot_bfregs;
70  __u32 cache_line_size;
71  __u16 max_sq_desc_sz;
72  __u16 max_rq_desc_sz;
73  __u32 max_send_wqebb;
74  __u32 max_recv_wr;
75  __u32 max_srq_recv_wr;
76  __u16 num_ports;
77  __u16 reserved1;
78  __u32 comp_mask;
79  __u32 response_length;
80  __u8 cqe_version;
81  __u8 cmds_supp_uhw;
82  __u8 eth_min_inline;
83  __u8 reserved2;
84  __u64 hca_core_clock_offset;
85  __u32 log_uar_size;
86  __u32 num_uars_per_page;
87};
88struct mlx5_ib_alloc_pd_resp {
89  __u32 pdn;
90};
91struct mlx5_ib_tso_caps {
92  __u32 max_tso;
93  __u32 supported_qpts;
94};
95struct mlx5_ib_rss_caps {
96  __u64 rx_hash_fields_mask;
97  __u8 rx_hash_function;
98  __u8 reserved[7];
99};
100enum mlx5_ib_cqe_comp_res_format {
101  MLX5_IB_CQE_RES_FORMAT_HASH = 1 << 0,
102  MLX5_IB_CQE_RES_FORMAT_CSUM = 1 << 1,
103  MLX5_IB_CQE_RES_RESERVED = 1 << 2,
104};
105struct mlx5_ib_cqe_comp_caps {
106  __u32 max_num;
107  __u32 supported_format;
108};
109struct mlx5_packet_pacing_caps {
110  __u32 qp_rate_limit_min;
111  __u32 qp_rate_limit_max;
112  __u32 supported_qpts;
113  __u32 reserved;
114};
115struct mlx5_ib_query_device_resp {
116  __u32 comp_mask;
117  __u32 response_length;
118  struct mlx5_ib_tso_caps tso_caps;
119  struct mlx5_ib_rss_caps rss_caps;
120  struct mlx5_ib_cqe_comp_caps cqe_comp_caps;
121  struct mlx5_packet_pacing_caps packet_pacing_caps;
122  __u32 mlx5_ib_support_multi_pkt_send_wqes;
123  __u32 reserved;
124};
125struct mlx5_ib_create_cq {
126  __u64 buf_addr;
127  __u64 db_addr;
128  __u32 cqe_size;
129  __u8 cqe_comp_en;
130  __u8 cqe_comp_res_format;
131  __u16 reserved;
132};
133struct mlx5_ib_create_cq_resp {
134  __u32 cqn;
135  __u32 reserved;
136};
137struct mlx5_ib_resize_cq {
138  __u64 buf_addr;
139  __u16 cqe_size;
140  __u16 reserved0;
141  __u32 reserved1;
142};
143struct mlx5_ib_create_srq {
144  __u64 buf_addr;
145  __u64 db_addr;
146  __u32 flags;
147  __u32 reserved0;
148  __u32 uidx;
149  __u32 reserved1;
150};
151struct mlx5_ib_create_srq_resp {
152  __u32 srqn;
153  __u32 reserved;
154};
155struct mlx5_ib_create_qp {
156  __u64 buf_addr;
157  __u64 db_addr;
158  __u32 sq_wqe_count;
159  __u32 rq_wqe_count;
160  __u32 rq_wqe_shift;
161  __u32 flags;
162  __u32 uidx;
163  __u32 reserved0;
164  __u64 sq_buf_addr;
165};
166enum mlx5_rx_hash_function_flags {
167  MLX5_RX_HASH_FUNC_TOEPLITZ = 1 << 0,
168};
169enum mlx5_rx_hash_fields {
170  MLX5_RX_HASH_SRC_IPV4 = 1 << 0,
171  MLX5_RX_HASH_DST_IPV4 = 1 << 1,
172  MLX5_RX_HASH_SRC_IPV6 = 1 << 2,
173  MLX5_RX_HASH_DST_IPV6 = 1 << 3,
174  MLX5_RX_HASH_SRC_PORT_TCP = 1 << 4,
175  MLX5_RX_HASH_DST_PORT_TCP = 1 << 5,
176  MLX5_RX_HASH_SRC_PORT_UDP = 1 << 6,
177  MLX5_RX_HASH_DST_PORT_UDP = 1 << 7
178};
179struct mlx5_ib_create_qp_rss {
180  __u64 rx_hash_fields_mask;
181  __u8 rx_hash_function;
182  __u8 rx_key_len;
183  __u8 reserved[6];
184  __u8 rx_hash_key[128];
185  __u32 comp_mask;
186  __u32 reserved1;
187};
188struct mlx5_ib_create_qp_resp {
189  __u32 bfreg_index;
190};
191struct mlx5_ib_alloc_mw {
192  __u32 comp_mask;
193  __u8 num_klms;
194  __u8 reserved1;
195  __u16 reserved2;
196};
197struct mlx5_ib_create_wq {
198  __u64 buf_addr;
199  __u64 db_addr;
200  __u32 rq_wqe_count;
201  __u32 rq_wqe_shift;
202  __u32 user_index;
203  __u32 flags;
204  __u32 comp_mask;
205  __u32 reserved;
206};
207struct mlx5_ib_create_ah_resp {
208  __u32 response_length;
209  __u8 dmac[ETH_ALEN];
210  __u8 reserved[6];
211};
212struct mlx5_ib_create_wq_resp {
213  __u32 response_length;
214  __u32 reserved;
215};
216struct mlx5_ib_create_rwq_ind_tbl_resp {
217  __u32 response_length;
218  __u32 reserved;
219};
220struct mlx5_ib_modify_wq {
221  __u32 comp_mask;
222  __u32 reserved;
223};
224#endif
225