1*d6b92ffaSHans Petter Selasky /* 2*d6b92ffaSHans Petter Selasky * Copyright (c) 2005-2011 Intel Corporation. All rights reserved. 3*d6b92ffaSHans Petter Selasky * 4*d6b92ffaSHans Petter Selasky * This software is available to you under a choice of one of two 5*d6b92ffaSHans Petter Selasky * licenses. You may choose to be licensed under the terms of the GNU 6*d6b92ffaSHans Petter Selasky * General Public License (GPL) Version 2, available from the file 7*d6b92ffaSHans Petter Selasky * COPYING in the main directory of this source tree, or the 8*d6b92ffaSHans Petter Selasky * OpenIB.org BSD license below: 9*d6b92ffaSHans Petter Selasky * 10*d6b92ffaSHans Petter Selasky * Redistribution and use in source and binary forms, with or 11*d6b92ffaSHans Petter Selasky * without modification, are permitted provided that the following 12*d6b92ffaSHans Petter Selasky * conditions are met: 13*d6b92ffaSHans Petter Selasky * 14*d6b92ffaSHans Petter Selasky * - Redistributions of source code must retain the above 15*d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 16*d6b92ffaSHans Petter Selasky * disclaimer. 17*d6b92ffaSHans Petter Selasky * 18*d6b92ffaSHans Petter Selasky * - Redistributions in binary form must reproduce the above 19*d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 20*d6b92ffaSHans Petter Selasky * disclaimer in the documentation and/or other materials 21*d6b92ffaSHans Petter Selasky * provided with the distribution. 22*d6b92ffaSHans Petter Selasky * 23*d6b92ffaSHans Petter Selasky * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24*d6b92ffaSHans Petter Selasky * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25*d6b92ffaSHans Petter Selasky * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26*d6b92ffaSHans Petter Selasky * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27*d6b92ffaSHans Petter Selasky * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28*d6b92ffaSHans Petter Selasky * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29*d6b92ffaSHans Petter Selasky * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30*d6b92ffaSHans Petter Selasky * SOFTWARE. 31*d6b92ffaSHans Petter Selasky */ 32*d6b92ffaSHans Petter Selasky 33*d6b92ffaSHans Petter Selasky #ifndef RDMA_CMA_ABI_H 34*d6b92ffaSHans Petter Selasky #define RDMA_CMA_ABI_H 35*d6b92ffaSHans Petter Selasky 36*d6b92ffaSHans Petter Selasky #include <infiniband/kern-abi.h> 37*d6b92ffaSHans Petter Selasky #include <rdma/ib_user_sa.h> 38*d6b92ffaSHans Petter Selasky #include <infiniband/sa.h> 39*d6b92ffaSHans Petter Selasky #include <netinet/in.h> 40*d6b92ffaSHans Petter Selasky 41*d6b92ffaSHans Petter Selasky /* 42*d6b92ffaSHans Petter Selasky * This file must be kept in sync with the kernel's version of rdma_user_cm.h 43*d6b92ffaSHans Petter Selasky */ 44*d6b92ffaSHans Petter Selasky 45*d6b92ffaSHans Petter Selasky #define RDMA_USER_CM_MIN_ABI_VERSION 3 46*d6b92ffaSHans Petter Selasky #define RDMA_USER_CM_MAX_ABI_VERSION 4 47*d6b92ffaSHans Petter Selasky 48*d6b92ffaSHans Petter Selasky #define RDMA_MAX_PRIVATE_DATA 256 49*d6b92ffaSHans Petter Selasky 50*d6b92ffaSHans Petter Selasky enum { 51*d6b92ffaSHans Petter Selasky UCMA_CMD_CREATE_ID, 52*d6b92ffaSHans Petter Selasky UCMA_CMD_DESTROY_ID, 53*d6b92ffaSHans Petter Selasky UCMA_CMD_BIND_IP, 54*d6b92ffaSHans Petter Selasky UCMA_CMD_RESOLVE_IP, 55*d6b92ffaSHans Petter Selasky UCMA_CMD_RESOLVE_ROUTE, 56*d6b92ffaSHans Petter Selasky UCMA_CMD_QUERY_ROUTE, 57*d6b92ffaSHans Petter Selasky UCMA_CMD_CONNECT, 58*d6b92ffaSHans Petter Selasky UCMA_CMD_LISTEN, 59*d6b92ffaSHans Petter Selasky UCMA_CMD_ACCEPT, 60*d6b92ffaSHans Petter Selasky UCMA_CMD_REJECT, 61*d6b92ffaSHans Petter Selasky UCMA_CMD_DISCONNECT, 62*d6b92ffaSHans Petter Selasky UCMA_CMD_INIT_QP_ATTR, 63*d6b92ffaSHans Petter Selasky UCMA_CMD_GET_EVENT, 64*d6b92ffaSHans Petter Selasky UCMA_CMD_GET_OPTION, 65*d6b92ffaSHans Petter Selasky UCMA_CMD_SET_OPTION, 66*d6b92ffaSHans Petter Selasky UCMA_CMD_NOTIFY, 67*d6b92ffaSHans Petter Selasky UCMA_CMD_JOIN_IP_MCAST, 68*d6b92ffaSHans Petter Selasky UCMA_CMD_LEAVE_MCAST, 69*d6b92ffaSHans Petter Selasky UCMA_CMD_MIGRATE_ID, 70*d6b92ffaSHans Petter Selasky UCMA_CMD_QUERY, 71*d6b92ffaSHans Petter Selasky UCMA_CMD_BIND, 72*d6b92ffaSHans Petter Selasky UCMA_CMD_RESOLVE_ADDR, 73*d6b92ffaSHans Petter Selasky UCMA_CMD_JOIN_MCAST 74*d6b92ffaSHans Petter Selasky }; 75*d6b92ffaSHans Petter Selasky 76*d6b92ffaSHans Petter Selasky struct ucma_abi_cmd_hdr { 77*d6b92ffaSHans Petter Selasky __u32 cmd; 78*d6b92ffaSHans Petter Selasky __u16 in; 79*d6b92ffaSHans Petter Selasky __u16 out; 80*d6b92ffaSHans Petter Selasky }; 81*d6b92ffaSHans Petter Selasky 82*d6b92ffaSHans Petter Selasky struct ucma_abi_create_id { 83*d6b92ffaSHans Petter Selasky __u32 cmd; 84*d6b92ffaSHans Petter Selasky __u16 in; 85*d6b92ffaSHans Petter Selasky __u16 out; 86*d6b92ffaSHans Petter Selasky __u64 uid; 87*d6b92ffaSHans Petter Selasky __u64 response; 88*d6b92ffaSHans Petter Selasky __u16 ps; 89*d6b92ffaSHans Petter Selasky __u8 qp_type; 90*d6b92ffaSHans Petter Selasky __u8 reserved[5]; 91*d6b92ffaSHans Petter Selasky }; 92*d6b92ffaSHans Petter Selasky 93*d6b92ffaSHans Petter Selasky struct ucma_abi_create_id_resp { 94*d6b92ffaSHans Petter Selasky __u32 id; 95*d6b92ffaSHans Petter Selasky }; 96*d6b92ffaSHans Petter Selasky 97*d6b92ffaSHans Petter Selasky struct ucma_abi_destroy_id { 98*d6b92ffaSHans Petter Selasky __u32 cmd; 99*d6b92ffaSHans Petter Selasky __u16 in; 100*d6b92ffaSHans Petter Selasky __u16 out; 101*d6b92ffaSHans Petter Selasky __u64 response; 102*d6b92ffaSHans Petter Selasky __u32 id; 103*d6b92ffaSHans Petter Selasky __u32 reserved; 104*d6b92ffaSHans Petter Selasky }; 105*d6b92ffaSHans Petter Selasky 106*d6b92ffaSHans Petter Selasky struct ucma_abi_destroy_id_resp { 107*d6b92ffaSHans Petter Selasky __u32 events_reported; 108*d6b92ffaSHans Petter Selasky }; 109*d6b92ffaSHans Petter Selasky 110*d6b92ffaSHans Petter Selasky struct ucma_abi_bind_ip { 111*d6b92ffaSHans Petter Selasky __u32 cmd; 112*d6b92ffaSHans Petter Selasky __u16 in; 113*d6b92ffaSHans Petter Selasky __u16 out; 114*d6b92ffaSHans Petter Selasky __u64 response; 115*d6b92ffaSHans Petter Selasky struct sockaddr_in6 addr; 116*d6b92ffaSHans Petter Selasky __u32 id; 117*d6b92ffaSHans Petter Selasky }; 118*d6b92ffaSHans Petter Selasky 119*d6b92ffaSHans Petter Selasky struct ucma_abi_bind { 120*d6b92ffaSHans Petter Selasky __u32 cmd; 121*d6b92ffaSHans Petter Selasky __u16 in; 122*d6b92ffaSHans Petter Selasky __u16 out; 123*d6b92ffaSHans Petter Selasky __u32 id; 124*d6b92ffaSHans Petter Selasky __u16 addr_size; 125*d6b92ffaSHans Petter Selasky __u16 reserved; 126*d6b92ffaSHans Petter Selasky struct sockaddr_storage addr; 127*d6b92ffaSHans Petter Selasky }; 128*d6b92ffaSHans Petter Selasky 129*d6b92ffaSHans Petter Selasky struct ucma_abi_resolve_ip { 130*d6b92ffaSHans Petter Selasky __u32 cmd; 131*d6b92ffaSHans Petter Selasky __u16 in; 132*d6b92ffaSHans Petter Selasky __u16 out; 133*d6b92ffaSHans Petter Selasky struct sockaddr_in6 src_addr; 134*d6b92ffaSHans Petter Selasky struct sockaddr_in6 dst_addr; 135*d6b92ffaSHans Petter Selasky __u32 id; 136*d6b92ffaSHans Petter Selasky __u32 timeout_ms; 137*d6b92ffaSHans Petter Selasky }; 138*d6b92ffaSHans Petter Selasky 139*d6b92ffaSHans Petter Selasky struct ucma_abi_resolve_addr { 140*d6b92ffaSHans Petter Selasky __u32 cmd; 141*d6b92ffaSHans Petter Selasky __u16 in; 142*d6b92ffaSHans Petter Selasky __u16 out; 143*d6b92ffaSHans Petter Selasky __u32 id; 144*d6b92ffaSHans Petter Selasky __u32 timeout_ms; 145*d6b92ffaSHans Petter Selasky __u16 src_size; 146*d6b92ffaSHans Petter Selasky __u16 dst_size; 147*d6b92ffaSHans Petter Selasky __u32 reserved; 148*d6b92ffaSHans Petter Selasky struct sockaddr_storage src_addr; 149*d6b92ffaSHans Petter Selasky struct sockaddr_storage dst_addr; 150*d6b92ffaSHans Petter Selasky }; 151*d6b92ffaSHans Petter Selasky 152*d6b92ffaSHans Petter Selasky struct ucma_abi_resolve_route { 153*d6b92ffaSHans Petter Selasky __u32 cmd; 154*d6b92ffaSHans Petter Selasky __u16 in; 155*d6b92ffaSHans Petter Selasky __u16 out; 156*d6b92ffaSHans Petter Selasky __u32 id; 157*d6b92ffaSHans Petter Selasky __u32 timeout_ms; 158*d6b92ffaSHans Petter Selasky }; 159*d6b92ffaSHans Petter Selasky 160*d6b92ffaSHans Petter Selasky enum { 161*d6b92ffaSHans Petter Selasky UCMA_QUERY_ADDR, 162*d6b92ffaSHans Petter Selasky UCMA_QUERY_PATH, 163*d6b92ffaSHans Petter Selasky UCMA_QUERY_GID 164*d6b92ffaSHans Petter Selasky }; 165*d6b92ffaSHans Petter Selasky 166*d6b92ffaSHans Petter Selasky struct ucma_abi_query { 167*d6b92ffaSHans Petter Selasky __u32 cmd; 168*d6b92ffaSHans Petter Selasky __u16 in; 169*d6b92ffaSHans Petter Selasky __u16 out; 170*d6b92ffaSHans Petter Selasky __u64 response; 171*d6b92ffaSHans Petter Selasky __u32 id; 172*d6b92ffaSHans Petter Selasky __u32 option; 173*d6b92ffaSHans Petter Selasky }; 174*d6b92ffaSHans Petter Selasky 175*d6b92ffaSHans Petter Selasky struct ucma_abi_query_route_resp { 176*d6b92ffaSHans Petter Selasky __be64 node_guid; 177*d6b92ffaSHans Petter Selasky struct ib_user_path_rec ib_route[2]; 178*d6b92ffaSHans Petter Selasky struct sockaddr_in6 src_addr; 179*d6b92ffaSHans Petter Selasky struct sockaddr_in6 dst_addr; 180*d6b92ffaSHans Petter Selasky __u32 num_paths; 181*d6b92ffaSHans Petter Selasky __u8 port_num; 182*d6b92ffaSHans Petter Selasky __u8 reserved[3]; 183*d6b92ffaSHans Petter Selasky }; 184*d6b92ffaSHans Petter Selasky 185*d6b92ffaSHans Petter Selasky struct ucma_abi_query_addr_resp { 186*d6b92ffaSHans Petter Selasky __be64 node_guid; 187*d6b92ffaSHans Petter Selasky __u8 port_num; 188*d6b92ffaSHans Petter Selasky __u8 reserved; 189*d6b92ffaSHans Petter Selasky __be16 pkey; 190*d6b92ffaSHans Petter Selasky __u16 src_size; 191*d6b92ffaSHans Petter Selasky __u16 dst_size; 192*d6b92ffaSHans Petter Selasky struct sockaddr_storage src_addr; 193*d6b92ffaSHans Petter Selasky struct sockaddr_storage dst_addr; 194*d6b92ffaSHans Petter Selasky }; 195*d6b92ffaSHans Petter Selasky 196*d6b92ffaSHans Petter Selasky struct ucma_abi_query_path_resp { 197*d6b92ffaSHans Petter Selasky __u32 num_paths; 198*d6b92ffaSHans Petter Selasky __u32 reserved; 199*d6b92ffaSHans Petter Selasky struct ibv_path_data path_data[0]; 200*d6b92ffaSHans Petter Selasky }; 201*d6b92ffaSHans Petter Selasky 202*d6b92ffaSHans Petter Selasky struct ucma_abi_conn_param { 203*d6b92ffaSHans Petter Selasky __u32 qp_num; 204*d6b92ffaSHans Petter Selasky __u32 reserved; 205*d6b92ffaSHans Petter Selasky __u8 private_data[RDMA_MAX_PRIVATE_DATA]; 206*d6b92ffaSHans Petter Selasky __u8 private_data_len; 207*d6b92ffaSHans Petter Selasky __u8 srq; 208*d6b92ffaSHans Petter Selasky __u8 responder_resources; 209*d6b92ffaSHans Petter Selasky __u8 initiator_depth; 210*d6b92ffaSHans Petter Selasky __u8 flow_control; 211*d6b92ffaSHans Petter Selasky __u8 retry_count; 212*d6b92ffaSHans Petter Selasky __u8 rnr_retry_count; 213*d6b92ffaSHans Petter Selasky __u8 valid; 214*d6b92ffaSHans Petter Selasky }; 215*d6b92ffaSHans Petter Selasky 216*d6b92ffaSHans Petter Selasky struct ucma_abi_ud_param { 217*d6b92ffaSHans Petter Selasky __u32 qp_num; 218*d6b92ffaSHans Petter Selasky __u32 qkey; 219*d6b92ffaSHans Petter Selasky struct ibv_kern_ah_attr ah_attr; 220*d6b92ffaSHans Petter Selasky __u8 private_data[RDMA_MAX_PRIVATE_DATA]; 221*d6b92ffaSHans Petter Selasky __u8 private_data_len; 222*d6b92ffaSHans Petter Selasky __u8 reserved[7]; 223*d6b92ffaSHans Petter Selasky __u8 reserved2[4]; /* Round to 8-byte boundary to support 32/64 */ 224*d6b92ffaSHans Petter Selasky }; 225*d6b92ffaSHans Petter Selasky 226*d6b92ffaSHans Petter Selasky struct ucma_abi_connect { 227*d6b92ffaSHans Petter Selasky __u32 cmd; 228*d6b92ffaSHans Petter Selasky __u16 in; 229*d6b92ffaSHans Petter Selasky __u16 out; 230*d6b92ffaSHans Petter Selasky struct ucma_abi_conn_param conn_param; 231*d6b92ffaSHans Petter Selasky __u32 id; 232*d6b92ffaSHans Petter Selasky __u32 reserved; 233*d6b92ffaSHans Petter Selasky }; 234*d6b92ffaSHans Petter Selasky 235*d6b92ffaSHans Petter Selasky struct ucma_abi_listen { 236*d6b92ffaSHans Petter Selasky __u32 cmd; 237*d6b92ffaSHans Petter Selasky __u16 in; 238*d6b92ffaSHans Petter Selasky __u16 out; 239*d6b92ffaSHans Petter Selasky __u32 id; 240*d6b92ffaSHans Petter Selasky __u32 backlog; 241*d6b92ffaSHans Petter Selasky }; 242*d6b92ffaSHans Petter Selasky 243*d6b92ffaSHans Petter Selasky struct ucma_abi_accept { 244*d6b92ffaSHans Petter Selasky __u32 cmd; 245*d6b92ffaSHans Petter Selasky __u16 in; 246*d6b92ffaSHans Petter Selasky __u16 out; 247*d6b92ffaSHans Petter Selasky __u64 uid; 248*d6b92ffaSHans Petter Selasky struct ucma_abi_conn_param conn_param; 249*d6b92ffaSHans Petter Selasky __u32 id; 250*d6b92ffaSHans Petter Selasky __u32 reserved; 251*d6b92ffaSHans Petter Selasky }; 252*d6b92ffaSHans Petter Selasky 253*d6b92ffaSHans Petter Selasky struct ucma_abi_reject { 254*d6b92ffaSHans Petter Selasky __u32 cmd; 255*d6b92ffaSHans Petter Selasky __u16 in; 256*d6b92ffaSHans Petter Selasky __u16 out; 257*d6b92ffaSHans Petter Selasky __u32 id; 258*d6b92ffaSHans Petter Selasky __u8 private_data_len; 259*d6b92ffaSHans Petter Selasky __u8 reserved[3]; 260*d6b92ffaSHans Petter Selasky __u8 private_data[RDMA_MAX_PRIVATE_DATA]; 261*d6b92ffaSHans Petter Selasky }; 262*d6b92ffaSHans Petter Selasky 263*d6b92ffaSHans Petter Selasky struct ucma_abi_disconnect { 264*d6b92ffaSHans Petter Selasky __u32 cmd; 265*d6b92ffaSHans Petter Selasky __u16 in; 266*d6b92ffaSHans Petter Selasky __u16 out; 267*d6b92ffaSHans Petter Selasky __u32 id; 268*d6b92ffaSHans Petter Selasky }; 269*d6b92ffaSHans Petter Selasky 270*d6b92ffaSHans Petter Selasky struct ucma_abi_init_qp_attr { 271*d6b92ffaSHans Petter Selasky __u32 cmd; 272*d6b92ffaSHans Petter Selasky __u16 in; 273*d6b92ffaSHans Petter Selasky __u16 out; 274*d6b92ffaSHans Petter Selasky __u64 response; 275*d6b92ffaSHans Petter Selasky __u32 id; 276*d6b92ffaSHans Petter Selasky __u32 qp_state; 277*d6b92ffaSHans Petter Selasky }; 278*d6b92ffaSHans Petter Selasky 279*d6b92ffaSHans Petter Selasky struct ucma_abi_notify { 280*d6b92ffaSHans Petter Selasky __u32 cmd; 281*d6b92ffaSHans Petter Selasky __u16 in; 282*d6b92ffaSHans Petter Selasky __u16 out; 283*d6b92ffaSHans Petter Selasky __u32 id; 284*d6b92ffaSHans Petter Selasky __u32 event; 285*d6b92ffaSHans Petter Selasky }; 286*d6b92ffaSHans Petter Selasky 287*d6b92ffaSHans Petter Selasky struct ucma_abi_join_ip_mcast { 288*d6b92ffaSHans Petter Selasky __u32 cmd; 289*d6b92ffaSHans Petter Selasky __u16 in; 290*d6b92ffaSHans Petter Selasky __u16 out; 291*d6b92ffaSHans Petter Selasky __u64 response; /* ucma_abi_create_id_resp */ 292*d6b92ffaSHans Petter Selasky __u64 uid; 293*d6b92ffaSHans Petter Selasky struct sockaddr_in6 addr; 294*d6b92ffaSHans Petter Selasky __u32 id; 295*d6b92ffaSHans Petter Selasky }; 296*d6b92ffaSHans Petter Selasky 297*d6b92ffaSHans Petter Selasky struct ucma_abi_join_mcast { 298*d6b92ffaSHans Petter Selasky __u32 cmd; 299*d6b92ffaSHans Petter Selasky __u16 in; 300*d6b92ffaSHans Petter Selasky __u16 out; 301*d6b92ffaSHans Petter Selasky __u64 response; /* rdma_ucma_create_id_resp */ 302*d6b92ffaSHans Petter Selasky __u64 uid; 303*d6b92ffaSHans Petter Selasky __u32 id; 304*d6b92ffaSHans Petter Selasky __u16 addr_size; 305*d6b92ffaSHans Petter Selasky __u16 reserved; 306*d6b92ffaSHans Petter Selasky struct sockaddr_storage addr; 307*d6b92ffaSHans Petter Selasky }; 308*d6b92ffaSHans Petter Selasky 309*d6b92ffaSHans Petter Selasky struct ucma_abi_get_event { 310*d6b92ffaSHans Petter Selasky __u32 cmd; 311*d6b92ffaSHans Petter Selasky __u16 in; 312*d6b92ffaSHans Petter Selasky __u16 out; 313*d6b92ffaSHans Petter Selasky __u64 response; 314*d6b92ffaSHans Petter Selasky }; 315*d6b92ffaSHans Petter Selasky 316*d6b92ffaSHans Petter Selasky struct ucma_abi_event_resp { 317*d6b92ffaSHans Petter Selasky __u64 uid; 318*d6b92ffaSHans Petter Selasky __u32 id; 319*d6b92ffaSHans Petter Selasky __u32 event; 320*d6b92ffaSHans Petter Selasky __u32 status; 321*d6b92ffaSHans Petter Selasky union { 322*d6b92ffaSHans Petter Selasky struct ucma_abi_conn_param conn; 323*d6b92ffaSHans Petter Selasky struct ucma_abi_ud_param ud; 324*d6b92ffaSHans Petter Selasky } param; 325*d6b92ffaSHans Petter Selasky }; 326*d6b92ffaSHans Petter Selasky 327*d6b92ffaSHans Petter Selasky struct ucma_abi_set_option { 328*d6b92ffaSHans Petter Selasky __u32 cmd; 329*d6b92ffaSHans Petter Selasky __u16 in; 330*d6b92ffaSHans Petter Selasky __u16 out; 331*d6b92ffaSHans Petter Selasky __u64 optval; 332*d6b92ffaSHans Petter Selasky __u32 id; 333*d6b92ffaSHans Petter Selasky __u32 level; 334*d6b92ffaSHans Petter Selasky __u32 optname; 335*d6b92ffaSHans Petter Selasky __u32 optlen; 336*d6b92ffaSHans Petter Selasky }; 337*d6b92ffaSHans Petter Selasky 338*d6b92ffaSHans Petter Selasky struct ucma_abi_migrate_id { 339*d6b92ffaSHans Petter Selasky __u32 cmd; 340*d6b92ffaSHans Petter Selasky __u16 in; 341*d6b92ffaSHans Petter Selasky __u16 out; 342*d6b92ffaSHans Petter Selasky __u64 response; 343*d6b92ffaSHans Petter Selasky __u32 id; 344*d6b92ffaSHans Petter Selasky __u32 fd; 345*d6b92ffaSHans Petter Selasky }; 346*d6b92ffaSHans Petter Selasky 347*d6b92ffaSHans Petter Selasky struct ucma_abi_migrate_resp { 348*d6b92ffaSHans Petter Selasky __u32 events_reported; 349*d6b92ffaSHans Petter Selasky }; 350*d6b92ffaSHans Petter Selasky 351*d6b92ffaSHans Petter Selasky #endif /* RDMA_CMA_ABI_H */ 352