18a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier/*
28a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * Copyright (c) 2005 Topspin Communications.  All rights reserved.
333b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier * Copyright (c) 2005, 2006 Cisco Systems.  All rights reserved.
491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier * Copyright (c) 2005 PathScale, Inc.  All rights reserved.
58bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak * Copyright (c) 2006 Mellanox Technologies.  All rights reserved.
68a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *
78a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * This software is available to you under a choice of one of two
88a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * licenses.  You may choose to be licensed under the terms of the GNU
98a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * General Public License (GPL) Version 2, available from the file
108a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * COPYING in the main directory of this source tree, or the
118a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * OpenIB.org BSD license below:
128a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *
138a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *     Redistribution and use in source and binary forms, with or
148a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *     without modification, are permitted provided that the following
158a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *     conditions are met:
168a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *
178a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *      - Redistributions of source code must retain the above
188a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *        copyright notice, this list of conditions and the following
198a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *        disclaimer.
208a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *
218a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *      - Redistributions in binary form must reproduce the above
228a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *        copyright notice, this list of conditions and the following
238a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *        disclaimer in the documentation and/or other materials
248a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *        provided with the distribution.
258a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier *
268a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
278a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
288a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
298a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
308a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
318a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
328a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
338a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * SOFTWARE.
348a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier */
358a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
368a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier#ifndef IB_USER_VERBS_H
378a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier#define IB_USER_VERBS_H
388a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
398a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier#include <linux/types.h>
408a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
418a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier/*
428a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * Increment this value if any changes that break userspace ABI
438a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * compatibility are made.
448a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier */
45ea88fd16d6e85f4bc71b6053180b64f04be1ff14Dotan Barak#define IB_USER_VERBS_ABI_VERSION	6
46400dbc96583ff3b8ad4c09bd7e9dcd35a6215922Igor Ivanov#define IB_USER_VERBS_CMD_THRESHOLD    50
478a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
488a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierenum {
498a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_GET_CONTEXT,
508a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_QUERY_DEVICE,
518a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_QUERY_PORT,
528a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_ALLOC_PD,
538a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_DEALLOC_PD,
548a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_CREATE_AH,
558a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_MODIFY_AH,
568a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_QUERY_AH,
578a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_DESTROY_AH,
588a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_REG_MR,
598a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_REG_SMR,
608a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_REREG_MR,
618a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_QUERY_MR,
628a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_DEREG_MR,
638a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_ALLOC_MW,
648a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_BIND_MW,
658a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_DEALLOC_MW,
666b73597e7062118c0549c2702bfb7d273518c906Roland Dreier	IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL,
678a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_CREATE_CQ,
688a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_RESIZE_CQ,
698a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_DESTROY_CQ,
708a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_POLL_CQ,
718a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_PEEK_CQ,
728a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_REQ_NOTIFY_CQ,
738a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_CREATE_QP,
748a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_QUERY_QP,
758a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_MODIFY_QP,
768a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_DESTROY_QP,
778a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_POST_SEND,
788a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_POST_RECV,
798a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	IB_USER_VERBS_CMD_ATTACH_MCAST,
80f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	IB_USER_VERBS_CMD_DETACH_MCAST,
81f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	IB_USER_VERBS_CMD_CREATE_SRQ,
82f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	IB_USER_VERBS_CMD_MODIFY_SRQ,
83f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	IB_USER_VERBS_CMD_QUERY_SRQ,
84f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	IB_USER_VERBS_CMD_DESTROY_SRQ,
8553d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty	IB_USER_VERBS_CMD_POST_SRQ_RECV,
8653d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty	IB_USER_VERBS_CMD_OPEN_XRCD,
878541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	IB_USER_VERBS_CMD_CLOSE_XRCD,
8842849b2697c36abdafa6aef64186b15055392046Sean Hefty	IB_USER_VERBS_CMD_CREATE_XSRQ,
89436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	IB_USER_VERBS_CMD_OPEN_QP,
90f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud};
91f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud
92f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaudenum {
93f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud	IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
94f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud	IB_USER_VERBS_EX_CMD_DESTROY_FLOW
958a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
968a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
978a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier/*
988a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * Make sure that all structs defined in this file remain laid out so
998a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * that they pack the same way on 32-bit and 64-bit architectures (to
1008a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * avoid incompatibility between 32-bit userspace and 64-bit kernels).
10191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier * Specifically:
10291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier *  - Do not use pointer types -- pass pointers in __u64 instead.
10391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier *  - Make sure that any structure larger than 4 bytes is padded to a
10491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier *    multiple of 8 bytes.  Otherwise the structure size will be
10591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier *    different between 32-bit and 64-bit architectures.
1068a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier */
1078a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
1088a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_async_event_desc {
1098a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 element;
1108a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 event_type;	/* enum ib_event_type */
1118a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 reserved;
1128a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
1138a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
1148a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_comp_event_desc {
1158a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 cq_handle;
1168a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
1178a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
1188a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier/*
1198a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * All commands from userspace should start with a __u32 command field
1208a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * followed by __u16 in_words and out_words fields (which give the
1218a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * length of the command block and response buffer if any in 32-bit
1228a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * words).  The kernel driver will read these fields first and read
1238a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * the rest of the command struct based on these value.
1248a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier */
1258a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
126f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud#define IB_USER_VERBS_CMD_COMMAND_MASK 0xff
127f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud#define IB_USER_VERBS_CMD_FLAGS_MASK 0xff000000u
128f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud#define IB_USER_VERBS_CMD_FLAGS_SHIFT 24
129f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud
130f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud#define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80
131f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud
1328a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_cmd_hdr {
1338a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 command;
1348a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 in_words;
1358a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 out_words;
1368a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
1378a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
138f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaudstruct ib_uverbs_ex_cmd_hdr {
139f21519b23c1b6fa25366be4114ccf7fcf1c190f9Yann Droneaud	__u64 response;
140400dbc96583ff3b8ad4c09bd7e9dcd35a6215922Igor Ivanov	__u16 provider_in_words;
141400dbc96583ff3b8ad4c09bd7e9dcd35a6215922Igor Ivanov	__u16 provider_out_words;
142400dbc96583ff3b8ad4c09bd7e9dcd35a6215922Igor Ivanov	__u32 cmd_hdr_reserved;
143400dbc96583ff3b8ad4c09bd7e9dcd35a6215922Igor Ivanov};
144400dbc96583ff3b8ad4c09bd7e9dcd35a6215922Igor Ivanov
1458a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_get_context {
1468a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 response;
1478a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
1488a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
1498a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
1508a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_get_context_resp {
1518a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 async_fd;
1526b73597e7062118c0549c2702bfb7d273518c906Roland Dreier	__u32 num_comp_vectors;
1538a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
1548a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
1558a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_query_device {
1568a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 response;
1578a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
1588a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
1598a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
1608a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_query_device_resp {
1618a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 fw_ver;
16297f52eb438be7caebe026421545619d8a0c1398aSean Hefty	__be64 node_guid;
16397f52eb438be7caebe026421545619d8a0c1398aSean Hefty	__be64 sys_image_guid;
1648a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 max_mr_size;
1658a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 page_size_cap;
1668a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 vendor_id;
1678a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 vendor_part_id;
1688a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 hw_ver;
1698a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_qp;
1708a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_qp_wr;
1718a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 device_cap_flags;
1728a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_sge;
1738a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_sge_rd;
1748a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_cq;
1758a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_cqe;
1768a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_mr;
1778a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_pd;
1788a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_qp_rd_atom;
1798a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_ee_rd_atom;
1808a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_res_rd_atom;
1818a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_qp_init_rd_atom;
1828a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_ee_init_rd_atom;
1838a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 atomic_cap;
1848a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_ee;
1858a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_rdd;
1868a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_mw;
1878a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_raw_ipv6_qp;
1888a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_raw_ethy_qp;
1898a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_mcast_grp;
1908a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_mcast_qp_attach;
1918a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_total_mcast_qp_attach;
1928a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_ah;
1938a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_fmr;
1948a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_map_per_fmr;
1958a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_srq;
1968a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_srq_wr;
1978a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_srq_sge;
1988a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 max_pkeys;
1998a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  local_ca_ack_delay;
2008a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  phys_port_cnt;
2018a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  reserved[4];
2028a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
2038a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
2048a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_query_port {
2058a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 response;
2068a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  port_num;
2078a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  reserved[7];
2088a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
2098a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
2108a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
2118a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_query_port_resp {
2128a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 port_cap_flags;
2138a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_msg_sz;
2148a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 bad_pkey_cntr;
2158a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 qkey_viol_cntr;
2168a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 gid_tbl_len;
2178a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 pkey_tbl_len;
2188a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 lid;
2198a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 sm_lid;
2208a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  state;
2218a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  max_mtu;
2228a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  active_mtu;
2238a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  lmc;
2248a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  max_vl_num;
2258a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  sm_sl;
2268a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  subnet_timeout;
2278a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  init_type_reply;
2288a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  active_width;
2298a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  active_speed;
2308a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  phys_state;
2312420b60b1dc4ed98cb1788e928bc57ff2efa1a8dEli Cohen	__u8  link_layer;
2322420b60b1dc4ed98cb1788e928bc57ff2efa1a8dEli Cohen	__u8  reserved[2];
2338a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
2348a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
2358a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_alloc_pd {
2368a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 response;
2378a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
2388a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
2398a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
2408a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_alloc_pd_resp {
2418a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 pd_handle;
2428a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
2438a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
2448a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_dealloc_pd {
2458a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 pd_handle;
2468a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
2478a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
24853d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Heftystruct ib_uverbs_open_xrcd {
24953d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty	__u64 response;
25053d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty	__u32 fd;
25153d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty	__u32 oflags;
25253d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty	__u64 driver_data[0];
25353d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty};
25453d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty
25553d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Heftystruct ib_uverbs_open_xrcd_resp {
25653d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty	__u32 xrcd_handle;
25753d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty};
25853d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty
25953d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Heftystruct ib_uverbs_close_xrcd {
26053d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty	__u32 xrcd_handle;
26153d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty};
26253d0bd1e7ff2fc626321f337c609fb76ae5d12c9Sean Hefty
2638a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_reg_mr {
2648a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 response;
2658a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 start;
2668a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 length;
2678a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 hca_va;
2688a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 pd_handle;
2698a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 access_flags;
2708a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
2718a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
2728a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
2738a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_reg_mr_resp {
2748a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 mr_handle;
2758a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 lkey;
2768a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 rkey;
2778a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
2788a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
2797e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barakstruct ib_uverbs_rereg_mr {
2807e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u64 response;
2817e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u32 mr_handle;
2827e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u32 flags;
2837e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u64 start;
2847e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u64 length;
2857e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u64 hca_va;
2867e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u32 pd_handle;
2877e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u32 access_flags;
2887e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak};
2897e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak
2907e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barakstruct ib_uverbs_rereg_mr_resp {
2917e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u32 lkey;
2927e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak	__u32 rkey;
2937e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak};
2947e6edb9b2e0bcfb2a588db390c44d120213c57aeMatan Barak
2958a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_dereg_mr {
2968a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 mr_handle;
2978a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
2988a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
2996b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaelistruct ib_uverbs_alloc_mw {
3006b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli	__u64 response;
3016b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli	__u32 pd_handle;
3026b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli	__u8  mw_type;
3036b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli	__u8  reserved[3];
3046b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli};
3056b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli
3066b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaelistruct ib_uverbs_alloc_mw_resp {
3076b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli	__u32 mw_handle;
3086b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli	__u32 rkey;
3096b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli};
3106b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli
3116b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaelistruct ib_uverbs_dealloc_mw {
3126b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli	__u32 mw_handle;
3136b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli};
3146b52a12bc3fc39053b5bac4d4927ec8d974f8f60Shani Michaeli
3156b73597e7062118c0549c2702bfb7d273518c906Roland Dreierstruct ib_uverbs_create_comp_channel {
3166b73597e7062118c0549c2702bfb7d273518c906Roland Dreier	__u64 response;
3176b73597e7062118c0549c2702bfb7d273518c906Roland Dreier};
3186b73597e7062118c0549c2702bfb7d273518c906Roland Dreier
3196b73597e7062118c0549c2702bfb7d273518c906Roland Dreierstruct ib_uverbs_create_comp_channel_resp {
3206b73597e7062118c0549c2702bfb7d273518c906Roland Dreier	__u32 fd;
3216b73597e7062118c0549c2702bfb7d273518c906Roland Dreier};
3226b73597e7062118c0549c2702bfb7d273518c906Roland Dreier
3238a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_create_cq {
3248a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 response;
3258a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 user_handle;
3268a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 cqe;
3276b73597e7062118c0549c2702bfb7d273518c906Roland Dreier	__u32 comp_vector;
3286b73597e7062118c0549c2702bfb7d273518c906Roland Dreier	__s32 comp_channel;
3296b73597e7062118c0549c2702bfb7d273518c906Roland Dreier	__u32 reserved;
3308a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
3318a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
3328a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
3338a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_create_cq_resp {
3348a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 cq_handle;
3358a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 cqe;
3368a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
3378a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
33833b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreierstruct ib_uverbs_resize_cq {
33933b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier	__u64 response;
34033b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier	__u32 cq_handle;
34133b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier	__u32 cqe;
34233b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier	__u64 driver_data[0];
34333b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier};
34433b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier
34533b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreierstruct ib_uverbs_resize_cq_resp {
34633b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier	__u32 cqe;
34764f817ba98095156149ba5991592d5d039f6da74Ralph Campbell	__u32 reserved;
34864f817ba98095156149ba5991592d5d039f6da74Ralph Campbell	__u64 driver_data[0];
34933b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier};
35033b9b3ee9709b19c4f02ab91571d53540d05c3d1Roland Dreier
35191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_poll_cq {
35291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u64 response;
35391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 cq_handle;
35491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 ne;
35591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
35691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
35791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_wc {
35891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u64 wr_id;
35991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 status;
36091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 opcode;
36191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 vendor_err;
36291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 byte_len;
36300f7ec36c9324928e4cd23f02e6d8550f30c32caSteve Wise	union {
36400f7ec36c9324928e4cd23f02e6d8550f30c32caSteve Wise		__u32 imm_data;
36500f7ec36c9324928e4cd23f02e6d8550f30c32caSteve Wise		__u32 invalidate_rkey;
36600f7ec36c9324928e4cd23f02e6d8550f30c32caSteve Wise	} ex;
36791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 qp_num;
36891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 src_qp;
36991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 wc_flags;
37091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u16 pkey_index;
37191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u16 slid;
37291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u8 sl;
37391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u8 dlid_path_bits;
37491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u8 port_num;
37591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u8 reserved;
37691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
37791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
37891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_poll_cq_resp {
37991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 count;
38091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 reserved;
38191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	struct ib_uverbs_wc wc[0];
38291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
38391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
38491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_req_notify_cq {
38591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 cq_handle;
38691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 solicited_only;
38791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
38891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
3898a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_destroy_cq {
39063aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u64 response;
3918a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 cq_handle;
39263aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u32 reserved;
39363aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier};
39463aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier
39563aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreierstruct ib_uverbs_destroy_cq_resp {
39663aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u32 comp_events_reported;
39763aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u32 async_events_reported;
3988a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
3998a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
4006a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Heftystruct ib_uverbs_global_route {
4016a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  dgid[16];
4026a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32 flow_label;
4036a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  sgid_index;
4046a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  hop_limit;
4056a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  traffic_class;
4066a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  reserved;
4076a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty};
4086a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty
4096a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Heftystruct ib_uverbs_ah_attr {
4106a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	struct ib_uverbs_global_route grh;
4116a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u16 dlid;
4126a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  sl;
4136a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  src_path_bits;
4146a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  static_rate;
4156a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  is_global;
4166a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  port_num;
4176a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8  reserved;
4186a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty};
4196a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty
4206a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Heftystruct ib_uverbs_qp_attr {
4216a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	qp_attr_mask;
4226a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	qp_state;
4236a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	cur_qp_state;
4246a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	path_mtu;
4256a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	path_mig_state;
4266a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	qkey;
4276a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	rq_psn;
4286a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	sq_psn;
4296a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	dest_qp_num;
4306a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	qp_access_flags;
4316a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty
4326a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	struct ib_uverbs_ah_attr ah_attr;
4336a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	struct ib_uverbs_ah_attr alt_ah_attr;
4346a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty
4356a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	/* ib_qp_cap */
4366a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	max_send_wr;
4376a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	max_recv_wr;
4386a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	max_send_sge;
4396a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	max_recv_sge;
4406a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u32	max_inline_data;
4416a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty
4426a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u16	pkey_index;
4436a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u16	alt_pkey_index;
4446a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	en_sqd_async_notify;
4456a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	sq_draining;
4466a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	max_rd_atomic;
4476a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	max_dest_rd_atomic;
4486a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	min_rnr_timer;
4496a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	port_num;
4506a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	timeout;
4516a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	retry_cnt;
4526a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	rnr_retry;
4536a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	alt_port_num;
4546a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	alt_timeout;
4556a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty	__u8	reserved[5];
4566a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty};
4576a9af2e18a5c6ebcf8283309d20ac0e9fa35e346Sean Hefty
4588a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_create_qp {
4598a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 response;
4608a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 user_handle;
4618a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 pd_handle;
4628a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 send_cq_handle;
4638a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 recv_cq_handle;
4648a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 srq_handle;
4658a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_send_wr;
4668a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_recv_wr;
4678a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_send_sge;
4688a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_recv_sge;
4698a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 max_inline_data;
4708a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  sq_sig_all;
4718a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  qp_type;
4728a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  is_srq;
4738a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  reserved;
4748a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
4758a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
4768a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
47742849b2697c36abdafa6aef64186b15055392046Sean Heftystruct ib_uverbs_open_qp {
47842849b2697c36abdafa6aef64186b15055392046Sean Hefty	__u64 response;
47942849b2697c36abdafa6aef64186b15055392046Sean Hefty	__u64 user_handle;
48042849b2697c36abdafa6aef64186b15055392046Sean Hefty	__u32 pd_handle;
48142849b2697c36abdafa6aef64186b15055392046Sean Hefty	__u32 qpn;
48242849b2697c36abdafa6aef64186b15055392046Sean Hefty	__u8  qp_type;
48342849b2697c36abdafa6aef64186b15055392046Sean Hefty	__u8  reserved[7];
48442849b2697c36abdafa6aef64186b15055392046Sean Hefty	__u64 driver_data[0];
48542849b2697c36abdafa6aef64186b15055392046Sean Hefty};
48642849b2697c36abdafa6aef64186b15055392046Sean Hefty
48742849b2697c36abdafa6aef64186b15055392046Sean Hefty/* also used for open response */
4888a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_create_qp_resp {
4898a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 qp_handle;
4908a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 qpn;
49177369ed31daac51f4827c50d30f233c45480235aJack Morgenstein	__u32 max_send_wr;
49277369ed31daac51f4827c50d30f233c45480235aJack Morgenstein	__u32 max_recv_wr;
49377369ed31daac51f4827c50d30f233c45480235aJack Morgenstein	__u32 max_send_sge;
49477369ed31daac51f4827c50d30f233c45480235aJack Morgenstein	__u32 max_recv_sge;
49577369ed31daac51f4827c50d30f233c45480235aJack Morgenstein	__u32 max_inline_data;
4964d9781c5ce1a517a07dbf03c37323c011037fe79Roland Dreier	__u32 reserved;
4978a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
4988a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
4998a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier/*
5008a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * This struct needs to remain a multiple of 8 bytes to keep the
5018a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier * alignment of the modify QP parameters.
5028a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier */
5038a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_qp_dest {
5048a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  dgid[16];
5058a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 flow_label;
5068a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 dlid;
5078a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 reserved;
5088a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  sgid_index;
5098a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  hop_limit;
5108a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  traffic_class;
5118a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  sl;
5128a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  src_path_bits;
5138a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  static_rate;
5148a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  is_global;
5158a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  port_num;
5168a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
5178a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
5187ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barakstruct ib_uverbs_query_qp {
5197ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u64 response;
5207ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 qp_handle;
5217ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 attr_mask;
5227ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u64 driver_data[0];
5237ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak};
5247ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak
5257ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barakstruct ib_uverbs_query_qp_resp {
5267ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	struct ib_uverbs_qp_dest dest;
5277ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	struct ib_uverbs_qp_dest alt_dest;
5287ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 max_send_wr;
5297ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 max_recv_wr;
5307ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 max_send_sge;
5317ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 max_recv_sge;
5327ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 max_inline_data;
5337ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 qkey;
5347ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 rq_psn;
5357ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 sq_psn;
5367ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 dest_qp_num;
5377ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u32 qp_access_flags;
5387ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u16 pkey_index;
5397ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u16 alt_pkey_index;
5407ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  qp_state;
5417ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  cur_qp_state;
5427ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  path_mtu;
5437ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  path_mig_state;
5440b26c88f29ad8bcf91a2ea8f25a36f2028ebabeaJack Morgenstein	__u8  sq_draining;
5457ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  max_rd_atomic;
5467ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  max_dest_rd_atomic;
5477ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  min_rnr_timer;
5487ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  port_num;
5497ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  timeout;
5507ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  retry_cnt;
5517ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  rnr_retry;
5527ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  alt_port_num;
5537ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  alt_timeout;
5547ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  sq_sig_all;
5557ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u8  reserved[5];
5567ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak	__u64 driver_data[0];
5577ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak};
5587ccc9a24e01258a31ee2b964215e4ddddd2a02c4Dotan Barak
5598a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_modify_qp {
5608a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	struct ib_uverbs_qp_dest dest;
5618a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	struct ib_uverbs_qp_dest alt_dest;
5628a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 qp_handle;
5638a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 attr_mask;
5648a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 qkey;
5658a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 rq_psn;
5668a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 sq_psn;
5678a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 dest_qp_num;
5688a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 qp_access_flags;
5698a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 pkey_index;
5708a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 alt_pkey_index;
5718a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  qp_state;
5728a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  cur_qp_state;
5738a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  path_mtu;
5748a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  path_mig_state;
5758a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  en_sqd_async_notify;
5768a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  max_rd_atomic;
5778a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  max_dest_rd_atomic;
5788a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  min_rnr_timer;
5798a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  port_num;
5808a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  timeout;
5818a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  retry_cnt;
5828a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  rnr_retry;
5838a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  alt_port_num;
5848a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  alt_timeout;
5858a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  reserved[2];
5868a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
5878a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
5888a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
5898a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_modify_qp_resp {
5908a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
5918a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
5928a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_destroy_qp {
59363aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u64 response;
5948a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 qp_handle;
59563aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u32 reserved;
59663aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier};
59763aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier
59863aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreierstruct ib_uverbs_destroy_qp_resp {
59963aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u32 events_reported;
6008a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
6018a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
60291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier/*
60391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier * The ib_uverbs_sge structure isn't used anywhere, since we assume
60491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier * the ib_sge structure is packed the same way on 32-bit and 64-bit
60591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier * architectures in both kernel and user space.  It's just here to
60691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier * document the ABI.
60791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier */
60891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_sge {
60991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u64 addr;
61091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 length;
61191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 lkey;
61291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
61391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
61491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_send_wr {
615a74cd4af0bfa9578594acbb711a958104c93b772Roland Dreier	__u64 wr_id;
61691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 num_sge;
61791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 opcode;
61891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 send_flags;
6190f39cf3d54e67a705773fd0ec56ca3dcd3e9272fRoland Dreier	union {
6200f39cf3d54e67a705773fd0ec56ca3dcd3e9272fRoland Dreier		__u32 imm_data;
6210f39cf3d54e67a705773fd0ec56ca3dcd3e9272fRoland Dreier		__u32 invalidate_rkey;
6220f39cf3d54e67a705773fd0ec56ca3dcd3e9272fRoland Dreier	} ex;
62391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	union {
62491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier		struct {
62591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u64 remote_addr;
62691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u32 rkey;
62791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u32 reserved;
62891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier		} rdma;
62991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier		struct {
63091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u64 remote_addr;
63191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u64 compare_add;
63291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u64 swap;
63391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u32 rkey;
63491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u32 reserved;
63591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier		} atomic;
63691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier		struct {
63791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u32 ah;
63891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u32 remote_qpn;
63991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u32 remote_qkey;
64091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier			__u32 reserved;
64191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier		} ud;
64291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	} wr;
64391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
64491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
64591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_post_send {
64691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u64 response;
64791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 qp_handle;
64891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 wr_count;
64991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 sge_count;
65091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 wqe_size;
65191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	struct ib_uverbs_send_wr send_wr[0];
65291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
65391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
65491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_post_send_resp {
65591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 bad_wr;
65691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
65791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
65891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_recv_wr {
65991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u64 wr_id;
66091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 num_sge;
66191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 reserved;
66291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
66391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
66491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_post_recv {
66591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u64 response;
66691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 qp_handle;
66791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 wr_count;
66891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 sge_count;
66991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 wqe_size;
67091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	struct ib_uverbs_recv_wr recv_wr[0];
67191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
67291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
67391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_post_recv_resp {
67491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 bad_wr;
67591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
67691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
67791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_post_srq_recv {
67891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u64 response;
67991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 srq_handle;
68091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 wr_count;
68191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 sge_count;
68291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 wqe_size;
68391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	struct ib_uverbs_recv_wr recv[0];
68491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
68591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
68691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_post_srq_recv_resp {
68791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 bad_wr;
68891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
68991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
69091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_create_ah {
69191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u64 response;
69291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u64 user_handle;
69391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 pd_handle;
69491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 reserved;
69591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	struct ib_uverbs_ah_attr attr;
69691ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
69791ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
69891ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_create_ah_resp {
69991ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 ah_handle;
70091ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
70191ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
70291ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreierstruct ib_uverbs_destroy_ah {
70391ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier	__u32 ah_handle;
70491ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier};
70591ecd4ae178bed83da4f6a94ced7992e4d7711ebRoland Dreier
7068a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_attach_mcast {
7078a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  gid[16];
7088a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 qp_handle;
7098a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 mlid;
7108a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 reserved;
7118a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
7128a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
7138a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
7148a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreierstruct ib_uverbs_detach_mcast {
7158a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u8  gid[16];
7168a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u32 qp_handle;
7178a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 mlid;
7188a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u16 reserved;
7198a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier	__u64 driver_data[0];
720436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
721436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
72258913efba9c3aa7992f2a4d630135ded833d988eYann Droneaudstruct ib_uverbs_flow_spec_hdr {
72358913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	__u32 type;
72458913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	__u16 size;
72558913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	__u16 reserved;
72658913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	/* followed by flow_spec */
72758913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	__u64 flow_spec_data[0];
72858913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud};
72958913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud
730b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaudstruct ib_uverbs_flow_eth_filter {
731436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u8  dst_mac[6];
732436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u8  src_mac[6];
733436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__be16 ether_type;
734436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__be16 vlan_tag;
735436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
736436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
737b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaudstruct ib_uverbs_flow_spec_eth {
73858913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	union {
73958913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud		struct ib_uverbs_flow_spec_hdr hdr;
74058913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud		struct {
74158913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud			__u32 type;
74258913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud			__u16 size;
74358913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud			__u16 reserved;
74458913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud		};
74558913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	};
746b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaud	struct ib_uverbs_flow_eth_filter val;
747b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaud	struct ib_uverbs_flow_eth_filter mask;
748436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
749436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
750b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaudstruct ib_uverbs_flow_ipv4_filter {
751436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__be32 src_ip;
752436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__be32 dst_ip;
753436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
754436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
755b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaudstruct ib_uverbs_flow_spec_ipv4 {
75658913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	union {
75758913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud		struct ib_uverbs_flow_spec_hdr hdr;
75858913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud		struct {
75958913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud			__u32 type;
76058913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud			__u16 size;
76158913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud			__u16 reserved;
76258913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud		};
76358913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	};
764b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaud	struct ib_uverbs_flow_ipv4_filter val;
765b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaud	struct ib_uverbs_flow_ipv4_filter mask;
766436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
767436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
768b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaudstruct ib_uverbs_flow_tcp_udp_filter {
769436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__be16 dst_port;
770436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__be16 src_port;
771436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
772436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
773b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaudstruct ib_uverbs_flow_spec_tcp_udp {
77458913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	union {
77558913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud		struct ib_uverbs_flow_spec_hdr hdr;
77658913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud		struct {
77758913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud			__u32 type;
77858913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud			__u16 size;
77958913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud			__u16 reserved;
78058913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud		};
78158913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	};
782b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaud	struct ib_uverbs_flow_tcp_udp_filter val;
783b68c956021386eead6b8b28e445f33c8c985d7d2Yann Droneaud	struct ib_uverbs_flow_tcp_udp_filter mask;
784436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
785436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
786d82693dad09b49232cd727ee9e15bd027710edacYann Droneaudstruct ib_uverbs_flow_attr {
787436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u32 type;
788436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u16 size;
789436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u16 priority;
790436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u8  num_of_specs;
791436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u8  reserved[2];
792436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u8  port;
793436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u32 flags;
794436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	/* Following are the optional layers according to user request
795436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	 * struct ib_flow_spec_xxx
796436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	 * struct ib_flow_spec_yyy
797436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	 */
79858913efba9c3aa7992f2a4d630135ded833d988eYann Droneaud	struct ib_uverbs_flow_spec_hdr flow_specs[0];
799436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
800436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
801436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zionstruct ib_uverbs_create_flow  {
802436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u32 comp_mask;
803436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u32 qp_handle;
804d82693dad09b49232cd727ee9e15bd027710edacYann Droneaud	struct ib_uverbs_flow_attr flow_attr;
805436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
806436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
807436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zionstruct ib_uverbs_create_flow_resp {
808436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u32 comp_mask;
809436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u32 flow_handle;
810436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion};
811436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion
812436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zionstruct ib_uverbs_destroy_flow  {
813436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u32 comp_mask;
814436f2ad05a0b65b1467ddf51bc68171c381bf844Hadar Hen Zion	__u32 flow_handle;
8158a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier};
8168a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier
817f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreierstruct ib_uverbs_create_srq {
818f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u64 response;
819f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u64 user_handle;
820f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 pd_handle;
821f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 max_wr;
822f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 max_sge;
823f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 srq_limit;
824f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u64 driver_data[0];
825f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier};
826f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier
8278541f8de0583f562c652008a4e7a65e537842a7eSean Heftystruct ib_uverbs_create_xsrq {
8288541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u64 response;
8298541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u64 user_handle;
8308541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u32 srq_type;
8318541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u32 pd_handle;
8328541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u32 max_wr;
8338541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u32 max_sge;
8348541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u32 srq_limit;
8358541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u32 reserved;
8368541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u32 xrcd_handle;
8378541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u32 cq_handle;
8388541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u64 driver_data[0];
8398541f8de0583f562c652008a4e7a65e537842a7eSean Hefty};
8408541f8de0583f562c652008a4e7a65e537842a7eSean Hefty
841f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreierstruct ib_uverbs_create_srq_resp {
842f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 srq_handle;
843ea88fd16d6e85f4bc71b6053180b64f04be1ff14Dotan Barak	__u32 max_wr;
844ea88fd16d6e85f4bc71b6053180b64f04be1ff14Dotan Barak	__u32 max_sge;
8458541f8de0583f562c652008a4e7a65e537842a7eSean Hefty	__u32 srqn;
846f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier};
847f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier
848f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreierstruct ib_uverbs_modify_srq {
849f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 srq_handle;
850f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 attr_mask;
851f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 max_wr;
852f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 srq_limit;
853f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u64 driver_data[0];
854f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier};
855f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier
8568bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barakstruct ib_uverbs_query_srq {
8578bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak	__u64 response;
8588bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak	__u32 srq_handle;
8598bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak	__u32 reserved;
8608bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak	__u64 driver_data[0];
8618bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak};
8628bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak
8638bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barakstruct ib_uverbs_query_srq_resp {
8648bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak	__u32 max_wr;
8658bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak	__u32 max_sge;
8668bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak	__u32 srq_limit;
8678bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak	__u32 reserved;
8688bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak};
8698bdb0e8632e0f5061bd18b6934346cb609490135Dotan Barak
870f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreierstruct ib_uverbs_destroy_srq {
87163aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u64 response;
872f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier	__u32 srq_handle;
87363aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u32 reserved;
87463aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier};
87563aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier
87663aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreierstruct ib_uverbs_destroy_srq_resp {
87763aaf647529e8a56bdf31fd8f2979d4371c6a332Roland Dreier	__u32 events_reported;
878f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier};
879f520ba5aa48e2891c3fb3e364eeaaab4212c7c45Roland Dreier
8808a96b3f9af2d0351285665b532f9359d6cd73f42Roland Dreier#endif /* IB_USER_VERBS_H */
881