1*d6b92ffaSHans Petter Selasky /* 2*d6b92ffaSHans Petter Selasky * Copyright (c) 2005 Topspin Communications. All rights reserved. 3*d6b92ffaSHans Petter Selasky * Copyright (c) 2005, 2006 Cisco Systems. All rights reserved. 4*d6b92ffaSHans Petter Selasky * Copyright (c) 2005 PathScale, Inc. All rights reserved. 5*d6b92ffaSHans Petter Selasky * 6*d6b92ffaSHans Petter Selasky * This software is available to you under a choice of one of two 7*d6b92ffaSHans Petter Selasky * licenses. You may choose to be licensed under the terms of the GNU 8*d6b92ffaSHans Petter Selasky * General Public License (GPL) Version 2, available from the file 9*d6b92ffaSHans Petter Selasky * COPYING in the main directory of this source tree, or the 10*d6b92ffaSHans Petter Selasky * OpenIB.org BSD license below: 11*d6b92ffaSHans Petter Selasky * 12*d6b92ffaSHans Petter Selasky * Redistribution and use in source and binary forms, with or 13*d6b92ffaSHans Petter Selasky * without modification, are permitted provided that the following 14*d6b92ffaSHans Petter Selasky * conditions are met: 15*d6b92ffaSHans Petter Selasky * 16*d6b92ffaSHans Petter Selasky * - Redistributions of source code must retain the above 17*d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 18*d6b92ffaSHans Petter Selasky * disclaimer. 19*d6b92ffaSHans Petter Selasky * 20*d6b92ffaSHans Petter Selasky * - Redistributions in binary form must reproduce the above 21*d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 22*d6b92ffaSHans Petter Selasky * disclaimer in the documentation and/or other materials 23*d6b92ffaSHans Petter Selasky * provided with the distribution. 24*d6b92ffaSHans Petter Selasky * 25*d6b92ffaSHans Petter Selasky * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26*d6b92ffaSHans Petter Selasky * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27*d6b92ffaSHans Petter Selasky * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28*d6b92ffaSHans Petter Selasky * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 29*d6b92ffaSHans Petter Selasky * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 30*d6b92ffaSHans Petter Selasky * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 31*d6b92ffaSHans Petter Selasky * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 32*d6b92ffaSHans Petter Selasky * SOFTWARE. 33*d6b92ffaSHans Petter Selasky */ 34*d6b92ffaSHans Petter Selasky 35*d6b92ffaSHans Petter Selasky #ifndef KERN_ABI_H 36*d6b92ffaSHans Petter Selasky #define KERN_ABI_H 37*d6b92ffaSHans Petter Selasky 38*d6b92ffaSHans Petter Selasky #include <infiniband/types.h> 39*d6b92ffaSHans Petter Selasky 40*d6b92ffaSHans Petter Selasky /* 41*d6b92ffaSHans Petter Selasky * This file must be kept in sync with the kernel's version of 42*d6b92ffaSHans Petter Selasky * drivers/infiniband/include/ib_user_verbs.h 43*d6b92ffaSHans Petter Selasky */ 44*d6b92ffaSHans Petter Selasky 45*d6b92ffaSHans Petter Selasky /* 46*d6b92ffaSHans Petter Selasky * The minimum and maximum kernel ABI that we can handle. 47*d6b92ffaSHans Petter Selasky */ 48*d6b92ffaSHans Petter Selasky #define IB_USER_VERBS_MIN_ABI_VERSION 3 49*d6b92ffaSHans Petter Selasky #define IB_USER_VERBS_MAX_ABI_VERSION 6 50*d6b92ffaSHans Petter Selasky 51*d6b92ffaSHans Petter Selasky #define IB_USER_VERBS_CMD_THRESHOLD 50 52*d6b92ffaSHans Petter Selasky 53*d6b92ffaSHans Petter Selasky enum { 54*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_GET_CONTEXT, 55*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_DEVICE, 56*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_PORT, 57*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_ALLOC_PD, 58*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DEALLOC_PD, 59*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_AH, 60*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_AH, 61*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_AH, 62*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_AH, 63*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_REG_MR, 64*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_REG_SMR, 65*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_REREG_MR, 66*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_MR, 67*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DEREG_MR, 68*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_ALLOC_MW, 69*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_BIND_MW, 70*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DEALLOC_MW, 71*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL, 72*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_CQ, 73*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_RESIZE_CQ, 74*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_CQ, 75*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_POLL_CQ, 76*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_PEEK_CQ, 77*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_REQ_NOTIFY_CQ, 78*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_QP, 79*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_QP, 80*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_QP, 81*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_QP, 82*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_POST_SEND, 83*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_POST_RECV, 84*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_ATTACH_MCAST, 85*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DETACH_MCAST, 86*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_SRQ, 87*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_SRQ, 88*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_SRQ, 89*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_SRQ, 90*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_POST_SRQ_RECV, 91*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_OPEN_XRCD, 92*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CLOSE_XRCD, 93*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_XSRQ, 94*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_OPEN_QP 95*d6b92ffaSHans Petter Selasky }; 96*d6b92ffaSHans Petter Selasky 97*d6b92ffaSHans Petter Selasky #define IB_USER_VERBS_CMD_COMMAND_MASK 0xff 98*d6b92ffaSHans Petter Selasky #define IB_USER_VERBS_CMD_FLAGS_MASK 0xff000000u 99*d6b92ffaSHans Petter Selasky #define IB_USER_VERBS_CMD_FLAGS_SHIFT 24 100*d6b92ffaSHans Petter Selasky 101*d6b92ffaSHans Petter Selasky 102*d6b92ffaSHans Petter Selasky #define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80ul 103*d6b92ffaSHans Petter Selasky 104*d6b92ffaSHans Petter Selasky /* use this mask for creating extended commands */ 105*d6b92ffaSHans Petter Selasky #define IB_USER_VERBS_CMD_EXTENDED_MASK \ 106*d6b92ffaSHans Petter Selasky (IB_USER_VERBS_CMD_FLAG_EXTENDED << \ 107*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_FLAGS_SHIFT) 108*d6b92ffaSHans Petter Selasky 109*d6b92ffaSHans Petter Selasky 110*d6b92ffaSHans Petter Selasky enum { 111*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_DEVICE_EX = IB_USER_VERBS_CMD_EXTENDED_MASK | 112*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_DEVICE, 113*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_QP_EX = IB_USER_VERBS_CMD_EXTENDED_MASK | 114*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_QP, 115*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_CQ_EX = IB_USER_VERBS_CMD_EXTENDED_MASK | 116*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_CQ, 117*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_QP_EX = IB_USER_VERBS_CMD_EXTENDED_MASK | 118*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_QP, 119*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_EXTENDED_MASK + 120*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_THRESHOLD, 121*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_FLOW, 122*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_WQ, 123*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_WQ, 124*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_WQ, 125*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_RWQ_IND_TBL, 126*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_RWQ_IND_TBL, 127*d6b92ffaSHans Petter Selasky }; 128*d6b92ffaSHans Petter Selasky 129*d6b92ffaSHans Petter Selasky /* 130*d6b92ffaSHans Petter Selasky * Make sure that all structs defined in this file remain laid out so 131*d6b92ffaSHans Petter Selasky * that they pack the same way on 32-bit and 64-bit architectures (to 132*d6b92ffaSHans Petter Selasky * avoid incompatibility between 32-bit userspace and 64-bit kernels). 133*d6b92ffaSHans Petter Selasky * Specifically: 134*d6b92ffaSHans Petter Selasky * - Do not use pointer types -- pass pointers in __u64 instead. 135*d6b92ffaSHans Petter Selasky * - Make sure that any structure larger than 4 bytes is padded to a 136*d6b92ffaSHans Petter Selasky * multiple of 8 bytes. Otherwise the structure size will be 137*d6b92ffaSHans Petter Selasky * different between 32-bit and 64-bit architectures. 138*d6b92ffaSHans Petter Selasky */ 139*d6b92ffaSHans Petter Selasky 140*d6b92ffaSHans Petter Selasky struct hdr { 141*d6b92ffaSHans Petter Selasky __u32 command; 142*d6b92ffaSHans Petter Selasky __u16 in_words; 143*d6b92ffaSHans Petter Selasky __u16 out_words; 144*d6b92ffaSHans Petter Selasky }; 145*d6b92ffaSHans Petter Selasky 146*d6b92ffaSHans Petter Selasky struct response_hdr { 147*d6b92ffaSHans Petter Selasky __u64 response; 148*d6b92ffaSHans Petter Selasky }; 149*d6b92ffaSHans Petter Selasky 150*d6b92ffaSHans Petter Selasky struct ex_hdr { 151*d6b92ffaSHans Petter Selasky struct { 152*d6b92ffaSHans Petter Selasky __u32 command; 153*d6b92ffaSHans Petter Selasky __u16 in_words; 154*d6b92ffaSHans Petter Selasky __u16 out_words; 155*d6b92ffaSHans Petter Selasky }; 156*d6b92ffaSHans Petter Selasky struct { 157*d6b92ffaSHans Petter Selasky __u64 response; 158*d6b92ffaSHans Petter Selasky }; 159*d6b92ffaSHans Petter Selasky struct { 160*d6b92ffaSHans Petter Selasky __u16 provider_in_words; 161*d6b92ffaSHans Petter Selasky __u16 provider_out_words; 162*d6b92ffaSHans Petter Selasky __u32 reserved; 163*d6b92ffaSHans Petter Selasky }; 164*d6b92ffaSHans Petter Selasky }; 165*d6b92ffaSHans Petter Selasky 166*d6b92ffaSHans Petter Selasky struct ibv_kern_async_event { 167*d6b92ffaSHans Petter Selasky __u64 element; 168*d6b92ffaSHans Petter Selasky __u32 event_type; 169*d6b92ffaSHans Petter Selasky __u32 reserved; 170*d6b92ffaSHans Petter Selasky }; 171*d6b92ffaSHans Petter Selasky 172*d6b92ffaSHans Petter Selasky struct ibv_comp_event { 173*d6b92ffaSHans Petter Selasky __u64 cq_handle; 174*d6b92ffaSHans Petter Selasky }; 175*d6b92ffaSHans Petter Selasky 176*d6b92ffaSHans Petter Selasky /* 177*d6b92ffaSHans Petter Selasky * All commands from userspace should start with a __u32 command field 178*d6b92ffaSHans Petter Selasky * followed by __u16 in_words and out_words fields (which give the 179*d6b92ffaSHans Petter Selasky * length of the command block and response buffer if any in 32-bit 180*d6b92ffaSHans Petter Selasky * words). The kernel driver will read these fields first and read 181*d6b92ffaSHans Petter Selasky * the rest of the command struct based on these value. 182*d6b92ffaSHans Petter Selasky */ 183*d6b92ffaSHans Petter Selasky 184*d6b92ffaSHans Petter Selasky struct ibv_query_params { 185*d6b92ffaSHans Petter Selasky __u32 command; 186*d6b92ffaSHans Petter Selasky __u16 in_words; 187*d6b92ffaSHans Petter Selasky __u16 out_words; 188*d6b92ffaSHans Petter Selasky __u64 response; 189*d6b92ffaSHans Petter Selasky }; 190*d6b92ffaSHans Petter Selasky 191*d6b92ffaSHans Petter Selasky struct ibv_query_params_resp { 192*d6b92ffaSHans Petter Selasky __u32 num_cq_events; 193*d6b92ffaSHans Petter Selasky }; 194*d6b92ffaSHans Petter Selasky 195*d6b92ffaSHans Petter Selasky struct ibv_get_context { 196*d6b92ffaSHans Petter Selasky __u32 command; 197*d6b92ffaSHans Petter Selasky __u16 in_words; 198*d6b92ffaSHans Petter Selasky __u16 out_words; 199*d6b92ffaSHans Petter Selasky __u64 response; 200*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 201*d6b92ffaSHans Petter Selasky }; 202*d6b92ffaSHans Petter Selasky 203*d6b92ffaSHans Petter Selasky struct ibv_get_context_resp { 204*d6b92ffaSHans Petter Selasky __u32 async_fd; 205*d6b92ffaSHans Petter Selasky __u32 num_comp_vectors; 206*d6b92ffaSHans Petter Selasky }; 207*d6b92ffaSHans Petter Selasky 208*d6b92ffaSHans Petter Selasky struct ibv_query_device { 209*d6b92ffaSHans Petter Selasky __u32 command; 210*d6b92ffaSHans Petter Selasky __u16 in_words; 211*d6b92ffaSHans Petter Selasky __u16 out_words; 212*d6b92ffaSHans Petter Selasky __u64 response; 213*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 214*d6b92ffaSHans Petter Selasky }; 215*d6b92ffaSHans Petter Selasky 216*d6b92ffaSHans Petter Selasky struct ibv_query_device_resp { 217*d6b92ffaSHans Petter Selasky __u64 fw_ver; 218*d6b92ffaSHans Petter Selasky __be64 node_guid; 219*d6b92ffaSHans Petter Selasky __be64 sys_image_guid; 220*d6b92ffaSHans Petter Selasky __u64 max_mr_size; 221*d6b92ffaSHans Petter Selasky __u64 page_size_cap; 222*d6b92ffaSHans Petter Selasky __u32 vendor_id; 223*d6b92ffaSHans Petter Selasky __u32 vendor_part_id; 224*d6b92ffaSHans Petter Selasky __u32 hw_ver; 225*d6b92ffaSHans Petter Selasky __u32 max_qp; 226*d6b92ffaSHans Petter Selasky __u32 max_qp_wr; 227*d6b92ffaSHans Petter Selasky __u32 device_cap_flags; 228*d6b92ffaSHans Petter Selasky __u32 max_sge; 229*d6b92ffaSHans Petter Selasky __u32 max_sge_rd; 230*d6b92ffaSHans Petter Selasky __u32 max_cq; 231*d6b92ffaSHans Petter Selasky __u32 max_cqe; 232*d6b92ffaSHans Petter Selasky __u32 max_mr; 233*d6b92ffaSHans Petter Selasky __u32 max_pd; 234*d6b92ffaSHans Petter Selasky __u32 max_qp_rd_atom; 235*d6b92ffaSHans Petter Selasky __u32 max_ee_rd_atom; 236*d6b92ffaSHans Petter Selasky __u32 max_res_rd_atom; 237*d6b92ffaSHans Petter Selasky __u32 max_qp_init_rd_atom; 238*d6b92ffaSHans Petter Selasky __u32 max_ee_init_rd_atom; 239*d6b92ffaSHans Petter Selasky __u32 atomic_cap; 240*d6b92ffaSHans Petter Selasky __u32 max_ee; 241*d6b92ffaSHans Petter Selasky __u32 max_rdd; 242*d6b92ffaSHans Petter Selasky __u32 max_mw; 243*d6b92ffaSHans Petter Selasky __u32 max_raw_ipv6_qp; 244*d6b92ffaSHans Petter Selasky __u32 max_raw_ethy_qp; 245*d6b92ffaSHans Petter Selasky __u32 max_mcast_grp; 246*d6b92ffaSHans Petter Selasky __u32 max_mcast_qp_attach; 247*d6b92ffaSHans Petter Selasky __u32 max_total_mcast_qp_attach; 248*d6b92ffaSHans Petter Selasky __u32 max_ah; 249*d6b92ffaSHans Petter Selasky __u32 max_fmr; 250*d6b92ffaSHans Petter Selasky __u32 max_map_per_fmr; 251*d6b92ffaSHans Petter Selasky __u32 max_srq; 252*d6b92ffaSHans Petter Selasky __u32 max_srq_wr; 253*d6b92ffaSHans Petter Selasky __u32 max_srq_sge; 254*d6b92ffaSHans Petter Selasky __u16 max_pkeys; 255*d6b92ffaSHans Petter Selasky __u8 local_ca_ack_delay; 256*d6b92ffaSHans Petter Selasky __u8 phys_port_cnt; 257*d6b92ffaSHans Petter Selasky __u8 reserved[4]; 258*d6b92ffaSHans Petter Selasky }; 259*d6b92ffaSHans Petter Selasky 260*d6b92ffaSHans Petter Selasky struct ibv_query_device_ex { 261*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 262*d6b92ffaSHans Petter Selasky __u32 comp_mask; 263*d6b92ffaSHans Petter Selasky __u32 reserved; 264*d6b92ffaSHans Petter Selasky }; 265*d6b92ffaSHans Petter Selasky 266*d6b92ffaSHans Petter Selasky struct ibv_odp_caps_resp { 267*d6b92ffaSHans Petter Selasky __u64 general_caps; 268*d6b92ffaSHans Petter Selasky struct { 269*d6b92ffaSHans Petter Selasky __u32 rc_odp_caps; 270*d6b92ffaSHans Petter Selasky __u32 uc_odp_caps; 271*d6b92ffaSHans Petter Selasky __u32 ud_odp_caps; 272*d6b92ffaSHans Petter Selasky } per_transport_caps; 273*d6b92ffaSHans Petter Selasky __u32 reserved; 274*d6b92ffaSHans Petter Selasky }; 275*d6b92ffaSHans Petter Selasky 276*d6b92ffaSHans Petter Selasky struct ibv_rss_caps_resp { 277*d6b92ffaSHans Petter Selasky __u32 supported_qpts; 278*d6b92ffaSHans Petter Selasky __u32 max_rwq_indirection_tables; 279*d6b92ffaSHans Petter Selasky __u32 max_rwq_indirection_table_size; 280*d6b92ffaSHans Petter Selasky __u32 reserved; 281*d6b92ffaSHans Petter Selasky }; 282*d6b92ffaSHans Petter Selasky 283*d6b92ffaSHans Petter Selasky struct ibv_query_device_resp_ex { 284*d6b92ffaSHans Petter Selasky struct ibv_query_device_resp base; 285*d6b92ffaSHans Petter Selasky __u32 comp_mask; 286*d6b92ffaSHans Petter Selasky __u32 response_length; 287*d6b92ffaSHans Petter Selasky struct ibv_odp_caps_resp odp_caps; 288*d6b92ffaSHans Petter Selasky __u64 timestamp_mask; 289*d6b92ffaSHans Petter Selasky __u64 hca_core_clock; 290*d6b92ffaSHans Petter Selasky __u64 device_cap_flags_ex; 291*d6b92ffaSHans Petter Selasky struct ibv_rss_caps_resp rss_caps; 292*d6b92ffaSHans Petter Selasky __u32 max_wq_type_rq; 293*d6b92ffaSHans Petter Selasky __u32 raw_packet_caps; 294*d6b92ffaSHans Petter Selasky }; 295*d6b92ffaSHans Petter Selasky 296*d6b92ffaSHans Petter Selasky struct ibv_query_port { 297*d6b92ffaSHans Petter Selasky __u32 command; 298*d6b92ffaSHans Petter Selasky __u16 in_words; 299*d6b92ffaSHans Petter Selasky __u16 out_words; 300*d6b92ffaSHans Petter Selasky __u64 response; 301*d6b92ffaSHans Petter Selasky __u8 port_num; 302*d6b92ffaSHans Petter Selasky __u8 reserved[7]; 303*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 304*d6b92ffaSHans Petter Selasky }; 305*d6b92ffaSHans Petter Selasky 306*d6b92ffaSHans Petter Selasky struct ibv_query_port_resp { 307*d6b92ffaSHans Petter Selasky __u32 port_cap_flags; 308*d6b92ffaSHans Petter Selasky __u32 max_msg_sz; 309*d6b92ffaSHans Petter Selasky __u32 bad_pkey_cntr; 310*d6b92ffaSHans Petter Selasky __u32 qkey_viol_cntr; 311*d6b92ffaSHans Petter Selasky __u32 gid_tbl_len; 312*d6b92ffaSHans Petter Selasky __u16 pkey_tbl_len; 313*d6b92ffaSHans Petter Selasky __u16 lid; 314*d6b92ffaSHans Petter Selasky __u16 sm_lid; 315*d6b92ffaSHans Petter Selasky __u8 state; 316*d6b92ffaSHans Petter Selasky __u8 max_mtu; 317*d6b92ffaSHans Petter Selasky __u8 active_mtu; 318*d6b92ffaSHans Petter Selasky __u8 lmc; 319*d6b92ffaSHans Petter Selasky __u8 max_vl_num; 320*d6b92ffaSHans Petter Selasky __u8 sm_sl; 321*d6b92ffaSHans Petter Selasky __u8 subnet_timeout; 322*d6b92ffaSHans Petter Selasky __u8 init_type_reply; 323*d6b92ffaSHans Petter Selasky __u8 active_width; 324*d6b92ffaSHans Petter Selasky __u8 active_speed; 325*d6b92ffaSHans Petter Selasky __u8 phys_state; 326*d6b92ffaSHans Petter Selasky __u8 link_layer; 327*d6b92ffaSHans Petter Selasky __u8 reserved[2]; 328*d6b92ffaSHans Petter Selasky }; 329*d6b92ffaSHans Petter Selasky 330*d6b92ffaSHans Petter Selasky struct ibv_alloc_pd { 331*d6b92ffaSHans Petter Selasky __u32 command; 332*d6b92ffaSHans Petter Selasky __u16 in_words; 333*d6b92ffaSHans Petter Selasky __u16 out_words; 334*d6b92ffaSHans Petter Selasky __u64 response; 335*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 336*d6b92ffaSHans Petter Selasky }; 337*d6b92ffaSHans Petter Selasky 338*d6b92ffaSHans Petter Selasky struct ibv_alloc_pd_resp { 339*d6b92ffaSHans Petter Selasky __u32 pd_handle; 340*d6b92ffaSHans Petter Selasky }; 341*d6b92ffaSHans Petter Selasky 342*d6b92ffaSHans Petter Selasky struct ibv_dealloc_pd { 343*d6b92ffaSHans Petter Selasky __u32 command; 344*d6b92ffaSHans Petter Selasky __u16 in_words; 345*d6b92ffaSHans Petter Selasky __u16 out_words; 346*d6b92ffaSHans Petter Selasky __u32 pd_handle; 347*d6b92ffaSHans Petter Selasky }; 348*d6b92ffaSHans Petter Selasky 349*d6b92ffaSHans Petter Selasky struct ibv_open_xrcd { 350*d6b92ffaSHans Petter Selasky __u32 command; 351*d6b92ffaSHans Petter Selasky __u16 in_words; 352*d6b92ffaSHans Petter Selasky __u16 out_words; 353*d6b92ffaSHans Petter Selasky __u64 response; 354*d6b92ffaSHans Petter Selasky __u32 fd; 355*d6b92ffaSHans Petter Selasky __u32 oflags; 356*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 357*d6b92ffaSHans Petter Selasky }; 358*d6b92ffaSHans Petter Selasky 359*d6b92ffaSHans Petter Selasky struct ibv_open_xrcd_resp { 360*d6b92ffaSHans Petter Selasky __u32 xrcd_handle; 361*d6b92ffaSHans Petter Selasky }; 362*d6b92ffaSHans Petter Selasky 363*d6b92ffaSHans Petter Selasky struct ibv_close_xrcd { 364*d6b92ffaSHans Petter Selasky __u32 command; 365*d6b92ffaSHans Petter Selasky __u16 in_words; 366*d6b92ffaSHans Petter Selasky __u16 out_words; 367*d6b92ffaSHans Petter Selasky __u32 xrcd_handle; 368*d6b92ffaSHans Petter Selasky }; 369*d6b92ffaSHans Petter Selasky 370*d6b92ffaSHans Petter Selasky struct ibv_reg_mr { 371*d6b92ffaSHans Petter Selasky __u32 command; 372*d6b92ffaSHans Petter Selasky __u16 in_words; 373*d6b92ffaSHans Petter Selasky __u16 out_words; 374*d6b92ffaSHans Petter Selasky __u64 response; 375*d6b92ffaSHans Petter Selasky __u64 start; 376*d6b92ffaSHans Petter Selasky __u64 length; 377*d6b92ffaSHans Petter Selasky __u64 hca_va; 378*d6b92ffaSHans Petter Selasky __u32 pd_handle; 379*d6b92ffaSHans Petter Selasky __u32 access_flags; 380*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 381*d6b92ffaSHans Petter Selasky }; 382*d6b92ffaSHans Petter Selasky 383*d6b92ffaSHans Petter Selasky struct ibv_reg_mr_resp { 384*d6b92ffaSHans Petter Selasky __u32 mr_handle; 385*d6b92ffaSHans Petter Selasky __u32 lkey; 386*d6b92ffaSHans Petter Selasky __u32 rkey; 387*d6b92ffaSHans Petter Selasky }; 388*d6b92ffaSHans Petter Selasky 389*d6b92ffaSHans Petter Selasky struct ibv_rereg_mr { 390*d6b92ffaSHans Petter Selasky __u32 command; 391*d6b92ffaSHans Petter Selasky __u16 in_words; 392*d6b92ffaSHans Petter Selasky __u16 out_words; 393*d6b92ffaSHans Petter Selasky __u64 response; 394*d6b92ffaSHans Petter Selasky __u32 mr_handle; 395*d6b92ffaSHans Petter Selasky __u32 flags; 396*d6b92ffaSHans Petter Selasky __u64 start; 397*d6b92ffaSHans Petter Selasky __u64 length; 398*d6b92ffaSHans Petter Selasky __u64 hca_va; 399*d6b92ffaSHans Petter Selasky __u32 pd_handle; 400*d6b92ffaSHans Petter Selasky __u32 access_flags; 401*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 402*d6b92ffaSHans Petter Selasky }; 403*d6b92ffaSHans Petter Selasky 404*d6b92ffaSHans Petter Selasky struct ibv_rereg_mr_resp { 405*d6b92ffaSHans Petter Selasky __u32 lkey; 406*d6b92ffaSHans Petter Selasky __u32 rkey; 407*d6b92ffaSHans Petter Selasky }; 408*d6b92ffaSHans Petter Selasky 409*d6b92ffaSHans Petter Selasky struct ibv_dereg_mr { 410*d6b92ffaSHans Petter Selasky __u32 command; 411*d6b92ffaSHans Petter Selasky __u16 in_words; 412*d6b92ffaSHans Petter Selasky __u16 out_words; 413*d6b92ffaSHans Petter Selasky __u32 mr_handle; 414*d6b92ffaSHans Petter Selasky }; 415*d6b92ffaSHans Petter Selasky 416*d6b92ffaSHans Petter Selasky struct ibv_alloc_mw { 417*d6b92ffaSHans Petter Selasky __u32 command; 418*d6b92ffaSHans Petter Selasky __u16 in_words; 419*d6b92ffaSHans Petter Selasky __u16 out_words; 420*d6b92ffaSHans Petter Selasky __u64 response; 421*d6b92ffaSHans Petter Selasky __u32 pd_handle; 422*d6b92ffaSHans Petter Selasky __u8 mw_type; 423*d6b92ffaSHans Petter Selasky __u8 reserved[3]; 424*d6b92ffaSHans Petter Selasky }; 425*d6b92ffaSHans Petter Selasky 426*d6b92ffaSHans Petter Selasky struct ibv_alloc_mw_resp { 427*d6b92ffaSHans Petter Selasky __u32 mw_handle; 428*d6b92ffaSHans Petter Selasky __u32 rkey; 429*d6b92ffaSHans Petter Selasky }; 430*d6b92ffaSHans Petter Selasky 431*d6b92ffaSHans Petter Selasky struct ibv_dealloc_mw { 432*d6b92ffaSHans Petter Selasky __u32 command; 433*d6b92ffaSHans Petter Selasky __u16 in_words; 434*d6b92ffaSHans Petter Selasky __u16 out_words; 435*d6b92ffaSHans Petter Selasky __u32 mw_handle; 436*d6b92ffaSHans Petter Selasky __u32 reserved; 437*d6b92ffaSHans Petter Selasky }; 438*d6b92ffaSHans Petter Selasky 439*d6b92ffaSHans Petter Selasky struct ibv_create_comp_channel { 440*d6b92ffaSHans Petter Selasky __u32 command; 441*d6b92ffaSHans Petter Selasky __u16 in_words; 442*d6b92ffaSHans Petter Selasky __u16 out_words; 443*d6b92ffaSHans Petter Selasky __u64 response; 444*d6b92ffaSHans Petter Selasky }; 445*d6b92ffaSHans Petter Selasky 446*d6b92ffaSHans Petter Selasky struct ibv_create_comp_channel_resp { 447*d6b92ffaSHans Petter Selasky __u32 fd; 448*d6b92ffaSHans Petter Selasky }; 449*d6b92ffaSHans Petter Selasky 450*d6b92ffaSHans Petter Selasky struct ibv_create_cq { 451*d6b92ffaSHans Petter Selasky __u32 command; 452*d6b92ffaSHans Petter Selasky __u16 in_words; 453*d6b92ffaSHans Petter Selasky __u16 out_words; 454*d6b92ffaSHans Petter Selasky __u64 response; 455*d6b92ffaSHans Petter Selasky __u64 user_handle; 456*d6b92ffaSHans Petter Selasky __u32 cqe; 457*d6b92ffaSHans Petter Selasky __u32 comp_vector; 458*d6b92ffaSHans Petter Selasky __s32 comp_channel; 459*d6b92ffaSHans Petter Selasky __u32 reserved; 460*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 461*d6b92ffaSHans Petter Selasky }; 462*d6b92ffaSHans Petter Selasky 463*d6b92ffaSHans Petter Selasky struct ibv_create_cq_resp { 464*d6b92ffaSHans Petter Selasky __u32 cq_handle; 465*d6b92ffaSHans Petter Selasky __u32 cqe; 466*d6b92ffaSHans Petter Selasky }; 467*d6b92ffaSHans Petter Selasky 468*d6b92ffaSHans Petter Selasky enum ibv_create_cq_ex_kernel_flags { 469*d6b92ffaSHans Petter Selasky IBV_CREATE_CQ_EX_KERNEL_FLAG_COMPLETION_TIMESTAMP = 1 << 0, 470*d6b92ffaSHans Petter Selasky }; 471*d6b92ffaSHans Petter Selasky 472*d6b92ffaSHans Petter Selasky struct ibv_create_cq_ex { 473*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 474*d6b92ffaSHans Petter Selasky __u64 user_handle; 475*d6b92ffaSHans Petter Selasky __u32 cqe; 476*d6b92ffaSHans Petter Selasky __u32 comp_vector; 477*d6b92ffaSHans Petter Selasky __s32 comp_channel; 478*d6b92ffaSHans Petter Selasky __u32 comp_mask; 479*d6b92ffaSHans Petter Selasky __u32 flags; 480*d6b92ffaSHans Petter Selasky __u32 reserved; 481*d6b92ffaSHans Petter Selasky }; 482*d6b92ffaSHans Petter Selasky 483*d6b92ffaSHans Petter Selasky struct ibv_create_cq_resp_ex { 484*d6b92ffaSHans Petter Selasky struct ibv_create_cq_resp base; 485*d6b92ffaSHans Petter Selasky __u32 comp_mask; 486*d6b92ffaSHans Petter Selasky __u32 response_length; 487*d6b92ffaSHans Petter Selasky }; 488*d6b92ffaSHans Petter Selasky 489*d6b92ffaSHans Petter Selasky struct ibv_kern_wc { 490*d6b92ffaSHans Petter Selasky __u64 wr_id; 491*d6b92ffaSHans Petter Selasky __u32 status; 492*d6b92ffaSHans Petter Selasky __u32 opcode; 493*d6b92ffaSHans Petter Selasky __u32 vendor_err; 494*d6b92ffaSHans Petter Selasky __u32 byte_len; 495*d6b92ffaSHans Petter Selasky __be32 imm_data; 496*d6b92ffaSHans Petter Selasky __u32 qp_num; 497*d6b92ffaSHans Petter Selasky __u32 src_qp; 498*d6b92ffaSHans Petter Selasky __u32 wc_flags; 499*d6b92ffaSHans Petter Selasky __u16 pkey_index; 500*d6b92ffaSHans Petter Selasky __u16 slid; 501*d6b92ffaSHans Petter Selasky __u8 sl; 502*d6b92ffaSHans Petter Selasky __u8 dlid_path_bits; 503*d6b92ffaSHans Petter Selasky __u8 port_num; 504*d6b92ffaSHans Petter Selasky __u8 reserved; 505*d6b92ffaSHans Petter Selasky }; 506*d6b92ffaSHans Petter Selasky 507*d6b92ffaSHans Petter Selasky struct ibv_poll_cq { 508*d6b92ffaSHans Petter Selasky __u32 command; 509*d6b92ffaSHans Petter Selasky __u16 in_words; 510*d6b92ffaSHans Petter Selasky __u16 out_words; 511*d6b92ffaSHans Petter Selasky __u64 response; 512*d6b92ffaSHans Petter Selasky __u32 cq_handle; 513*d6b92ffaSHans Petter Selasky __u32 ne; 514*d6b92ffaSHans Petter Selasky }; 515*d6b92ffaSHans Petter Selasky 516*d6b92ffaSHans Petter Selasky struct ibv_poll_cq_resp { 517*d6b92ffaSHans Petter Selasky __u32 count; 518*d6b92ffaSHans Petter Selasky __u32 reserved; 519*d6b92ffaSHans Petter Selasky struct ibv_kern_wc wc[0]; 520*d6b92ffaSHans Petter Selasky }; 521*d6b92ffaSHans Petter Selasky 522*d6b92ffaSHans Petter Selasky struct ibv_req_notify_cq { 523*d6b92ffaSHans Petter Selasky __u32 command; 524*d6b92ffaSHans Petter Selasky __u16 in_words; 525*d6b92ffaSHans Petter Selasky __u16 out_words; 526*d6b92ffaSHans Petter Selasky __u32 cq_handle; 527*d6b92ffaSHans Petter Selasky __u32 solicited; 528*d6b92ffaSHans Petter Selasky }; 529*d6b92ffaSHans Petter Selasky 530*d6b92ffaSHans Petter Selasky struct ibv_resize_cq { 531*d6b92ffaSHans Petter Selasky __u32 command; 532*d6b92ffaSHans Petter Selasky __u16 in_words; 533*d6b92ffaSHans Petter Selasky __u16 out_words; 534*d6b92ffaSHans Petter Selasky __u64 response; 535*d6b92ffaSHans Petter Selasky __u32 cq_handle; 536*d6b92ffaSHans Petter Selasky __u32 cqe; 537*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 538*d6b92ffaSHans Petter Selasky }; 539*d6b92ffaSHans Petter Selasky 540*d6b92ffaSHans Petter Selasky struct ibv_resize_cq_resp { 541*d6b92ffaSHans Petter Selasky __u32 cqe; 542*d6b92ffaSHans Petter Selasky __u32 reserved; 543*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 544*d6b92ffaSHans Petter Selasky }; 545*d6b92ffaSHans Petter Selasky 546*d6b92ffaSHans Petter Selasky struct ibv_destroy_cq { 547*d6b92ffaSHans Petter Selasky __u32 command; 548*d6b92ffaSHans Petter Selasky __u16 in_words; 549*d6b92ffaSHans Petter Selasky __u16 out_words; 550*d6b92ffaSHans Petter Selasky __u64 response; 551*d6b92ffaSHans Petter Selasky __u32 cq_handle; 552*d6b92ffaSHans Petter Selasky __u32 reserved; 553*d6b92ffaSHans Petter Selasky }; 554*d6b92ffaSHans Petter Selasky 555*d6b92ffaSHans Petter Selasky struct ibv_destroy_cq_resp { 556*d6b92ffaSHans Petter Selasky __u32 comp_events_reported; 557*d6b92ffaSHans Petter Selasky __u32 async_events_reported; 558*d6b92ffaSHans Petter Selasky }; 559*d6b92ffaSHans Petter Selasky 560*d6b92ffaSHans Petter Selasky struct ibv_kern_global_route { 561*d6b92ffaSHans Petter Selasky __u8 dgid[16]; 562*d6b92ffaSHans Petter Selasky __u32 flow_label; 563*d6b92ffaSHans Petter Selasky __u8 sgid_index; 564*d6b92ffaSHans Petter Selasky __u8 hop_limit; 565*d6b92ffaSHans Petter Selasky __u8 traffic_class; 566*d6b92ffaSHans Petter Selasky __u8 reserved; 567*d6b92ffaSHans Petter Selasky }; 568*d6b92ffaSHans Petter Selasky 569*d6b92ffaSHans Petter Selasky struct ibv_kern_ah_attr { 570*d6b92ffaSHans Petter Selasky struct ibv_kern_global_route grh; 571*d6b92ffaSHans Petter Selasky __u16 dlid; 572*d6b92ffaSHans Petter Selasky __u8 sl; 573*d6b92ffaSHans Petter Selasky __u8 src_path_bits; 574*d6b92ffaSHans Petter Selasky __u8 static_rate; 575*d6b92ffaSHans Petter Selasky __u8 is_global; 576*d6b92ffaSHans Petter Selasky __u8 port_num; 577*d6b92ffaSHans Petter Selasky __u8 reserved; 578*d6b92ffaSHans Petter Selasky }; 579*d6b92ffaSHans Petter Selasky 580*d6b92ffaSHans Petter Selasky struct ibv_kern_qp_attr { 581*d6b92ffaSHans Petter Selasky __u32 qp_attr_mask; 582*d6b92ffaSHans Petter Selasky __u32 qp_state; 583*d6b92ffaSHans Petter Selasky __u32 cur_qp_state; 584*d6b92ffaSHans Petter Selasky __u32 path_mtu; 585*d6b92ffaSHans Petter Selasky __u32 path_mig_state; 586*d6b92ffaSHans Petter Selasky __u32 qkey; 587*d6b92ffaSHans Petter Selasky __u32 rq_psn; 588*d6b92ffaSHans Petter Selasky __u32 sq_psn; 589*d6b92ffaSHans Petter Selasky __u32 dest_qp_num; 590*d6b92ffaSHans Petter Selasky __u32 qp_access_flags; 591*d6b92ffaSHans Petter Selasky 592*d6b92ffaSHans Petter Selasky struct ibv_kern_ah_attr ah_attr; 593*d6b92ffaSHans Petter Selasky struct ibv_kern_ah_attr alt_ah_attr; 594*d6b92ffaSHans Petter Selasky 595*d6b92ffaSHans Petter Selasky /* ib_qp_cap */ 596*d6b92ffaSHans Petter Selasky __u32 max_send_wr; 597*d6b92ffaSHans Petter Selasky __u32 max_recv_wr; 598*d6b92ffaSHans Petter Selasky __u32 max_send_sge; 599*d6b92ffaSHans Petter Selasky __u32 max_recv_sge; 600*d6b92ffaSHans Petter Selasky __u32 max_inline_data; 601*d6b92ffaSHans Petter Selasky 602*d6b92ffaSHans Petter Selasky __u16 pkey_index; 603*d6b92ffaSHans Petter Selasky __u16 alt_pkey_index; 604*d6b92ffaSHans Petter Selasky __u8 en_sqd_async_notify; 605*d6b92ffaSHans Petter Selasky __u8 sq_draining; 606*d6b92ffaSHans Petter Selasky __u8 max_rd_atomic; 607*d6b92ffaSHans Petter Selasky __u8 max_dest_rd_atomic; 608*d6b92ffaSHans Petter Selasky __u8 min_rnr_timer; 609*d6b92ffaSHans Petter Selasky __u8 port_num; 610*d6b92ffaSHans Petter Selasky __u8 timeout; 611*d6b92ffaSHans Petter Selasky __u8 retry_cnt; 612*d6b92ffaSHans Petter Selasky __u8 rnr_retry; 613*d6b92ffaSHans Petter Selasky __u8 alt_port_num; 614*d6b92ffaSHans Petter Selasky __u8 alt_timeout; 615*d6b92ffaSHans Petter Selasky __u8 reserved[5]; 616*d6b92ffaSHans Petter Selasky }; 617*d6b92ffaSHans Petter Selasky 618*d6b92ffaSHans Petter Selasky #define IBV_CREATE_QP_COMMON \ 619*d6b92ffaSHans Petter Selasky __u64 user_handle; \ 620*d6b92ffaSHans Petter Selasky __u32 pd_handle; \ 621*d6b92ffaSHans Petter Selasky __u32 send_cq_handle; \ 622*d6b92ffaSHans Petter Selasky __u32 recv_cq_handle; \ 623*d6b92ffaSHans Petter Selasky __u32 srq_handle; \ 624*d6b92ffaSHans Petter Selasky __u32 max_send_wr; \ 625*d6b92ffaSHans Petter Selasky __u32 max_recv_wr; \ 626*d6b92ffaSHans Petter Selasky __u32 max_send_sge; \ 627*d6b92ffaSHans Petter Selasky __u32 max_recv_sge; \ 628*d6b92ffaSHans Petter Selasky __u32 max_inline_data; \ 629*d6b92ffaSHans Petter Selasky __u8 sq_sig_all; \ 630*d6b92ffaSHans Petter Selasky __u8 qp_type; \ 631*d6b92ffaSHans Petter Selasky __u8 is_srq; \ 632*d6b92ffaSHans Petter Selasky __u8 reserved 633*d6b92ffaSHans Petter Selasky 634*d6b92ffaSHans Petter Selasky struct ibv_create_qp { 635*d6b92ffaSHans Petter Selasky __u32 command; 636*d6b92ffaSHans Petter Selasky __u16 in_words; 637*d6b92ffaSHans Petter Selasky __u16 out_words; 638*d6b92ffaSHans Petter Selasky __u64 response; 639*d6b92ffaSHans Petter Selasky IBV_CREATE_QP_COMMON; 640*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 641*d6b92ffaSHans Petter Selasky }; 642*d6b92ffaSHans Petter Selasky 643*d6b92ffaSHans Petter Selasky struct ibv_create_qp_common { 644*d6b92ffaSHans Petter Selasky IBV_CREATE_QP_COMMON; 645*d6b92ffaSHans Petter Selasky }; 646*d6b92ffaSHans Petter Selasky 647*d6b92ffaSHans Petter Selasky struct ibv_open_qp { 648*d6b92ffaSHans Petter Selasky __u32 command; 649*d6b92ffaSHans Petter Selasky __u16 in_words; 650*d6b92ffaSHans Petter Selasky __u16 out_words; 651*d6b92ffaSHans Petter Selasky __u64 response; 652*d6b92ffaSHans Petter Selasky __u64 user_handle; 653*d6b92ffaSHans Petter Selasky __u32 pd_handle; 654*d6b92ffaSHans Petter Selasky __u32 qpn; 655*d6b92ffaSHans Petter Selasky __u8 qp_type; 656*d6b92ffaSHans Petter Selasky __u8 reserved[7]; 657*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 658*d6b92ffaSHans Petter Selasky }; 659*d6b92ffaSHans Petter Selasky 660*d6b92ffaSHans Petter Selasky /* also used for open response */ 661*d6b92ffaSHans Petter Selasky struct ibv_create_qp_resp { 662*d6b92ffaSHans Petter Selasky __u32 qp_handle; 663*d6b92ffaSHans Petter Selasky __u32 qpn; 664*d6b92ffaSHans Petter Selasky __u32 max_send_wr; 665*d6b92ffaSHans Petter Selasky __u32 max_recv_wr; 666*d6b92ffaSHans Petter Selasky __u32 max_send_sge; 667*d6b92ffaSHans Petter Selasky __u32 max_recv_sge; 668*d6b92ffaSHans Petter Selasky __u32 max_inline_data; 669*d6b92ffaSHans Petter Selasky __u32 reserved; 670*d6b92ffaSHans Petter Selasky }; 671*d6b92ffaSHans Petter Selasky 672*d6b92ffaSHans Petter Selasky enum ibv_create_qp_ex_kernel_mask { 673*d6b92ffaSHans Petter Selasky IBV_CREATE_QP_EX_KERNEL_MASK_IND_TABLE = 1 << 0, 674*d6b92ffaSHans Petter Selasky }; 675*d6b92ffaSHans Petter Selasky 676*d6b92ffaSHans Petter Selasky struct ibv_create_qp_ex { 677*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 678*d6b92ffaSHans Petter Selasky struct ibv_create_qp_common base; 679*d6b92ffaSHans Petter Selasky __u32 comp_mask; 680*d6b92ffaSHans Petter Selasky __u32 create_flags; 681*d6b92ffaSHans Petter Selasky __u32 ind_tbl_handle; 682*d6b92ffaSHans Petter Selasky __u32 reserved1; 683*d6b92ffaSHans Petter Selasky }; 684*d6b92ffaSHans Petter Selasky 685*d6b92ffaSHans Petter Selasky struct ibv_create_qp_resp_ex { 686*d6b92ffaSHans Petter Selasky struct ibv_create_qp_resp base; 687*d6b92ffaSHans Petter Selasky __u32 comp_mask; 688*d6b92ffaSHans Petter Selasky __u32 response_length; 689*d6b92ffaSHans Petter Selasky }; 690*d6b92ffaSHans Petter Selasky 691*d6b92ffaSHans Petter Selasky struct ibv_qp_dest { 692*d6b92ffaSHans Petter Selasky __u8 dgid[16]; 693*d6b92ffaSHans Petter Selasky __u32 flow_label; 694*d6b92ffaSHans Petter Selasky __u16 dlid; 695*d6b92ffaSHans Petter Selasky __u16 reserved; 696*d6b92ffaSHans Petter Selasky __u8 sgid_index; 697*d6b92ffaSHans Petter Selasky __u8 hop_limit; 698*d6b92ffaSHans Petter Selasky __u8 traffic_class; 699*d6b92ffaSHans Petter Selasky __u8 sl; 700*d6b92ffaSHans Petter Selasky __u8 src_path_bits; 701*d6b92ffaSHans Petter Selasky __u8 static_rate; 702*d6b92ffaSHans Petter Selasky __u8 is_global; 703*d6b92ffaSHans Petter Selasky __u8 port_num; 704*d6b92ffaSHans Petter Selasky }; 705*d6b92ffaSHans Petter Selasky 706*d6b92ffaSHans Petter Selasky struct ibv_query_qp { 707*d6b92ffaSHans Petter Selasky __u32 command; 708*d6b92ffaSHans Petter Selasky __u16 in_words; 709*d6b92ffaSHans Petter Selasky __u16 out_words; 710*d6b92ffaSHans Petter Selasky __u64 response; 711*d6b92ffaSHans Petter Selasky __u32 qp_handle; 712*d6b92ffaSHans Petter Selasky __u32 attr_mask; 713*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 714*d6b92ffaSHans Petter Selasky }; 715*d6b92ffaSHans Petter Selasky 716*d6b92ffaSHans Petter Selasky struct ibv_query_qp_resp { 717*d6b92ffaSHans Petter Selasky struct ibv_qp_dest dest; 718*d6b92ffaSHans Petter Selasky struct ibv_qp_dest alt_dest; 719*d6b92ffaSHans Petter Selasky __u32 max_send_wr; 720*d6b92ffaSHans Petter Selasky __u32 max_recv_wr; 721*d6b92ffaSHans Petter Selasky __u32 max_send_sge; 722*d6b92ffaSHans Petter Selasky __u32 max_recv_sge; 723*d6b92ffaSHans Petter Selasky __u32 max_inline_data; 724*d6b92ffaSHans Petter Selasky __u32 qkey; 725*d6b92ffaSHans Petter Selasky __u32 rq_psn; 726*d6b92ffaSHans Petter Selasky __u32 sq_psn; 727*d6b92ffaSHans Petter Selasky __u32 dest_qp_num; 728*d6b92ffaSHans Petter Selasky __u32 qp_access_flags; 729*d6b92ffaSHans Petter Selasky __u16 pkey_index; 730*d6b92ffaSHans Petter Selasky __u16 alt_pkey_index; 731*d6b92ffaSHans Petter Selasky __u8 qp_state; 732*d6b92ffaSHans Petter Selasky __u8 cur_qp_state; 733*d6b92ffaSHans Petter Selasky __u8 path_mtu; 734*d6b92ffaSHans Petter Selasky __u8 path_mig_state; 735*d6b92ffaSHans Petter Selasky __u8 sq_draining; 736*d6b92ffaSHans Petter Selasky __u8 max_rd_atomic; 737*d6b92ffaSHans Petter Selasky __u8 max_dest_rd_atomic; 738*d6b92ffaSHans Petter Selasky __u8 min_rnr_timer; 739*d6b92ffaSHans Petter Selasky __u8 port_num; 740*d6b92ffaSHans Petter Selasky __u8 timeout; 741*d6b92ffaSHans Petter Selasky __u8 retry_cnt; 742*d6b92ffaSHans Petter Selasky __u8 rnr_retry; 743*d6b92ffaSHans Petter Selasky __u8 alt_port_num; 744*d6b92ffaSHans Petter Selasky __u8 alt_timeout; 745*d6b92ffaSHans Petter Selasky __u8 sq_sig_all; 746*d6b92ffaSHans Petter Selasky __u8 reserved[5]; 747*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 748*d6b92ffaSHans Petter Selasky }; 749*d6b92ffaSHans Petter Selasky 750*d6b92ffaSHans Petter Selasky struct ibv_modify_qp_common { 751*d6b92ffaSHans Petter Selasky struct ibv_qp_dest dest; 752*d6b92ffaSHans Petter Selasky struct ibv_qp_dest alt_dest; 753*d6b92ffaSHans Petter Selasky __u32 qp_handle; 754*d6b92ffaSHans Petter Selasky __u32 attr_mask; 755*d6b92ffaSHans Petter Selasky __u32 qkey; 756*d6b92ffaSHans Petter Selasky __u32 rq_psn; 757*d6b92ffaSHans Petter Selasky __u32 sq_psn; 758*d6b92ffaSHans Petter Selasky __u32 dest_qp_num; 759*d6b92ffaSHans Petter Selasky __u32 qp_access_flags; 760*d6b92ffaSHans Petter Selasky __u16 pkey_index; 761*d6b92ffaSHans Petter Selasky __u16 alt_pkey_index; 762*d6b92ffaSHans Petter Selasky __u8 qp_state; 763*d6b92ffaSHans Petter Selasky __u8 cur_qp_state; 764*d6b92ffaSHans Petter Selasky __u8 path_mtu; 765*d6b92ffaSHans Petter Selasky __u8 path_mig_state; 766*d6b92ffaSHans Petter Selasky __u8 en_sqd_async_notify; 767*d6b92ffaSHans Petter Selasky __u8 max_rd_atomic; 768*d6b92ffaSHans Petter Selasky __u8 max_dest_rd_atomic; 769*d6b92ffaSHans Petter Selasky __u8 min_rnr_timer; 770*d6b92ffaSHans Petter Selasky __u8 port_num; 771*d6b92ffaSHans Petter Selasky __u8 timeout; 772*d6b92ffaSHans Petter Selasky __u8 retry_cnt; 773*d6b92ffaSHans Petter Selasky __u8 rnr_retry; 774*d6b92ffaSHans Petter Selasky __u8 alt_port_num; 775*d6b92ffaSHans Petter Selasky __u8 alt_timeout; 776*d6b92ffaSHans Petter Selasky __u8 reserved[2]; 777*d6b92ffaSHans Petter Selasky }; 778*d6b92ffaSHans Petter Selasky 779*d6b92ffaSHans Petter Selasky struct ibv_modify_qp { 780*d6b92ffaSHans Petter Selasky __u32 command; 781*d6b92ffaSHans Petter Selasky __u16 in_words; 782*d6b92ffaSHans Petter Selasky __u16 out_words; 783*d6b92ffaSHans Petter Selasky struct ibv_modify_qp_common base; 784*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 785*d6b92ffaSHans Petter Selasky }; 786*d6b92ffaSHans Petter Selasky 787*d6b92ffaSHans Petter Selasky struct ibv_modify_qp_ex { 788*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 789*d6b92ffaSHans Petter Selasky struct ibv_modify_qp_common base; 790*d6b92ffaSHans Petter Selasky __u32 rate_limit; 791*d6b92ffaSHans Petter Selasky __u32 reserved; 792*d6b92ffaSHans Petter Selasky }; 793*d6b92ffaSHans Petter Selasky 794*d6b92ffaSHans Petter Selasky struct ibv_modify_qp_resp_ex { 795*d6b92ffaSHans Petter Selasky __u32 comp_mask; 796*d6b92ffaSHans Petter Selasky __u32 response_length; 797*d6b92ffaSHans Petter Selasky }; 798*d6b92ffaSHans Petter Selasky 799*d6b92ffaSHans Petter Selasky struct ibv_destroy_qp { 800*d6b92ffaSHans Petter Selasky __u32 command; 801*d6b92ffaSHans Petter Selasky __u16 in_words; 802*d6b92ffaSHans Petter Selasky __u16 out_words; 803*d6b92ffaSHans Petter Selasky __u64 response; 804*d6b92ffaSHans Petter Selasky __u32 qp_handle; 805*d6b92ffaSHans Petter Selasky __u32 reserved; 806*d6b92ffaSHans Petter Selasky }; 807*d6b92ffaSHans Petter Selasky 808*d6b92ffaSHans Petter Selasky struct ibv_destroy_qp_resp { 809*d6b92ffaSHans Petter Selasky __u32 events_reported; 810*d6b92ffaSHans Petter Selasky }; 811*d6b92ffaSHans Petter Selasky 812*d6b92ffaSHans Petter Selasky struct ibv_kern_send_wr { 813*d6b92ffaSHans Petter Selasky __u64 wr_id; 814*d6b92ffaSHans Petter Selasky __u32 num_sge; 815*d6b92ffaSHans Petter Selasky __u32 opcode; 816*d6b92ffaSHans Petter Selasky __u32 send_flags; 817*d6b92ffaSHans Petter Selasky __be32 imm_data; 818*d6b92ffaSHans Petter Selasky union { 819*d6b92ffaSHans Petter Selasky struct { 820*d6b92ffaSHans Petter Selasky __u64 remote_addr; 821*d6b92ffaSHans Petter Selasky __u32 rkey; 822*d6b92ffaSHans Petter Selasky __u32 reserved; 823*d6b92ffaSHans Petter Selasky } rdma; 824*d6b92ffaSHans Petter Selasky struct { 825*d6b92ffaSHans Petter Selasky __u64 remote_addr; 826*d6b92ffaSHans Petter Selasky __u64 compare_add; 827*d6b92ffaSHans Petter Selasky __u64 swap; 828*d6b92ffaSHans Petter Selasky __u32 rkey; 829*d6b92ffaSHans Petter Selasky __u32 reserved; 830*d6b92ffaSHans Petter Selasky } atomic; 831*d6b92ffaSHans Petter Selasky struct { 832*d6b92ffaSHans Petter Selasky __u32 ah; 833*d6b92ffaSHans Petter Selasky __u32 remote_qpn; 834*d6b92ffaSHans Petter Selasky __u32 remote_qkey; 835*d6b92ffaSHans Petter Selasky __u32 reserved; 836*d6b92ffaSHans Petter Selasky } ud; 837*d6b92ffaSHans Petter Selasky } wr; 838*d6b92ffaSHans Petter Selasky union { 839*d6b92ffaSHans Petter Selasky struct { 840*d6b92ffaSHans Petter Selasky __u32 remote_srqn; 841*d6b92ffaSHans Petter Selasky } xrc; 842*d6b92ffaSHans Petter Selasky } qp_type; 843*d6b92ffaSHans Petter Selasky }; 844*d6b92ffaSHans Petter Selasky 845*d6b92ffaSHans Petter Selasky struct ibv_kern_eth_filter { 846*d6b92ffaSHans Petter Selasky __u8 dst_mac[6]; 847*d6b92ffaSHans Petter Selasky __u8 src_mac[6]; 848*d6b92ffaSHans Petter Selasky __u16 ether_type; 849*d6b92ffaSHans Petter Selasky __u16 vlan_tag; 850*d6b92ffaSHans Petter Selasky }; 851*d6b92ffaSHans Petter Selasky 852*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_eth { 853*d6b92ffaSHans Petter Selasky __u32 type; 854*d6b92ffaSHans Petter Selasky __u16 size; 855*d6b92ffaSHans Petter Selasky __u16 reserved; 856*d6b92ffaSHans Petter Selasky struct ibv_kern_eth_filter val; 857*d6b92ffaSHans Petter Selasky struct ibv_kern_eth_filter mask; 858*d6b92ffaSHans Petter Selasky }; 859*d6b92ffaSHans Petter Selasky 860*d6b92ffaSHans Petter Selasky struct ibv_kern_ipv4_filter { 861*d6b92ffaSHans Petter Selasky __u32 src_ip; 862*d6b92ffaSHans Petter Selasky __u32 dst_ip; 863*d6b92ffaSHans Petter Selasky }; 864*d6b92ffaSHans Petter Selasky 865*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_ipv4 { 866*d6b92ffaSHans Petter Selasky __u32 type; 867*d6b92ffaSHans Petter Selasky __u16 size; 868*d6b92ffaSHans Petter Selasky __u16 reserved; 869*d6b92ffaSHans Petter Selasky struct ibv_kern_ipv4_filter val; 870*d6b92ffaSHans Petter Selasky struct ibv_kern_ipv4_filter mask; 871*d6b92ffaSHans Petter Selasky }; 872*d6b92ffaSHans Petter Selasky 873*d6b92ffaSHans Petter Selasky struct ibv_kern_ipv4_ext_filter { 874*d6b92ffaSHans Petter Selasky __u32 src_ip; 875*d6b92ffaSHans Petter Selasky __u32 dst_ip; 876*d6b92ffaSHans Petter Selasky __u8 proto; 877*d6b92ffaSHans Petter Selasky __u8 tos; 878*d6b92ffaSHans Petter Selasky __u8 ttl; 879*d6b92ffaSHans Petter Selasky __u8 flags; 880*d6b92ffaSHans Petter Selasky }; 881*d6b92ffaSHans Petter Selasky 882*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_ipv4_ext { 883*d6b92ffaSHans Petter Selasky __u32 type; 884*d6b92ffaSHans Petter Selasky __u16 size; 885*d6b92ffaSHans Petter Selasky __u16 reserved; 886*d6b92ffaSHans Petter Selasky struct ibv_kern_ipv4_ext_filter val; 887*d6b92ffaSHans Petter Selasky struct ibv_kern_ipv4_ext_filter mask; 888*d6b92ffaSHans Petter Selasky }; 889*d6b92ffaSHans Petter Selasky 890*d6b92ffaSHans Petter Selasky struct ibv_kern_ipv6_filter { 891*d6b92ffaSHans Petter Selasky __u8 src_ip[16]; 892*d6b92ffaSHans Petter Selasky __u8 dst_ip[16]; 893*d6b92ffaSHans Petter Selasky __u32 flow_label; 894*d6b92ffaSHans Petter Selasky __u8 next_hdr; 895*d6b92ffaSHans Petter Selasky __u8 traffic_class; 896*d6b92ffaSHans Petter Selasky __u8 hop_limit; 897*d6b92ffaSHans Petter Selasky __u8 reserved; 898*d6b92ffaSHans Petter Selasky }; 899*d6b92ffaSHans Petter Selasky 900*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_ipv6 { 901*d6b92ffaSHans Petter Selasky __u32 type; 902*d6b92ffaSHans Petter Selasky __u16 size; 903*d6b92ffaSHans Petter Selasky __u16 reserved; 904*d6b92ffaSHans Petter Selasky struct ibv_kern_ipv6_filter val; 905*d6b92ffaSHans Petter Selasky struct ibv_kern_ipv6_filter mask; 906*d6b92ffaSHans Petter Selasky }; 907*d6b92ffaSHans Petter Selasky 908*d6b92ffaSHans Petter Selasky struct ibv_kern_tcp_udp_filter { 909*d6b92ffaSHans Petter Selasky __u16 dst_port; 910*d6b92ffaSHans Petter Selasky __u16 src_port; 911*d6b92ffaSHans Petter Selasky }; 912*d6b92ffaSHans Petter Selasky 913*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_tcp_udp { 914*d6b92ffaSHans Petter Selasky __u32 type; 915*d6b92ffaSHans Petter Selasky __u16 size; 916*d6b92ffaSHans Petter Selasky __u16 reserved; 917*d6b92ffaSHans Petter Selasky struct ibv_kern_tcp_udp_filter val; 918*d6b92ffaSHans Petter Selasky struct ibv_kern_tcp_udp_filter mask; 919*d6b92ffaSHans Petter Selasky }; 920*d6b92ffaSHans Petter Selasky 921*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_action_tag { 922*d6b92ffaSHans Petter Selasky __u32 type; 923*d6b92ffaSHans Petter Selasky __u16 size; 924*d6b92ffaSHans Petter Selasky __u16 reserved; 925*d6b92ffaSHans Petter Selasky __u32 tag_id; 926*d6b92ffaSHans Petter Selasky __u32 reserved1; 927*d6b92ffaSHans Petter Selasky }; 928*d6b92ffaSHans Petter Selasky 929*d6b92ffaSHans Petter Selasky struct ibv_kern_tunnel_filter { 930*d6b92ffaSHans Petter Selasky __u32 tunnel_id; 931*d6b92ffaSHans Petter Selasky }; 932*d6b92ffaSHans Petter Selasky 933*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_tunnel { 934*d6b92ffaSHans Petter Selasky __u32 type; 935*d6b92ffaSHans Petter Selasky __u16 size; 936*d6b92ffaSHans Petter Selasky __u16 reserved; 937*d6b92ffaSHans Petter Selasky struct ibv_kern_tunnel_filter val; 938*d6b92ffaSHans Petter Selasky struct ibv_kern_tunnel_filter mask; 939*d6b92ffaSHans Petter Selasky }; 940*d6b92ffaSHans Petter Selasky 941*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_action_drop { 942*d6b92ffaSHans Petter Selasky __u32 type; 943*d6b92ffaSHans Petter Selasky __u16 size; 944*d6b92ffaSHans Petter Selasky __u16 reserved; 945*d6b92ffaSHans Petter Selasky }; 946*d6b92ffaSHans Petter Selasky 947*d6b92ffaSHans Petter Selasky struct ibv_kern_spec { 948*d6b92ffaSHans Petter Selasky union { 949*d6b92ffaSHans Petter Selasky struct { 950*d6b92ffaSHans Petter Selasky __u32 type; 951*d6b92ffaSHans Petter Selasky __u16 size; 952*d6b92ffaSHans Petter Selasky __u16 reserved; 953*d6b92ffaSHans Petter Selasky } hdr; 954*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_eth eth; 955*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_ipv4 ipv4; 956*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_ipv4_ext ipv4_ext; 957*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_tcp_udp tcp_udp; 958*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_ipv6 ipv6; 959*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_tunnel tunnel; 960*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_action_tag flow_tag; 961*d6b92ffaSHans Petter Selasky struct ibv_kern_spec_action_drop drop; 962*d6b92ffaSHans Petter Selasky }; 963*d6b92ffaSHans Petter Selasky }; 964*d6b92ffaSHans Petter Selasky 965*d6b92ffaSHans Petter Selasky struct ibv_kern_flow_attr { 966*d6b92ffaSHans Petter Selasky __u32 type; 967*d6b92ffaSHans Petter Selasky __u16 size; 968*d6b92ffaSHans Petter Selasky __u16 priority; 969*d6b92ffaSHans Petter Selasky __u8 num_of_specs; 970*d6b92ffaSHans Petter Selasky __u8 reserved[2]; 971*d6b92ffaSHans Petter Selasky __u8 port; 972*d6b92ffaSHans Petter Selasky __u32 flags; 973*d6b92ffaSHans Petter Selasky /* Following are the optional layers according to user request 974*d6b92ffaSHans Petter Selasky * struct ibv_kern_flow_spec_xxx 975*d6b92ffaSHans Petter Selasky * struct ibv_kern_flow_spec_yyy 976*d6b92ffaSHans Petter Selasky */ 977*d6b92ffaSHans Petter Selasky }; 978*d6b92ffaSHans Petter Selasky 979*d6b92ffaSHans Petter Selasky struct ibv_post_send { 980*d6b92ffaSHans Petter Selasky __u32 command; 981*d6b92ffaSHans Petter Selasky __u16 in_words; 982*d6b92ffaSHans Petter Selasky __u16 out_words; 983*d6b92ffaSHans Petter Selasky __u64 response; 984*d6b92ffaSHans Petter Selasky __u32 qp_handle; 985*d6b92ffaSHans Petter Selasky __u32 wr_count; 986*d6b92ffaSHans Petter Selasky __u32 sge_count; 987*d6b92ffaSHans Petter Selasky __u32 wqe_size; 988*d6b92ffaSHans Petter Selasky struct ibv_kern_send_wr send_wr[0]; 989*d6b92ffaSHans Petter Selasky }; 990*d6b92ffaSHans Petter Selasky 991*d6b92ffaSHans Petter Selasky struct ibv_post_send_resp { 992*d6b92ffaSHans Petter Selasky __u32 bad_wr; 993*d6b92ffaSHans Petter Selasky }; 994*d6b92ffaSHans Petter Selasky 995*d6b92ffaSHans Petter Selasky struct ibv_kern_recv_wr { 996*d6b92ffaSHans Petter Selasky __u64 wr_id; 997*d6b92ffaSHans Petter Selasky __u32 num_sge; 998*d6b92ffaSHans Petter Selasky __u32 reserved; 999*d6b92ffaSHans Petter Selasky }; 1000*d6b92ffaSHans Petter Selasky 1001*d6b92ffaSHans Petter Selasky struct ibv_post_recv { 1002*d6b92ffaSHans Petter Selasky __u32 command; 1003*d6b92ffaSHans Petter Selasky __u16 in_words; 1004*d6b92ffaSHans Petter Selasky __u16 out_words; 1005*d6b92ffaSHans Petter Selasky __u64 response; 1006*d6b92ffaSHans Petter Selasky __u32 qp_handle; 1007*d6b92ffaSHans Petter Selasky __u32 wr_count; 1008*d6b92ffaSHans Petter Selasky __u32 sge_count; 1009*d6b92ffaSHans Petter Selasky __u32 wqe_size; 1010*d6b92ffaSHans Petter Selasky struct ibv_kern_recv_wr recv_wr[0]; 1011*d6b92ffaSHans Petter Selasky }; 1012*d6b92ffaSHans Petter Selasky 1013*d6b92ffaSHans Petter Selasky struct ibv_post_recv_resp { 1014*d6b92ffaSHans Petter Selasky __u32 bad_wr; 1015*d6b92ffaSHans Petter Selasky }; 1016*d6b92ffaSHans Petter Selasky 1017*d6b92ffaSHans Petter Selasky struct ibv_post_srq_recv { 1018*d6b92ffaSHans Petter Selasky __u32 command; 1019*d6b92ffaSHans Petter Selasky __u16 in_words; 1020*d6b92ffaSHans Petter Selasky __u16 out_words; 1021*d6b92ffaSHans Petter Selasky __u64 response; 1022*d6b92ffaSHans Petter Selasky __u32 srq_handle; 1023*d6b92ffaSHans Petter Selasky __u32 wr_count; 1024*d6b92ffaSHans Petter Selasky __u32 sge_count; 1025*d6b92ffaSHans Petter Selasky __u32 wqe_size; 1026*d6b92ffaSHans Petter Selasky struct ibv_kern_recv_wr recv_wr[0]; 1027*d6b92ffaSHans Petter Selasky }; 1028*d6b92ffaSHans Petter Selasky 1029*d6b92ffaSHans Petter Selasky struct ibv_post_srq_recv_resp { 1030*d6b92ffaSHans Petter Selasky __u32 bad_wr; 1031*d6b92ffaSHans Petter Selasky }; 1032*d6b92ffaSHans Petter Selasky 1033*d6b92ffaSHans Petter Selasky struct ibv_create_ah { 1034*d6b92ffaSHans Petter Selasky __u32 command; 1035*d6b92ffaSHans Petter Selasky __u16 in_words; 1036*d6b92ffaSHans Petter Selasky __u16 out_words; 1037*d6b92ffaSHans Petter Selasky __u64 response; 1038*d6b92ffaSHans Petter Selasky __u64 user_handle; 1039*d6b92ffaSHans Petter Selasky __u32 pd_handle; 1040*d6b92ffaSHans Petter Selasky __u32 reserved; 1041*d6b92ffaSHans Petter Selasky struct ibv_kern_ah_attr attr; 1042*d6b92ffaSHans Petter Selasky }; 1043*d6b92ffaSHans Petter Selasky 1044*d6b92ffaSHans Petter Selasky struct ibv_create_ah_resp { 1045*d6b92ffaSHans Petter Selasky __u32 handle; 1046*d6b92ffaSHans Petter Selasky }; 1047*d6b92ffaSHans Petter Selasky 1048*d6b92ffaSHans Petter Selasky struct ibv_destroy_ah { 1049*d6b92ffaSHans Petter Selasky __u32 command; 1050*d6b92ffaSHans Petter Selasky __u16 in_words; 1051*d6b92ffaSHans Petter Selasky __u16 out_words; 1052*d6b92ffaSHans Petter Selasky __u32 ah_handle; 1053*d6b92ffaSHans Petter Selasky }; 1054*d6b92ffaSHans Petter Selasky 1055*d6b92ffaSHans Petter Selasky struct ibv_attach_mcast { 1056*d6b92ffaSHans Petter Selasky __u32 command; 1057*d6b92ffaSHans Petter Selasky __u16 in_words; 1058*d6b92ffaSHans Petter Selasky __u16 out_words; 1059*d6b92ffaSHans Petter Selasky __u8 gid[16]; 1060*d6b92ffaSHans Petter Selasky __u32 qp_handle; 1061*d6b92ffaSHans Petter Selasky __u16 mlid; 1062*d6b92ffaSHans Petter Selasky __u16 reserved; 1063*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 1064*d6b92ffaSHans Petter Selasky }; 1065*d6b92ffaSHans Petter Selasky 1066*d6b92ffaSHans Petter Selasky struct ibv_create_flow { 1067*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 1068*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1069*d6b92ffaSHans Petter Selasky __u32 qp_handle; 1070*d6b92ffaSHans Petter Selasky struct ibv_kern_flow_attr flow_attr; 1071*d6b92ffaSHans Petter Selasky }; 1072*d6b92ffaSHans Petter Selasky 1073*d6b92ffaSHans Petter Selasky struct ibv_create_flow_resp { 1074*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1075*d6b92ffaSHans Petter Selasky __u32 flow_handle; 1076*d6b92ffaSHans Petter Selasky }; 1077*d6b92ffaSHans Petter Selasky 1078*d6b92ffaSHans Petter Selasky struct ibv_destroy_flow { 1079*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 1080*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1081*d6b92ffaSHans Petter Selasky __u32 flow_handle; 1082*d6b92ffaSHans Petter Selasky }; 1083*d6b92ffaSHans Petter Selasky 1084*d6b92ffaSHans Petter Selasky struct ibv_detach_mcast { 1085*d6b92ffaSHans Petter Selasky __u32 command; 1086*d6b92ffaSHans Petter Selasky __u16 in_words; 1087*d6b92ffaSHans Petter Selasky __u16 out_words; 1088*d6b92ffaSHans Petter Selasky __u8 gid[16]; 1089*d6b92ffaSHans Petter Selasky __u32 qp_handle; 1090*d6b92ffaSHans Petter Selasky __u16 mlid; 1091*d6b92ffaSHans Petter Selasky __u16 reserved; 1092*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 1093*d6b92ffaSHans Petter Selasky }; 1094*d6b92ffaSHans Petter Selasky 1095*d6b92ffaSHans Petter Selasky struct ibv_create_srq { 1096*d6b92ffaSHans Petter Selasky __u32 command; 1097*d6b92ffaSHans Petter Selasky __u16 in_words; 1098*d6b92ffaSHans Petter Selasky __u16 out_words; 1099*d6b92ffaSHans Petter Selasky __u64 response; 1100*d6b92ffaSHans Petter Selasky __u64 user_handle; 1101*d6b92ffaSHans Petter Selasky __u32 pd_handle; 1102*d6b92ffaSHans Petter Selasky __u32 max_wr; 1103*d6b92ffaSHans Petter Selasky __u32 max_sge; 1104*d6b92ffaSHans Petter Selasky __u32 srq_limit; 1105*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 1106*d6b92ffaSHans Petter Selasky }; 1107*d6b92ffaSHans Petter Selasky 1108*d6b92ffaSHans Petter Selasky struct ibv_create_xsrq { 1109*d6b92ffaSHans Petter Selasky __u32 command; 1110*d6b92ffaSHans Petter Selasky __u16 in_words; 1111*d6b92ffaSHans Petter Selasky __u16 out_words; 1112*d6b92ffaSHans Petter Selasky __u64 response; 1113*d6b92ffaSHans Petter Selasky __u64 user_handle; 1114*d6b92ffaSHans Petter Selasky __u32 srq_type; 1115*d6b92ffaSHans Petter Selasky __u32 pd_handle; 1116*d6b92ffaSHans Petter Selasky __u32 max_wr; 1117*d6b92ffaSHans Petter Selasky __u32 max_sge; 1118*d6b92ffaSHans Petter Selasky __u32 srq_limit; 1119*d6b92ffaSHans Petter Selasky __u32 reserved; 1120*d6b92ffaSHans Petter Selasky __u32 xrcd_handle; 1121*d6b92ffaSHans Petter Selasky __u32 cq_handle; 1122*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 1123*d6b92ffaSHans Petter Selasky }; 1124*d6b92ffaSHans Petter Selasky 1125*d6b92ffaSHans Petter Selasky struct ibv_create_srq_resp { 1126*d6b92ffaSHans Petter Selasky __u32 srq_handle; 1127*d6b92ffaSHans Petter Selasky __u32 max_wr; 1128*d6b92ffaSHans Petter Selasky __u32 max_sge; 1129*d6b92ffaSHans Petter Selasky __u32 srqn; 1130*d6b92ffaSHans Petter Selasky }; 1131*d6b92ffaSHans Petter Selasky 1132*d6b92ffaSHans Petter Selasky struct ibv_modify_srq { 1133*d6b92ffaSHans Petter Selasky __u32 command; 1134*d6b92ffaSHans Petter Selasky __u16 in_words; 1135*d6b92ffaSHans Petter Selasky __u16 out_words; 1136*d6b92ffaSHans Petter Selasky __u32 srq_handle; 1137*d6b92ffaSHans Petter Selasky __u32 attr_mask; 1138*d6b92ffaSHans Petter Selasky __u32 max_wr; 1139*d6b92ffaSHans Petter Selasky __u32 srq_limit; 1140*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 1141*d6b92ffaSHans Petter Selasky }; 1142*d6b92ffaSHans Petter Selasky 1143*d6b92ffaSHans Petter Selasky struct ibv_query_srq { 1144*d6b92ffaSHans Petter Selasky __u32 command; 1145*d6b92ffaSHans Petter Selasky __u16 in_words; 1146*d6b92ffaSHans Petter Selasky __u16 out_words; 1147*d6b92ffaSHans Petter Selasky __u64 response; 1148*d6b92ffaSHans Petter Selasky __u32 srq_handle; 1149*d6b92ffaSHans Petter Selasky __u32 reserved; 1150*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 1151*d6b92ffaSHans Petter Selasky }; 1152*d6b92ffaSHans Petter Selasky 1153*d6b92ffaSHans Petter Selasky struct ibv_query_srq_resp { 1154*d6b92ffaSHans Petter Selasky __u32 max_wr; 1155*d6b92ffaSHans Petter Selasky __u32 max_sge; 1156*d6b92ffaSHans Petter Selasky __u32 srq_limit; 1157*d6b92ffaSHans Petter Selasky __u32 reserved; 1158*d6b92ffaSHans Petter Selasky }; 1159*d6b92ffaSHans Petter Selasky 1160*d6b92ffaSHans Petter Selasky struct ibv_destroy_srq { 1161*d6b92ffaSHans Petter Selasky __u32 command; 1162*d6b92ffaSHans Petter Selasky __u16 in_words; 1163*d6b92ffaSHans Petter Selasky __u16 out_words; 1164*d6b92ffaSHans Petter Selasky __u64 response; 1165*d6b92ffaSHans Petter Selasky __u32 srq_handle; 1166*d6b92ffaSHans Petter Selasky __u32 reserved; 1167*d6b92ffaSHans Petter Selasky }; 1168*d6b92ffaSHans Petter Selasky 1169*d6b92ffaSHans Petter Selasky struct ibv_destroy_srq_resp { 1170*d6b92ffaSHans Petter Selasky __u32 events_reported; 1171*d6b92ffaSHans Petter Selasky }; 1172*d6b92ffaSHans Petter Selasky 1173*d6b92ffaSHans Petter Selasky /* 1174*d6b92ffaSHans Petter Selasky * Compatibility with older ABI versions 1175*d6b92ffaSHans Petter Selasky */ 1176*d6b92ffaSHans Petter Selasky 1177*d6b92ffaSHans Petter Selasky enum { 1178*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_PARAMS_V2, 1179*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_GET_CONTEXT_V2, 1180*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_DEVICE_V2, 1181*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_PORT_V2, 1182*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_GID_V2, 1183*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_PKEY_V2, 1184*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_ALLOC_PD_V2, 1185*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DEALLOC_PD_V2, 1186*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_AH_V2, 1187*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_AH_V2, 1188*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_AH_V2, 1189*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_AH_V2, 1190*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_REG_MR_V2, 1191*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_REG_SMR_V2, 1192*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_REREG_MR_V2, 1193*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_MR_V2, 1194*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DEREG_MR_V2, 1195*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_ALLOC_MW_V2, 1196*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_BIND_MW_V2, 1197*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DEALLOC_MW_V2, 1198*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_CQ_V2, 1199*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_RESIZE_CQ_V2, 1200*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_CQ_V2, 1201*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_POLL_CQ_V2, 1202*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_PEEK_CQ_V2, 1203*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_REQ_NOTIFY_CQ_V2, 1204*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_QP_V2, 1205*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_QP_V2, 1206*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_QP_V2, 1207*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_QP_V2, 1208*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_POST_SEND_V2, 1209*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_POST_RECV_V2, 1210*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_ATTACH_MCAST_V2, 1211*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DETACH_MCAST_V2, 1212*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_SRQ_V2, 1213*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_SRQ_V2, 1214*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_SRQ_V2, 1215*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_SRQ_V2, 1216*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_POST_SRQ_RECV_V2, 1217*d6b92ffaSHans Petter Selasky /* 1218*d6b92ffaSHans Petter Selasky * Set commands that didn't exist to -1 so our compile-time 1219*d6b92ffaSHans Petter Selasky * trick opcodes in IBV_INIT_CMD() doesn't break. 1220*d6b92ffaSHans Petter Selasky */ 1221*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL_V2 = -1, 1222*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_OPEN_XRCD_V2 = -1, 1223*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CLOSE_XRCD_V2 = -1, 1224*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_XSRQ_V2 = -1, 1225*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_OPEN_QP_V2 = -1, 1226*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_FLOW_V2 = -1, 1227*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_FLOW_V2 = -1, 1228*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_QUERY_DEVICE_EX_V2 = -1, 1229*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_QP_EX_V2 = -1, 1230*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_CQ_EX_V2 = -1, 1231*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_WQ_V2 = -1, 1232*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_WQ_V2 = -1, 1233*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_WQ_V2 = -1, 1234*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_CREATE_RWQ_IND_TBL_V2 = -1, 1235*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_DESTROY_RWQ_IND_TBL_V2 = -1, 1236*d6b92ffaSHans Petter Selasky IB_USER_VERBS_CMD_MODIFY_QP_EX_V2 = -1, 1237*d6b92ffaSHans Petter Selasky }; 1238*d6b92ffaSHans Petter Selasky 1239*d6b92ffaSHans Petter Selasky struct ibv_modify_srq_v3 { 1240*d6b92ffaSHans Petter Selasky __u32 command; 1241*d6b92ffaSHans Petter Selasky __u16 in_words; 1242*d6b92ffaSHans Petter Selasky __u16 out_words; 1243*d6b92ffaSHans Petter Selasky __u32 srq_handle; 1244*d6b92ffaSHans Petter Selasky __u32 attr_mask; 1245*d6b92ffaSHans Petter Selasky __u32 max_wr; 1246*d6b92ffaSHans Petter Selasky __u32 max_sge; 1247*d6b92ffaSHans Petter Selasky __u32 srq_limit; 1248*d6b92ffaSHans Petter Selasky __u32 reserved; 1249*d6b92ffaSHans Petter Selasky __u64 driver_data[0]; 1250*d6b92ffaSHans Petter Selasky }; 1251*d6b92ffaSHans Petter Selasky 1252*d6b92ffaSHans Petter Selasky struct ibv_create_qp_resp_v3 { 1253*d6b92ffaSHans Petter Selasky __u32 qp_handle; 1254*d6b92ffaSHans Petter Selasky __u32 qpn; 1255*d6b92ffaSHans Petter Selasky }; 1256*d6b92ffaSHans Petter Selasky 1257*d6b92ffaSHans Petter Selasky struct ibv_create_qp_resp_v4 { 1258*d6b92ffaSHans Petter Selasky __u32 qp_handle; 1259*d6b92ffaSHans Petter Selasky __u32 qpn; 1260*d6b92ffaSHans Petter Selasky __u32 max_send_wr; 1261*d6b92ffaSHans Petter Selasky __u32 max_recv_wr; 1262*d6b92ffaSHans Petter Selasky __u32 max_send_sge; 1263*d6b92ffaSHans Petter Selasky __u32 max_recv_sge; 1264*d6b92ffaSHans Petter Selasky __u32 max_inline_data; 1265*d6b92ffaSHans Petter Selasky }; 1266*d6b92ffaSHans Petter Selasky 1267*d6b92ffaSHans Petter Selasky struct ibv_create_srq_resp_v5 { 1268*d6b92ffaSHans Petter Selasky __u32 srq_handle; 1269*d6b92ffaSHans Petter Selasky }; 1270*d6b92ffaSHans Petter Selasky 1271*d6b92ffaSHans Petter Selasky struct ibv_create_wq { 1272*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 1273*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1274*d6b92ffaSHans Petter Selasky __u32 wq_type; 1275*d6b92ffaSHans Petter Selasky __u64 user_handle; 1276*d6b92ffaSHans Petter Selasky __u32 pd_handle; 1277*d6b92ffaSHans Petter Selasky __u32 cq_handle; 1278*d6b92ffaSHans Petter Selasky __u32 max_wr; 1279*d6b92ffaSHans Petter Selasky __u32 max_sge; 1280*d6b92ffaSHans Petter Selasky __u32 create_flags; 1281*d6b92ffaSHans Petter Selasky __u32 reserved; 1282*d6b92ffaSHans Petter Selasky }; 1283*d6b92ffaSHans Petter Selasky 1284*d6b92ffaSHans Petter Selasky struct ibv_create_wq_resp { 1285*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1286*d6b92ffaSHans Petter Selasky __u32 response_length; 1287*d6b92ffaSHans Petter Selasky __u32 wq_handle; 1288*d6b92ffaSHans Petter Selasky __u32 max_wr; 1289*d6b92ffaSHans Petter Selasky __u32 max_sge; 1290*d6b92ffaSHans Petter Selasky __u32 wqn; 1291*d6b92ffaSHans Petter Selasky }; 1292*d6b92ffaSHans Petter Selasky 1293*d6b92ffaSHans Petter Selasky struct ibv_destroy_wq { 1294*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 1295*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1296*d6b92ffaSHans Petter Selasky __u32 wq_handle; 1297*d6b92ffaSHans Petter Selasky }; 1298*d6b92ffaSHans Petter Selasky 1299*d6b92ffaSHans Petter Selasky struct ibv_destroy_wq_resp { 1300*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1301*d6b92ffaSHans Petter Selasky __u32 response_length; 1302*d6b92ffaSHans Petter Selasky __u32 events_reported; 1303*d6b92ffaSHans Petter Selasky __u32 reserved; 1304*d6b92ffaSHans Petter Selasky }; 1305*d6b92ffaSHans Petter Selasky 1306*d6b92ffaSHans Petter Selasky struct ibv_modify_wq { 1307*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 1308*d6b92ffaSHans Petter Selasky __u32 attr_mask; 1309*d6b92ffaSHans Petter Selasky __u32 wq_handle; 1310*d6b92ffaSHans Petter Selasky __u32 wq_state; 1311*d6b92ffaSHans Petter Selasky __u32 curr_wq_state; 1312*d6b92ffaSHans Petter Selasky __u32 flags; 1313*d6b92ffaSHans Petter Selasky __u32 flags_mask; 1314*d6b92ffaSHans Petter Selasky }; 1315*d6b92ffaSHans Petter Selasky 1316*d6b92ffaSHans Petter Selasky struct ibv_create_rwq_ind_table { 1317*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 1318*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1319*d6b92ffaSHans Petter Selasky __u32 log_ind_tbl_size; 1320*d6b92ffaSHans Petter Selasky /* Following are wq handles based on log_ind_tbl_size, must be 64 bytes aligned. 1321*d6b92ffaSHans Petter Selasky * __u32 wq_handle1 1322*d6b92ffaSHans Petter Selasky * __u32 wq_handle2 1323*d6b92ffaSHans Petter Selasky */ 1324*d6b92ffaSHans Petter Selasky }; 1325*d6b92ffaSHans Petter Selasky 1326*d6b92ffaSHans Petter Selasky struct ibv_create_rwq_ind_table_resp { 1327*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1328*d6b92ffaSHans Petter Selasky __u32 response_length; 1329*d6b92ffaSHans Petter Selasky __u32 ind_tbl_handle; 1330*d6b92ffaSHans Petter Selasky __u32 ind_tbl_num; 1331*d6b92ffaSHans Petter Selasky }; 1332*d6b92ffaSHans Petter Selasky 1333*d6b92ffaSHans Petter Selasky struct ibv_destroy_rwq_ind_table { 1334*d6b92ffaSHans Petter Selasky struct ex_hdr hdr; 1335*d6b92ffaSHans Petter Selasky __u32 comp_mask; 1336*d6b92ffaSHans Petter Selasky __u32 ind_tbl_handle; 1337*d6b92ffaSHans Petter Selasky }; 1338*d6b92ffaSHans Petter Selasky 1339*d6b92ffaSHans Petter Selasky #endif /* KERN_ABI_H */ 1340