ib_user_verbs.h revision 30692c65c4174412c90e79489e98ab85c1a7412f
130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (c) 2005 Topspin Communications.  All rights reserved.
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (c) 2005, 2006 Cisco Systems.  All rights reserved.
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (c) 2005 PathScale, Inc.  All rights reserved.
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (c) 2006 Mellanox Technologies.  All rights reserved.
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This software is available to you under a choice of one of two
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * licenses.  You may choose to be licensed under the terms of the GNU
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * General Public License (GPL) Version 2, available from the file
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * COPYING in the main directory of this source tree, or the
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * OpenIB.org BSD license below:
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *     Redistribution and use in source and binary forms, with or
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *     without modification, are permitted provided that the following
1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *     conditions are met:
1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *      - Redistributions of source code must retain the above
1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *        copyright notice, this list of conditions and the following
1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *        disclaimer.
2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *      - Redistributions in binary form must reproduce the above
2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *        copyright notice, this list of conditions and the following
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *        disclaimer in the documentation and/or other materials
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *        provided with the distribution.
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * SOFTWARE.
3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef IB_USER_VERBS_H
3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IB_USER_VERBS_H
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h>
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Increment this value if any changes that break userspace ABI
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * compatibility are made.
4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IB_USER_VERBS_ABI_VERSION	6
4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4730692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum {
4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_GET_CONTEXT,
4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_QUERY_DEVICE,
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_QUERY_PORT,
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_ALLOC_PD,
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_DEALLOC_PD,
5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_CREATE_AH,
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_MODIFY_AH,
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_QUERY_AH,
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_DESTROY_AH,
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_REG_MR,
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_REG_SMR,
5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_REREG_MR,
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_QUERY_MR,
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_DEREG_MR,
6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_ALLOC_MW,
6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_BIND_MW,
6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_DEALLOC_MW,
6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL,
6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_CREATE_CQ,
6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_RESIZE_CQ,
6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_DESTROY_CQ,
6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_POLL_CQ,
7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_PEEK_CQ,
7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_REQ_NOTIFY_CQ,
7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_CREATE_QP,
7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_QUERY_QP,
7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_MODIFY_QP,
7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_DESTROY_QP,
7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_POST_SEND,
7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_POST_RECV,
7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_ATTACH_MCAST,
7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_DETACH_MCAST,
8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_CREATE_SRQ,
8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_MODIFY_SRQ,
8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_QUERY_SRQ,
8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_DESTROY_SRQ,
8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_POST_SRQ_RECV,
8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_OPEN_XRCD,
8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_CLOSE_XRCD,
8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_CREATE_XSRQ,
8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	IB_USER_VERBS_CMD_OPEN_QP
8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Make sure that all structs defined in this file remain laid out so
9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * that they pack the same way on 32-bit and 64-bit architectures (to
9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * avoid incompatibility between 32-bit userspace and 64-bit kernels).
9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Specifically:
9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *  - Do not use pointer types -- pass pointers in __u64 instead.
9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *  - Make sure that any structure larger than 4 bytes is padded to a
9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *    multiple of 8 bytes.  Otherwise the structure size will be
9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *    different between 32-bit and 64-bit architectures.
10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
10230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_async_event_desc {
10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 element;
10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 event_type;	/* enum ib_event_type */
10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
10830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_comp_event_desc {
10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 cq_handle;
11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * All commands from userspace should start with a __u32 command field
11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * followed by __u16 in_words and out_words fields (which give the
11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * length of the command block and response buffer if any in 32-bit
11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * words).  The kernel driver will read these fields first and read
11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the rest of the command struct based on these value.
11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
12030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_cmd_hdr {
12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 command;
12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 in_words;
12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 out_words;
12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
12530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
12630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_get_context {
12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
13130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_get_context_resp {
13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 async_fd;
13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 num_comp_vectors;
13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
13630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_query_device {
13730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
14130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_query_device_resp {
14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 fw_ver;
14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__be64 node_guid;
14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__be64 sys_image_guid;
14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 max_mr_size;
14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 page_size_cap;
14730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 vendor_id;
14830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 vendor_part_id;
14930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 hw_ver;
15030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_qp;
15130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_qp_wr;
15230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 device_cap_flags;
15330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_sge;
15430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_sge_rd;
15530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_cq;
15630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_cqe;
15730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_mr;
15830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_pd;
15930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_qp_rd_atom;
16030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_ee_rd_atom;
16130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_res_rd_atom;
16230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_qp_init_rd_atom;
16330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_ee_init_rd_atom;
16430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 atomic_cap;
16530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_ee;
16630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_rdd;
16730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_mw;
16830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_raw_ipv6_qp;
16930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_raw_ethy_qp;
17030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_mcast_grp;
17130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_mcast_qp_attach;
17230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_total_mcast_qp_attach;
17330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_ah;
17430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_fmr;
17530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_map_per_fmr;
17630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_srq;
17730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_srq_wr;
17830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_srq_sge;
17930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 max_pkeys;
18030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  local_ca_ack_delay;
18130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  phys_port_cnt;
18230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved[4];
18330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
18430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
18530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_query_port {
18630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
18730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  port_num;
18830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved[7];
18930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
19030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
19130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
19230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_query_port_resp {
19330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 port_cap_flags;
19430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_msg_sz;
19530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 bad_pkey_cntr;
19630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qkey_viol_cntr;
19730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 gid_tbl_len;
19830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 pkey_tbl_len;
19930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 lid;
20030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 sm_lid;
20130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  state;
20230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  max_mtu;
20330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  active_mtu;
20430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  lmc;
20530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  max_vl_num;
20630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  sm_sl;
20730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  subnet_timeout;
20830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  init_type_reply;
20930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  active_width;
21030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  active_speed;
21130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  phys_state;
21230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  link_layer;
21330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved[2];
21430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
21530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
21630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_alloc_pd {
21730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
21830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
21930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
22030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
22130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_alloc_pd_resp {
22230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 pd_handle;
22330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
22430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
22530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_dealloc_pd {
22630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 pd_handle;
22730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
22830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
22930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_open_xrcd {
23030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
23130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 fd;
23230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 oflags;
23330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
23430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
23530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
23630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_open_xrcd_resp {
23730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 xrcd_handle;
23830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
23930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
24030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_close_xrcd {
24130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 xrcd_handle;
24230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
24330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
24430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_reg_mr {
24530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
24630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 start;
24730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 length;
24830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 hca_va;
24930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 pd_handle;
25030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 access_flags;
25130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
25230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
25330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
25430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_reg_mr_resp {
25530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 mr_handle;
25630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 lkey;
25730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 rkey;
25830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
25930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
26030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_dereg_mr {
26130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 mr_handle;
26230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
26330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
26430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_alloc_mw {
26530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
26630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 pd_handle;
26730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  mw_type;
26830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved[3];
26930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
27030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
27130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_alloc_mw_resp {
27230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 mw_handle;
27330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 rkey;
27430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
27530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
27630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_dealloc_mw {
27730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 mw_handle;
27830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
27930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
28030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_comp_channel {
28130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
28230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
28330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
28430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_comp_channel_resp {
28530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 fd;
28630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
28730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
28830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_cq {
28930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
29030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 user_handle;
29130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cqe;
29230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 comp_vector;
29330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__s32 comp_channel;
29430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
29530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
29630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
29730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
29830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_cq_resp {
29930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cq_handle;
30030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cqe;
30130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
30230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
30330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_resize_cq {
30430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
30530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cq_handle;
30630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cqe;
30730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
30830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
30930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
31030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_resize_cq_resp {
31130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cqe;
31230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
31330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
31430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
31530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
31630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_poll_cq {
31730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
31830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cq_handle;
31930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 ne;
32030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
32130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
32230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_wc {
32330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 wr_id;
32430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 status;
32530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 opcode;
32630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 vendor_err;
32730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 byte_len;
32830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	union {
32930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		__u32 imm_data;
33030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		__u32 invalidate_rkey;
33130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	} ex;
33230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_num;
33330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 src_qp;
33430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 wc_flags;
33530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 pkey_index;
33630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 slid;
33730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 sl;
33830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 dlid_path_bits;
33930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 port_num;
34030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 reserved;
34130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
34230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
34330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_poll_cq_resp {
34430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 count;
34530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
34630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_wc wc[0];
34730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
34830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
34930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_req_notify_cq {
35030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cq_handle;
35130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 solicited_only;
35230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
35330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
35430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_destroy_cq {
35530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
35630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cq_handle;
35730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
35830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
35930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
36030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_destroy_cq_resp {
36130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 comp_events_reported;
36230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 async_events_reported;
36330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
36430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
36530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_global_route {
36630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  dgid[16];
36730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 flow_label;
36830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  sgid_index;
36930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  hop_limit;
37030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  traffic_class;
37130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved;
37230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
37330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
37430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_ah_attr {
37530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_global_route grh;
37630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 dlid;
37730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  sl;
37830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  src_path_bits;
37930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  static_rate;
38030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  is_global;
38130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  port_num;
38230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved;
38330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
38430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
38530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_qp_attr {
38630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	qp_attr_mask;
38730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	qp_state;
38830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	cur_qp_state;
38930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	path_mtu;
39030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	path_mig_state;
39130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	qkey;
39230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	rq_psn;
39330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	sq_psn;
39430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	dest_qp_num;
39530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	qp_access_flags;
39630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
39730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_ah_attr ah_attr;
39830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_ah_attr alt_ah_attr;
39930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
40030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	/* ib_qp_cap */
40130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	max_send_wr;
40230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	max_recv_wr;
40330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	max_send_sge;
40430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	max_recv_sge;
40530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32	max_inline_data;
40630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
40730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16	pkey_index;
40830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16	alt_pkey_index;
40930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	en_sqd_async_notify;
41030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	sq_draining;
41130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	max_rd_atomic;
41230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	max_dest_rd_atomic;
41330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	min_rnr_timer;
41430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	port_num;
41530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	timeout;
41630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	retry_cnt;
41730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	rnr_retry;
41830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	alt_port_num;
41930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	alt_timeout;
42030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	reserved[5];
42130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
42230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
42330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_qp {
42430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
42530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 user_handle;
42630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 pd_handle;
42730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 send_cq_handle;
42830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 recv_cq_handle;
42930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_handle;
43030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_send_wr;
43130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_recv_wr;
43230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_send_sge;
43330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_recv_sge;
43430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_inline_data;
43530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  sq_sig_all;
43630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  qp_type;
43730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  is_srq;
43830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved;
43930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
44030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
44130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
44230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_open_qp {
44330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
44430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 user_handle;
44530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 pd_handle;
44630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qpn;
44730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  qp_type;
44830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved[7];
44930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
45030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
45130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
45230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* also used for open response */
45330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_qp_resp {
45430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_handle;
45530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qpn;
45630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_send_wr;
45730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_recv_wr;
45830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_send_sge;
45930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_recv_sge;
46030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_inline_data;
46130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
46230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
46330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
46430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
46530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This struct needs to remain a multiple of 8 bytes to keep the
46630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * alignment of the modify QP parameters.
46730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
46830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_qp_dest {
46930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  dgid[16];
47030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 flow_label;
47130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 dlid;
47230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 reserved;
47330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  sgid_index;
47430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  hop_limit;
47530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  traffic_class;
47630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  sl;
47730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  src_path_bits;
47830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  static_rate;
47930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  is_global;
48030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  port_num;
48130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
48230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
48330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_query_qp {
48430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
48530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_handle;
48630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 attr_mask;
48730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
48830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
48930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
49030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_query_qp_resp {
49130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_qp_dest dest;
49230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_qp_dest alt_dest;
49330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_send_wr;
49430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_recv_wr;
49530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_send_sge;
49630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_recv_sge;
49730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_inline_data;
49830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qkey;
49930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 rq_psn;
50030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 sq_psn;
50130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 dest_qp_num;
50230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_access_flags;
50330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 pkey_index;
50430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 alt_pkey_index;
50530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  qp_state;
50630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  cur_qp_state;
50730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  path_mtu;
50830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  path_mig_state;
50930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  sq_draining;
51030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  max_rd_atomic;
51130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  max_dest_rd_atomic;
51230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  min_rnr_timer;
51330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  port_num;
51430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  timeout;
51530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  retry_cnt;
51630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  rnr_retry;
51730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  alt_port_num;
51830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  alt_timeout;
51930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  sq_sig_all;
52030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved[5];
52130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
52230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
52330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
52430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_modify_qp {
52530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_qp_dest dest;
52630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_qp_dest alt_dest;
52730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_handle;
52830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 attr_mask;
52930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qkey;
53030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 rq_psn;
53130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 sq_psn;
53230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 dest_qp_num;
53330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_access_flags;
53430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 pkey_index;
53530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 alt_pkey_index;
53630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  qp_state;
53730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  cur_qp_state;
53830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  path_mtu;
53930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  path_mig_state;
54030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  en_sqd_async_notify;
54130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  max_rd_atomic;
54230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  max_dest_rd_atomic;
54330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  min_rnr_timer;
54430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  port_num;
54530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  timeout;
54630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  retry_cnt;
54730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  rnr_retry;
54830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  alt_port_num;
54930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  alt_timeout;
55030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  reserved[2];
55130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
55230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
55330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
55430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_modify_qp_resp {
55530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
55630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
55730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_destroy_qp {
55830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
55930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_handle;
56030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
56130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
56230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
56330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_destroy_qp_resp {
56430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 events_reported;
56530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
56630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
56730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
56830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * The ib_uverbs_sge structure isn't used anywhere, since we assume
56930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the ib_sge structure is packed the same way on 32-bit and 64-bit
57030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * architectures in both kernel and user space.  It's just here to
57130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * document the ABI.
57230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
57330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_sge {
57430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 addr;
57530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 length;
57630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 lkey;
57730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
57830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
57930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_send_wr {
58030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 wr_id;
58130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 num_sge;
58230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 opcode;
58330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 send_flags;
58430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	union {
58530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		__u32 imm_data;
58630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		__u32 invalidate_rkey;
58730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	} ex;
58830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	union {
58930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		struct {
59030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u64 remote_addr;
59130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u32 rkey;
59230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u32 reserved;
59330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		} rdma;
59430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		struct {
59530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u64 remote_addr;
59630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u64 compare_add;
59730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u64 swap;
59830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u32 rkey;
59930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u32 reserved;
60030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		} atomic;
60130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		struct {
60230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u32 ah;
60330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u32 remote_qpn;
60430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u32 remote_qkey;
60530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng			__u32 reserved;
60630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng		} ud;
60730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	} wr;
60830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
60930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
61030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_post_send {
61130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
61230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_handle;
61330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 wr_count;
61430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 sge_count;
61530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 wqe_size;
61630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_send_wr send_wr[0];
61730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
61830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
61930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_post_send_resp {
62030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 bad_wr;
62130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
62230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
62330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_recv_wr {
62430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 wr_id;
62530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 num_sge;
62630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
62730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
62830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
62930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_post_recv {
63030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
63130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_handle;
63230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 wr_count;
63330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 sge_count;
63430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 wqe_size;
63530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_recv_wr recv_wr[0];
63630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
63730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
63830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_post_recv_resp {
63930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 bad_wr;
64030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
64130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
64230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_post_srq_recv {
64330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
64430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_handle;
64530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 wr_count;
64630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 sge_count;
64730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 wqe_size;
64830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_recv_wr recv[0];
64930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
65030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
65130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_post_srq_recv_resp {
65230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 bad_wr;
65330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
65430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
65530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_ah {
65630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
65730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 user_handle;
65830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 pd_handle;
65930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
66030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct ib_uverbs_ah_attr attr;
66130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
66230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
66330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_ah_resp {
66430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 ah_handle;
66530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
66630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
66730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_destroy_ah {
66830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 ah_handle;
66930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
67030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
67130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_attach_mcast {
67230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  gid[16];
67330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_handle;
67430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 mlid;
67530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 reserved;
67630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
67730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
67830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
67930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_detach_mcast {
68030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8  gid[16];
68130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 qp_handle;
68230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 mlid;
68330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 reserved;
68430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
68530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
68630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
68730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_srq {
68830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
68930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 user_handle;
69030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 pd_handle;
69130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_wr;
69230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_sge;
69330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_limit;
69430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
69530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
69630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
69730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_xsrq {
69830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
69930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 user_handle;
70030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_type;
70130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 pd_handle;
70230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_wr;
70330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_sge;
70430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_limit;
70530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
70630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 xrcd_handle;
70730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 cq_handle;
70830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
70930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
71030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
71130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_create_srq_resp {
71230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_handle;
71330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_wr;
71430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_sge;
71530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srqn;
71630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
71730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
71830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_modify_srq {
71930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_handle;
72030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 attr_mask;
72130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_wr;
72230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_limit;
72330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
72430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
72530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
72630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_query_srq {
72730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
72830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_handle;
72930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
73030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 driver_data[0];
73130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
73230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
73330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_query_srq_resp {
73430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_wr;
73530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 max_sge;
73630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_limit;
73730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
73830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
73930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
74030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_destroy_srq {
74130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u64 response;
74230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 srq_handle;
74330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 reserved;
74430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
74530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
74630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ib_uverbs_destroy_srq_resp {
74730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 events_reported;
74830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
74930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
75030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* IB_USER_VERBS_H */
751