diff options
Diffstat (limited to 'drivers/infiniband/include/ib_cm.h')
-rw-r--r-- | drivers/infiniband/include/ib_cm.h | 569 |
1 files changed, 0 insertions, 569 deletions
diff --git a/drivers/infiniband/include/ib_cm.h b/drivers/infiniband/include/ib_cm.h deleted file mode 100644 index da650115e79a..000000000000 --- a/drivers/infiniband/include/ib_cm.h +++ /dev/null | |||
@@ -1,569 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2004 Intel Corporation. All rights reserved. | ||
3 | * Copyright (c) 2004 Topspin Corporation. All rights reserved. | ||
4 | * Copyright (c) 2004 Voltaire Corporation. All rights reserved. | ||
5 | * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved. | ||
6 | * | ||
7 | * This software is available to you under a choice of one of two | ||
8 | * licenses. You may choose to be licensed under the terms of the GNU | ||
9 | * General Public License (GPL) Version 2, available from the file | ||
10 | * COPYING in the main directory of this source tree, or the | ||
11 | * OpenIB.org BSD license below: | ||
12 | * | ||
13 | * Redistribution and use in source and binary forms, with or | ||
14 | * without modification, are permitted provided that the following | ||
15 | * conditions are met: | ||
16 | * | ||
17 | * - Redistributions of source code must retain the above | ||
18 | * copyright notice, this list of conditions and the following | ||
19 | * disclaimer. | ||
20 | * | ||
21 | * - Redistributions in binary form must reproduce the above | ||
22 | * copyright notice, this list of conditions and the following | ||
23 | * disclaimer in the documentation and/or other materials | ||
24 | * provided with the distribution. | ||
25 | * | ||
26 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
27 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
28 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
29 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
30 | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
31 | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
32 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
33 | * SOFTWARE. | ||
34 | * | ||
35 | * $Id: ib_cm.h 2730 2005-06-28 16:43:03Z sean.hefty $ | ||
36 | */ | ||
37 | #if !defined(IB_CM_H) | ||
38 | #define IB_CM_H | ||
39 | |||
40 | #include <ib_mad.h> | ||
41 | #include <ib_sa.h> | ||
42 | |||
43 | enum ib_cm_state { | ||
44 | IB_CM_IDLE, | ||
45 | IB_CM_LISTEN, | ||
46 | IB_CM_REQ_SENT, | ||
47 | IB_CM_REQ_RCVD, | ||
48 | IB_CM_MRA_REQ_SENT, | ||
49 | IB_CM_MRA_REQ_RCVD, | ||
50 | IB_CM_REP_SENT, | ||
51 | IB_CM_REP_RCVD, | ||
52 | IB_CM_MRA_REP_SENT, | ||
53 | IB_CM_MRA_REP_RCVD, | ||
54 | IB_CM_ESTABLISHED, | ||
55 | IB_CM_DREQ_SENT, | ||
56 | IB_CM_DREQ_RCVD, | ||
57 | IB_CM_TIMEWAIT, | ||
58 | IB_CM_SIDR_REQ_SENT, | ||
59 | IB_CM_SIDR_REQ_RCVD | ||
60 | }; | ||
61 | |||
62 | enum ib_cm_lap_state { | ||
63 | IB_CM_LAP_IDLE, | ||
64 | IB_CM_LAP_SENT, | ||
65 | IB_CM_LAP_RCVD, | ||
66 | IB_CM_MRA_LAP_SENT, | ||
67 | IB_CM_MRA_LAP_RCVD, | ||
68 | }; | ||
69 | |||
70 | enum ib_cm_event_type { | ||
71 | IB_CM_REQ_ERROR, | ||
72 | IB_CM_REQ_RECEIVED, | ||
73 | IB_CM_REP_ERROR, | ||
74 | IB_CM_REP_RECEIVED, | ||
75 | IB_CM_RTU_RECEIVED, | ||
76 | IB_CM_USER_ESTABLISHED, | ||
77 | IB_CM_DREQ_ERROR, | ||
78 | IB_CM_DREQ_RECEIVED, | ||
79 | IB_CM_DREP_RECEIVED, | ||
80 | IB_CM_TIMEWAIT_EXIT, | ||
81 | IB_CM_MRA_RECEIVED, | ||
82 | IB_CM_REJ_RECEIVED, | ||
83 | IB_CM_LAP_ERROR, | ||
84 | IB_CM_LAP_RECEIVED, | ||
85 | IB_CM_APR_RECEIVED, | ||
86 | IB_CM_SIDR_REQ_ERROR, | ||
87 | IB_CM_SIDR_REQ_RECEIVED, | ||
88 | IB_CM_SIDR_REP_RECEIVED | ||
89 | }; | ||
90 | |||
91 | enum ib_cm_data_size { | ||
92 | IB_CM_REQ_PRIVATE_DATA_SIZE = 92, | ||
93 | IB_CM_MRA_PRIVATE_DATA_SIZE = 222, | ||
94 | IB_CM_REJ_PRIVATE_DATA_SIZE = 148, | ||
95 | IB_CM_REP_PRIVATE_DATA_SIZE = 196, | ||
96 | IB_CM_RTU_PRIVATE_DATA_SIZE = 224, | ||
97 | IB_CM_DREQ_PRIVATE_DATA_SIZE = 220, | ||
98 | IB_CM_DREP_PRIVATE_DATA_SIZE = 224, | ||
99 | IB_CM_REJ_ARI_LENGTH = 72, | ||
100 | IB_CM_LAP_PRIVATE_DATA_SIZE = 168, | ||
101 | IB_CM_APR_PRIVATE_DATA_SIZE = 148, | ||
102 | IB_CM_APR_INFO_LENGTH = 72, | ||
103 | IB_CM_SIDR_REQ_PRIVATE_DATA_SIZE = 216, | ||
104 | IB_CM_SIDR_REP_PRIVATE_DATA_SIZE = 136, | ||
105 | IB_CM_SIDR_REP_INFO_LENGTH = 72 | ||
106 | }; | ||
107 | |||
108 | struct ib_cm_id; | ||
109 | |||
110 | struct ib_cm_req_event_param { | ||
111 | struct ib_cm_id *listen_id; | ||
112 | struct ib_device *device; | ||
113 | u8 port; | ||
114 | |||
115 | struct ib_sa_path_rec *primary_path; | ||
116 | struct ib_sa_path_rec *alternate_path; | ||
117 | |||
118 | u64 remote_ca_guid; | ||
119 | u32 remote_qkey; | ||
120 | u32 remote_qpn; | ||
121 | enum ib_qp_type qp_type; | ||
122 | |||
123 | u32 starting_psn; | ||
124 | u8 responder_resources; | ||
125 | u8 initiator_depth; | ||
126 | unsigned int local_cm_response_timeout:5; | ||
127 | unsigned int flow_control:1; | ||
128 | unsigned int remote_cm_response_timeout:5; | ||
129 | unsigned int retry_count:3; | ||
130 | unsigned int rnr_retry_count:3; | ||
131 | unsigned int srq:1; | ||
132 | }; | ||
133 | |||
134 | struct ib_cm_rep_event_param { | ||
135 | u64 remote_ca_guid; | ||
136 | u32 remote_qkey; | ||
137 | u32 remote_qpn; | ||
138 | u32 starting_psn; | ||
139 | u8 responder_resources; | ||
140 | u8 initiator_depth; | ||
141 | unsigned int target_ack_delay:5; | ||
142 | unsigned int failover_accepted:2; | ||
143 | unsigned int flow_control:1; | ||
144 | unsigned int rnr_retry_count:3; | ||
145 | unsigned int srq:1; | ||
146 | }; | ||
147 | |||
148 | enum ib_cm_rej_reason { | ||
149 | IB_CM_REJ_NO_QP = __constant_htons(1), | ||
150 | IB_CM_REJ_NO_EEC = __constant_htons(2), | ||
151 | IB_CM_REJ_NO_RESOURCES = __constant_htons(3), | ||
152 | IB_CM_REJ_TIMEOUT = __constant_htons(4), | ||
153 | IB_CM_REJ_UNSUPPORTED = __constant_htons(5), | ||
154 | IB_CM_REJ_INVALID_COMM_ID = __constant_htons(6), | ||
155 | IB_CM_REJ_INVALID_COMM_INSTANCE = __constant_htons(7), | ||
156 | IB_CM_REJ_INVALID_SERVICE_ID = __constant_htons(8), | ||
157 | IB_CM_REJ_INVALID_TRANSPORT_TYPE = __constant_htons(9), | ||
158 | IB_CM_REJ_STALE_CONN = __constant_htons(10), | ||
159 | IB_CM_REJ_RDC_NOT_EXIST = __constant_htons(11), | ||
160 | IB_CM_REJ_INVALID_GID = __constant_htons(12), | ||
161 | IB_CM_REJ_INVALID_LID = __constant_htons(13), | ||
162 | IB_CM_REJ_INVALID_SL = __constant_htons(14), | ||
163 | IB_CM_REJ_INVALID_TRAFFIC_CLASS = __constant_htons(15), | ||
164 | IB_CM_REJ_INVALID_HOP_LIMIT = __constant_htons(16), | ||
165 | IB_CM_REJ_INVALID_PACKET_RATE = __constant_htons(17), | ||
166 | IB_CM_REJ_INVALID_ALT_GID = __constant_htons(18), | ||
167 | IB_CM_REJ_INVALID_ALT_LID = __constant_htons(19), | ||
168 | IB_CM_REJ_INVALID_ALT_SL = __constant_htons(20), | ||
169 | IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS = __constant_htons(21), | ||
170 | IB_CM_REJ_INVALID_ALT_HOP_LIMIT = __constant_htons(22), | ||
171 | IB_CM_REJ_INVALID_ALT_PACKET_RATE = __constant_htons(23), | ||
172 | IB_CM_REJ_PORT_CM_REDIRECT = __constant_htons(24), | ||
173 | IB_CM_REJ_PORT_REDIRECT = __constant_htons(25), | ||
174 | IB_CM_REJ_INVALID_MTU = __constant_htons(26), | ||
175 | IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES = __constant_htons(27), | ||
176 | IB_CM_REJ_CONSUMER_DEFINED = __constant_htons(28), | ||
177 | IB_CM_REJ_INVALID_RNR_RETRY = __constant_htons(29), | ||
178 | IB_CM_REJ_DUPLICATE_LOCAL_COMM_ID = __constant_htons(30), | ||
179 | IB_CM_REJ_INVALID_CLASS_VERSION = __constant_htons(31), | ||
180 | IB_CM_REJ_INVALID_FLOW_LABEL = __constant_htons(32), | ||
181 | IB_CM_REJ_INVALID_ALT_FLOW_LABEL = __constant_htons(33) | ||
182 | }; | ||
183 | |||
184 | struct ib_cm_rej_event_param { | ||
185 | enum ib_cm_rej_reason reason; | ||
186 | void *ari; | ||
187 | u8 ari_length; | ||
188 | }; | ||
189 | |||
190 | struct ib_cm_mra_event_param { | ||
191 | u8 service_timeout; | ||
192 | }; | ||
193 | |||
194 | struct ib_cm_lap_event_param { | ||
195 | struct ib_sa_path_rec *alternate_path; | ||
196 | }; | ||
197 | |||
198 | enum ib_cm_apr_status { | ||
199 | IB_CM_APR_SUCCESS, | ||
200 | IB_CM_APR_INVALID_COMM_ID, | ||
201 | IB_CM_APR_UNSUPPORTED, | ||
202 | IB_CM_APR_REJECT, | ||
203 | IB_CM_APR_REDIRECT, | ||
204 | IB_CM_APR_IS_CURRENT, | ||
205 | IB_CM_APR_INVALID_QPN_EECN, | ||
206 | IB_CM_APR_INVALID_LID, | ||
207 | IB_CM_APR_INVALID_GID, | ||
208 | IB_CM_APR_INVALID_FLOW_LABEL, | ||
209 | IB_CM_APR_INVALID_TCLASS, | ||
210 | IB_CM_APR_INVALID_HOP_LIMIT, | ||
211 | IB_CM_APR_INVALID_PACKET_RATE, | ||
212 | IB_CM_APR_INVALID_SL | ||
213 | }; | ||
214 | |||
215 | struct ib_cm_apr_event_param { | ||
216 | enum ib_cm_apr_status ap_status; | ||
217 | void *apr_info; | ||
218 | u8 info_len; | ||
219 | }; | ||
220 | |||
221 | struct ib_cm_sidr_req_event_param { | ||
222 | struct ib_cm_id *listen_id; | ||
223 | struct ib_device *device; | ||
224 | u8 port; | ||
225 | |||
226 | u16 pkey; | ||
227 | }; | ||
228 | |||
229 | enum ib_cm_sidr_status { | ||
230 | IB_SIDR_SUCCESS, | ||
231 | IB_SIDR_UNSUPPORTED, | ||
232 | IB_SIDR_REJECT, | ||
233 | IB_SIDR_NO_QP, | ||
234 | IB_SIDR_REDIRECT, | ||
235 | IB_SIDR_UNSUPPORTED_VERSION | ||
236 | }; | ||
237 | |||
238 | struct ib_cm_sidr_rep_event_param { | ||
239 | enum ib_cm_sidr_status status; | ||
240 | u32 qkey; | ||
241 | u32 qpn; | ||
242 | void *info; | ||
243 | u8 info_len; | ||
244 | |||
245 | }; | ||
246 | |||
247 | struct ib_cm_event { | ||
248 | enum ib_cm_event_type event; | ||
249 | union { | ||
250 | struct ib_cm_req_event_param req_rcvd; | ||
251 | struct ib_cm_rep_event_param rep_rcvd; | ||
252 | /* No data for RTU received events. */ | ||
253 | struct ib_cm_rej_event_param rej_rcvd; | ||
254 | struct ib_cm_mra_event_param mra_rcvd; | ||
255 | struct ib_cm_lap_event_param lap_rcvd; | ||
256 | struct ib_cm_apr_event_param apr_rcvd; | ||
257 | /* No data for DREQ/DREP received events. */ | ||
258 | struct ib_cm_sidr_req_event_param sidr_req_rcvd; | ||
259 | struct ib_cm_sidr_rep_event_param sidr_rep_rcvd; | ||
260 | enum ib_wc_status send_status; | ||
261 | } param; | ||
262 | |||
263 | void *private_data; | ||
264 | }; | ||
265 | |||
266 | /** | ||
267 | * ib_cm_handler - User-defined callback to process communication events. | ||
268 | * @cm_id: Communication identifier associated with the reported event. | ||
269 | * @event: Information about the communication event. | ||
270 | * | ||
271 | * IB_CM_REQ_RECEIVED and IB_CM_SIDR_REQ_RECEIVED communication events | ||
272 | * generated as a result of listen requests result in the allocation of a | ||
273 | * new @cm_id. The new @cm_id is returned to the user through this callback. | ||
274 | * Clients are responsible for destroying the new @cm_id. For peer-to-peer | ||
275 | * IB_CM_REQ_RECEIVED and all other events, the returned @cm_id corresponds | ||
276 | * to a user's existing communication identifier. | ||
277 | * | ||
278 | * Users may not call ib_destroy_cm_id while in the context of this callback; | ||
279 | * however, returning a non-zero value instructs the communication manager to | ||
280 | * destroy the @cm_id after the callback completes. | ||
281 | */ | ||
282 | typedef int (*ib_cm_handler)(struct ib_cm_id *cm_id, | ||
283 | struct ib_cm_event *event); | ||
284 | |||
285 | struct ib_cm_id { | ||
286 | ib_cm_handler cm_handler; | ||
287 | void *context; | ||
288 | u64 service_id; | ||
289 | u64 service_mask; | ||
290 | enum ib_cm_state state; /* internal CM/debug use */ | ||
291 | enum ib_cm_lap_state lap_state; /* internal CM/debug use */ | ||
292 | u32 local_id; | ||
293 | u32 remote_id; | ||
294 | }; | ||
295 | |||
296 | /** | ||
297 | * ib_create_cm_id - Allocate a communication identifier. | ||
298 | * @cm_handler: Callback invoked to notify the user of CM events. | ||
299 | * @context: User specified context associated with the communication | ||
300 | * identifier. | ||
301 | * | ||
302 | * Communication identifiers are used to track connection states, service | ||
303 | * ID resolution requests, and listen requests. | ||
304 | */ | ||
305 | struct ib_cm_id *ib_create_cm_id(ib_cm_handler cm_handler, | ||
306 | void *context); | ||
307 | |||
308 | /** | ||
309 | * ib_destroy_cm_id - Destroy a connection identifier. | ||
310 | * @cm_id: Connection identifier to destroy. | ||
311 | * | ||
312 | * This call blocks until the connection identifier is destroyed. | ||
313 | */ | ||
314 | void ib_destroy_cm_id(struct ib_cm_id *cm_id); | ||
315 | |||
316 | #define IB_SERVICE_ID_AGN_MASK __constant_cpu_to_be64(0xFF00000000000000ULL) | ||
317 | #define IB_CM_ASSIGN_SERVICE_ID __constant_cpu_to_be64(0x0200000000000000ULL) | ||
318 | |||
319 | /** | ||
320 | * ib_cm_listen - Initiates listening on the specified service ID for | ||
321 | * connection and service ID resolution requests. | ||
322 | * @cm_id: Connection identifier associated with the listen request. | ||
323 | * @service_id: Service identifier matched against incoming connection | ||
324 | * and service ID resolution requests. The service ID should be specified | ||
325 | * network-byte order. If set to IB_CM_ASSIGN_SERVICE_ID, the CM will | ||
326 | * assign a service ID to the caller. | ||
327 | * @service_mask: Mask applied to service ID used to listen across a | ||
328 | * range of service IDs. If set to 0, the service ID is matched | ||
329 | * exactly. This parameter is ignored if %service_id is set to | ||
330 | * IB_CM_ASSIGN_SERVICE_ID. | ||
331 | */ | ||
332 | int ib_cm_listen(struct ib_cm_id *cm_id, | ||
333 | u64 service_id, | ||
334 | u64 service_mask); | ||
335 | |||
336 | struct ib_cm_req_param { | ||
337 | struct ib_sa_path_rec *primary_path; | ||
338 | struct ib_sa_path_rec *alternate_path; | ||
339 | u64 service_id; | ||
340 | u32 qp_num; | ||
341 | enum ib_qp_type qp_type; | ||
342 | u32 starting_psn; | ||
343 | const void *private_data; | ||
344 | u8 private_data_len; | ||
345 | u8 peer_to_peer; | ||
346 | u8 responder_resources; | ||
347 | u8 initiator_depth; | ||
348 | u8 remote_cm_response_timeout; | ||
349 | u8 flow_control; | ||
350 | u8 local_cm_response_timeout; | ||
351 | u8 retry_count; | ||
352 | u8 rnr_retry_count; | ||
353 | u8 max_cm_retries; | ||
354 | u8 srq; | ||
355 | }; | ||
356 | |||
357 | /** | ||
358 | * ib_send_cm_req - Sends a connection request to the remote node. | ||
359 | * @cm_id: Connection identifier that will be associated with the | ||
360 | * connection request. | ||
361 | * @param: Connection request information needed to establish the | ||
362 | * connection. | ||
363 | */ | ||
364 | int ib_send_cm_req(struct ib_cm_id *cm_id, | ||
365 | struct ib_cm_req_param *param); | ||
366 | |||
367 | struct ib_cm_rep_param { | ||
368 | u32 qp_num; | ||
369 | u32 starting_psn; | ||
370 | const void *private_data; | ||
371 | u8 private_data_len; | ||
372 | u8 responder_resources; | ||
373 | u8 initiator_depth; | ||
374 | u8 target_ack_delay; | ||
375 | u8 failover_accepted; | ||
376 | u8 flow_control; | ||
377 | u8 rnr_retry_count; | ||
378 | u8 srq; | ||
379 | }; | ||
380 | |||
381 | /** | ||
382 | * ib_send_cm_rep - Sends a connection reply in response to a connection | ||
383 | * request. | ||
384 | * @cm_id: Connection identifier that will be associated with the | ||
385 | * connection request. | ||
386 | * @param: Connection reply information needed to establish the | ||
387 | * connection. | ||
388 | */ | ||
389 | int ib_send_cm_rep(struct ib_cm_id *cm_id, | ||
390 | struct ib_cm_rep_param *param); | ||
391 | |||
392 | /** | ||
393 | * ib_send_cm_rtu - Sends a connection ready to use message in response | ||
394 | * to a connection reply message. | ||
395 | * @cm_id: Connection identifier associated with the connection request. | ||
396 | * @private_data: Optional user-defined private data sent with the | ||
397 | * ready to use message. | ||
398 | * @private_data_len: Size of the private data buffer, in bytes. | ||
399 | */ | ||
400 | int ib_send_cm_rtu(struct ib_cm_id *cm_id, | ||
401 | const void *private_data, | ||
402 | u8 private_data_len); | ||
403 | |||
404 | /** | ||
405 | * ib_send_cm_dreq - Sends a disconnection request for an existing | ||
406 | * connection. | ||
407 | * @cm_id: Connection identifier associated with the connection being | ||
408 | * released. | ||
409 | * @private_data: Optional user-defined private data sent with the | ||
410 | * disconnection request message. | ||
411 | * @private_data_len: Size of the private data buffer, in bytes. | ||
412 | */ | ||
413 | int ib_send_cm_dreq(struct ib_cm_id *cm_id, | ||
414 | const void *private_data, | ||
415 | u8 private_data_len); | ||
416 | |||
417 | /** | ||
418 | * ib_send_cm_drep - Sends a disconnection reply to a disconnection request. | ||
419 | * @cm_id: Connection identifier associated with the connection being | ||
420 | * released. | ||
421 | * @private_data: Optional user-defined private data sent with the | ||
422 | * disconnection reply message. | ||
423 | * @private_data_len: Size of the private data buffer, in bytes. | ||
424 | * | ||
425 | * If the cm_id is in the correct state, the CM will transition the connection | ||
426 | * to the timewait state, even if an error occurs sending the DREP message. | ||
427 | */ | ||
428 | int ib_send_cm_drep(struct ib_cm_id *cm_id, | ||
429 | const void *private_data, | ||
430 | u8 private_data_len); | ||
431 | |||
432 | /** | ||
433 | * ib_cm_establish - Forces a connection state to established. | ||
434 | * @cm_id: Connection identifier to transition to established. | ||
435 | * | ||
436 | * This routine should be invoked by users who receive messages on a | ||
437 | * connected QP before an RTU has been received. | ||
438 | */ | ||
439 | int ib_cm_establish(struct ib_cm_id *cm_id); | ||
440 | |||
441 | /** | ||
442 | * ib_send_cm_rej - Sends a connection rejection message to the | ||
443 | * remote node. | ||
444 | * @cm_id: Connection identifier associated with the connection being | ||
445 | * rejected. | ||
446 | * @reason: Reason for the connection request rejection. | ||
447 | * @ari: Optional additional rejection information. | ||
448 | * @ari_length: Size of the additional rejection information, in bytes. | ||
449 | * @private_data: Optional user-defined private data sent with the | ||
450 | * rejection message. | ||
451 | * @private_data_len: Size of the private data buffer, in bytes. | ||
452 | */ | ||
453 | int ib_send_cm_rej(struct ib_cm_id *cm_id, | ||
454 | enum ib_cm_rej_reason reason, | ||
455 | void *ari, | ||
456 | u8 ari_length, | ||
457 | const void *private_data, | ||
458 | u8 private_data_len); | ||
459 | |||
460 | /** | ||
461 | * ib_send_cm_mra - Sends a message receipt acknowledgement to a connection | ||
462 | * message. | ||
463 | * @cm_id: Connection identifier associated with the connection message. | ||
464 | * @service_timeout: The maximum time required for the sender to reply to | ||
465 | * to the connection message. | ||
466 | * @private_data: Optional user-defined private data sent with the | ||
467 | * message receipt acknowledgement. | ||
468 | * @private_data_len: Size of the private data buffer, in bytes. | ||
469 | */ | ||
470 | int ib_send_cm_mra(struct ib_cm_id *cm_id, | ||
471 | u8 service_timeout, | ||
472 | const void *private_data, | ||
473 | u8 private_data_len); | ||
474 | |||
475 | /** | ||
476 | * ib_send_cm_lap - Sends a load alternate path request. | ||
477 | * @cm_id: Connection identifier associated with the load alternate path | ||
478 | * message. | ||
479 | * @alternate_path: A path record that identifies the alternate path to | ||
480 | * load. | ||
481 | * @private_data: Optional user-defined private data sent with the | ||
482 | * load alternate path message. | ||
483 | * @private_data_len: Size of the private data buffer, in bytes. | ||
484 | */ | ||
485 | int ib_send_cm_lap(struct ib_cm_id *cm_id, | ||
486 | struct ib_sa_path_rec *alternate_path, | ||
487 | const void *private_data, | ||
488 | u8 private_data_len); | ||
489 | |||
490 | /** | ||
491 | * ib_cm_init_qp_attr - Initializes the QP attributes for use in transitioning | ||
492 | * to a specified QP state. | ||
493 | * @cm_id: Communication identifier associated with the QP attributes to | ||
494 | * initialize. | ||
495 | * @qp_attr: On input, specifies the desired QP state. On output, the | ||
496 | * mandatory and desired optional attributes will be set in order to | ||
497 | * modify the QP to the specified state. | ||
498 | * @qp_attr_mask: The QP attribute mask that may be used to transition the | ||
499 | * QP to the specified state. | ||
500 | * | ||
501 | * Users must set the @qp_attr->qp_state to the desired QP state. This call | ||
502 | * will set all required attributes for the given transition, along with | ||
503 | * known optional attributes. Users may override the attributes returned from | ||
504 | * this call before calling ib_modify_qp. | ||
505 | */ | ||
506 | int ib_cm_init_qp_attr(struct ib_cm_id *cm_id, | ||
507 | struct ib_qp_attr *qp_attr, | ||
508 | int *qp_attr_mask); | ||
509 | |||
510 | /** | ||
511 | * ib_send_cm_apr - Sends an alternate path response message in response to | ||
512 | * a load alternate path request. | ||
513 | * @cm_id: Connection identifier associated with the alternate path response. | ||
514 | * @status: Reply status sent with the alternate path response. | ||
515 | * @info: Optional additional information sent with the alternate path | ||
516 | * response. | ||
517 | * @info_length: Size of the additional information, in bytes. | ||
518 | * @private_data: Optional user-defined private data sent with the | ||
519 | * alternate path response message. | ||
520 | * @private_data_len: Size of the private data buffer, in bytes. | ||
521 | */ | ||
522 | int ib_send_cm_apr(struct ib_cm_id *cm_id, | ||
523 | enum ib_cm_apr_status status, | ||
524 | void *info, | ||
525 | u8 info_length, | ||
526 | const void *private_data, | ||
527 | u8 private_data_len); | ||
528 | |||
529 | struct ib_cm_sidr_req_param { | ||
530 | struct ib_sa_path_rec *path; | ||
531 | u64 service_id; | ||
532 | int timeout_ms; | ||
533 | const void *private_data; | ||
534 | u8 private_data_len; | ||
535 | u8 max_cm_retries; | ||
536 | u16 pkey; | ||
537 | }; | ||
538 | |||
539 | /** | ||
540 | * ib_send_cm_sidr_req - Sends a service ID resolution request to the | ||
541 | * remote node. | ||
542 | * @cm_id: Communication identifier that will be associated with the | ||
543 | * service ID resolution request. | ||
544 | * @param: Service ID resolution request information. | ||
545 | */ | ||
546 | int ib_send_cm_sidr_req(struct ib_cm_id *cm_id, | ||
547 | struct ib_cm_sidr_req_param *param); | ||
548 | |||
549 | struct ib_cm_sidr_rep_param { | ||
550 | u32 qp_num; | ||
551 | u32 qkey; | ||
552 | enum ib_cm_sidr_status status; | ||
553 | const void *info; | ||
554 | u8 info_length; | ||
555 | const void *private_data; | ||
556 | u8 private_data_len; | ||
557 | }; | ||
558 | |||
559 | /** | ||
560 | * ib_send_cm_sidr_rep - Sends a service ID resolution request to the | ||
561 | * remote node. | ||
562 | * @cm_id: Communication identifier associated with the received service ID | ||
563 | * resolution request. | ||
564 | * @param: Service ID resolution reply information. | ||
565 | */ | ||
566 | int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id, | ||
567 | struct ib_cm_sidr_rep_param *param); | ||
568 | |||
569 | #endif /* IB_CM_H */ | ||