1*c39526b7SPramod Gunjikar /* 2*c39526b7SPramod Gunjikar * This file contains definitions used in OFED defined user/kernel 3*c39526b7SPramod Gunjikar * interfaces. These are imported from the OFED header rdma_user_cm.h. Oracle 4*c39526b7SPramod Gunjikar * elects to have and use the contents of rdma_user_cm.h under and governed 5*c39526b7SPramod Gunjikar * by the OpenIB.org BSD license (see below for for full license text). 6*c39526b7SPramod Gunjikar * However, * the following notice accompanied the original version of this 7*c39526b7SPramod Gunjikar * file: 8*c39526b7SPramod Gunjikar */ 9*c39526b7SPramod Gunjikar 10*c39526b7SPramod Gunjikar /* 11*c39526b7SPramod Gunjikar * Copyright (c) 2005-2006 Intel Corporation. All rights reserved. 12*c39526b7SPramod Gunjikar * 13*c39526b7SPramod Gunjikar * This software is available to you under a choice of one of two 14*c39526b7SPramod Gunjikar * licenses. You may choose to be licensed under the terms of the GNU 15*c39526b7SPramod Gunjikar * General Public License (GPL) Version 2, available from the file 16*c39526b7SPramod Gunjikar * COPYING in the main directory of this source tree, or the 17*c39526b7SPramod Gunjikar * OpenIB.org BSD license below: 18*c39526b7SPramod Gunjikar * 19*c39526b7SPramod Gunjikar * Redistribution and use in source and binary forms, with or 20*c39526b7SPramod Gunjikar * without modification, are permitted provided that the following 21*c39526b7SPramod Gunjikar * conditions are met: 22*c39526b7SPramod Gunjikar * 23*c39526b7SPramod Gunjikar * - Redistributions of source code must retain the above 24*c39526b7SPramod Gunjikar * copyright notice, this list of conditions and the following 25*c39526b7SPramod Gunjikar * disclaimer. 26*c39526b7SPramod Gunjikar * 27*c39526b7SPramod Gunjikar * - Redistributions in binary form must reproduce the above 28*c39526b7SPramod Gunjikar * copyright notice, this list of conditions and the following 29*c39526b7SPramod Gunjikar * disclaimer in the documentation and/or other materials 30*c39526b7SPramod Gunjikar * provided with the distribution. 31*c39526b7SPramod Gunjikar * 32*c39526b7SPramod Gunjikar * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 33*c39526b7SPramod Gunjikar * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 34*c39526b7SPramod Gunjikar * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 35*c39526b7SPramod Gunjikar * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 36*c39526b7SPramod Gunjikar * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 37*c39526b7SPramod Gunjikar * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 38*c39526b7SPramod Gunjikar * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 39*c39526b7SPramod Gunjikar * SOFTWARE. 40*c39526b7SPramod Gunjikar */ 41*c39526b7SPramod Gunjikar 42*c39526b7SPramod Gunjikar #ifndef _SYS_IB_CLIENTS_OF_RDMA_RDMA_USER_CM_H 43*c39526b7SPramod Gunjikar #define _SYS_IB_CLIENTS_OF_RDMA_RDMA_USER_CM_H 44*c39526b7SPramod Gunjikar 45*c39526b7SPramod Gunjikar #ifdef __cplusplus 46*c39526b7SPramod Gunjikar extern "C" { 47*c39526b7SPramod Gunjikar #endif 48*c39526b7SPramod Gunjikar 49*c39526b7SPramod Gunjikar #include <sys/types.h> 50*c39526b7SPramod Gunjikar #include <sys/socket.h> 51*c39526b7SPramod Gunjikar #include <sys/ib/clients/of/rdma/ib_user_verbs.h> 52*c39526b7SPramod Gunjikar #include <sys/ib/clients/of/rdma/ib_user_sa.h> 53*c39526b7SPramod Gunjikar 54*c39526b7SPramod Gunjikar #define RDMA_USER_CM_ABI_VERSION 4 55*c39526b7SPramod Gunjikar 56*c39526b7SPramod Gunjikar #define RDMA_MAX_PRIVATE_DATA 256 57*c39526b7SPramod Gunjikar 58*c39526b7SPramod Gunjikar #pragma pack(1) 59*c39526b7SPramod Gunjikar enum { 60*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_CREATE_ID, 61*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_DESTROY_ID, 62*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_BIND_ADDR, 63*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_RESOLVE_ADDR, 64*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_RESOLVE_ROUTE, 65*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_QUERY_ROUTE, 66*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_CONNECT, 67*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_LISTEN, 68*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_ACCEPT, 69*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_REJECT, 70*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_DISCONNECT, 71*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_INIT_QP_ATTR, 72*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_GET_EVENT, 73*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_GET_OPTION, 74*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_SET_OPTION, 75*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_NOTIFY, 76*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_JOIN_MCAST, 77*c39526b7SPramod Gunjikar RDMA_USER_CM_CMD_LEAVE_MCAST 78*c39526b7SPramod Gunjikar }; 79*c39526b7SPramod Gunjikar 80*c39526b7SPramod Gunjikar /* 81*c39526b7SPramod Gunjikar * command ABI structures. 82*c39526b7SPramod Gunjikar */ 83*c39526b7SPramod Gunjikar struct rdma_ucm_cmd_hdr { 84*c39526b7SPramod Gunjikar uint32_t cmd; 85*c39526b7SPramod Gunjikar uint16_t in; 86*c39526b7SPramod Gunjikar uint16_t out; 87*c39526b7SPramod Gunjikar }; 88*c39526b7SPramod Gunjikar 89*c39526b7SPramod Gunjikar struct rdma_ucm_create_id { 90*c39526b7SPramod Gunjikar uint64_t uid; 91*c39526b7SPramod Gunjikar ofv_resp_addr_t response; 92*c39526b7SPramod Gunjikar uint16_t ps; 93*c39526b7SPramod Gunjikar uint8_t reserved[6]; 94*c39526b7SPramod Gunjikar }; 95*c39526b7SPramod Gunjikar 96*c39526b7SPramod Gunjikar struct rdma_ucm_create_id_resp { 97*c39526b7SPramod Gunjikar uint32_t id; 98*c39526b7SPramod Gunjikar }; 99*c39526b7SPramod Gunjikar 100*c39526b7SPramod Gunjikar struct rdma_ucm_destroy_id { 101*c39526b7SPramod Gunjikar ofv_resp_addr_t response; 102*c39526b7SPramod Gunjikar uint32_t id; 103*c39526b7SPramod Gunjikar uint32_t reserved; 104*c39526b7SPramod Gunjikar }; 105*c39526b7SPramod Gunjikar 106*c39526b7SPramod Gunjikar struct rdma_ucm_destroy_id_resp { 107*c39526b7SPramod Gunjikar uint32_t events_reported; 108*c39526b7SPramod Gunjikar }; 109*c39526b7SPramod Gunjikar 110*c39526b7SPramod Gunjikar struct rdma_ucm_bind_addr { 111*c39526b7SPramod Gunjikar uint64_t response; 112*c39526b7SPramod Gunjikar struct sockaddr_in6 addr; 113*c39526b7SPramod Gunjikar uint32_t id; 114*c39526b7SPramod Gunjikar uint32_t reserved; 115*c39526b7SPramod Gunjikar }; 116*c39526b7SPramod Gunjikar 117*c39526b7SPramod Gunjikar struct rdma_ucm_resolve_addr { 118*c39526b7SPramod Gunjikar struct sockaddr_in6 src_addr; 119*c39526b7SPramod Gunjikar struct sockaddr_in6 dst_addr; 120*c39526b7SPramod Gunjikar uint32_t id; 121*c39526b7SPramod Gunjikar uint32_t timeout_ms; 122*c39526b7SPramod Gunjikar }; 123*c39526b7SPramod Gunjikar 124*c39526b7SPramod Gunjikar struct rdma_ucm_resolve_route { 125*c39526b7SPramod Gunjikar uint32_t id; 126*c39526b7SPramod Gunjikar uint32_t timeout_ms; 127*c39526b7SPramod Gunjikar }; 128*c39526b7SPramod Gunjikar 129*c39526b7SPramod Gunjikar struct rdma_ucm_query_route { 130*c39526b7SPramod Gunjikar ofv_resp_addr_t response; 131*c39526b7SPramod Gunjikar uint32_t id; 132*c39526b7SPramod Gunjikar uint32_t reserved; 133*c39526b7SPramod Gunjikar }; 134*c39526b7SPramod Gunjikar 135*c39526b7SPramod Gunjikar struct rdma_ucm_query_route_resp { 136*c39526b7SPramod Gunjikar uint64_t node_guid; 137*c39526b7SPramod Gunjikar struct ib_user_path_rec ib_route[2]; 138*c39526b7SPramod Gunjikar struct sockaddr_in6 src_addr; 139*c39526b7SPramod Gunjikar struct sockaddr_in6 dst_addr; 140*c39526b7SPramod Gunjikar uint32_t num_paths; 141*c39526b7SPramod Gunjikar uint8_t port_num; 142*c39526b7SPramod Gunjikar uint8_t reserved[3]; 143*c39526b7SPramod Gunjikar }; 144*c39526b7SPramod Gunjikar 145*c39526b7SPramod Gunjikar struct rdma_ucm_conn_param { 146*c39526b7SPramod Gunjikar uint32_t qp_num; 147*c39526b7SPramod Gunjikar uint32_t reserved; 148*c39526b7SPramod Gunjikar uint8_t private_data[RDMA_MAX_PRIVATE_DATA]; 149*c39526b7SPramod Gunjikar uint8_t private_data_len; 150*c39526b7SPramod Gunjikar uint8_t srq; 151*c39526b7SPramod Gunjikar uint8_t responder_resources; 152*c39526b7SPramod Gunjikar uint8_t initiator_depth; 153*c39526b7SPramod Gunjikar uint8_t flow_control; 154*c39526b7SPramod Gunjikar uint8_t retry_count; 155*c39526b7SPramod Gunjikar uint8_t rnr_retry_count; 156*c39526b7SPramod Gunjikar uint8_t valid; 157*c39526b7SPramod Gunjikar }; 158*c39526b7SPramod Gunjikar 159*c39526b7SPramod Gunjikar struct rdma_ucm_ud_param { 160*c39526b7SPramod Gunjikar uint32_t qp_num; 161*c39526b7SPramod Gunjikar uint32_t qkey; 162*c39526b7SPramod Gunjikar struct ib_uverbs_ah_attr ah_attr; 163*c39526b7SPramod Gunjikar uint8_t private_data[RDMA_MAX_PRIVATE_DATA]; 164*c39526b7SPramod Gunjikar uint8_t private_data_len; 165*c39526b7SPramod Gunjikar uint8_t reserved[7]; 166*c39526b7SPramod Gunjikar uint8_t reserved2[4]; 167*c39526b7SPramod Gunjikar }; 168*c39526b7SPramod Gunjikar 169*c39526b7SPramod Gunjikar struct rdma_ucm_connect { 170*c39526b7SPramod Gunjikar struct rdma_ucm_conn_param conn_param; 171*c39526b7SPramod Gunjikar uint32_t id; 172*c39526b7SPramod Gunjikar uint32_t reserved; 173*c39526b7SPramod Gunjikar }; 174*c39526b7SPramod Gunjikar 175*c39526b7SPramod Gunjikar struct rdma_ucm_listen { 176*c39526b7SPramod Gunjikar uint32_t id; 177*c39526b7SPramod Gunjikar uint32_t backlog; 178*c39526b7SPramod Gunjikar }; 179*c39526b7SPramod Gunjikar 180*c39526b7SPramod Gunjikar struct rdma_ucm_accept { 181*c39526b7SPramod Gunjikar uint64_t uid; 182*c39526b7SPramod Gunjikar struct rdma_ucm_conn_param conn_param; 183*c39526b7SPramod Gunjikar uint32_t id; 184*c39526b7SPramod Gunjikar uint32_t reserved; 185*c39526b7SPramod Gunjikar }; 186*c39526b7SPramod Gunjikar 187*c39526b7SPramod Gunjikar struct rdma_ucm_reject { 188*c39526b7SPramod Gunjikar uint32_t id; 189*c39526b7SPramod Gunjikar uint8_t private_data_len; 190*c39526b7SPramod Gunjikar uint8_t reserved[3]; 191*c39526b7SPramod Gunjikar uint8_t private_data[RDMA_MAX_PRIVATE_DATA]; 192*c39526b7SPramod Gunjikar }; 193*c39526b7SPramod Gunjikar 194*c39526b7SPramod Gunjikar struct rdma_ucm_disconnect { 195*c39526b7SPramod Gunjikar uint32_t id; 196*c39526b7SPramod Gunjikar }; 197*c39526b7SPramod Gunjikar 198*c39526b7SPramod Gunjikar struct rdma_ucm_init_qp_attr { 199*c39526b7SPramod Gunjikar ofv_resp_addr_t response; 200*c39526b7SPramod Gunjikar uint32_t id; 201*c39526b7SPramod Gunjikar uint32_t qp_state; 202*c39526b7SPramod Gunjikar }; 203*c39526b7SPramod Gunjikar 204*c39526b7SPramod Gunjikar struct rdma_ucm_notify { 205*c39526b7SPramod Gunjikar uint32_t id; 206*c39526b7SPramod Gunjikar uint32_t event; 207*c39526b7SPramod Gunjikar }; 208*c39526b7SPramod Gunjikar 209*c39526b7SPramod Gunjikar struct rdma_ucm_join_mcast { 210*c39526b7SPramod Gunjikar ofv_resp_addr_t response; 211*c39526b7SPramod Gunjikar uint64_t uid; 212*c39526b7SPramod Gunjikar struct sockaddr_in6 addr; 213*c39526b7SPramod Gunjikar uint32_t id; 214*c39526b7SPramod Gunjikar uint32_t reserved; 215*c39526b7SPramod Gunjikar }; 216*c39526b7SPramod Gunjikar 217*c39526b7SPramod Gunjikar struct rdma_ucm_get_event { 218*c39526b7SPramod Gunjikar ofv_resp_addr_t response; 219*c39526b7SPramod Gunjikar }; 220*c39526b7SPramod Gunjikar 221*c39526b7SPramod Gunjikar struct rdma_ucm_event_resp { 222*c39526b7SPramod Gunjikar uint64_t uid; 223*c39526b7SPramod Gunjikar uint32_t id; 224*c39526b7SPramod Gunjikar uint32_t event; 225*c39526b7SPramod Gunjikar uint32_t status; 226*c39526b7SPramod Gunjikar union { 227*c39526b7SPramod Gunjikar struct rdma_ucm_conn_param conn; 228*c39526b7SPramod Gunjikar struct rdma_ucm_ud_param ud; 229*c39526b7SPramod Gunjikar } param; 230*c39526b7SPramod Gunjikar }; 231*c39526b7SPramod Gunjikar 232*c39526b7SPramod Gunjikar /* Option levels */ 233*c39526b7SPramod Gunjikar enum { 234*c39526b7SPramod Gunjikar RDMA_OPTION_ID = 0 235*c39526b7SPramod Gunjikar }; 236*c39526b7SPramod Gunjikar 237*c39526b7SPramod Gunjikar /* Option details */ 238*c39526b7SPramod Gunjikar enum { 239*c39526b7SPramod Gunjikar RDMA_OPTION_ID_TOS = 0 240*c39526b7SPramod Gunjikar }; 241*c39526b7SPramod Gunjikar 242*c39526b7SPramod Gunjikar struct rdma_ucm_set_option { 243*c39526b7SPramod Gunjikar uint64_t optval; 244*c39526b7SPramod Gunjikar uint32_t id; 245*c39526b7SPramod Gunjikar uint32_t level; 246*c39526b7SPramod Gunjikar uint32_t optname; 247*c39526b7SPramod Gunjikar uint32_t optlen; 248*c39526b7SPramod Gunjikar }; 249*c39526b7SPramod Gunjikar #pragma pack() 250*c39526b7SPramod Gunjikar 251*c39526b7SPramod Gunjikar #ifdef __cplusplus 252*c39526b7SPramod Gunjikar } 253*c39526b7SPramod Gunjikar #endif 254*c39526b7SPramod Gunjikar #endif /* _SYS_IB_CLIENTS_OF_RDMA_RDMA_USER_CM_H */ 255