[DAPL2] Sync with OFED DAPL 2.0.21 src release
[mirror/winof/.git] / ulp / dapl2 / dapl / common / dapl_adapter_util.h
1 /*\r
2  * Copyright (c) 2002-2005, Network Appliance, Inc. All rights reserved.\r
3  *\r
4  * This Software is licensed under one of the following licenses:\r
5  *\r
6  * 1) under the terms of the "Common Public License 1.0" a copy of which is\r
7  *    in the file LICENSE.txt in the root directory. The license is also\r
8  *    available from the Open Source Initiative, see\r
9  *    http://www.opensource.org/licenses/cpl.php.\r
10  *\r
11  * 2) under the terms of the "The BSD License" a copy of which is in the file\r
12  *    LICENSE2.txt in the root directory. The license is also available from\r
13  *    the Open Source Initiative, see\r
14  *    http://www.opensource.org/licenses/bsd-license.php.\r
15  *\r
16  * 3) under the terms of the "GNU General Public License (GPL) Version 2" a \r
17  *    copy of which is in the file LICENSE3.txt in the root directory. The \r
18  *    license is also available from the Open Source Initiative, see\r
19  *    http://www.opensource.org/licenses/gpl-license.php.\r
20  *\r
21  * Licensee has the right to choose one of the above licenses.\r
22  *\r
23  * Redistributions of source code must retain the above copyright\r
24  * notice and one of the license notices.\r
25  *\r
26  * Redistributions in binary form must reproduce both the above copyright\r
27  * notice, one of the license notices in the documentation\r
28  * and/or other materials provided with the distribution.\r
29  */\r
30 \r
31 /**********************************************************************\r
32  * \r
33  * HEADER: dapl_adapter_util.h\r
34  *\r
35  * PURPOSE: Utility defs & routines for the adapter data structure\r
36  *\r
37  * $Id: dapl_adapter_util.h 1317 2005-04-25 17:29:42Z jlentini $\r
38  *\r
39  **********************************************************************/\r
40 \r
41 #ifndef _DAPL_ADAPTER_UTIL_H_\r
42 #define _DAPL_ADAPTER_UTIL_H_\r
43 \r
44 \r
45 typedef enum async_handler_type\r
46 {\r
47     DAPL_ASYNC_UNAFILIATED,\r
48         DAPL_ASYNC_CQ_ERROR,\r
49         DAPL_ASYNC_CQ_COMPLETION,\r
50         DAPL_ASYNC_QP_ERROR\r
51 } DAPL_ASYNC_HANDLER_TYPE;\r
52 \r
53 \r
54 int dapls_ib_init (void);\r
55 \r
56 int dapls_ib_release (void);\r
57 \r
58 DAT_RETURN dapls_ib_enum_hcas (\r
59         IN   const char                 *vendor, \r
60         OUT  DAPL_HCA_NAME              **hca_names,\r
61         OUT  DAT_COUNT                  *total_hca_count);\r
62 \r
63 DAT_RETURN dapls_ib_get_instance_data(\r
64         IN  DAPL_HCA_NAME hca_name, \r
65         OUT char *instance);\r
66 \r
67 DAT_RETURN dapls_ib_open_hca (\r
68         IN   char                      *namestr,\r
69         IN   DAPL_HCA                  *hca_ptr);\r
70 \r
71 DAT_RETURN dapls_ib_close_hca (\r
72         IN   DAPL_HCA                  *hca_ptr);\r
73 \r
74 DAT_RETURN dapls_ib_qp_alloc (\r
75         IN  DAPL_IA                     *ia_ptr,\r
76         IN  DAPL_EP                     *ep_ptr,\r
77         IN  DAPL_EP                     *ep_ctx_ptr);\r
78 \r
79 DAT_RETURN dapls_ib_qp_free (\r
80         IN  DAPL_IA                     *ia_ptr,\r
81         IN  DAPL_EP                     *ep_ptr);\r
82 \r
83 DAT_RETURN dapls_ib_qp_modify (\r
84         IN  DAPL_IA                     *ia_ptr,\r
85         IN  DAPL_EP                     *ep_ptr,\r
86         IN  DAT_EP_ATTR                 *ep_attr);\r
87 \r
88 DAT_RETURN dapls_ib_connect (\r
89         IN  DAT_EP_HANDLE               ep_handle,\r
90         IN  DAT_IA_ADDRESS_PTR          remote_ia_address,\r
91         IN  DAT_CONN_QUAL               remote_conn_qual,\r
92         IN  DAT_COUNT                   private_data_size,\r
93         IN  DAT_PVOID                   private_data);\r
94 \r
95 DAT_RETURN dapls_ib_disconnect (\r
96         IN  DAPL_EP                     *ep_ptr,\r
97         IN  DAT_CLOSE_FLAGS             close_flags);\r
98 \r
99 DAT_RETURN dapls_ib_setup_conn_listener (\r
100         IN  DAPL_IA                     *ia_ptr,\r
101         IN  DAT_UINT64                  ServiceID,\r
102         IN  DAPL_SP                     *sp_ptr);\r
103 \r
104 DAT_RETURN dapls_ib_remove_conn_listener (\r
105         IN  DAPL_IA                     *ia_ptr,\r
106         IN  DAPL_SP                     *sp_ptr);\r
107 \r
108 DAT_RETURN dapls_ib_accept_connection (\r
109         IN  DAT_CR_HANDLE               cr_handle,\r
110         IN  DAT_EP_HANDLE               ep_handle,\r
111         IN  DAT_COUNT                   private_data_size,\r
112         IN  const DAT_PVOID             private_data);\r
113 \r
114 DAT_RETURN dapls_ib_reject_connection (\r
115         IN  dp_ib_cm_handle_t           cm_handle,\r
116         IN  int                         reject_reason,\r
117         IN  DAT_COUNT                   private_data_size,\r
118         IN  const DAT_PVOID             private_data);\r
119 \r
120 DAT_RETURN dapls_ib_setup_async_callback (\r
121         IN  DAPL_IA                     *ia_ptr,\r
122         IN  DAPL_ASYNC_HANDLER_TYPE     handler_type,\r
123         IN  DAPL_EVD                    *evd_ptr,\r
124         IN  ib_async_handler_t          callback,\r
125         IN  void                        *context);\r
126 \r
127 DAT_RETURN dapls_ib_cq_alloc (\r
128         IN  DAPL_IA                     *ia_ptr,\r
129         IN  DAPL_EVD                    *evd_ptr,\r
130         IN  DAT_COUNT                   *cqlen);\r
131 \r
132 DAT_RETURN dapls_ib_cq_free (\r
133         IN  DAPL_IA                     *ia_ptr,\r
134         IN  DAPL_EVD                    *evd_ptr);\r
135 \r
136 DAT_RETURN dapls_set_cq_notify (\r
137         IN  DAPL_IA                     *ia_ptr,\r
138         IN  DAPL_EVD                    *evd_ptr);\r
139 \r
140 DAT_RETURN dapls_ib_cq_resize (\r
141         IN  DAPL_IA                     *ia_ptr,\r
142         IN  DAPL_EVD                    *evd_ptr,\r
143         IN  DAT_COUNT                   *cqlen);\r
144 \r
145 DAT_RETURN dapls_ib_pd_alloc (\r
146         IN  DAPL_IA                     *ia_ptr,\r
147         IN  DAPL_PZ                     *pz);\r
148 \r
149 DAT_RETURN dapls_ib_pd_free (\r
150         IN  DAPL_PZ                     *pz);\r
151 \r
152 DAT_RETURN dapls_ib_mr_register (\r
153         IN  DAPL_IA                     *ia_ptr,\r
154         IN  DAPL_LMR                    *lmr,\r
155         IN  DAT_PVOID                   virt_addr,\r
156         IN  DAT_VLEN                    length,\r
157         IN  DAT_MEM_PRIV_FLAGS          privileges,\r
158         IN  DAT_VA_TYPE                 va_type);\r
159 \r
160 #if defined(__KDAPL__)\r
161 DAT_RETURN dapls_ib_mr_register_physical (\r
162         IN  DAPL_IA                     *ia_ptr,\r
163         INOUT  DAPL_LMR                 *lmr,\r
164         IN  DAT_PADDR                   phys_addr,\r
165         IN  DAT_VLEN                    length,\r
166         IN  DAT_MEM_PRIV_FLAGS          privileges);\r
167 #endif /* __KDAPL__ */\r
168 \r
169 DAT_RETURN dapls_ib_mr_deregister (\r
170         IN  DAPL_LMR                    *lmr);\r
171 \r
172 DAT_RETURN dapls_ib_mr_register_shared (\r
173         IN  DAPL_IA                     *ia_ptr,\r
174         IN  DAPL_LMR                    *lmr,\r
175         IN  DAT_MEM_PRIV_FLAGS          privileges,\r
176         IN  DAT_VA_TYPE                 va_type);\r
177 \r
178 DAT_RETURN dapls_ib_mw_alloc (\r
179         IN  DAPL_RMR                    *rmr);\r
180 \r
181 DAT_RETURN dapls_ib_mw_free (\r
182         IN  DAPL_RMR                    *rmr);\r
183 \r
184 DAT_RETURN dapls_ib_mw_bind (\r
185         IN  DAPL_RMR                    *rmr,\r
186         IN  DAPL_LMR                    *lmr,\r
187         IN  DAPL_EP                     *ep,\r
188         IN  DAPL_COOKIE                 *cookie,\r
189         IN  DAT_VADDR                   virtual_address,\r
190         IN  DAT_VLEN                    length,\r
191         IN  DAT_MEM_PRIV_FLAGS          mem_priv,\r
192         IN  DAT_BOOLEAN                 is_signaled);\r
193 \r
194 DAT_RETURN dapls_ib_mw_unbind (\r
195         IN  DAPL_RMR                    *rmr,\r
196         IN  DAPL_EP                     *ep,\r
197         IN  DAPL_COOKIE                 *cookie,\r
198         IN  DAT_BOOLEAN                 is_signaled);\r
199 \r
200 DAT_RETURN dapls_ib_query_hca (\r
201         IN  DAPL_HCA                    *hca_ptr,\r
202         OUT DAT_IA_ATTR                 *ia_attr,\r
203         OUT DAT_EP_ATTR                 *ep_attr,\r
204         OUT DAT_SOCK_ADDR6              *ip_addr);\r
205 \r
206 DAT_RETURN dapls_ib_completion_poll (\r
207         IN  DAPL_HCA                    *hca_ptr,\r
208         IN  DAPL_EVD                    *evd_ptr,\r
209         IN  ib_work_completion_t        *cqe_ptr);\r
210 \r
211 DAT_RETURN dapls_ib_completion_notify (\r
212         IN  ib_hca_handle_t             hca_handle,\r
213         IN  DAPL_EVD                    *evd_ptr,\r
214         IN  ib_notification_type_t      type);\r
215 \r
216 DAT_DTO_COMPLETION_STATUS dapls_ib_get_dto_status (\r
217         IN  ib_work_completion_t        *cqe_ptr);\r
218 \r
219 void dapls_ib_reinit_ep (\r
220         IN  DAPL_EP                     *ep_ptr);\r
221 \r
222 void dapls_ib_disconnect_clean (\r
223         IN  DAPL_EP                     *ep_ptr,\r
224         IN  DAT_BOOLEAN                 passive,\r
225         IN  const ib_cm_events_t        ib_cm_event);\r
226 \r
227 DAT_RETURN dapls_ib_get_async_event (\r
228         IN  ib_error_record_t           *cause_ptr,\r
229         OUT DAT_EVENT_NUMBER            *async_event);\r
230 \r
231 DAT_EVENT_NUMBER dapls_ib_get_dat_event (\r
232         IN  const ib_cm_events_t        ib_cm_event,\r
233         IN  DAT_BOOLEAN                 active);\r
234 \r
235 ib_cm_events_t dapls_ib_get_cm_event (\r
236         IN  DAT_EVENT_NUMBER            dat_event_num);\r
237 \r
238 DAT_RETURN dapls_ib_cm_remote_addr (\r
239         IN  DAT_HANDLE                  dat_handle,\r
240         OUT DAT_SOCK_ADDR6              *remote_ia_address);\r
241 \r
242 int dapls_ib_private_data_size (\r
243         IN  DAPL_PRIVATE                *prd_ptr,\r
244         IN  DAPL_PDATA_OP               conn_op,\r
245         IN  DAPL_HCA                    *hca_ptr);\r
246 \r
247 void \r
248 dapls_query_provider_specific_attr(\r
249         IN DAPL_IA                      *ia_ptr,\r
250         IN DAT_PROVIDER_ATTR            *attr_ptr );\r
251 \r
252 DAT_RETURN\r
253 dapls_evd_dto_wakeup (\r
254         IN DAPL_EVD                     *evd_ptr);\r
255 \r
256 DAT_RETURN\r
257 dapls_evd_dto_wait (\r
258         IN DAPL_EVD                     *evd_ptr,\r
259         IN uint32_t                     timeout);\r
260 \r
261 #ifdef DAT_EXTENSIONS\r
262 void\r
263 dapls_cqe_to_event_extension(\r
264         IN DAPL_EP                      *ep_ptr,\r
265         IN DAPL_COOKIE                  *cookie,\r
266         IN ib_work_completion_t         *cqe_ptr,\r
267         IN DAT_EVENT                    *event_ptr);\r
268 #endif\r
269 \r
270 /*\r
271  * Values for provider DAT_NAMED_ATTR\r
272  */\r
273 #define IB_QP_STATE             1       /* QP state change request */\r
274 \r
275 \r
276 #ifdef  IBAPI\r
277 #include "dapl_ibapi_dto.h"\r
278 #elif VAPI\r
279 #include "dapl_vapi_dto.h"\r
280 #elif __OPENIB__\r
281 #include "dapl_openib_dto.h"\r
282 #elif DUMMY\r
283 #include "dapl_dummy_dto.h"\r
284 #elif OPENIB\r
285 #include "dapl_ib_dto.h"\r
286 #else\r
287 #include "dapl_ibal_dto.h"\r
288 #endif\r
289 \r
290 \r
291 #endif  /*  _DAPL_ADAPTER_UTIL_H_ */\r