blob: 3154b7a5c9867159f8bc9f1b71c8581411bb86a6 [file] [log] [blame]
Ben Cheng655a7c02013-10-16 16:09:24 -07001/****************************************************************************
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 IB_USER_VERBS_H
20#define IB_USER_VERBS_H
21#include <linux/types.h>
22#define IB_USER_VERBS_ABI_VERSION 6
Christopher Ferris38062f92014-07-09 15:33:25 -070023#define IB_USER_VERBS_CMD_THRESHOLD 50
Christopher Ferrisd842e432019-03-07 10:21:59 -080024enum ib_uverbs_write_cmds {
Tao Baod7db5942015-01-28 10:07:51 -080025 IB_USER_VERBS_CMD_GET_CONTEXT,
26 IB_USER_VERBS_CMD_QUERY_DEVICE,
Tao Baod7db5942015-01-28 10:07:51 -080027 IB_USER_VERBS_CMD_QUERY_PORT,
28 IB_USER_VERBS_CMD_ALLOC_PD,
29 IB_USER_VERBS_CMD_DEALLOC_PD,
30 IB_USER_VERBS_CMD_CREATE_AH,
Tao Baod7db5942015-01-28 10:07:51 -080031 IB_USER_VERBS_CMD_MODIFY_AH,
32 IB_USER_VERBS_CMD_QUERY_AH,
33 IB_USER_VERBS_CMD_DESTROY_AH,
34 IB_USER_VERBS_CMD_REG_MR,
Tao Baod7db5942015-01-28 10:07:51 -080035 IB_USER_VERBS_CMD_REG_SMR,
36 IB_USER_VERBS_CMD_REREG_MR,
37 IB_USER_VERBS_CMD_QUERY_MR,
38 IB_USER_VERBS_CMD_DEREG_MR,
Tao Baod7db5942015-01-28 10:07:51 -080039 IB_USER_VERBS_CMD_ALLOC_MW,
40 IB_USER_VERBS_CMD_BIND_MW,
41 IB_USER_VERBS_CMD_DEALLOC_MW,
42 IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL,
Tao Baod7db5942015-01-28 10:07:51 -080043 IB_USER_VERBS_CMD_CREATE_CQ,
44 IB_USER_VERBS_CMD_RESIZE_CQ,
45 IB_USER_VERBS_CMD_DESTROY_CQ,
46 IB_USER_VERBS_CMD_POLL_CQ,
Tao Baod7db5942015-01-28 10:07:51 -080047 IB_USER_VERBS_CMD_PEEK_CQ,
48 IB_USER_VERBS_CMD_REQ_NOTIFY_CQ,
49 IB_USER_VERBS_CMD_CREATE_QP,
50 IB_USER_VERBS_CMD_QUERY_QP,
Tao Baod7db5942015-01-28 10:07:51 -080051 IB_USER_VERBS_CMD_MODIFY_QP,
52 IB_USER_VERBS_CMD_DESTROY_QP,
53 IB_USER_VERBS_CMD_POST_SEND,
54 IB_USER_VERBS_CMD_POST_RECV,
Tao Baod7db5942015-01-28 10:07:51 -080055 IB_USER_VERBS_CMD_ATTACH_MCAST,
56 IB_USER_VERBS_CMD_DETACH_MCAST,
57 IB_USER_VERBS_CMD_CREATE_SRQ,
58 IB_USER_VERBS_CMD_MODIFY_SRQ,
Tao Baod7db5942015-01-28 10:07:51 -080059 IB_USER_VERBS_CMD_QUERY_SRQ,
60 IB_USER_VERBS_CMD_DESTROY_SRQ,
61 IB_USER_VERBS_CMD_POST_SRQ_RECV,
62 IB_USER_VERBS_CMD_OPEN_XRCD,
Tao Baod7db5942015-01-28 10:07:51 -080063 IB_USER_VERBS_CMD_CLOSE_XRCD,
64 IB_USER_VERBS_CMD_CREATE_XSRQ,
65 IB_USER_VERBS_CMD_OPEN_QP,
Ben Cheng655a7c02013-10-16 16:09:24 -070066};
Christopher Ferris38062f92014-07-09 15:33:25 -070067enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -080068 IB_USER_VERBS_EX_CMD_QUERY_DEVICE = IB_USER_VERBS_CMD_QUERY_DEVICE,
69 IB_USER_VERBS_EX_CMD_CREATE_CQ = IB_USER_VERBS_CMD_CREATE_CQ,
70 IB_USER_VERBS_EX_CMD_CREATE_QP = IB_USER_VERBS_CMD_CREATE_QP,
Christopher Ferris48af7cb2017-02-21 12:35:09 -080071 IB_USER_VERBS_EX_CMD_MODIFY_QP = IB_USER_VERBS_CMD_MODIFY_QP,
Christopher Ferris05d08e92016-02-04 13:16:38 -080072 IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
73 IB_USER_VERBS_EX_CMD_DESTROY_FLOW,
Christopher Ferris49f525c2016-12-12 14:55:36 -080074 IB_USER_VERBS_EX_CMD_CREATE_WQ,
Christopher Ferris48af7cb2017-02-21 12:35:09 -080075 IB_USER_VERBS_EX_CMD_MODIFY_WQ,
Christopher Ferris49f525c2016-12-12 14:55:36 -080076 IB_USER_VERBS_EX_CMD_DESTROY_WQ,
77 IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL,
Christopher Ferris934ec942018-01-31 15:29:16 -080078 IB_USER_VERBS_EX_CMD_DESTROY_RWQ_IND_TBL,
79 IB_USER_VERBS_EX_CMD_MODIFY_CQ
Christopher Ferris48af7cb2017-02-21 12:35:09 -080080};
Christopher Ferris49f525c2016-12-12 14:55:36 -080081struct ib_uverbs_async_event_desc {
Christopher Ferris76a1d452018-06-27 14:12:29 -070082 __aligned_u64 element;
Tao Baod7db5942015-01-28 10:07:51 -080083 __u32 event_type;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080084 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -080085};
Ben Cheng655a7c02013-10-16 16:09:24 -070086struct ib_uverbs_comp_event_desc {
Christopher Ferris76a1d452018-06-27 14:12:29 -070087 __aligned_u64 cq_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080088};
Christopher Ferris934ec942018-01-31 15:29:16 -080089struct ib_uverbs_cq_moderation_caps {
90 __u16 max_cq_moderation_count;
91 __u16 max_cq_moderation_period;
92 __u32 reserved;
93};
Christopher Ferris49f525c2016-12-12 14:55:36 -080094#define IB_USER_VERBS_CMD_COMMAND_MASK 0xff
Christopher Ferris76a1d452018-06-27 14:12:29 -070095#define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80000000u
Christopher Ferris49f525c2016-12-12 14:55:36 -080096struct ib_uverbs_cmd_hdr {
Tao Baod7db5942015-01-28 10:07:51 -080097 __u32 command;
98 __u16 in_words;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080099 __u16 out_words;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800100};
Christopher Ferris38062f92014-07-09 15:33:25 -0700101struct ib_uverbs_ex_cmd_hdr {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700102 __aligned_u64 response;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800103 __u16 provider_in_words;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800104 __u16 provider_out_words;
Tao Baod7db5942015-01-28 10:07:51 -0800105 __u32 cmd_hdr_reserved;
Christopher Ferris38062f92014-07-09 15:33:25 -0700106};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800107struct ib_uverbs_get_context {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700108 __aligned_u64 response;
109 __aligned_u64 driver_data[0];
Ben Cheng655a7c02013-10-16 16:09:24 -0700110};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800111struct ib_uverbs_get_context_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800112 __u32 async_fd;
Tao Baod7db5942015-01-28 10:07:51 -0800113 __u32 num_comp_vectors;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800114 __aligned_u64 driver_data[0];
Ben Cheng655a7c02013-10-16 16:09:24 -0700115};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800116struct ib_uverbs_query_device {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700117 __aligned_u64 response;
118 __aligned_u64 driver_data[0];
Ben Cheng655a7c02013-10-16 16:09:24 -0700119};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800120struct ib_uverbs_query_device_resp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700121 __aligned_u64 fw_ver;
Tao Baod7db5942015-01-28 10:07:51 -0800122 __be64 node_guid;
123 __be64 sys_image_guid;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700124 __aligned_u64 max_mr_size;
125 __aligned_u64 page_size_cap;
Tao Baod7db5942015-01-28 10:07:51 -0800126 __u32 vendor_id;
127 __u32 vendor_part_id;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800128 __u32 hw_ver;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800129 __u32 max_qp;
Tao Baod7db5942015-01-28 10:07:51 -0800130 __u32 max_qp_wr;
131 __u32 device_cap_flags;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800132 __u32 max_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800133 __u32 max_sge_rd;
Tao Baod7db5942015-01-28 10:07:51 -0800134 __u32 max_cq;
135 __u32 max_cqe;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800136 __u32 max_mr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800137 __u32 max_pd;
Tao Baod7db5942015-01-28 10:07:51 -0800138 __u32 max_qp_rd_atom;
139 __u32 max_ee_rd_atom;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800140 __u32 max_res_rd_atom;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800141 __u32 max_qp_init_rd_atom;
Tao Baod7db5942015-01-28 10:07:51 -0800142 __u32 max_ee_init_rd_atom;
143 __u32 atomic_cap;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800144 __u32 max_ee;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800145 __u32 max_rdd;
Tao Baod7db5942015-01-28 10:07:51 -0800146 __u32 max_mw;
147 __u32 max_raw_ipv6_qp;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800148 __u32 max_raw_ethy_qp;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800149 __u32 max_mcast_grp;
Tao Baod7db5942015-01-28 10:07:51 -0800150 __u32 max_mcast_qp_attach;
151 __u32 max_total_mcast_qp_attach;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800152 __u32 max_ah;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800153 __u32 max_fmr;
Tao Baod7db5942015-01-28 10:07:51 -0800154 __u32 max_map_per_fmr;
155 __u32 max_srq;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800156 __u32 max_srq_wr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800157 __u32 max_srq_sge;
Tao Baod7db5942015-01-28 10:07:51 -0800158 __u16 max_pkeys;
159 __u8 local_ca_ack_delay;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800160 __u8 phys_port_cnt;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800161 __u8 reserved[4];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800162};
163struct ib_uverbs_ex_query_device {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800164 __u32 comp_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800165 __u32 reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800166};
167struct ib_uverbs_odp_caps {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700168 __aligned_u64 general_caps;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800169 struct {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800170 __u32 rc_odp_caps;
171 __u32 uc_odp_caps;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800172 __u32 ud_odp_caps;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800173 } per_transport_caps;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800174 __u32 reserved;
175};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800176struct ib_uverbs_rss_caps {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800177 __u32 supported_qpts;
178 __u32 max_rwq_indirection_tables;
179 __u32 max_rwq_indirection_table_size;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800180 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800181};
Christopher Ferris1308ad32017-11-14 17:32:13 -0800182struct ib_uverbs_tm_caps {
183 __u32 max_rndv_hdr_size;
184 __u32 max_num_tags;
185 __u32 flags;
186 __u32 max_ops;
187 __u32 max_sge;
188 __u32 reserved;
189};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800190struct ib_uverbs_ex_query_device_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800191 struct ib_uverbs_query_device_resp base;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800192 __u32 comp_mask;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800193 __u32 response_length;
194 struct ib_uverbs_odp_caps odp_caps;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700195 __aligned_u64 timestamp_mask;
196 __aligned_u64 hca_core_clock;
197 __aligned_u64 device_cap_flags_ex;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800198 struct ib_uverbs_rss_caps rss_caps;
199 __u32 max_wq_type_rq;
Christopher Ferris525ce912017-07-26 13:12:53 -0700200 __u32 raw_packet_caps;
Christopher Ferris1308ad32017-11-14 17:32:13 -0800201 struct ib_uverbs_tm_caps tm_caps;
Christopher Ferris934ec942018-01-31 15:29:16 -0800202 struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700203 __aligned_u64 max_dm_size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800204};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800205struct ib_uverbs_query_port {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700206 __aligned_u64 response;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800207 __u8 port_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800208 __u8 reserved[7];
Christopher Ferris76a1d452018-06-27 14:12:29 -0700209 __aligned_u64 driver_data[0];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700210};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800211struct ib_uverbs_query_port_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800212 __u32 port_cap_flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800213 __u32 max_msg_sz;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700214 __u32 bad_pkey_cntr;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800215 __u32 qkey_viol_cntr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800216 __u32 gid_tbl_len;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800217 __u16 pkey_tbl_len;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700218 __u16 lid;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800219 __u16 sm_lid;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800220 __u8 state;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800221 __u8 max_mtu;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700222 __u8 active_mtu;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800223 __u8 lmc;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800224 __u8 max_vl_num;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800225 __u8 sm_sl;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700226 __u8 subnet_timeout;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800227 __u8 init_type_reply;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800228 __u8 active_width;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800229 __u8 active_speed;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700230 __u8 phys_state;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800231 __u8 link_layer;
Christopher Ferris9ce28842018-10-25 12:11:39 -0700232 __u8 flags;
233 __u8 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800234};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700235struct ib_uverbs_alloc_pd {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700236 __aligned_u64 response;
237 __aligned_u64 driver_data[0];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800238};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700239struct ib_uverbs_alloc_pd_resp {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800240 __u32 pd_handle;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800241 __u32 driver_data[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800242};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800243struct ib_uverbs_dealloc_pd {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700244 __u32 pd_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800245};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800246struct ib_uverbs_open_xrcd {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700247 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700248 __u32 fd;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800249 __u32 oflags;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700250 __aligned_u64 driver_data[0];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800251};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700252struct ib_uverbs_open_xrcd_resp {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800253 __u32 xrcd_handle;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800254 __u32 driver_data[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800255};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800256struct ib_uverbs_close_xrcd {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700257 __u32 xrcd_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800258};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800259struct ib_uverbs_reg_mr {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700260 __aligned_u64 response;
261 __aligned_u64 start;
262 __aligned_u64 length;
263 __aligned_u64 hca_va;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800264 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700265 __u32 access_flags;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700266 __aligned_u64 driver_data[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800267};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800268struct ib_uverbs_reg_mr_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700269 __u32 mr_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800270 __u32 lkey;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800271 __u32 rkey;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800272 __u32 driver_data[0];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800273};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700274struct ib_uverbs_rereg_mr {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700275 __aligned_u64 response;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800276 __u32 mr_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800277 __u32 flags;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700278 __aligned_u64 start;
279 __aligned_u64 length;
280 __aligned_u64 hca_va;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800281 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700282 __u32 access_flags;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800283 __aligned_u64 driver_data[0];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800284};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800285struct ib_uverbs_rereg_mr_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800286 __u32 lkey;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700287 __u32 rkey;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800288 __aligned_u64 driver_data[0];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800289};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800290struct ib_uverbs_dereg_mr {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800291 __u32 mr_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700292};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800293struct ib_uverbs_alloc_mw {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700294 __aligned_u64 response;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800295 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700296 __u8 mw_type;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800297 __u8 reserved[3];
Christopher Ferrisd842e432019-03-07 10:21:59 -0800298 __aligned_u64 driver_data[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800299};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800300struct ib_uverbs_alloc_mw_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700301 __u32 mw_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800302 __u32 rkey;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800303 __aligned_u64 driver_data[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800304};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800305struct ib_uverbs_dealloc_mw {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700306 __u32 mw_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800307};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800308struct ib_uverbs_create_comp_channel {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700309 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700310};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800311struct ib_uverbs_create_comp_channel_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800312 __u32 fd;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800313};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700314struct ib_uverbs_create_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700315 __aligned_u64 response;
316 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800317 __u32 cqe;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700318 __u32 comp_vector;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800319 __s32 comp_channel;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800320 __u32 reserved;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700321 __aligned_u64 driver_data[0];
322};
323enum ib_uverbs_ex_create_cq_flags {
324 IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
325 IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN = 1 << 1,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700326};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800327struct ib_uverbs_ex_create_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700328 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800329 __u32 cqe;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700330 __u32 comp_vector;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800331 __s32 comp_channel;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800332 __u32 comp_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800333 __u32 flags;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700334 __u32 reserved;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800335};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800336struct ib_uverbs_create_cq_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800337 __u32 cq_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700338 __u32 cqe;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800339 __aligned_u64 driver_data[0];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800340};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800341struct ib_uverbs_ex_create_cq_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800342 struct ib_uverbs_create_cq_resp base;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700343 __u32 comp_mask;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800344 __u32 response_length;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800345};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800346struct ib_uverbs_resize_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700347 __aligned_u64 response;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800348 __u32 cq_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800349 __u32 cqe;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700350 __aligned_u64 driver_data[0];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700351};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800352struct ib_uverbs_resize_cq_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800353 __u32 cqe;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800354 __u32 reserved;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700355 __aligned_u64 driver_data[0];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800356};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800357struct ib_uverbs_poll_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700358 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700359 __u32 cq_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800360 __u32 ne;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800361};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800362struct ib_uverbs_wc {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700363 __aligned_u64 wr_id;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800364 __u32 status;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800365 __u32 opcode;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800366 __u32 vendor_err;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700367 __u32 byte_len;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800368 union {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700369 __be32 imm_data;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800370 __u32 invalidate_rkey;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700371 } ex;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800372 __u32 qp_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800373 __u32 src_qp;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800374 __u32 wc_flags;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700375 __u16 pkey_index;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800376 __u16 slid;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800377 __u8 sl;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800378 __u8 dlid_path_bits;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700379 __u8 port_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800380 __u8 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800381};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800382struct ib_uverbs_poll_cq_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700383 __u32 count;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800384 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800385 struct ib_uverbs_wc wc[0];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800386};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700387struct ib_uverbs_req_notify_cq {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800388 __u32 cq_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800389 __u32 solicited_only;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800390};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700391struct ib_uverbs_destroy_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700392 __aligned_u64 response;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800393 __u32 cq_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800394 __u32 reserved;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700395};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800396struct ib_uverbs_destroy_cq_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800397 __u32 comp_events_reported;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800398 __u32 async_events_reported;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700399};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800400struct ib_uverbs_global_route {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800401 __u8 dgid[16];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800402 __u32 flow_label;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700403 __u8 sgid_index;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800404 __u8 hop_limit;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800405 __u8 traffic_class;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800406 __u8 reserved;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700407};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800408struct ib_uverbs_ah_attr {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800409 struct ib_uverbs_global_route grh;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800410 __u16 dlid;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700411 __u8 sl;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800412 __u8 src_path_bits;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800413 __u8 static_rate;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800414 __u8 is_global;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700415 __u8 port_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800416 __u8 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800417};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800418struct ib_uverbs_qp_attr {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700419 __u32 qp_attr_mask;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800420 __u32 qp_state;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800421 __u32 cur_qp_state;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800422 __u32 path_mtu;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700423 __u32 path_mig_state;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800424 __u32 qkey;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800425 __u32 rq_psn;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800426 __u32 sq_psn;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700427 __u32 dest_qp_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800428 __u32 qp_access_flags;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800429 struct ib_uverbs_ah_attr ah_attr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800430 struct ib_uverbs_ah_attr alt_ah_attr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700431 __u32 max_send_wr;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800432 __u32 max_recv_wr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800433 __u32 max_send_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800434 __u32 max_recv_sge;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700435 __u32 max_inline_data;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800436 __u16 pkey_index;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800437 __u16 alt_pkey_index;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800438 __u8 en_sqd_async_notify;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700439 __u8 sq_draining;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800440 __u8 max_rd_atomic;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800441 __u8 max_dest_rd_atomic;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800442 __u8 min_rnr_timer;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700443 __u8 port_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800444 __u8 timeout;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800445 __u8 retry_cnt;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800446 __u8 rnr_retry;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700447 __u8 alt_port_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800448 __u8 alt_timeout;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800449 __u8 reserved[5];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800450};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700451struct ib_uverbs_create_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700452 __aligned_u64 response;
453 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800454 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700455 __u32 send_cq_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800456 __u32 recv_cq_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800457 __u32 srq_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800458 __u32 max_send_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700459 __u32 max_recv_wr;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800460 __u32 max_send_sge;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800461 __u32 max_recv_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800462 __u32 max_inline_data;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700463 __u8 sq_sig_all;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800464 __u8 qp_type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800465 __u8 is_srq;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800466 __u8 reserved;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700467 __aligned_u64 driver_data[0];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800468};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800469enum ib_uverbs_create_qp_mask {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800470 IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
471};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800472enum {
473 IB_UVERBS_CREATE_QP_SUP_COMP_MASK = IB_UVERBS_CREATE_QP_MASK_IND_TABLE,
474};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800475enum {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800476 IB_USER_LEGACY_LAST_QP_ATTR_MASK = 1ULL << 20,
477};
478enum {
479 IB_USER_LAST_QP_ATTR_MASK = 1ULL << 25,
Christopher Ferris49f525c2016-12-12 14:55:36 -0800480};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800481struct ib_uverbs_ex_create_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700482 __aligned_u64 user_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800483 __u32 pd_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800484 __u32 send_cq_handle;
Tao Baod7db5942015-01-28 10:07:51 -0800485 __u32 recv_cq_handle;
486 __u32 srq_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800487 __u32 max_send_wr;
Tao Baod7db5942015-01-28 10:07:51 -0800488 __u32 max_recv_wr;
489 __u32 max_send_sge;
490 __u32 max_recv_sge;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800491 __u32 max_inline_data;
Tao Baod7db5942015-01-28 10:07:51 -0800492 __u8 sq_sig_all;
493 __u8 qp_type;
494 __u8 is_srq;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800495 __u8 reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800496 __u32 comp_mask;
497 __u32 create_flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800498 __u32 rwq_ind_tbl_handle;
Christopher Ferris1308ad32017-11-14 17:32:13 -0800499 __u32 source_qpn;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800500};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700501struct ib_uverbs_open_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700502 __aligned_u64 response;
503 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800504 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700505 __u32 qpn;
Tao Baod7db5942015-01-28 10:07:51 -0800506 __u8 qp_type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800507 __u8 reserved[7];
Christopher Ferris76a1d452018-06-27 14:12:29 -0700508 __aligned_u64 driver_data[0];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700509};
Ben Cheng655a7c02013-10-16 16:09:24 -0700510struct ib_uverbs_create_qp_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800511 __u32 qp_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800512 __u32 qpn;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700513 __u32 max_send_wr;
Tao Baod7db5942015-01-28 10:07:51 -0800514 __u32 max_recv_wr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800515 __u32 max_send_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800516 __u32 max_recv_sge;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700517 __u32 max_inline_data;
Tao Baod7db5942015-01-28 10:07:51 -0800518 __u32 reserved;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800519 __u32 driver_data[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800520};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800521struct ib_uverbs_ex_create_qp_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700522 struct ib_uverbs_create_qp_resp base;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800523 __u32 comp_mask;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800524 __u32 response_length;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800525};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700526struct ib_uverbs_qp_dest {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800527 __u8 dgid[16];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800528 __u32 flow_label;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800529 __u16 dlid;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700530 __u16 reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800531 __u8 sgid_index;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800532 __u8 hop_limit;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800533 __u8 traffic_class;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700534 __u8 sl;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800535 __u8 src_path_bits;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800536 __u8 static_rate;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800537 __u8 is_global;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700538 __u8 port_num;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800539};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800540struct ib_uverbs_query_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700541 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700542 __u32 qp_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800543 __u32 attr_mask;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700544 __aligned_u64 driver_data[0];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800545};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700546struct ib_uverbs_query_qp_resp {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800547 struct ib_uverbs_qp_dest dest;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800548 struct ib_uverbs_qp_dest alt_dest;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800549 __u32 max_send_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700550 __u32 max_recv_wr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800551 __u32 max_send_sge;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800552 __u32 max_recv_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800553 __u32 max_inline_data;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700554 __u32 qkey;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800555 __u32 rq_psn;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800556 __u32 sq_psn;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800557 __u32 dest_qp_num;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700558 __u32 qp_access_flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800559 __u16 pkey_index;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800560 __u16 alt_pkey_index;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800561 __u8 qp_state;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700562 __u8 cur_qp_state;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800563 __u8 path_mtu;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800564 __u8 path_mig_state;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800565 __u8 sq_draining;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700566 __u8 max_rd_atomic;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800567 __u8 max_dest_rd_atomic;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800568 __u8 min_rnr_timer;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800569 __u8 port_num;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700570 __u8 timeout;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800571 __u8 retry_cnt;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800572 __u8 rnr_retry;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800573 __u8 alt_port_num;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700574 __u8 alt_timeout;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800575 __u8 sq_sig_all;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800576 __u8 reserved[5];
Christopher Ferris76a1d452018-06-27 14:12:29 -0700577 __aligned_u64 driver_data[0];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700578};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800579struct ib_uverbs_modify_qp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800580 struct ib_uverbs_qp_dest dest;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800581 struct ib_uverbs_qp_dest alt_dest;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700582 __u32 qp_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800583 __u32 attr_mask;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800584 __u32 qkey;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800585 __u32 rq_psn;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700586 __u32 sq_psn;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800587 __u32 dest_qp_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800588 __u32 qp_access_flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800589 __u16 pkey_index;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700590 __u16 alt_pkey_index;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800591 __u8 qp_state;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800592 __u8 cur_qp_state;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800593 __u8 path_mtu;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700594 __u8 path_mig_state;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800595 __u8 en_sqd_async_notify;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800596 __u8 max_rd_atomic;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800597 __u8 max_dest_rd_atomic;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700598 __u8 min_rnr_timer;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800599 __u8 port_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800600 __u8 timeout;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800601 __u8 retry_cnt;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700602 __u8 rnr_retry;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800603 __u8 alt_port_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800604 __u8 alt_timeout;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800605 __u8 reserved[2];
Christopher Ferris76a1d452018-06-27 14:12:29 -0700606 __aligned_u64 driver_data[0];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800607};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800608struct ib_uverbs_ex_modify_qp {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800609 struct ib_uverbs_modify_qp base;
610 __u32 rate_limit;
611 __u32 reserved;
612};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800613struct ib_uverbs_ex_modify_qp_resp {
614 __u32 comp_mask;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800615 __u32 response_length;
616};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700617struct ib_uverbs_destroy_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700618 __aligned_u64 response;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800619 __u32 qp_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800620 __u32 reserved;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700621};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800622struct ib_uverbs_destroy_qp_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800623 __u32 events_reported;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800624};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700625struct ib_uverbs_sge {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700626 __aligned_u64 addr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800627 __u32 length;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800628 __u32 lkey;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700629};
Christopher Ferris86a48372019-01-10 14:14:59 -0800630enum ib_uverbs_wr_opcode {
631 IB_UVERBS_WR_RDMA_WRITE = 0,
632 IB_UVERBS_WR_RDMA_WRITE_WITH_IMM = 1,
633 IB_UVERBS_WR_SEND = 2,
634 IB_UVERBS_WR_SEND_WITH_IMM = 3,
635 IB_UVERBS_WR_RDMA_READ = 4,
636 IB_UVERBS_WR_ATOMIC_CMP_AND_SWP = 5,
637 IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD = 6,
638 IB_UVERBS_WR_LOCAL_INV = 7,
639 IB_UVERBS_WR_BIND_MW = 8,
640 IB_UVERBS_WR_SEND_WITH_INV = 9,
641 IB_UVERBS_WR_TSO = 10,
642 IB_UVERBS_WR_RDMA_READ_WITH_INV = 11,
643 IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12,
644 IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13,
645};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800646struct ib_uverbs_send_wr {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700647 __aligned_u64 wr_id;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800648 __u32 num_sge;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700649 __u32 opcode;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800650 __u32 send_flags;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800651 union {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700652 __be32 imm_data;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700653 __u32 invalidate_rkey;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800654 } ex;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800655 union {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800656 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700657 __aligned_u64 remote_addr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800658 __u32 rkey;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800659 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800660 } rdma;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700661 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700662 __aligned_u64 remote_addr;
663 __aligned_u64 compare_add;
664 __aligned_u64 swap;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700665 __u32 rkey;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800666 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800667 } atomic;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800668 struct {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700669 __u32 ah;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800670 __u32 remote_qpn;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800671 __u32 remote_qkey;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800672 __u32 reserved;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700673 } ud;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800674 } wr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800675};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800676struct ib_uverbs_post_send {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700677 __aligned_u64 response;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800678 __u32 qp_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800679 __u32 wr_count;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800680 __u32 sge_count;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700681 __u32 wqe_size;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800682 struct ib_uverbs_send_wr send_wr[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800683};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800684struct ib_uverbs_post_send_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700685 __u32 bad_wr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800686};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800687struct ib_uverbs_recv_wr {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700688 __aligned_u64 wr_id;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700689 __u32 num_sge;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800690 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800691};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800692struct ib_uverbs_post_recv {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700693 __aligned_u64 response;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800694 __u32 qp_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800695 __u32 wr_count;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800696 __u32 sge_count;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700697 __u32 wqe_size;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800698 struct ib_uverbs_recv_wr recv_wr[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800699};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800700struct ib_uverbs_post_recv_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700701 __u32 bad_wr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800702};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800703struct ib_uverbs_post_srq_recv {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700704 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700705 __u32 srq_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800706 __u32 wr_count;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800707 __u32 sge_count;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800708 __u32 wqe_size;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700709 struct ib_uverbs_recv_wr recv[0];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800710};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800711struct ib_uverbs_post_srq_recv_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800712 __u32 bad_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700713};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800714struct ib_uverbs_create_ah {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700715 __aligned_u64 response;
716 __aligned_u64 user_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700717 __u32 pd_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800718 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800719 struct ib_uverbs_ah_attr attr;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800720 __aligned_u64 driver_data[0];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800721};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700722struct ib_uverbs_create_ah_resp {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800723 __u32 ah_handle;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800724 __u32 driver_data[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800725};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800726struct ib_uverbs_destroy_ah {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700727 __u32 ah_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800728};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800729struct ib_uverbs_attach_mcast {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800730 __u8 gid[16];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700731 __u32 qp_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800732 __u16 mlid;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800733 __u16 reserved;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700734 __aligned_u64 driver_data[0];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700735};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800736struct ib_uverbs_detach_mcast {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800737 __u8 gid[16];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800738 __u32 qp_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700739 __u16 mlid;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800740 __u16 reserved;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700741 __aligned_u64 driver_data[0];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800742};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700743struct ib_uverbs_flow_spec_hdr {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800744 __u32 type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800745 __u16 size;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800746 __u16 reserved;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700747 __aligned_u64 flow_spec_data[0];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800748};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800749struct ib_uverbs_flow_eth_filter {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800750 __u8 dst_mac[6];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700751 __u8 src_mac[6];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800752 __be16 ether_type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800753 __be16 vlan_tag;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800754};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700755struct ib_uverbs_flow_spec_eth {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800756 union {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800757 struct ib_uverbs_flow_spec_hdr hdr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800758 struct {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700759 __u32 type;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800760 __u16 size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800761 __u16 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800762 };
Christopher Ferris106b3a82016-08-24 12:15:38 -0700763 };
Christopher Ferris05d08e92016-02-04 13:16:38 -0800764 struct ib_uverbs_flow_eth_filter val;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800765 struct ib_uverbs_flow_eth_filter mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800766};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700767struct ib_uverbs_flow_ipv4_filter {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800768 __be32 src_ip;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800769 __be32 dst_ip;
770 __u8 proto;
771 __u8 tos;
772 __u8 ttl;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800773 __u8 flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800774};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700775struct ib_uverbs_flow_spec_ipv4 {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800776 union {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800777 struct ib_uverbs_flow_spec_hdr hdr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800778 struct {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700779 __u32 type;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800780 __u16 size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800781 __u16 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800782 };
Christopher Ferris106b3a82016-08-24 12:15:38 -0700783 };
Christopher Ferris05d08e92016-02-04 13:16:38 -0800784 struct ib_uverbs_flow_ipv4_filter val;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800785 struct ib_uverbs_flow_ipv4_filter mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800786};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700787struct ib_uverbs_flow_tcp_udp_filter {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800788 __be16 dst_port;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800789 __be16 src_port;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800790};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700791struct ib_uverbs_flow_spec_tcp_udp {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800792 union {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800793 struct ib_uverbs_flow_spec_hdr hdr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800794 struct {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700795 __u32 type;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800796 __u16 size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800797 __u16 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800798 };
Christopher Ferris106b3a82016-08-24 12:15:38 -0700799 };
Christopher Ferris05d08e92016-02-04 13:16:38 -0800800 struct ib_uverbs_flow_tcp_udp_filter val;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800801 struct ib_uverbs_flow_tcp_udp_filter mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800802};
803struct ib_uverbs_flow_ipv6_filter {
804 __u8 src_ip[16];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800805 __u8 dst_ip[16];
806 __be32 flow_label;
807 __u8 next_hdr;
808 __u8 traffic_class;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800809 __u8 hop_limit;
810 __u8 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800811};
812struct ib_uverbs_flow_spec_ipv6 {
813 union {
814 struct ib_uverbs_flow_spec_hdr hdr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800815 struct {
816 __u32 type;
817 __u16 size;
818 __u16 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800819 };
820 };
821 struct ib_uverbs_flow_ipv6_filter val;
822 struct ib_uverbs_flow_ipv6_filter mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800823};
Christopher Ferris525ce912017-07-26 13:12:53 -0700824struct ib_uverbs_flow_spec_action_tag {
825 union {
826 struct ib_uverbs_flow_spec_hdr hdr;
827 struct {
828 __u32 type;
829 __u16 size;
830 __u16 reserved;
831 };
832 };
833 __u32 tag_id;
834 __u32 reserved1;
835};
836struct ib_uverbs_flow_spec_action_drop {
837 union {
838 struct ib_uverbs_flow_spec_hdr hdr;
839 struct {
840 __u32 type;
841 __u16 size;
842 __u16 reserved;
843 };
844 };
845};
Christopher Ferris76a1d452018-06-27 14:12:29 -0700846struct ib_uverbs_flow_spec_action_handle {
847 union {
848 struct ib_uverbs_flow_spec_hdr hdr;
849 struct {
850 __u32 type;
851 __u16 size;
852 __u16 reserved;
853 };
854 };
855 __u32 handle;
856 __u32 reserved1;
857};
Christopher Ferris9ce28842018-10-25 12:11:39 -0700858struct ib_uverbs_flow_spec_action_count {
859 union {
860 struct ib_uverbs_flow_spec_hdr hdr;
861 struct {
862 __u32 type;
863 __u16 size;
864 __u16 reserved;
865 };
866 };
867 __u32 handle;
868 __u32 reserved1;
869};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800870struct ib_uverbs_flow_tunnel_filter {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800871 __be32 tunnel_id;
872};
873struct ib_uverbs_flow_spec_tunnel {
874 union {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800875 struct ib_uverbs_flow_spec_hdr hdr;
876 struct {
877 __u32 type;
878 __u16 size;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800879 __u16 reserved;
880 };
881 };
882 struct ib_uverbs_flow_tunnel_filter val;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800883 struct ib_uverbs_flow_tunnel_filter mask;
884};
Christopher Ferris76a1d452018-06-27 14:12:29 -0700885struct ib_uverbs_flow_spec_esp_filter {
886 __u32 spi;
887 __u32 seq;
888};
889struct ib_uverbs_flow_spec_esp {
890 union {
891 struct ib_uverbs_flow_spec_hdr hdr;
892 struct {
893 __u32 type;
894 __u16 size;
895 __u16 reserved;
896 };
897 };
898 struct ib_uverbs_flow_spec_esp_filter val;
899 struct ib_uverbs_flow_spec_esp_filter mask;
900};
Christopher Ferris9ce28842018-10-25 12:11:39 -0700901struct ib_uverbs_flow_gre_filter {
902 __be16 c_ks_res0_ver;
903 __be16 protocol;
904 __be32 key;
905};
906struct ib_uverbs_flow_spec_gre {
907 union {
908 struct ib_uverbs_flow_spec_hdr hdr;
909 struct {
910 __u32 type;
911 __u16 size;
912 __u16 reserved;
913 };
914 };
915 struct ib_uverbs_flow_gre_filter val;
916 struct ib_uverbs_flow_gre_filter mask;
917};
918struct ib_uverbs_flow_mpls_filter {
919 __be32 label;
920};
921struct ib_uverbs_flow_spec_mpls {
922 union {
923 struct ib_uverbs_flow_spec_hdr hdr;
924 struct {
925 __u32 type;
926 __u16 size;
927 __u16 reserved;
928 };
929 };
930 struct ib_uverbs_flow_mpls_filter val;
931 struct ib_uverbs_flow_mpls_filter mask;
932};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800933struct ib_uverbs_flow_attr {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800934 __u32 type;
Tao Baod7db5942015-01-28 10:07:51 -0800935 __u16 size;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800936 __u16 priority;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700937 __u8 num_of_specs;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800938 __u8 reserved[2];
Tao Baod7db5942015-01-28 10:07:51 -0800939 __u8 port;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800940 __u32 flags;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700941 struct ib_uverbs_flow_spec_hdr flow_specs[0];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800942};
Christopher Ferris38062f92014-07-09 15:33:25 -0700943struct ib_uverbs_create_flow {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800944 __u32 comp_mask;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700945 __u32 qp_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800946 struct ib_uverbs_flow_attr flow_attr;
Christopher Ferris38062f92014-07-09 15:33:25 -0700947};
948struct ib_uverbs_create_flow_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700949 __u32 comp_mask;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800950 __u32 flow_handle;
Christopher Ferris38062f92014-07-09 15:33:25 -0700951};
952struct ib_uverbs_destroy_flow {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700953 __u32 comp_mask;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800954 __u32 flow_handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700955};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800956struct ib_uverbs_create_srq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700957 __aligned_u64 response;
958 __aligned_u64 user_handle;
Tao Baod7db5942015-01-28 10:07:51 -0800959 __u32 pd_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800960 __u32 max_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700961 __u32 max_sge;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800962 __u32 srq_limit;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700963 __aligned_u64 driver_data[0];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800964};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700965struct ib_uverbs_create_xsrq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700966 __aligned_u64 response;
967 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800968 __u32 srq_type;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700969 __u32 pd_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800970 __u32 max_wr;
Tao Baod7db5942015-01-28 10:07:51 -0800971 __u32 max_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800972 __u32 srq_limit;
Christopher Ferris1308ad32017-11-14 17:32:13 -0800973 __u32 max_num_tags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800974 __u32 xrcd_handle;
Tao Baod7db5942015-01-28 10:07:51 -0800975 __u32 cq_handle;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700976 __aligned_u64 driver_data[0];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700977};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800978struct ib_uverbs_create_srq_resp {
Tao Baod7db5942015-01-28 10:07:51 -0800979 __u32 srq_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800980 __u32 max_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700981 __u32 max_sge;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800982 __u32 srqn;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800983 __u32 driver_data[0];
Ben Cheng655a7c02013-10-16 16:09:24 -0700984};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800985struct ib_uverbs_modify_srq {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700986 __u32 srq_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800987 __u32 attr_mask;
Tao Baod7db5942015-01-28 10:07:51 -0800988 __u32 max_wr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800989 __u32 srq_limit;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700990 __aligned_u64 driver_data[0];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800991};
Ben Cheng655a7c02013-10-16 16:09:24 -0700992struct ib_uverbs_query_srq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700993 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700994 __u32 srq_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800995 __u32 reserved;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700996 __aligned_u64 driver_data[0];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800997};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700998struct ib_uverbs_query_srq_resp {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800999 __u32 max_wr;
Tao Baod7db5942015-01-28 10:07:51 -08001000 __u32 max_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001001 __u32 srq_limit;
Christopher Ferris106b3a82016-08-24 12:15:38 -07001002 __u32 reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -08001003};
Ben Cheng655a7c02013-10-16 16:09:24 -07001004struct ib_uverbs_destroy_srq {
Christopher Ferris76a1d452018-06-27 14:12:29 -07001005 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -07001006 __u32 srq_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -08001007 __u32 reserved;
Ben Cheng655a7c02013-10-16 16:09:24 -07001008};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001009struct ib_uverbs_destroy_srq_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -07001010 __u32 events_reported;
Christopher Ferris05d08e92016-02-04 13:16:38 -08001011};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001012struct ib_uverbs_ex_create_wq {
Christopher Ferris49f525c2016-12-12 14:55:36 -08001013 __u32 comp_mask;
1014 __u32 wq_type;
Christopher Ferris76a1d452018-06-27 14:12:29 -07001015 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001016 __u32 pd_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001017 __u32 cq_handle;
1018 __u32 max_wr;
1019 __u32 max_sge;
Christopher Ferris525ce912017-07-26 13:12:53 -07001020 __u32 create_flags;
1021 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001022};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001023struct ib_uverbs_ex_create_wq_resp {
1024 __u32 comp_mask;
1025 __u32 response_length;
1026 __u32 wq_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001027 __u32 max_wr;
1028 __u32 max_sge;
1029 __u32 wqn;
1030};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001031struct ib_uverbs_ex_destroy_wq {
1032 __u32 comp_mask;
1033 __u32 wq_handle;
1034};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001035struct ib_uverbs_ex_destroy_wq_resp {
1036 __u32 comp_mask;
1037 __u32 response_length;
1038 __u32 events_reported;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001039 __u32 reserved;
1040};
1041struct ib_uverbs_ex_modify_wq {
1042 __u32 attr_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001043 __u32 wq_handle;
1044 __u32 wq_state;
1045 __u32 curr_wq_state;
Christopher Ferris525ce912017-07-26 13:12:53 -07001046 __u32 flags;
1047 __u32 flags_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001048};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001049#define IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE 0x0d
1050struct ib_uverbs_ex_create_rwq_ind_table {
1051 __u32 comp_mask;
1052 __u32 log_ind_tbl_size;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001053 __u32 wq_handles[0];
1054};
1055struct ib_uverbs_ex_create_rwq_ind_table_resp {
1056 __u32 comp_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001057 __u32 response_length;
1058 __u32 ind_tbl_handle;
1059 __u32 ind_tbl_num;
1060};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001061struct ib_uverbs_ex_destroy_rwq_ind_table {
1062 __u32 comp_mask;
1063 __u32 ind_tbl_handle;
1064};
Christopher Ferris934ec942018-01-31 15:29:16 -08001065struct ib_uverbs_cq_moderation {
1066 __u16 cq_count;
1067 __u16 cq_period;
1068};
1069struct ib_uverbs_ex_modify_cq {
1070 __u32 cq_handle;
1071 __u32 attr_mask;
1072 struct ib_uverbs_cq_moderation attr;
1073 __u32 reserved;
1074};
Christopher Ferris525ce912017-07-26 13:12:53 -07001075#define IB_DEVICE_NAME_MAX 64
Ben Cheng655a7c02013-10-16 16:09:24 -07001076#endif