blob: 6e27db4ac4057b6159817b15727133170b6465fb [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef IB_USER_VERBS_H
8#define IB_USER_VERBS_H
9#include <linux/types.h>
10#define IB_USER_VERBS_ABI_VERSION 6
Christopher Ferris38062f92014-07-09 15:33:25 -070011#define IB_USER_VERBS_CMD_THRESHOLD 50
Christopher Ferrisd842e432019-03-07 10:21:59 -080012enum ib_uverbs_write_cmds {
Tao Baod7db5942015-01-28 10:07:51 -080013 IB_USER_VERBS_CMD_GET_CONTEXT,
14 IB_USER_VERBS_CMD_QUERY_DEVICE,
Tao Baod7db5942015-01-28 10:07:51 -080015 IB_USER_VERBS_CMD_QUERY_PORT,
16 IB_USER_VERBS_CMD_ALLOC_PD,
17 IB_USER_VERBS_CMD_DEALLOC_PD,
18 IB_USER_VERBS_CMD_CREATE_AH,
Tao Baod7db5942015-01-28 10:07:51 -080019 IB_USER_VERBS_CMD_MODIFY_AH,
20 IB_USER_VERBS_CMD_QUERY_AH,
21 IB_USER_VERBS_CMD_DESTROY_AH,
22 IB_USER_VERBS_CMD_REG_MR,
Tao Baod7db5942015-01-28 10:07:51 -080023 IB_USER_VERBS_CMD_REG_SMR,
24 IB_USER_VERBS_CMD_REREG_MR,
25 IB_USER_VERBS_CMD_QUERY_MR,
26 IB_USER_VERBS_CMD_DEREG_MR,
Tao Baod7db5942015-01-28 10:07:51 -080027 IB_USER_VERBS_CMD_ALLOC_MW,
28 IB_USER_VERBS_CMD_BIND_MW,
29 IB_USER_VERBS_CMD_DEALLOC_MW,
30 IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL,
Tao Baod7db5942015-01-28 10:07:51 -080031 IB_USER_VERBS_CMD_CREATE_CQ,
32 IB_USER_VERBS_CMD_RESIZE_CQ,
33 IB_USER_VERBS_CMD_DESTROY_CQ,
34 IB_USER_VERBS_CMD_POLL_CQ,
Tao Baod7db5942015-01-28 10:07:51 -080035 IB_USER_VERBS_CMD_PEEK_CQ,
36 IB_USER_VERBS_CMD_REQ_NOTIFY_CQ,
37 IB_USER_VERBS_CMD_CREATE_QP,
38 IB_USER_VERBS_CMD_QUERY_QP,
Tao Baod7db5942015-01-28 10:07:51 -080039 IB_USER_VERBS_CMD_MODIFY_QP,
40 IB_USER_VERBS_CMD_DESTROY_QP,
41 IB_USER_VERBS_CMD_POST_SEND,
42 IB_USER_VERBS_CMD_POST_RECV,
Tao Baod7db5942015-01-28 10:07:51 -080043 IB_USER_VERBS_CMD_ATTACH_MCAST,
44 IB_USER_VERBS_CMD_DETACH_MCAST,
45 IB_USER_VERBS_CMD_CREATE_SRQ,
46 IB_USER_VERBS_CMD_MODIFY_SRQ,
Tao Baod7db5942015-01-28 10:07:51 -080047 IB_USER_VERBS_CMD_QUERY_SRQ,
48 IB_USER_VERBS_CMD_DESTROY_SRQ,
49 IB_USER_VERBS_CMD_POST_SRQ_RECV,
50 IB_USER_VERBS_CMD_OPEN_XRCD,
Tao Baod7db5942015-01-28 10:07:51 -080051 IB_USER_VERBS_CMD_CLOSE_XRCD,
52 IB_USER_VERBS_CMD_CREATE_XSRQ,
53 IB_USER_VERBS_CMD_OPEN_QP,
Ben Cheng655a7c02013-10-16 16:09:24 -070054};
Christopher Ferris38062f92014-07-09 15:33:25 -070055enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -080056 IB_USER_VERBS_EX_CMD_QUERY_DEVICE = IB_USER_VERBS_CMD_QUERY_DEVICE,
57 IB_USER_VERBS_EX_CMD_CREATE_CQ = IB_USER_VERBS_CMD_CREATE_CQ,
58 IB_USER_VERBS_EX_CMD_CREATE_QP = IB_USER_VERBS_CMD_CREATE_QP,
Christopher Ferris48af7cb2017-02-21 12:35:09 -080059 IB_USER_VERBS_EX_CMD_MODIFY_QP = IB_USER_VERBS_CMD_MODIFY_QP,
Christopher Ferris05d08e92016-02-04 13:16:38 -080060 IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
61 IB_USER_VERBS_EX_CMD_DESTROY_FLOW,
Christopher Ferris49f525c2016-12-12 14:55:36 -080062 IB_USER_VERBS_EX_CMD_CREATE_WQ,
Christopher Ferris48af7cb2017-02-21 12:35:09 -080063 IB_USER_VERBS_EX_CMD_MODIFY_WQ,
Christopher Ferris49f525c2016-12-12 14:55:36 -080064 IB_USER_VERBS_EX_CMD_DESTROY_WQ,
65 IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL,
Christopher Ferris934ec942018-01-31 15:29:16 -080066 IB_USER_VERBS_EX_CMD_DESTROY_RWQ_IND_TBL,
67 IB_USER_VERBS_EX_CMD_MODIFY_CQ
Christopher Ferris48af7cb2017-02-21 12:35:09 -080068};
Christopher Ferris8b7fdc92023-02-21 13:36:32 -080069enum ib_placement_type {
70 IB_FLUSH_GLOBAL = 1U << 0,
71 IB_FLUSH_PERSISTENT = 1U << 1,
72};
73enum ib_selectivity_level {
74 IB_FLUSH_RANGE = 0,
75 IB_FLUSH_MR,
76};
Christopher Ferris49f525c2016-12-12 14:55:36 -080077struct ib_uverbs_async_event_desc {
Christopher Ferris76a1d452018-06-27 14:12:29 -070078 __aligned_u64 element;
Tao Baod7db5942015-01-28 10:07:51 -080079 __u32 event_type;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080080 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -080081};
Ben Cheng655a7c02013-10-16 16:09:24 -070082struct ib_uverbs_comp_event_desc {
Christopher Ferris76a1d452018-06-27 14:12:29 -070083 __aligned_u64 cq_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080084};
Christopher Ferris934ec942018-01-31 15:29:16 -080085struct ib_uverbs_cq_moderation_caps {
86 __u16 max_cq_moderation_count;
87 __u16 max_cq_moderation_period;
88 __u32 reserved;
89};
Christopher Ferris49f525c2016-12-12 14:55:36 -080090#define IB_USER_VERBS_CMD_COMMAND_MASK 0xff
Christopher Ferris76a1d452018-06-27 14:12:29 -070091#define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80000000u
Christopher Ferris49f525c2016-12-12 14:55:36 -080092struct ib_uverbs_cmd_hdr {
Tao Baod7db5942015-01-28 10:07:51 -080093 __u32 command;
94 __u16 in_words;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080095 __u16 out_words;
Christopher Ferris49f525c2016-12-12 14:55:36 -080096};
Christopher Ferris38062f92014-07-09 15:33:25 -070097struct ib_uverbs_ex_cmd_hdr {
Christopher Ferris76a1d452018-06-27 14:12:29 -070098 __aligned_u64 response;
Christopher Ferris48af7cb2017-02-21 12:35:09 -080099 __u16 provider_in_words;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800100 __u16 provider_out_words;
Tao Baod7db5942015-01-28 10:07:51 -0800101 __u32 cmd_hdr_reserved;
Christopher Ferris38062f92014-07-09 15:33:25 -0700102};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800103struct ib_uverbs_get_context {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700104 __aligned_u64 response;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700105 __aligned_u64 driver_data[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700106};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800107struct ib_uverbs_get_context_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800108 __u32 async_fd;
Tao Baod7db5942015-01-28 10:07:51 -0800109 __u32 num_comp_vectors;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700110 __aligned_u64 driver_data[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700111};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800112struct ib_uverbs_query_device {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700113 __aligned_u64 response;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700114 __aligned_u64 driver_data[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700115};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800116struct ib_uverbs_query_device_resp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700117 __aligned_u64 fw_ver;
Tao Baod7db5942015-01-28 10:07:51 -0800118 __be64 node_guid;
119 __be64 sys_image_guid;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700120 __aligned_u64 max_mr_size;
121 __aligned_u64 page_size_cap;
Tao Baod7db5942015-01-28 10:07:51 -0800122 __u32 vendor_id;
123 __u32 vendor_part_id;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800124 __u32 hw_ver;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800125 __u32 max_qp;
Tao Baod7db5942015-01-28 10:07:51 -0800126 __u32 max_qp_wr;
127 __u32 device_cap_flags;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800128 __u32 max_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800129 __u32 max_sge_rd;
Tao Baod7db5942015-01-28 10:07:51 -0800130 __u32 max_cq;
131 __u32 max_cqe;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800132 __u32 max_mr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800133 __u32 max_pd;
Tao Baod7db5942015-01-28 10:07:51 -0800134 __u32 max_qp_rd_atom;
135 __u32 max_ee_rd_atom;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800136 __u32 max_res_rd_atom;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800137 __u32 max_qp_init_rd_atom;
Tao Baod7db5942015-01-28 10:07:51 -0800138 __u32 max_ee_init_rd_atom;
139 __u32 atomic_cap;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800140 __u32 max_ee;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800141 __u32 max_rdd;
Tao Baod7db5942015-01-28 10:07:51 -0800142 __u32 max_mw;
143 __u32 max_raw_ipv6_qp;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800144 __u32 max_raw_ethy_qp;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800145 __u32 max_mcast_grp;
Tao Baod7db5942015-01-28 10:07:51 -0800146 __u32 max_mcast_qp_attach;
147 __u32 max_total_mcast_qp_attach;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800148 __u32 max_ah;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800149 __u32 max_fmr;
Tao Baod7db5942015-01-28 10:07:51 -0800150 __u32 max_map_per_fmr;
151 __u32 max_srq;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800152 __u32 max_srq_wr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800153 __u32 max_srq_sge;
Tao Baod7db5942015-01-28 10:07:51 -0800154 __u16 max_pkeys;
155 __u8 local_ca_ack_delay;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800156 __u8 phys_port_cnt;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800157 __u8 reserved[4];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800158};
159struct ib_uverbs_ex_query_device {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800160 __u32 comp_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800161 __u32 reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800162};
163struct ib_uverbs_odp_caps {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700164 __aligned_u64 general_caps;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800165 struct {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800166 __u32 rc_odp_caps;
167 __u32 uc_odp_caps;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800168 __u32 ud_odp_caps;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800169 } per_transport_caps;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800170 __u32 reserved;
171};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800172struct ib_uverbs_rss_caps {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800173 __u32 supported_qpts;
174 __u32 max_rwq_indirection_tables;
175 __u32 max_rwq_indirection_table_size;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800176 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800177};
Christopher Ferris1308ad32017-11-14 17:32:13 -0800178struct ib_uverbs_tm_caps {
179 __u32 max_rndv_hdr_size;
180 __u32 max_num_tags;
181 __u32 flags;
182 __u32 max_ops;
183 __u32 max_sge;
184 __u32 reserved;
185};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800186struct ib_uverbs_ex_query_device_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800187 struct ib_uverbs_query_device_resp base;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800188 __u32 comp_mask;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800189 __u32 response_length;
190 struct ib_uverbs_odp_caps odp_caps;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700191 __aligned_u64 timestamp_mask;
192 __aligned_u64 hca_core_clock;
193 __aligned_u64 device_cap_flags_ex;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800194 struct ib_uverbs_rss_caps rss_caps;
195 __u32 max_wq_type_rq;
Christopher Ferris525ce912017-07-26 13:12:53 -0700196 __u32 raw_packet_caps;
Christopher Ferris1308ad32017-11-14 17:32:13 -0800197 struct ib_uverbs_tm_caps tm_caps;
Christopher Ferris934ec942018-01-31 15:29:16 -0800198 struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700199 __aligned_u64 max_dm_size;
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700200 __u32 xrc_odp_caps;
201 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800202};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800203struct ib_uverbs_query_port {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700204 __aligned_u64 response;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800205 __u8 port_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800206 __u8 reserved[7];
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700207 __aligned_u64 driver_data[];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700208};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800209struct ib_uverbs_query_port_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800210 __u32 port_cap_flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800211 __u32 max_msg_sz;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700212 __u32 bad_pkey_cntr;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800213 __u32 qkey_viol_cntr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800214 __u32 gid_tbl_len;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800215 __u16 pkey_tbl_len;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700216 __u16 lid;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800217 __u16 sm_lid;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800218 __u8 state;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800219 __u8 max_mtu;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700220 __u8 active_mtu;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800221 __u8 lmc;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800222 __u8 max_vl_num;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800223 __u8 sm_sl;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700224 __u8 subnet_timeout;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800225 __u8 init_type_reply;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800226 __u8 active_width;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800227 __u8 active_speed;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700228 __u8 phys_state;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800229 __u8 link_layer;
Christopher Ferris9ce28842018-10-25 12:11:39 -0700230 __u8 flags;
231 __u8 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800232};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700233struct ib_uverbs_alloc_pd {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700234 __aligned_u64 response;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700235 __aligned_u64 driver_data[];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800236};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700237struct ib_uverbs_alloc_pd_resp {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800238 __u32 pd_handle;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700239 __u32 driver_data[];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800240};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800241struct ib_uverbs_dealloc_pd {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700242 __u32 pd_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800243};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800244struct ib_uverbs_open_xrcd {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700245 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700246 __u32 fd;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800247 __u32 oflags;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700248 __aligned_u64 driver_data[];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800249};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700250struct ib_uverbs_open_xrcd_resp {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800251 __u32 xrcd_handle;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700252 __u32 driver_data[];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800253};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800254struct ib_uverbs_close_xrcd {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700255 __u32 xrcd_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800256};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800257struct ib_uverbs_reg_mr {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700258 __aligned_u64 response;
259 __aligned_u64 start;
260 __aligned_u64 length;
261 __aligned_u64 hca_va;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800262 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700263 __u32 access_flags;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700264 __aligned_u64 driver_data[];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800265};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800266struct ib_uverbs_reg_mr_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700267 __u32 mr_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800268 __u32 lkey;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800269 __u32 rkey;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700270 __u32 driver_data[];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800271};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700272struct ib_uverbs_rereg_mr {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700273 __aligned_u64 response;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800274 __u32 mr_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800275 __u32 flags;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700276 __aligned_u64 start;
277 __aligned_u64 length;
278 __aligned_u64 hca_va;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800279 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700280 __u32 access_flags;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700281 __aligned_u64 driver_data[];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800282};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800283struct ib_uverbs_rereg_mr_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800284 __u32 lkey;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700285 __u32 rkey;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700286 __aligned_u64 driver_data[];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800287};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800288struct ib_uverbs_dereg_mr {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800289 __u32 mr_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700290};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800291struct ib_uverbs_alloc_mw {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700292 __aligned_u64 response;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800293 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700294 __u8 mw_type;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800295 __u8 reserved[3];
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700296 __aligned_u64 driver_data[];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800297};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800298struct ib_uverbs_alloc_mw_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700299 __u32 mw_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800300 __u32 rkey;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700301 __aligned_u64 driver_data[];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800302};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800303struct ib_uverbs_dealloc_mw {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700304 __u32 mw_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800305};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800306struct ib_uverbs_create_comp_channel {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700307 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700308};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800309struct ib_uverbs_create_comp_channel_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800310 __u32 fd;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800311};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700312struct ib_uverbs_create_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700313 __aligned_u64 response;
314 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800315 __u32 cqe;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700316 __u32 comp_vector;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800317 __s32 comp_channel;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800318 __u32 reserved;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700319 __aligned_u64 driver_data[];
Christopher Ferris76a1d452018-06-27 14:12:29 -0700320};
321enum ib_uverbs_ex_create_cq_flags {
322 IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
323 IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN = 1 << 1,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700324};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800325struct ib_uverbs_ex_create_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700326 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800327 __u32 cqe;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700328 __u32 comp_vector;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800329 __s32 comp_channel;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800330 __u32 comp_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800331 __u32 flags;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700332 __u32 reserved;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800333};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800334struct ib_uverbs_create_cq_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800335 __u32 cq_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700336 __u32 cqe;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800337 __aligned_u64 driver_data[0];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800338};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800339struct ib_uverbs_ex_create_cq_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800340 struct ib_uverbs_create_cq_resp base;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700341 __u32 comp_mask;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800342 __u32 response_length;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800343};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800344struct ib_uverbs_resize_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700345 __aligned_u64 response;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800346 __u32 cq_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800347 __u32 cqe;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700348 __aligned_u64 driver_data[];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700349};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800350struct ib_uverbs_resize_cq_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800351 __u32 cqe;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800352 __u32 reserved;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700353 __aligned_u64 driver_data[];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800354};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800355struct ib_uverbs_poll_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700356 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700357 __u32 cq_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800358 __u32 ne;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800359};
Christopher Ferris32ff3f82020-12-14 13:10:04 -0800360enum ib_uverbs_wc_opcode {
361 IB_UVERBS_WC_SEND = 0,
362 IB_UVERBS_WC_RDMA_WRITE = 1,
363 IB_UVERBS_WC_RDMA_READ = 2,
364 IB_UVERBS_WC_COMP_SWAP = 3,
365 IB_UVERBS_WC_FETCH_ADD = 4,
366 IB_UVERBS_WC_BIND_MW = 5,
367 IB_UVERBS_WC_LOCAL_INV = 6,
368 IB_UVERBS_WC_TSO = 7,
Christopher Ferris8b7fdc92023-02-21 13:36:32 -0800369 IB_UVERBS_WC_FLUSH = 8,
370 IB_UVERBS_WC_ATOMIC_WRITE = 9,
Christopher Ferris32ff3f82020-12-14 13:10:04 -0800371};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800372struct ib_uverbs_wc {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700373 __aligned_u64 wr_id;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800374 __u32 status;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800375 __u32 opcode;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800376 __u32 vendor_err;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700377 __u32 byte_len;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800378 union {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700379 __be32 imm_data;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800380 __u32 invalidate_rkey;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700381 } ex;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800382 __u32 qp_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800383 __u32 src_qp;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800384 __u32 wc_flags;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700385 __u16 pkey_index;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800386 __u16 slid;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800387 __u8 sl;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800388 __u8 dlid_path_bits;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700389 __u8 port_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800390 __u8 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800391};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800392struct ib_uverbs_poll_cq_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700393 __u32 count;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800394 __u32 reserved;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700395 struct ib_uverbs_wc wc[];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800396};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700397struct ib_uverbs_req_notify_cq {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800398 __u32 cq_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800399 __u32 solicited_only;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800400};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700401struct ib_uverbs_destroy_cq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700402 __aligned_u64 response;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800403 __u32 cq_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800404 __u32 reserved;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700405};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800406struct ib_uverbs_destroy_cq_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800407 __u32 comp_events_reported;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800408 __u32 async_events_reported;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700409};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800410struct ib_uverbs_global_route {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800411 __u8 dgid[16];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800412 __u32 flow_label;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700413 __u8 sgid_index;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800414 __u8 hop_limit;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800415 __u8 traffic_class;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800416 __u8 reserved;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700417};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800418struct ib_uverbs_ah_attr {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800419 struct ib_uverbs_global_route grh;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800420 __u16 dlid;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700421 __u8 sl;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800422 __u8 src_path_bits;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800423 __u8 static_rate;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800424 __u8 is_global;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700425 __u8 port_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800426 __u8 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800427};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800428struct ib_uverbs_qp_attr {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700429 __u32 qp_attr_mask;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800430 __u32 qp_state;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800431 __u32 cur_qp_state;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800432 __u32 path_mtu;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700433 __u32 path_mig_state;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800434 __u32 qkey;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800435 __u32 rq_psn;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800436 __u32 sq_psn;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700437 __u32 dest_qp_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800438 __u32 qp_access_flags;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800439 struct ib_uverbs_ah_attr ah_attr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800440 struct ib_uverbs_ah_attr alt_ah_attr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700441 __u32 max_send_wr;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800442 __u32 max_recv_wr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800443 __u32 max_send_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800444 __u32 max_recv_sge;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700445 __u32 max_inline_data;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800446 __u16 pkey_index;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800447 __u16 alt_pkey_index;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800448 __u8 en_sqd_async_notify;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700449 __u8 sq_draining;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800450 __u8 max_rd_atomic;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800451 __u8 max_dest_rd_atomic;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800452 __u8 min_rnr_timer;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700453 __u8 port_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800454 __u8 timeout;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800455 __u8 retry_cnt;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800456 __u8 rnr_retry;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700457 __u8 alt_port_num;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800458 __u8 alt_timeout;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800459 __u8 reserved[5];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800460};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700461struct ib_uverbs_create_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700462 __aligned_u64 response;
463 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800464 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700465 __u32 send_cq_handle;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800466 __u32 recv_cq_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800467 __u32 srq_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800468 __u32 max_send_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700469 __u32 max_recv_wr;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800470 __u32 max_send_sge;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800471 __u32 max_recv_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800472 __u32 max_inline_data;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700473 __u8 sq_sig_all;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800474 __u8 qp_type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800475 __u8 is_srq;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800476 __u8 reserved;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700477 __aligned_u64 driver_data[];
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800478};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800479enum ib_uverbs_create_qp_mask {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800480 IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
481};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800482enum {
483 IB_UVERBS_CREATE_QP_SUP_COMP_MASK = IB_UVERBS_CREATE_QP_MASK_IND_TABLE,
484};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800485struct ib_uverbs_ex_create_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700486 __aligned_u64 user_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800487 __u32 pd_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800488 __u32 send_cq_handle;
Tao Baod7db5942015-01-28 10:07:51 -0800489 __u32 recv_cq_handle;
490 __u32 srq_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800491 __u32 max_send_wr;
Tao Baod7db5942015-01-28 10:07:51 -0800492 __u32 max_recv_wr;
493 __u32 max_send_sge;
494 __u32 max_recv_sge;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800495 __u32 max_inline_data;
Tao Baod7db5942015-01-28 10:07:51 -0800496 __u8 sq_sig_all;
497 __u8 qp_type;
498 __u8 is_srq;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800499 __u8 reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800500 __u32 comp_mask;
501 __u32 create_flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800502 __u32 rwq_ind_tbl_handle;
Christopher Ferris1308ad32017-11-14 17:32:13 -0800503 __u32 source_qpn;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800504};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700505struct ib_uverbs_open_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700506 __aligned_u64 response;
507 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800508 __u32 pd_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700509 __u32 qpn;
Tao Baod7db5942015-01-28 10:07:51 -0800510 __u8 qp_type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800511 __u8 reserved[7];
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700512 __aligned_u64 driver_data[];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700513};
Ben Cheng655a7c02013-10-16 16:09:24 -0700514struct ib_uverbs_create_qp_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800515 __u32 qp_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800516 __u32 qpn;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700517 __u32 max_send_wr;
Tao Baod7db5942015-01-28 10:07:51 -0800518 __u32 max_recv_wr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800519 __u32 max_send_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800520 __u32 max_recv_sge;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700521 __u32 max_inline_data;
Tao Baod7db5942015-01-28 10:07:51 -0800522 __u32 reserved;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800523 __u32 driver_data[0];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800524};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800525struct ib_uverbs_ex_create_qp_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700526 struct ib_uverbs_create_qp_resp base;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800527 __u32 comp_mask;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800528 __u32 response_length;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800529};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700530struct ib_uverbs_qp_dest {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800531 __u8 dgid[16];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800532 __u32 flow_label;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800533 __u16 dlid;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700534 __u16 reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800535 __u8 sgid_index;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800536 __u8 hop_limit;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800537 __u8 traffic_class;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700538 __u8 sl;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800539 __u8 src_path_bits;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800540 __u8 static_rate;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800541 __u8 is_global;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700542 __u8 port_num;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800543};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800544struct ib_uverbs_query_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700545 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700546 __u32 qp_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800547 __u32 attr_mask;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700548 __aligned_u64 driver_data[];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800549};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700550struct ib_uverbs_query_qp_resp {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800551 struct ib_uverbs_qp_dest dest;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800552 struct ib_uverbs_qp_dest alt_dest;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800553 __u32 max_send_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700554 __u32 max_recv_wr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800555 __u32 max_send_sge;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800556 __u32 max_recv_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800557 __u32 max_inline_data;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700558 __u32 qkey;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800559 __u32 rq_psn;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800560 __u32 sq_psn;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800561 __u32 dest_qp_num;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700562 __u32 qp_access_flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800563 __u16 pkey_index;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800564 __u16 alt_pkey_index;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800565 __u8 qp_state;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700566 __u8 cur_qp_state;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800567 __u8 path_mtu;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800568 __u8 path_mig_state;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800569 __u8 sq_draining;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700570 __u8 max_rd_atomic;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800571 __u8 max_dest_rd_atomic;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800572 __u8 min_rnr_timer;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800573 __u8 port_num;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700574 __u8 timeout;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800575 __u8 retry_cnt;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800576 __u8 rnr_retry;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800577 __u8 alt_port_num;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700578 __u8 alt_timeout;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800579 __u8 sq_sig_all;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800580 __u8 reserved[5];
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700581 __aligned_u64 driver_data[];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700582};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800583struct ib_uverbs_modify_qp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800584 struct ib_uverbs_qp_dest dest;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800585 struct ib_uverbs_qp_dest alt_dest;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700586 __u32 qp_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800587 __u32 attr_mask;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800588 __u32 qkey;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800589 __u32 rq_psn;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700590 __u32 sq_psn;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800591 __u32 dest_qp_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800592 __u32 qp_access_flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800593 __u16 pkey_index;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700594 __u16 alt_pkey_index;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800595 __u8 qp_state;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800596 __u8 cur_qp_state;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800597 __u8 path_mtu;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700598 __u8 path_mig_state;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800599 __u8 en_sqd_async_notify;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800600 __u8 max_rd_atomic;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800601 __u8 max_dest_rd_atomic;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700602 __u8 min_rnr_timer;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800603 __u8 port_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800604 __u8 timeout;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800605 __u8 retry_cnt;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700606 __u8 rnr_retry;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800607 __u8 alt_port_num;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800608 __u8 alt_timeout;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800609 __u8 reserved[2];
Christopher Ferris76a1d452018-06-27 14:12:29 -0700610 __aligned_u64 driver_data[0];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800611};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800612struct ib_uverbs_ex_modify_qp {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800613 struct ib_uverbs_modify_qp base;
614 __u32 rate_limit;
615 __u32 reserved;
616};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800617struct ib_uverbs_ex_modify_qp_resp {
618 __u32 comp_mask;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800619 __u32 response_length;
620};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700621struct ib_uverbs_destroy_qp {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700622 __aligned_u64 response;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800623 __u32 qp_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800624 __u32 reserved;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700625};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800626struct ib_uverbs_destroy_qp_resp {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800627 __u32 events_reported;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800628};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700629struct ib_uverbs_sge {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700630 __aligned_u64 addr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800631 __u32 length;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800632 __u32 lkey;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700633};
Christopher Ferris86a48372019-01-10 14:14:59 -0800634enum ib_uverbs_wr_opcode {
635 IB_UVERBS_WR_RDMA_WRITE = 0,
636 IB_UVERBS_WR_RDMA_WRITE_WITH_IMM = 1,
637 IB_UVERBS_WR_SEND = 2,
638 IB_UVERBS_WR_SEND_WITH_IMM = 3,
639 IB_UVERBS_WR_RDMA_READ = 4,
640 IB_UVERBS_WR_ATOMIC_CMP_AND_SWP = 5,
641 IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD = 6,
642 IB_UVERBS_WR_LOCAL_INV = 7,
643 IB_UVERBS_WR_BIND_MW = 8,
644 IB_UVERBS_WR_SEND_WITH_INV = 9,
645 IB_UVERBS_WR_TSO = 10,
646 IB_UVERBS_WR_RDMA_READ_WITH_INV = 11,
647 IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12,
648 IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13,
Christopher Ferris8b7fdc92023-02-21 13:36:32 -0800649 IB_UVERBS_WR_FLUSH = 14,
650 IB_UVERBS_WR_ATOMIC_WRITE = 15,
Christopher Ferris86a48372019-01-10 14:14:59 -0800651};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800652struct ib_uverbs_send_wr {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700653 __aligned_u64 wr_id;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800654 __u32 num_sge;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700655 __u32 opcode;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800656 __u32 send_flags;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800657 union {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700658 __be32 imm_data;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700659 __u32 invalidate_rkey;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800660 } ex;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800661 union {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800662 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700663 __aligned_u64 remote_addr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800664 __u32 rkey;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800665 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800666 } rdma;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700667 struct {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700668 __aligned_u64 remote_addr;
669 __aligned_u64 compare_add;
670 __aligned_u64 swap;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700671 __u32 rkey;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800672 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800673 } atomic;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800674 struct {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700675 __u32 ah;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800676 __u32 remote_qpn;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800677 __u32 remote_qkey;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800678 __u32 reserved;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700679 } ud;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800680 } wr;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800681};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800682struct ib_uverbs_post_send {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700683 __aligned_u64 response;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800684 __u32 qp_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800685 __u32 wr_count;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800686 __u32 sge_count;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700687 __u32 wqe_size;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700688 struct ib_uverbs_send_wr send_wr[];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800689};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800690struct ib_uverbs_post_send_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700691 __u32 bad_wr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800692};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800693struct ib_uverbs_recv_wr {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700694 __aligned_u64 wr_id;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700695 __u32 num_sge;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800696 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800697};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800698struct ib_uverbs_post_recv {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700699 __aligned_u64 response;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800700 __u32 qp_handle;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800701 __u32 wr_count;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800702 __u32 sge_count;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700703 __u32 wqe_size;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700704 struct ib_uverbs_recv_wr recv_wr[];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800705};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800706struct ib_uverbs_post_recv_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700707 __u32 bad_wr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800708};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800709struct ib_uverbs_post_srq_recv {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700710 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700711 __u32 srq_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800712 __u32 wr_count;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800713 __u32 sge_count;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800714 __u32 wqe_size;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700715 struct ib_uverbs_recv_wr recv[];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800716};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800717struct ib_uverbs_post_srq_recv_resp {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800718 __u32 bad_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700719};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800720struct ib_uverbs_create_ah {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700721 __aligned_u64 response;
722 __aligned_u64 user_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700723 __u32 pd_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800724 __u32 reserved;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800725 struct ib_uverbs_ah_attr attr;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700726 __aligned_u64 driver_data[];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800727};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700728struct ib_uverbs_create_ah_resp {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800729 __u32 ah_handle;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700730 __u32 driver_data[];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800731};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800732struct ib_uverbs_destroy_ah {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700733 __u32 ah_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800734};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800735struct ib_uverbs_attach_mcast {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800736 __u8 gid[16];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700737 __u32 qp_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800738 __u16 mlid;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800739 __u16 reserved;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700740 __aligned_u64 driver_data[];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700741};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800742struct ib_uverbs_detach_mcast {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800743 __u8 gid[16];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800744 __u32 qp_handle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700745 __u16 mlid;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800746 __u16 reserved;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700747 __aligned_u64 driver_data[];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800748};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700749struct ib_uverbs_flow_spec_hdr {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800750 __u32 type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800751 __u16 size;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800752 __u16 reserved;
Christopher Ferris76a1d452018-06-27 14:12:29 -0700753 __aligned_u64 flow_spec_data[0];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800754};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800755struct ib_uverbs_flow_eth_filter {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800756 __u8 dst_mac[6];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700757 __u8 src_mac[6];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800758 __be16 ether_type;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800759 __be16 vlan_tag;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800760};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700761struct ib_uverbs_flow_spec_eth {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800762 union {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800763 struct ib_uverbs_flow_spec_hdr hdr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800764 struct {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700765 __u32 type;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800766 __u16 size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800767 __u16 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800768 };
Christopher Ferris106b3a82016-08-24 12:15:38 -0700769 };
Christopher Ferris05d08e92016-02-04 13:16:38 -0800770 struct ib_uverbs_flow_eth_filter val;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800771 struct ib_uverbs_flow_eth_filter mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800772};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700773struct ib_uverbs_flow_ipv4_filter {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800774 __be32 src_ip;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800775 __be32 dst_ip;
776 __u8 proto;
777 __u8 tos;
778 __u8 ttl;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800779 __u8 flags;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800780};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700781struct ib_uverbs_flow_spec_ipv4 {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800782 union {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800783 struct ib_uverbs_flow_spec_hdr hdr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800784 struct {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700785 __u32 type;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800786 __u16 size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800787 __u16 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800788 };
Christopher Ferris106b3a82016-08-24 12:15:38 -0700789 };
Christopher Ferris05d08e92016-02-04 13:16:38 -0800790 struct ib_uverbs_flow_ipv4_filter val;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800791 struct ib_uverbs_flow_ipv4_filter mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800792};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700793struct ib_uverbs_flow_tcp_udp_filter {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800794 __be16 dst_port;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800795 __be16 src_port;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800796};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700797struct ib_uverbs_flow_spec_tcp_udp {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800798 union {
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800799 struct ib_uverbs_flow_spec_hdr hdr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800800 struct {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700801 __u32 type;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800802 __u16 size;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800803 __u16 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800804 };
Christopher Ferris106b3a82016-08-24 12:15:38 -0700805 };
Christopher Ferris05d08e92016-02-04 13:16:38 -0800806 struct ib_uverbs_flow_tcp_udp_filter val;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800807 struct ib_uverbs_flow_tcp_udp_filter mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800808};
809struct ib_uverbs_flow_ipv6_filter {
810 __u8 src_ip[16];
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800811 __u8 dst_ip[16];
812 __be32 flow_label;
813 __u8 next_hdr;
814 __u8 traffic_class;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800815 __u8 hop_limit;
816 __u8 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800817};
818struct ib_uverbs_flow_spec_ipv6 {
819 union {
820 struct ib_uverbs_flow_spec_hdr hdr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800821 struct {
822 __u32 type;
823 __u16 size;
824 __u16 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800825 };
826 };
827 struct ib_uverbs_flow_ipv6_filter val;
828 struct ib_uverbs_flow_ipv6_filter mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800829};
Christopher Ferris525ce912017-07-26 13:12:53 -0700830struct ib_uverbs_flow_spec_action_tag {
831 union {
832 struct ib_uverbs_flow_spec_hdr hdr;
833 struct {
834 __u32 type;
835 __u16 size;
836 __u16 reserved;
837 };
838 };
839 __u32 tag_id;
840 __u32 reserved1;
841};
842struct ib_uverbs_flow_spec_action_drop {
843 union {
844 struct ib_uverbs_flow_spec_hdr hdr;
845 struct {
846 __u32 type;
847 __u16 size;
848 __u16 reserved;
849 };
850 };
851};
Christopher Ferris76a1d452018-06-27 14:12:29 -0700852struct ib_uverbs_flow_spec_action_handle {
853 union {
854 struct ib_uverbs_flow_spec_hdr hdr;
855 struct {
856 __u32 type;
857 __u16 size;
858 __u16 reserved;
859 };
860 };
861 __u32 handle;
862 __u32 reserved1;
863};
Christopher Ferris9ce28842018-10-25 12:11:39 -0700864struct ib_uverbs_flow_spec_action_count {
865 union {
866 struct ib_uverbs_flow_spec_hdr hdr;
867 struct {
868 __u32 type;
869 __u16 size;
870 __u16 reserved;
871 };
872 };
873 __u32 handle;
874 __u32 reserved1;
875};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800876struct ib_uverbs_flow_tunnel_filter {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800877 __be32 tunnel_id;
878};
879struct ib_uverbs_flow_spec_tunnel {
880 union {
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800881 struct ib_uverbs_flow_spec_hdr hdr;
882 struct {
883 __u32 type;
884 __u16 size;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800885 __u16 reserved;
886 };
887 };
888 struct ib_uverbs_flow_tunnel_filter val;
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800889 struct ib_uverbs_flow_tunnel_filter mask;
890};
Christopher Ferris76a1d452018-06-27 14:12:29 -0700891struct ib_uverbs_flow_spec_esp_filter {
892 __u32 spi;
893 __u32 seq;
894};
895struct ib_uverbs_flow_spec_esp {
896 union {
897 struct ib_uverbs_flow_spec_hdr hdr;
898 struct {
899 __u32 type;
900 __u16 size;
901 __u16 reserved;
902 };
903 };
904 struct ib_uverbs_flow_spec_esp_filter val;
905 struct ib_uverbs_flow_spec_esp_filter mask;
906};
Christopher Ferris9ce28842018-10-25 12:11:39 -0700907struct ib_uverbs_flow_gre_filter {
908 __be16 c_ks_res0_ver;
909 __be16 protocol;
910 __be32 key;
911};
912struct ib_uverbs_flow_spec_gre {
913 union {
914 struct ib_uverbs_flow_spec_hdr hdr;
915 struct {
916 __u32 type;
917 __u16 size;
918 __u16 reserved;
919 };
920 };
921 struct ib_uverbs_flow_gre_filter val;
922 struct ib_uverbs_flow_gre_filter mask;
923};
924struct ib_uverbs_flow_mpls_filter {
925 __be32 label;
926};
927struct ib_uverbs_flow_spec_mpls {
928 union {
929 struct ib_uverbs_flow_spec_hdr hdr;
930 struct {
931 __u32 type;
932 __u16 size;
933 __u16 reserved;
934 };
935 };
936 struct ib_uverbs_flow_mpls_filter val;
937 struct ib_uverbs_flow_mpls_filter mask;
938};
Christopher Ferris48af7cb2017-02-21 12:35:09 -0800939struct ib_uverbs_flow_attr {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800940 __u32 type;
Tao Baod7db5942015-01-28 10:07:51 -0800941 __u16 size;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800942 __u16 priority;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700943 __u8 num_of_specs;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800944 __u8 reserved[2];
Tao Baod7db5942015-01-28 10:07:51 -0800945 __u8 port;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800946 __u32 flags;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700947 struct ib_uverbs_flow_spec_hdr flow_specs[];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800948};
Christopher Ferris38062f92014-07-09 15:33:25 -0700949struct ib_uverbs_create_flow {
Christopher Ferris49f525c2016-12-12 14:55:36 -0800950 __u32 comp_mask;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700951 __u32 qp_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800952 struct ib_uverbs_flow_attr flow_attr;
Christopher Ferris38062f92014-07-09 15:33:25 -0700953};
954struct ib_uverbs_create_flow_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700955 __u32 comp_mask;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800956 __u32 flow_handle;
Christopher Ferris38062f92014-07-09 15:33:25 -0700957};
958struct ib_uverbs_destroy_flow {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700959 __u32 comp_mask;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800960 __u32 flow_handle;
Ben Cheng655a7c02013-10-16 16:09:24 -0700961};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800962struct ib_uverbs_create_srq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700963 __aligned_u64 response;
964 __aligned_u64 user_handle;
Tao Baod7db5942015-01-28 10:07:51 -0800965 __u32 pd_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800966 __u32 max_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700967 __u32 max_sge;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800968 __u32 srq_limit;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700969 __aligned_u64 driver_data[];
Christopher Ferris49f525c2016-12-12 14:55:36 -0800970};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700971struct ib_uverbs_create_xsrq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700972 __aligned_u64 response;
973 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800974 __u32 srq_type;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700975 __u32 pd_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800976 __u32 max_wr;
Tao Baod7db5942015-01-28 10:07:51 -0800977 __u32 max_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800978 __u32 srq_limit;
Christopher Ferris1308ad32017-11-14 17:32:13 -0800979 __u32 max_num_tags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800980 __u32 xrcd_handle;
Tao Baod7db5942015-01-28 10:07:51 -0800981 __u32 cq_handle;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700982 __aligned_u64 driver_data[];
Christopher Ferris106b3a82016-08-24 12:15:38 -0700983};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800984struct ib_uverbs_create_srq_resp {
Tao Baod7db5942015-01-28 10:07:51 -0800985 __u32 srq_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800986 __u32 max_wr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700987 __u32 max_sge;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800988 __u32 srqn;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700989 __u32 driver_data[];
Ben Cheng655a7c02013-10-16 16:09:24 -0700990};
Christopher Ferris49f525c2016-12-12 14:55:36 -0800991struct ib_uverbs_modify_srq {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700992 __u32 srq_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800993 __u32 attr_mask;
Tao Baod7db5942015-01-28 10:07:51 -0800994 __u32 max_wr;
Christopher Ferris49f525c2016-12-12 14:55:36 -0800995 __u32 srq_limit;
Christopher Ferris7447a1c2022-10-04 18:24:44 -0700996 __aligned_u64 driver_data[];
Christopher Ferris05d08e92016-02-04 13:16:38 -0800997};
Ben Cheng655a7c02013-10-16 16:09:24 -0700998struct ib_uverbs_query_srq {
Christopher Ferris76a1d452018-06-27 14:12:29 -0700999 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -07001000 __u32 srq_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -08001001 __u32 reserved;
Christopher Ferris7447a1c2022-10-04 18:24:44 -07001002 __aligned_u64 driver_data[];
Christopher Ferris49f525c2016-12-12 14:55:36 -08001003};
Christopher Ferris106b3a82016-08-24 12:15:38 -07001004struct ib_uverbs_query_srq_resp {
Christopher Ferris05d08e92016-02-04 13:16:38 -08001005 __u32 max_wr;
Tao Baod7db5942015-01-28 10:07:51 -08001006 __u32 max_sge;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001007 __u32 srq_limit;
Christopher Ferris106b3a82016-08-24 12:15:38 -07001008 __u32 reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -08001009};
Ben Cheng655a7c02013-10-16 16:09:24 -07001010struct ib_uverbs_destroy_srq {
Christopher Ferris76a1d452018-06-27 14:12:29 -07001011 __aligned_u64 response;
Christopher Ferris106b3a82016-08-24 12:15:38 -07001012 __u32 srq_handle;
Christopher Ferris05d08e92016-02-04 13:16:38 -08001013 __u32 reserved;
Ben Cheng655a7c02013-10-16 16:09:24 -07001014};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001015struct ib_uverbs_destroy_srq_resp {
Christopher Ferris106b3a82016-08-24 12:15:38 -07001016 __u32 events_reported;
Christopher Ferris05d08e92016-02-04 13:16:38 -08001017};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001018struct ib_uverbs_ex_create_wq {
Christopher Ferris49f525c2016-12-12 14:55:36 -08001019 __u32 comp_mask;
1020 __u32 wq_type;
Christopher Ferris76a1d452018-06-27 14:12:29 -07001021 __aligned_u64 user_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001022 __u32 pd_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001023 __u32 cq_handle;
1024 __u32 max_wr;
1025 __u32 max_sge;
Christopher Ferris525ce912017-07-26 13:12:53 -07001026 __u32 create_flags;
1027 __u32 reserved;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001028};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001029struct ib_uverbs_ex_create_wq_resp {
1030 __u32 comp_mask;
1031 __u32 response_length;
1032 __u32 wq_handle;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001033 __u32 max_wr;
1034 __u32 max_sge;
1035 __u32 wqn;
1036};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001037struct ib_uverbs_ex_destroy_wq {
1038 __u32 comp_mask;
1039 __u32 wq_handle;
1040};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001041struct ib_uverbs_ex_destroy_wq_resp {
1042 __u32 comp_mask;
1043 __u32 response_length;
1044 __u32 events_reported;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001045 __u32 reserved;
1046};
1047struct ib_uverbs_ex_modify_wq {
1048 __u32 attr_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001049 __u32 wq_handle;
1050 __u32 wq_state;
1051 __u32 curr_wq_state;
Christopher Ferris525ce912017-07-26 13:12:53 -07001052 __u32 flags;
1053 __u32 flags_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001054};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001055#define IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE 0x0d
1056struct ib_uverbs_ex_create_rwq_ind_table {
1057 __u32 comp_mask;
1058 __u32 log_ind_tbl_size;
Christopher Ferris7447a1c2022-10-04 18:24:44 -07001059 __u32 wq_handles[];
Christopher Ferris49f525c2016-12-12 14:55:36 -08001060};
1061struct ib_uverbs_ex_create_rwq_ind_table_resp {
1062 __u32 comp_mask;
Christopher Ferris49f525c2016-12-12 14:55:36 -08001063 __u32 response_length;
1064 __u32 ind_tbl_handle;
1065 __u32 ind_tbl_num;
1066};
Christopher Ferris49f525c2016-12-12 14:55:36 -08001067struct ib_uverbs_ex_destroy_rwq_ind_table {
1068 __u32 comp_mask;
1069 __u32 ind_tbl_handle;
1070};
Christopher Ferris934ec942018-01-31 15:29:16 -08001071struct ib_uverbs_cq_moderation {
1072 __u16 cq_count;
1073 __u16 cq_period;
1074};
1075struct ib_uverbs_ex_modify_cq {
1076 __u32 cq_handle;
1077 __u32 attr_mask;
1078 struct ib_uverbs_cq_moderation attr;
1079 __u32 reserved;
1080};
Christopher Ferris525ce912017-07-26 13:12:53 -07001081#define IB_DEVICE_NAME_MAX 64
Christopher Ferris80ae69d2022-08-02 16:32:21 -07001082enum ib_uverbs_device_cap_flags {
1083 IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 << 0,
1084 IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 1 << 1,
1085 IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 1 << 2,
1086 IB_UVERBS_DEVICE_RAW_MULTI = 1 << 3,
1087 IB_UVERBS_DEVICE_AUTO_PATH_MIG = 1 << 4,
1088 IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 1 << 5,
1089 IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 1 << 6,
1090 IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 1 << 7,
1091 IB_UVERBS_DEVICE_SHUTDOWN_PORT = 1 << 8,
1092 IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1 << 10,
1093 IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 1 << 11,
1094 IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 1 << 12,
1095 IB_UVERBS_DEVICE_SRQ_RESIZE = 1 << 13,
1096 IB_UVERBS_DEVICE_N_NOTIFY_CQ = 1 << 14,
1097 IB_UVERBS_DEVICE_MEM_WINDOW = 1 << 17,
1098 IB_UVERBS_DEVICE_UD_IP_CSUM = 1 << 18,
1099 IB_UVERBS_DEVICE_XRC = 1 << 20,
1100 IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 1 << 21,
1101 IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 1 << 23,
1102 IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 1 << 24,
1103 IB_UVERBS_DEVICE_RC_IP_CSUM = 1 << 25,
1104 IB_UVERBS_DEVICE_RAW_IP_CSUM = 1 << 26,
1105 IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 1 << 29,
1106 IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34,
1107 IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36,
Christopher Ferris8b7fdc92023-02-21 13:36:32 -08001108 IB_UVERBS_DEVICE_FLUSH_GLOBAL = 1ULL << 38,
1109 IB_UVERBS_DEVICE_FLUSH_PERSISTENT = 1ULL << 39,
1110 IB_UVERBS_DEVICE_ATOMIC_WRITE = 1ULL << 40,
Christopher Ferris80ae69d2022-08-02 16:32:21 -07001111};
1112enum ib_uverbs_raw_packet_caps {
1113 IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0,
1114 IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1,
1115 IB_UVERBS_RAW_PACKET_CAP_IP_CSUM = 1 << 2,
1116 IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP = 1 << 3,
1117};
Ben Cheng655a7c02013-10-16 16:09:24 -07001118#endif