2 * Copyright (c) 2005-2006 Intel Corporation. All rights reserved.
4 * This software is available to you under a choice of one of two
5 * licenses. You may choose to be licensed under the terms of the GNU
6 * General Public License (GPL) Version 2, available from the file
7 * COPYING in the main directory of this source tree, or the
8 * OpenIB.org BSD license below:
10 * Redistribution and use in source and binary forms, with or
11 * without modification, are permitted provided that the following
14 * - Redistributions of source code must retain the above
15 * copyright notice, this list of conditions and the following
18 * - Redistributions in binary form must reproduce the above
19 * copyright notice, this list of conditions and the following
20 * disclaimer in the documentation and/or other materials
21 * provided with the distribution.
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
33 #ifndef RDMA_CMA_ABI_H
34 #define RDMA_CMA_ABI_H
36 #include <infiniband/kern-abi.h>
37 #include <infiniband/sa-kern-abi.h>
40 * This file must be kept in sync with the kernel's version of rdma_user_cm.h
43 #define RDMA_USER_CM_MIN_ABI_VERSION 3
44 #define RDMA_USER_CM_MAX_ABI_VERSION 4
46 #define RDMA_MAX_PRIVATE_DATA 256
52 UCMA_CMD_RESOLVE_ADDR,
53 UCMA_CMD_RESOLVE_ROUTE,
60 UCMA_CMD_INIT_QP_ATTR,
70 struct ucma_abi_cmd_hdr {
76 struct ucma_abi_create_id {
83 struct ucma_abi_create_id_resp {
87 struct ucma_abi_destroy_id {
93 struct ucma_abi_destroy_id_resp {
94 __u32 events_reported;
97 struct ucma_abi_bind_addr {
99 struct sockaddr_in6 addr;
103 struct ucma_abi_resolve_addr {
104 struct sockaddr_in6 src_addr;
105 struct sockaddr_in6 dst_addr;
110 struct ucma_abi_resolve_route {
115 struct ucma_abi_query_route {
121 struct ucma_abi_query_route_resp {
123 struct ibv_kern_path_rec ib_route[2];
124 struct sockaddr_in6 src_addr;
125 struct sockaddr_in6 dst_addr;
131 struct ucma_abi_conn_param {
134 __u8 private_data[RDMA_MAX_PRIVATE_DATA];
135 __u8 private_data_len;
137 __u8 responder_resources;
138 __u8 initiator_depth;
141 __u8 rnr_retry_count;
145 struct ucma_abi_ud_param {
148 struct ibv_kern_ah_attr ah_attr;
149 __u8 private_data[RDMA_MAX_PRIVATE_DATA];
150 __u8 private_data_len;
152 __u8 reserved2[4]; /* Round to 8-byte boundary to support 32/64 */
155 struct ucma_abi_connect {
156 struct ucma_abi_conn_param conn_param;
161 struct ucma_abi_listen {
166 struct ucma_abi_accept {
168 struct ucma_abi_conn_param conn_param;
173 struct ucma_abi_reject {
175 __u8 private_data_len;
177 __u8 private_data[RDMA_MAX_PRIVATE_DATA];
180 struct ucma_abi_disconnect {
184 struct ucma_abi_init_qp_attr {
190 struct ucma_abi_notify {
195 struct ucma_abi_join_mcast {
196 __u64 response; /* ucma_abi_create_id_resp */
198 struct sockaddr_in6 addr;
202 struct ucma_abi_get_event {
206 struct ucma_abi_event_resp {
212 struct ucma_abi_conn_param conn;
213 struct ucma_abi_ud_param ud;
217 struct ucma_abi_set_option {
225 struct ucma_abi_migrate_id {
231 struct ucma_abi_migrate_resp {
232 __u32 events_reported;
235 #endif /* RDMA_CMA_ABI_H */