xref: /freebsd/contrib/ofed/librdmacm/rdma_cma_abi.h (revision 87181516ef48be852d5e5fee53c6e0dbfc62f21e)
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