Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/include/rdma/ib_user_cm.h
10818 views
1
/*
2
* Copyright (c) 2005 Topspin Communications. All rights reserved.
3
* Copyright (c) 2005 Intel Corporation. All rights reserved.
4
*
5
* This software is available to you under a choice of one of two
6
* licenses. You may choose to be licensed under the terms of the GNU
7
* General Public License (GPL) Version 2, available from the file
8
* COPYING in the main directory of this source tree, or the
9
* OpenIB.org BSD license below:
10
*
11
* Redistribution and use in source and binary forms, with or
12
* without modification, are permitted provided that the following
13
* conditions are met:
14
*
15
* - Redistributions of source code must retain the above
16
* copyright notice, this list of conditions and the following
17
* disclaimer.
18
*
19
* - Redistributions in binary form must reproduce the above
20
* copyright notice, this list of conditions and the following
21
* disclaimer in the documentation and/or other materials
22
* provided with the distribution.
23
*
24
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
28
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
29
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
30
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31
* SOFTWARE.
32
*/
33
34
#ifndef IB_USER_CM_H
35
#define IB_USER_CM_H
36
37
#include <linux/types.h>
38
#include <rdma/ib_user_sa.h>
39
40
#define IB_USER_CM_ABI_VERSION 5
41
42
enum {
43
IB_USER_CM_CMD_CREATE_ID,
44
IB_USER_CM_CMD_DESTROY_ID,
45
IB_USER_CM_CMD_ATTR_ID,
46
47
IB_USER_CM_CMD_LISTEN,
48
IB_USER_CM_CMD_NOTIFY,
49
50
IB_USER_CM_CMD_SEND_REQ,
51
IB_USER_CM_CMD_SEND_REP,
52
IB_USER_CM_CMD_SEND_RTU,
53
IB_USER_CM_CMD_SEND_DREQ,
54
IB_USER_CM_CMD_SEND_DREP,
55
IB_USER_CM_CMD_SEND_REJ,
56
IB_USER_CM_CMD_SEND_MRA,
57
IB_USER_CM_CMD_SEND_LAP,
58
IB_USER_CM_CMD_SEND_APR,
59
IB_USER_CM_CMD_SEND_SIDR_REQ,
60
IB_USER_CM_CMD_SEND_SIDR_REP,
61
62
IB_USER_CM_CMD_EVENT,
63
IB_USER_CM_CMD_INIT_QP_ATTR,
64
};
65
/*
66
* command ABI structures.
67
*/
68
struct ib_ucm_cmd_hdr {
69
__u32 cmd;
70
__u16 in;
71
__u16 out;
72
};
73
74
struct ib_ucm_create_id {
75
__u64 uid;
76
__u64 response;
77
};
78
79
struct ib_ucm_create_id_resp {
80
__u32 id;
81
};
82
83
struct ib_ucm_destroy_id {
84
__u64 response;
85
__u32 id;
86
__u32 reserved;
87
};
88
89
struct ib_ucm_destroy_id_resp {
90
__u32 events_reported;
91
};
92
93
struct ib_ucm_attr_id {
94
__u64 response;
95
__u32 id;
96
__u32 reserved;
97
};
98
99
struct ib_ucm_attr_id_resp {
100
__be64 service_id;
101
__be64 service_mask;
102
__be32 local_id;
103
__be32 remote_id;
104
};
105
106
struct ib_ucm_init_qp_attr {
107
__u64 response;
108
__u32 id;
109
__u32 qp_state;
110
};
111
112
struct ib_ucm_listen {
113
__be64 service_id;
114
__be64 service_mask;
115
__u32 id;
116
__u32 reserved;
117
};
118
119
struct ib_ucm_notify {
120
__u32 id;
121
__u32 event;
122
};
123
124
struct ib_ucm_private_data {
125
__u64 data;
126
__u32 id;
127
__u8 len;
128
__u8 reserved[3];
129
};
130
131
struct ib_ucm_req {
132
__u32 id;
133
__u32 qpn;
134
__u32 qp_type;
135
__u32 psn;
136
__be64 sid;
137
__u64 data;
138
__u64 primary_path;
139
__u64 alternate_path;
140
__u8 len;
141
__u8 peer_to_peer;
142
__u8 responder_resources;
143
__u8 initiator_depth;
144
__u8 remote_cm_response_timeout;
145
__u8 flow_control;
146
__u8 local_cm_response_timeout;
147
__u8 retry_count;
148
__u8 rnr_retry_count;
149
__u8 max_cm_retries;
150
__u8 srq;
151
__u8 reserved[5];
152
};
153
154
struct ib_ucm_rep {
155
__u64 uid;
156
__u64 data;
157
__u32 id;
158
__u32 qpn;
159
__u32 psn;
160
__u8 len;
161
__u8 responder_resources;
162
__u8 initiator_depth;
163
__u8 target_ack_delay;
164
__u8 failover_accepted;
165
__u8 flow_control;
166
__u8 rnr_retry_count;
167
__u8 srq;
168
__u8 reserved[4];
169
};
170
171
struct ib_ucm_info {
172
__u32 id;
173
__u32 status;
174
__u64 info;
175
__u64 data;
176
__u8 info_len;
177
__u8 data_len;
178
__u8 reserved[6];
179
};
180
181
struct ib_ucm_mra {
182
__u64 data;
183
__u32 id;
184
__u8 len;
185
__u8 timeout;
186
__u8 reserved[2];
187
};
188
189
struct ib_ucm_lap {
190
__u64 path;
191
__u64 data;
192
__u32 id;
193
__u8 len;
194
__u8 reserved[3];
195
};
196
197
struct ib_ucm_sidr_req {
198
__u32 id;
199
__u32 timeout;
200
__be64 sid;
201
__u64 data;
202
__u64 path;
203
__u16 reserved_pkey;
204
__u8 len;
205
__u8 max_cm_retries;
206
__u8 reserved[4];
207
};
208
209
struct ib_ucm_sidr_rep {
210
__u32 id;
211
__u32 qpn;
212
__u32 qkey;
213
__u32 status;
214
__u64 info;
215
__u64 data;
216
__u8 info_len;
217
__u8 data_len;
218
__u8 reserved[6];
219
};
220
/*
221
* event notification ABI structures.
222
*/
223
struct ib_ucm_event_get {
224
__u64 response;
225
__u64 data;
226
__u64 info;
227
__u8 data_len;
228
__u8 info_len;
229
__u8 reserved[6];
230
};
231
232
struct ib_ucm_req_event_resp {
233
struct ib_user_path_rec primary_path;
234
struct ib_user_path_rec alternate_path;
235
__be64 remote_ca_guid;
236
__u32 remote_qkey;
237
__u32 remote_qpn;
238
__u32 qp_type;
239
__u32 starting_psn;
240
__u8 responder_resources;
241
__u8 initiator_depth;
242
__u8 local_cm_response_timeout;
243
__u8 flow_control;
244
__u8 remote_cm_response_timeout;
245
__u8 retry_count;
246
__u8 rnr_retry_count;
247
__u8 srq;
248
__u8 port;
249
__u8 reserved[7];
250
};
251
252
struct ib_ucm_rep_event_resp {
253
__be64 remote_ca_guid;
254
__u32 remote_qkey;
255
__u32 remote_qpn;
256
__u32 starting_psn;
257
__u8 responder_resources;
258
__u8 initiator_depth;
259
__u8 target_ack_delay;
260
__u8 failover_accepted;
261
__u8 flow_control;
262
__u8 rnr_retry_count;
263
__u8 srq;
264
__u8 reserved[5];
265
};
266
267
struct ib_ucm_rej_event_resp {
268
__u32 reason;
269
/* ari in ib_ucm_event_get info field. */
270
};
271
272
struct ib_ucm_mra_event_resp {
273
__u8 timeout;
274
__u8 reserved[3];
275
};
276
277
struct ib_ucm_lap_event_resp {
278
struct ib_user_path_rec path;
279
};
280
281
struct ib_ucm_apr_event_resp {
282
__u32 status;
283
/* apr info in ib_ucm_event_get info field. */
284
};
285
286
struct ib_ucm_sidr_req_event_resp {
287
__u16 pkey;
288
__u8 port;
289
__u8 reserved;
290
};
291
292
struct ib_ucm_sidr_rep_event_resp {
293
__u32 status;
294
__u32 qkey;
295
__u32 qpn;
296
/* info in ib_ucm_event_get info field. */
297
};
298
299
#define IB_UCM_PRES_DATA 0x01
300
#define IB_UCM_PRES_INFO 0x02
301
#define IB_UCM_PRES_PRIMARY 0x04
302
#define IB_UCM_PRES_ALTERNATE 0x08
303
304
struct ib_ucm_event_resp {
305
__u64 uid;
306
__u32 id;
307
__u32 event;
308
__u32 present;
309
__u32 reserved;
310
union {
311
struct ib_ucm_req_event_resp req_resp;
312
struct ib_ucm_rep_event_resp rep_resp;
313
struct ib_ucm_rej_event_resp rej_resp;
314
struct ib_ucm_mra_event_resp mra_resp;
315
struct ib_ucm_lap_event_resp lap_resp;
316
struct ib_ucm_apr_event_resp apr_resp;
317
318
struct ib_ucm_sidr_req_event_resp sidr_req_resp;
319
struct ib_ucm_sidr_rep_event_resp sidr_rep_resp;
320
321
__u32 send_status;
322
} u;
323
};
324
325
#endif /* IB_USER_CM_H */
326
327