vxgehal-types.h revision 259065
1/*-
2 * Copyright(c) 2002-2011 Exar Corp.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification are permitted provided the following conditions are met:
7 *
8 *    1. Redistributions of source code must retain the above copyright notice,
9 *       this list of conditions and the following disclaimer.
10 *
11 *    2. Redistributions in binary form must reproduce the above copyright
12 *       notice, this list of conditions and the following disclaimer in the
13 *       documentation and/or other materials provided with the distribution.
14 *
15 *    3. Neither the name of the Exar Corporation nor the names of its
16 *       contributors may be used to endorse or promote products derived from
17 *       this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31/*$FreeBSD: releng/10.0/sys/dev/vxge/include/vxgehal-types.h 221167 2011-04-28 14:33:15Z gnn $*/
32
33#ifndef	VXGE_HAL_TYPES_H
34#define	VXGE_HAL_TYPES_H
35
36__EXTERN_BEGIN_DECLS
37
38/*
39 * enum vxge_hal_reopen_e - Open, close, or reopen option.
40 * @VXGE_HAL_RESET_ONLY: Do not (de)allocate
41 * @VXGE_HAL_OPEN_NORMAL: Do (de)allocate
42 *
43 * Enumerates options used with ring, fifo, sq, srq, cqrq, dmq and umq
44 * open and close operations. The @VXGE_HAL_RESET_ONLY can be used when
45 * resetting the device; in this case there is actually no need to free
46 * and then again malloc the memory (including DMA-able memory).
47 */
48typedef enum vxge_hal_reopen_e {
49	VXGE_HAL_RESET_ONLY	= 1,
50	VXGE_HAL_OPEN_NORMAL	= 2
51} vxge_hal_reopen_e;
52
53/*
54 * struct vxge_hal_version_t - HAL version info
55 * @version_major: Major version
56 * @version_minor: Minor version
57 * @version_fix: version fix
58 * @version_build: Version Build
59 *
60 * Structure to store version info
61 */
62typedef struct vxge_hal_version_t {
63	u32	version_major;
64	u32	version_minor;
65	u32	version_fix;
66	u32	version_build;
67} vxge_hal_version_t;
68
69/*
70 * VXGE_HAL_ETH_ALEN
71 */
72#define	VXGE_HAL_ETH_ALEN				6
73
74/*
75 * typedef macaddr_t - Ethernet address type
76 */
77typedef u8 macaddr_t[VXGE_HAL_ETH_ALEN];
78
79/*
80 * struct vxge_hal_ipv4 - IP version 4 address type
81 * @addr: IP address
82 */
83typedef struct vxge_hal_ipv4 {
84	u32	addr;
85} vxge_hal_ipv4;
86
87/*
88 * struct vxge_hal_ipv6 - IP version 6 address type
89 * @addr: IP address
90 */
91typedef struct vxge_hal_ipv6 {
92	u64	addr[2];
93} vxge_hal_ipv6;
94
95/*
96 * union vxge_hal_ipaddr_t - IP address type
97 * @ipv4: IP V4 address
98 * @ipv6: IP V6 address
99 */
100typedef union vxge_hal_ipaddr_t {
101	vxge_hal_ipv4 ipv4;
102	vxge_hal_ipv6 ipv6;
103} vxge_hal_ipaddr_t;
104
105/*
106 * typedef vxge_hal_obj_id_t - Object Id type used for Session,
107 *		  SRQ, CQRQ, STAG, LRO, SPDM etc objects
108 */
109typedef u64 vxge_hal_obj_id_t;
110
111/* basic handles */
112
113/*
114 * typedef vxge_hal_device_h - Handle to the adapter object
115 */
116typedef void *vxge_hal_device_h;
117
118/*
119 * typedef vxge_hal_vpath_h - Handle to the virtual path object returned to LL
120 */
121typedef void *vxge_hal_vpath_h;
122
123/*
124 * typedef vxge_hal_client_h - Handle passed by client for client's private data
125 */
126typedef void *vxge_hal_client_h;
127
128/*
129 * typedef vxge_hal_ring_h - Handle to the ring object used for non offload
130 *		receive
131 */
132typedef void *vxge_hal_ring_h;
133
134/*
135 * typedef vxge_hal_fifo_h - Handle to the fifo object used for non offload send
136 */
137typedef void *vxge_hal_fifo_h;
138
139
140/*
141 * typedef vxge_hal_txdl_h - Handle to the transmit desriptor list object used
142 *		for nonoffload send
143 */
144typedef void *vxge_hal_txdl_h;
145
146/*
147 * typedef vxge_hal_rxd_h - Handle to the receive desriptor object used for
148 *		nonoffload receive
149 */
150typedef void *vxge_hal_rxd_h;
151
152/*
153 * typedef vxge_hal_up_msg_h - Handle to the up message queue
154 */
155typedef void *vxge_hal_up_msg_h;
156
157/*
158 * typedef vxge_hal_down_msg_h - Handle to the down message queue
159 */
160typedef void *vxge_hal_down_msg_h;
161
162
163/*
164 * typedef vxge_hal_callback_h - Handle to callback function
165 */
166typedef void *vxge_hal_callback_h;
167
168/*
169 * enum vxge_hal_message_type_e - Enumerated message types.
170 *
171 * @VXGE_HAL_MSG_TYPE_NCE_CREATE_REQ: The NCE Create Request
172 *		 message is used by the host to create an NCE on the adapter.
173 * @VXGE_HAL_MSG_TYPE_NCE_CREATE_RESP:The NCE Create Response
174 *		 message is sent in response to the NCE Create Request
175 *		 message from the host to indicate the status of the operation
176 *		 and return the NCE ID.
177 * @VXGE_HAL_MSG_TYPE_NCE_DELETE_REQ:The NCE Delete Request
178 *		 messag is sent by the host to delete an NCE after it is no
179 *		 longer required.
180 * @VXGE_HAL_MSG_TYPE_NCE_DELETE_RESP:The NCE Delete Response
181 *		 message is sent in response to the NCE Delete Request
182 *		 message from the host to indicate the status of the operation.
183 * @VXGE_HAL_MSG_TYPE_NCE_UPDATE_MAC_REQ:The NCE Update MAC Request
184 *		  message is used by the host to modify the MAC address for
185 *		 an NCE on the adapter.
186 * @VXGE_HAL_MSG_TYPE_NCE_UPDATE_MAC_RESP:The NCE Update MAC Response
187 *		  message is sent in response to the NCE Update MAC Request
188 *		  message from the host to indicate the status of the
189 *		 operation.
190 * @VXGE_HAL_MSG_TYPE_NCE_UPDATE_RCH_TIME_REQ:The NCE Update Rch Time
191 *		 Request  message is used by the host to update the
192 *		 Reachability time for an NCE on the adapter.
193 * @VXGE_HAL_MSG_TYPE_NCE_UPDATE_RCH_TIME_RESP:The NCE Update
194 *		 Rch Time Response  message is sent in response to the NCE
195 *		 Update Rch Time Request  message from the host to indicate
196 *		 the status of updating the reachability time for the NCE.
197 * @VXGE_HAL_MSG_TYPE_NCE_QUERY_REQ:The NCE Query Request  message
198 *		 is used by the host to query an NCE on the adapter.
199 * @VXGE_HAL_MSG_TYPE_NCE_QUERY_RESP:The NCE Query Response
200 *		 message is sent in response to the NCE Query Request  message
201 *		 from the host to indicate the status of the operation.
202 * @VXGE_HAL_MSG_TYPE_NCE_RCH_TIME_EXCEEDED:This is an unsolicited message
203 *		 sent to the host by the adapter when the NCE Reach Time has
204 *		 been exceeded.
205 * @VXGE_HAL_MSG_TYPE_CQRQ_CREATE_REQ:The CQRQ Create Request
206 *		 message is used by the host to create a CQRQ on the adapter.
207 * @VXGE_HAL_MSG_TYPE_CQRQ_CREATE_RESP:The CQRQ Create Response
208 *		 message is sent in response to the CQRQ Create Request
209 *		 message from the host to indicate the status of the operation.
210 * @VXGE_HAL_MSG_TYPE_CQRQ_DELETE_REQ:The CQRQ Delete Request
211 *		 message is used by the host to destroy a CQRQ on the adapter.
212 * @VXGE_HAL_MSG_TYPE_CQRQ_DELETE_RESP:The CQRQ Delete Response
213 *		 message is sent in response to the CQRQ Delete Request
214 *		 message from the host to indicate the status of the operation.
215 * @VXGE_HAL_MSG_TYPE_CQRQ_MODIFY_REQ:The CQRQ Modify Request
216 *		 message is used by the host to modify fields for an
217 *		 CQRQ on the adapter. The adapter will make the following
218 *		 checks
219 *		 - The CQRQ ID is valid
220 *		 All other checks must be performed by the host software.
221 * @VXGE_HAL_MSG_TYPE_CQRQ_MODIFY_RESP:The CQRQ Modify Response
222 *		 message is sent in response to the CQRQ Modify Request
223 *		 message from the host to indicate the status of the operation.
224 * @VXGE_HAL_MSG_TYPE_CQRQ_QUERY_REQ:The CQRQ Query Request
225 *		 message is used by the host to query the properties of a CQRQ
226 *		 on the adapter
227 * @VXGE_HAL_MSG_TYPE_CQRQ_QUERY_RESP:The CQRQ Query Response
228 *		 message is sent in response to the CQRQ Query Request
229 *		 message from the host to indicate the status of the operation
230 *		 and return any CQRQ properties to the host.
231 * @VXGE_HAL_MSG_TYPE_CQRQ_ARM_REQ:The CQRQ Arm Request  message
232 *		 is used by the host to change the armed state of a CQRQ on the
233 *		 adapter. The armed state determines how the adapter will
234 *		 interrupt the host when RDMA messages arrive.
235 * @VXGE_HAL_MSG_TYPE_CQRQ_ARM_RESP:The CQRQ Arm Response  message
236 *		 is sent in response to the CQRQ Arm Request  message from the
237 *		 host to indicate the status of arming the CQRQ
238 * @VXGE_HAL_MSG_TYPE_CQRQ_EVENT_NOTIF:The CQRQ Event Notification
239 *		  message is sent to host when the adapter encounters a
240 *		 problem when DMAing CQEs from host memory. There are three
241 *		 conditions, EOL, Low Threshold, Drained
242 * @VXGE_HAL_MSG_TYPE_CQRQ_FIRST_CQE_BW_NOTIF_REQ:The CQRQ
243 *		 First CQE BW Notification Request  message is used by the
244 *		 host to notify the adapter after it has configured the first
245 *		 CQE block wrapper(s). It is required to pass the host address
246 *		 and number of bytes of the first CQE block wrapper in host
247 *		 memory.
248 * @VXGE_HAL_MSG_TYPE_CQRQ_FIRST_CQE_BW_NOTIF_RESP:The CQRQ
249 *		 First CQE BW Notification Response  message is sent in
250 *		 response to the CQRQ First CQE BW Notification Request
251 *		 message from the host to acknowledge the notification from
252 *		 host and return the status of updating the CQRQ record with
253 *		 the address and bytes of the first CQE block wrapper.
254 * @VXGE_HAL_MSG_TYPE_SRQ_CREATE_REQ:The SRQ Create Request
255 *		 message is used by the host to create an SRQ on the adapter.
256 * @VXGE_HAL_MSG_TYPE_SRQ_CREATE_RESP:The SRQ Create Response
257 *		 message is sent in response to the SRQ Create Request
258 *		 message from the host to indicate the status of the operation
259 *		 and return the SRQ ID to the host.
260 * @VXGE_HAL_MSG_TYPE_SRQ_DELETE_REQ:The SRQ Delete Request
261 *		 message is used by the host to delete an SRQ on the adapter.
262 * @VXGE_HAL_MSG_TYPE_SRQ_DELETE_RESP:The SRQ Delete Response
263 *		 message is sent in response to the SRQ Delete Request
264 *		 message from the host to indicate the status of the operation.
265 * @VXGE_HAL_MSG_TYPE_SRQ_MODIFY_REQ:The SRQ Modify Request
266 *		 message is used by the host to modify an SRQ on the adapter.
267 *		 The host must send down all the fields to modify. To simplify
268 *		 the adapter firmware there will be no mask to modify individual
269 *		 fields.
270 * @VXGE_HAL_MSG_TYPE_SRQ_MODIFY_RESP:The SRQ Modify Response
271 *		 message is sent in response to the SRQ Modify Request
272 *		 message from the host to indicate the status of the operation.
273 * @VXGE_HAL_MSG_TYPE_SRQ_QUERY_REQ:The SRQ Query Request  message
274 *		 is used by the host to query the properties of an SRQ on the
275 *		 adapter.
276 * @VXGE_HAL_MSG_TYPE_SRQ_QUERY_RESP:The SRQ Query Response
277 *		 message is sent in response to the SRQ Query Request  message
278 *		 from the host to indicate the status of the operation and
279 *		 return any SRQ properties to the host
280 * @VXGE_HAL_MSG_TYPE_SRQ_ARM_REQ:The SRQ Arm Request  message is
281 *		 sent to the adapter to arm or re-arm the SRQ limit.
282 * @VXGE_HAL_MSG_TYPE_SRQ_ARM_RESP:The SRQ Arm Response  is sent
283 *		 to the host to acknowledge the SRQ Arm Request  and indicate
284 *		 the status of arming or re-arming the SRQ limit.
285 * @VXGE_HAL_MSG_TYPE_SRQ_EVENT_NOTIF:The SRQ Event Notification
286 *		 iMSG is used to alert the host that the adapter has encountered
287 *		 one of the following conditions when DMAing WQEs from host
288 *		 memory - EOL (End of list of WQEs in host memory),Low Threshold
289 *		 (The adapter is running low on available WQEs),Drained (Adapter
290 *		 out of WQEs because of EOL condition or adapter use faster than
291 *		 DMA), SRQ Limit (The number of available WQEs on adapter + host
292 *		 less than SRQ limit and the SRQ limit is armed).
293 * @VXGE_HAL_MSG_TYPE_SRQ_FIRST_WQE_BW_NOTIF_REQ:The SRQ First
294 *		 WQE BW Notification Request  is used to alert the adapter of
295 *		 the location of the first WQE block wrapper after initially
296 *		 creating the SRQ. It is required because the host cannot
297 *		 pre-post WQEs when creating the SRQ.
298 * @VXGE_HAL_MSG_TYPE_SRQ_FIRST_WQE_BW_NOTIF_RESP:The SRQ First
299 *		 WQE BW Notification Response  message is sent in response to
300 *		 the SRQ First WQE BW Notification Request  message from the
301 *		 host to indicate the status of the operation.
302 * @VXGE_HAL_MSG_TYPE_SRQ_WQE_BLOCKS_ADDED_NOTIF_REQ:The SRQ
303 *		 WQE Blocks Added Notification Request  is used to alert the
304 *		 adapter that new WQEs have been posted in host memory. This is
305 *		 required in order for the adapter to support the concept of SRQ
306 *		 limit.
307 * @VXGE_HAL_MSG_TYPE_SRQ_WQE_BLOCKS_ADDED_NOTIF_RESP:The SRQ
308 *		 WQE Blocks Added Notification Response  is sent by the adapter
309 *		 in response to the SRQ WQE Blocks Added Notification Request
310 *		 to acknowledge the notification from the host and to return any
311 *		 status in the event a problem occurred.
312 * @VXGE_HAL_MSG_TYPE_SRQ_RETURN_UNUSED_WQES_REQ:The SRQ Return WQEs
313 *		 Request  message may be sent by the host to reclaim unused
314 *		 WQEs from the head of the WQE block wrapper list. Its purpose
315 *		 is to reclaim over-provisioned WQEs for an SRQ. The host may
316 *		 choose to reclaim WQEs from an SRQ at any time.
317 * @VXGE_HAL_MSG_TYPE_SRQ_RETURN_UNUSED_WQES_RESP:The SRQ Return WQEs
318 *		  is sent in reply to the SRQ Return WQEs Request  message
319 *		 to reclaim unused WQEs from an over-provisioned SRQ.
320 * @VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_NSMR_REQ:This downward message
321 *		 commands the adapter to create a new non-shared memory region
322 *		 (NSMR) in the invalid state. This message is used to implement
323 *		 the Allocate Non-Shared Memory Region memory management verb.
324 * @VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_NSMR_RESP:This upward message
325 *		 communicates to the host the success or failure of the
326 *		 corresponding STAG Allocate NSMR Request  message
327 * @VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_MW_REQ:This downward message
328 *		 commands the adapter to allocate a new memory window (MW).
329 *		 This message is used to implement the Allocate Memory Window
330 *		 memory management verb.
331 * @VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_MW_RESP:This upward message
332 *		 communicates to the host the success or failure of the
333 *		 corresponding STAG Allocate MW Request  message.
334 * @VXGE_HAL_MSG_TYPE_STAG_DE_ALLOCATE_REQ:This downward message
335 *		 commands the adapter to deallocate the specified STag, freeing
336 *		 up any on-adapter resources
337 * @VXGE_HAL_MSG_TYPE_STAG_DE_ALLOCATE_RESP:This upward message
338 *		 communicates to the host the success or failure of the
339 *		 corresponding STAG De-allocate Request  message.
340 * @VXGE_HAL_MSG_TYPE_STAG_REGISTER_NSMR_REQ:This downward message
341 *		 commands the adapter to register a non-shared memory region.
342 *		 This message is used to implement Register NSMR memory
343 *		 management verb Fast registration cannot be performed with
344 *		 this . It can only be done via the PostSQ TOWI.
345 * @VXGE_HAL_MSG_TYPE_STAG_REGISTER_NSMR_RESP:This upward message
346 *		 communicates to the host the success or failure of the
347 *		 corresponding STAG Register NSMR Request  message.
348 * @VXGE_HAL_MSG_TYPE_STAG_RE_REGISTER_NSMR_REQ:This downward
349 *		 message commands the adapter to change the memory registration
350 *		 of an existing NSMR to create a new NSMR in the valid state.
351 *		 This message is used to implement the Reregister Non-Shared
352 *		 Memory Region memory management verb.
353 * @VXGE_HAL_MSG_TYPE_STAG_RE_REGISTER_NSMR_RESP:This upward message
354 *		 communicates to the host the success or failure of the
355 *		 corresponding STAG Re-register NSMR Request  message
356 * @VXGE_HAL_MSG_TYPE_STAG_REGISTER_SMR_REQ:This downward message
357 *		 commands the adapter to create a shared memory region (SMR)
358 *		 based on an existing memory region, either shared(SMR) or
359 *		 non-shared(NSMR). This message is used to implement the
360 *		 Register Shared Memory Region verb.
361 * @VXGE_HAL_MSG_TYPE_STAG_REGISTER_SMR_RESP:This upward message
362 *		 communicates to the host the success or failure of the
363 *		 corresponding STAG Re-register NSMR Request  message.
364 * @VXGE_HAL_MSG_TYPE_STAG_QUERY_REQ:This downward message commands
365 *		 the adapter to return the specifics of the specified STag.
366 *		 This message is used to implement the Query Memory Region
367 *		 memory management verb and the Query Memory Window memory
368 *		 management verb. Memory region and memory window querying
369 *		 could be handled entirely by the host software without any
370 *		 adapter involvement. The STAG Query Request  and STAG
371 *		 Query Response  messages allow the host to implement
372 *		 adapter-based STag querying.
373 * @VXGE_HAL_MSG_TYPE_STAG_QUERY_RESP:This upward message
374 *		 communicates to the host the specifics of the queried STag.
375 *		 The response message does not return the underlying the PBL.
376 * @VXGE_HAL_MSG_TYPE_STAG_VALID_LOCAL_TAG_REQ:This message
377 *		 commands the adapter to transition an invalid STag to the
378 *		 valid state without changing any of its other attributes.
379 *		 The Validate-STag-/Validate-STag-Response- messages
380 *		 allow a Neterion-proprietary ability to revalidate an invalid
381 *		 STag without changing any of its attributes or its PBL. This
382 *		 is expected to be useful in situations where an STag is
383 *		 invalidated and then revalidated with the same attributes
384 *		 including PBL. Using this message, rather than the more
385 *		 general Reregister NSMR, saves the overhead of transferring
386 *		 the PBL to the adapter.
387 * @VXGE_HAL_MSG_TYPE_STAG_VALID_LOCAL_TAG_RESP:This upward message
388 *		 communicates to the host the success of failure of the
389 *		 corresponding STAG Validate Local Tag Request  message.
390 * @VXGE_HAL_MSG_TYPE_STAG_INVALID_LOCAL_TAG_REQ: The STAG
391 *		 Invalidate Local Tag Request  message is used by the host to
392 *		 invalidate a local STAG. This message provides an alternative
393 *		 route for the normal TOWI based STAG Invalidation. It allows a
394 *		 kernel mode process to invalidate an STAG without writing
395 *		 a TOWI.
396 * @VXGE_HAL_MSG_TYPE_STAG_INVALID_LOCAL_TAG_RESP: This upward
397 *		 message communicates to the host the success or failure of the
398 *		 corresponding STAG Invalidate Local Tag Request  message.
399 * @VXGE_HAL_MSG_TYPE_STAG_BIND_MW_REQ: This downward message commands
400 *		 the adapter to bind an existing (invalid) MW to an existing
401 *		 (valid) MR.  This message provides an alternative to the TOWI
402 *		 based implementation allowing the  path be used for MW binding
403 * @VXGE_HAL_MSG_TYPE_STAG_BIND_MW_RESP: This upward message
404 *		 communicates to the host the success or failure of the
405 *		 corresponding STAG Bind MW Request  message.
406 * @VXGE_HAL_MSG_TYPE_STAG_FAST_REGISTER_NSMR_REQ: The STAG Fast
407 *		 Register NSMR Request  provides an alternative way to fast
408 *		 register an NSMR instead of going to the TOWI path.
409 * @VXGE_HAL_MSG_TYPE_STAG_FAST_REGISTER_NSMR_RESP:  The STag Fast
410 *		 Register NSMR Response  message is sent to the host from
411 *		 the adapter in response to the original  message. It
412 *		 indicates the status of fast registering the NSMR.
413 * @VXGE_HAL_MSG_TYPE_TCP_OPEN_REQ:The TCP Open Request  message
414 *		 is sent by the host to open a TCP connection on the adapter.
415 * @VXGE_HAL_MSG_TYPE_TCP_OPEN_RESP:The TCP Open Response  message
416 *		 is sent in response to a TCP Open Request  message to indicate
417 *		 that the TCP session has been opened
418 * @VXGE_HAL_MSG_TYPE_TCP_PROMOTE_TO_IWARP_REQ:The TCP Promote to
419 *		 iWARP Request  message is sent from the host to the adapter
420 *		 in order to migrate an existing bytestream session to iWARP
421 *		 mode.
422 * @VXGE_HAL_MSG_TYPE_TCP_PROMOTE_TO_IWARP_RESP:The TCP Promote to
423 *		 iWARP Response  message is sent to the host to indicate the
424 *		 status of promoting an existing bytestream session to iWARP
425 *		 mode.
426 * @VXGE_HAL_MSG_TYPE_TCP_MODIFY_REQ:The TCP Modify Request  message
427 *		 is sent by the host to modify the attributes associated with a
428 *		 bytestream or iWARP session.
429 * @VXGE_HAL_MSG_TYPE_TCP_MODIFY_RESP:The TCP Modify Response  message
430 *		 is sent to the host in response to a TCP Modify Request message
431 *		 to indicate the status of changing the attributes associated
432 *		 with the bytestream or iWARP session.
433 * @VXGE_HAL_MSG_TYPE_TCP_DELETE_REQ:The TCP Delete Request
434 *		 message is sent by the host to delete a bytestream TCP session
435 *		 on the adapter.
436 * @VXGE_HAL_MSG_TYPE_TCP_DELETE_RESP:The TCP Delete Response
437 *		 message is sent in response to a TCP Delete Request  message
438 *		 to indicate that the TCP session has been deleted.
439 * @VXGE_HAL_MSG_TYPE_TCP_ABORT_REQ: The TCP Abort Request  message
440 *		 is used to abort a bytestream or iWARP session.
441 * @VXGE_HAL_MSG_TYPE_TCP_ABORT_RESP: The TCP Abort Response
442 *		 message is sent to the host from the adapter after aborting the
443 *		 bytestream or iWARP session.
444 * @VXGE_HAL_MSG_TYPE_TCP_ESTABLISHED: The TCP Established  message is
445 *		 an un-solicited event sent from the adapter to the host when
446 *		 the SYN+ACK segment arrives (active opener) or the ACK segment
447 *		(passive opener) arrives at the adapter.
448 * @VXGE_HAL_MSG_TYPE_TCP_FIN_RECEIVED: The TCP FIN Received  message
449 *		 is an un-solicited event sent from the adapter to the host on
450 *		 session teardown. It indicates that the FIN segment has been
451 *		 received from the remote end and the session is now in TIME
452 *		 WAIT state.
453 * @VXGE_HAL_MSG_TYPE_TCP_TIME_WAIT_DONE: The TCP Time Wait Done  message
454 *		 is sent from the adapter to the host to indicate when the TCP
455 *		 session leaves the TIME WAIT state.
456 * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_RXWIN: This message is used for receive
457 *		 window updates, both for rx window flow control updates(updates
458 *		 to rcv_buf as data is consumed by the application on the host)
459 *		 and for maximum receive window size updates (when the receive
460 *		 buffer size changes on the host)
461 * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_MSS: This  is sent by the host to the
462 *		 adapter to update the MSS for the session.
463 * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_IP_HEADER: The TCP Update IP Header
464 *		 is used to update the IP TOS and IP flow label in the IP header
465 * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_KEEPALIVE: The TCP Update Keepalive
466 *		 message is sent from the host to the adapter to update the
467 *		 keep-alive timer for the session.
468 * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_FAILURE: The TCP Update Failure
469 *		 message is sent to the host from the adapter in the event that
470 *		 one of the TCP update messages failed for the session. Normally
471 *		 these messages do not require a reply and therefore there is no
472 *		 response from the adapter. The TCP Update messages include:
473 *		 VXGE_HAL_MSG_TYPE_TCP_UPDATE_RXWIN
474 *		 VXGE_HAL_MSG_TYPE_TCP_UPDATE_MSS
475 *		 VXGE_HAL_MSG_TYPE_TCP_UPDATE_IP_HEADER
476 *		 VXGE_HAL_MSG_TYPE_TCP_UPDATE_KEEPALIVE
477 * @VXGE_HAL_MSG_TYPE_TCP_FIN_ACK_RECEIVED:The TCP FIN ACK Received
478 *		 message is an unsolicited message sent to the host from the
479 *		 adapter on received of the ACK segment acknowledging that the
480 *		 remote end has received the FIN. It is required for Sun's KPI
481 *		 interface.
482 * @VXGE_HAL_MSG_TYPE_TCP_RELINK_TO_NCE_REQ:The TCP Relink to NCE
483 *		 Request  would be used to change the NCE entry associated
484 *		 with a particular bytestream or iWARP session. This message
485 *		 could be used to change the NCE of a group of sessions if a
486 *		 particular path went down and need to be replaced by a new path
487 *		 The host is responsible for tracking the mapping of sessions to
488 *		 NCEs so that when de-allocating an NCE it does not de-allocate
489 *		 on that is still in use by a particular session.
490 * @VXGE_HAL_MSG_TYPE_TCP_RELINK_TO_NCE_RESP:This message is sent in
491 *		 response to the TCP Relink to NCE Request  to indicate the
492 *		 status of re-linking the TCP session to a particular NCE.
493 * @VXGE_HAL_MSG_TYPE_TCP_QP_LIMIT_EXCEEDED:The TCP QP Limit Exceeded
494 *		 Notification  message is sent to the host when an iWARP
495 *		 session has reached its QP Limit and the QP limit was armed.
496 * @VXGE_HAL_MSG_TYPE_TCP_RDMA_TERMINATE_RECEIVED:The TCP RDMA Terminate
497 *		 Received  message is an un-solicited event sent from the
498 *		 adapter to the host when an RDMA terminate message has been
499 *		 received from the remote end.
500 * @VXGE_HAL_MSG_TYPE_LRO_OPEN_REQ:The LRO Open Request  message
501 *		 is sent by the host to open an LRO connection on the adapter.
502 *		 There is no PE context for an LRO session. The PE is involved
503 *		 for timer purposes and transferring messages to the RPE but it
504 *		 contains no session context.
505 * @VXGE_HAL_MSG_TYPE_LRO_OPEN_RESP:The LRO Open Response  message
506 *		 is sent in response to a LRO Open Request  message to
507 *		 indicate that the LRO session has been opened.
508 * @VXGE_HAL_MSG_TYPE_LRO_END_CLASSIF_REQ:The LRO End
509 *		 Classification Request  is sent by the host before the LRO
510 *		 Delete Request  to tell the adapter to stop steering Rx
511 *		 frames from that session into the LRO path. The host would
512 *		 later call LRO Delete Request . Separating these two calls
513 *		 allows enough time to pass so that frames already in the FB can
514 *		 be drained out, thereby avoiding the need for frame reversion.
515 * @VXGE_HAL_MSG_TYPE_LRO_END_CLASSIF_RESP:The LRO End
516 *		 Classification Response  message is sent in response to a
517 *		 LRO End Classification Request  message to indicate that
518 *		 classification has been stopped for the LRO session and the
519 *		 host can proceed with deleting the LRO session.
520 * @VXGE_HAL_MSG_TYPE_LRO_DELETE_REQ:The LRO Delete Request
521 *		 message is sent by the host to delete a LRO session on the
522 *		 adapter.It might be possible in the future to replace this
523 *		 message and the TCP Delete Request  with a single common
524 *		 message since there doesn't seem to be any difference between
525 *		 the two anymore.
526 * @VXGE_HAL_MSG_TYPE_LRO_DELETE_RESP:The LRO Delete Response
527 *		 message is sent in response to a LRO Delete Request  message
528 *		 to indicate that the LRO session has been deleted.
529 * @VXGE_HAL_MSG_TYPE_LRO_SESSION_CANDIDATE_NOTIF:This msg
530 *		 indicates to the host that the adapter's autoLRO feature has
531 *		 identified a candidate LRO session. No response from the host
532 *		 is required. (If the host did decide to act on this information
533 *		 from the adapter, the host would use the usual LRO Open Request
534 *		).
535 * @VXGE_HAL_MSG_TYPE_SPDM_OPEN_REQ:The SPDM Open Request  message
536 *		 is sent by the host to open an SPDM connection on the adapter.
537 *		 There is no RPE or PE context for an SPDM session. The ONE is
538 *		 not involved in this type of classification.
539 * @VXGE_HAL_MSG_TYPE_SPDM_OPEN_RESP:The SPDM Open Response
540 *		 message is sent in response to a SPDM Open Request  message
541 *		 to indicate the status of creating the SPDM session.
542 * @VXGE_HAL_MSG_TYPE_SPDM_DELETE_REQ:The SPDM Delete Request
543 *		 message is sent by the host to delete an SPDM session on the
544 *		 adapter. It might be possible in the future to replace this
545 *		 message and the LRO/TCP Delete Request  with a single common
546 *		 message since there doesn't seem to be any difference between
547 *		 the two anymore.
548 * @VXGE_HAL_MSG_TYPE_SPDM_DELETE_RESP:The SPDM Delete Response
549 *		 message is sent in response to a SPDM Delete Request  message
550 *		 to indicate that the SPDM session has been deleted.
551 * @VXGE_HAL_MSG_TYPE_SESSION_EVENT_NOTIF:The Session Event
552 *		 Notification  message is an unsolicited message from the
553 *		 adapter used to inform the host about an unexpected condition
554 *		 on a bytestream or iWARP session.
555 * @VXGE_HAL_MSG_TYPE_SESSION_QUERY_REQ:The Session Query Request
556 *		 message is sent by the host to query the attributes of an
557 *		 existing offloaded session. This message may be used to query
558 *		 the attributes of an SPDM, LRO, bytestream or iWARP session.
559 *		 Initially this will be a single message used for all purposes.
560 *		 In the future this may be split up into multiple messages
561 *		 allowing the user to query the pecific context for an SPDM,
562 *		 LRO, iWARP, or bytestream session.
563 * @VXGE_HAL_MSG_TYPE_SESSION_QUERY_RESP:The Session Query Response
564 *		  message is sent in response to a Session Query Request
565 *		 message to return the attributes associated with the specified
566 *		 session
567 * @VXGE_HAL_MSG_TYPE_SESSION_RETURN_IN_PROG_WQES: This message is
568 *		 generated by the adapter during deletion of a session to return
569 *		 any WQEs that may be in the in-progress list for the session.If
570 *		 a WQE is in the in-progress list it is owned by the session and
571 *		 cannot be returned to the head of WQE list for an SRQ because
572 *		 of ordering issues. Therefore, it must be returned to the host
573 *		 at which point the host may choose to destroy the resource or
574 *		 simply re-post the WQE for re-use.
575 * @VXGE_HAL_MSG_TYPE_SESSION_FRAME_WRITE:The Frame Write  message is
576 *		 generated by the adapter in order to send certain frames to the
577 *		 host via the  path instead of the normal path. Frames will be
578 *		 sent to the host under the following conditions:
579 *		 1) mis-aligned frames that the adapter cannot place
580 *		 2) during debugging to look at the contents of the frame
581 *		 In addition to this,a RDMA terminate message will also be sent
582 *		 via a  message but in this case it will be sent in a TCP RDMA
583 *		 Terminate Received  message. Frames arriving in the  will
584 *		 not have markers stripped. Instead the host will be responsible
585 *		 for stripping markers and taking appropriate action on the
586 *		 received frame.
587 * @VXGE_HAL_MSG_TYPE_SQ_CREATE_REQ: This is HAL private message for.
588 *		 SQ create. Never used.
589 * @VXGE_HAL_MSG_TYPE_SQ_CREATE_RESP: This is HAL private message
590 *		 for SQ create response. This is reported to clients by HAL.
591 * @VXGE_HAL_MSG_TYPE_SQ_DELETE_REQ: This is HAL private message for.
592 *		 SQ delete. Never used.
593 * @VXGE_HAL_MSG_TYPE_SQ_DELETE_RESP:This is HAL private message
594 *		 for SQ delete response. This is reported to clients by HAL.
595 *
596 * Message types supported by the adapter and HAL Private messages.
597 */
598typedef enum vxge_hal_message_type_e {
599	VXGE_HAL_MSG_TYPE_NCE_CREATE_REQ			= 1,
600	VXGE_HAL_MSG_TYPE_NCE_CREATE_RESP			= 2,
601	VXGE_HAL_MSG_TYPE_NCE_DELETE_REQ			= 3,
602	VXGE_HAL_MSG_TYPE_NCE_DELETE_RESP			= 4,
603	VXGE_HAL_MSG_TYPE_NCE_UPDATE_MAC_REQ			= 5,
604	VXGE_HAL_MSG_TYPE_NCE_UPDATE_MAC_RESP			= 6,
605	VXGE_HAL_MSG_TYPE_NCE_UPDATE_RCH_TIME_REQ		= 7,
606	VXGE_HAL_MSG_TYPE_NCE_UPDATE_RCH_TIME_RESP		= 8,
607	VXGE_HAL_MSG_TYPE_NCE_QUERY_REQ				= 9,
608	VXGE_HAL_MSG_TYPE_NCE_QUERY_RESP			= 10,
609	VXGE_HAL_MSG_TYPE_NCE_RCH_TIME_EXCEEDED			= 86,
610	VXGE_HAL_MSG_TYPE_CQRQ_CREATE_REQ			= 11,
611	VXGE_HAL_MSG_TYPE_CQRQ_CREATE_RESP			= 12,
612	VXGE_HAL_MSG_TYPE_CQRQ_DELETE_REQ			= 13,
613	VXGE_HAL_MSG_TYPE_CQRQ_DELETE_RESP			= 14,
614	VXGE_HAL_MSG_TYPE_CQRQ_MODIFY_REQ			= 16,
615	VXGE_HAL_MSG_TYPE_CQRQ_MODIFY_RESP			= 17,
616	VXGE_HAL_MSG_TYPE_CQRQ_QUERY_REQ			= 18,
617	VXGE_HAL_MSG_TYPE_CQRQ_QUERY_RESP			= 19,
618	VXGE_HAL_MSG_TYPE_CQRQ_ARM_REQ				= 20,
619	VXGE_HAL_MSG_TYPE_CQRQ_ARM_RESP				= 21,
620	VXGE_HAL_MSG_TYPE_CQRQ_EVENT_NOTIF			= 22,
621	VXGE_HAL_MSG_TYPE_CQRQ_FIRST_CQE_BW_NOTIF_REQ		= 23,
622	VXGE_HAL_MSG_TYPE_CQRQ_FIRST_CQE_BW_NOTIF_RESP		= 24,
623	VXGE_HAL_MSG_TYPE_SRQ_CREATE_REQ			= 27,
624	VXGE_HAL_MSG_TYPE_SRQ_CREATE_RESP			= 28,
625	VXGE_HAL_MSG_TYPE_SRQ_DELETE_REQ			= 29,
626	VXGE_HAL_MSG_TYPE_SRQ_DELETE_RESP			= 30,
627	VXGE_HAL_MSG_TYPE_SRQ_MODIFY_REQ			= 31,
628	VXGE_HAL_MSG_TYPE_SRQ_MODIFY_RESP			= 32,
629	VXGE_HAL_MSG_TYPE_SRQ_QUERY_REQ				= 33,
630	VXGE_HAL_MSG_TYPE_SRQ_QUERY_RESP			= 34,
631	VXGE_HAL_MSG_TYPE_SRQ_ARM_REQ				= 35,
632	VXGE_HAL_MSG_TYPE_SRQ_ARM_RESP				= 36,
633	VXGE_HAL_MSG_TYPE_SRQ_EVENT_NOTIF			= 37,
634	VXGE_HAL_MSG_TYPE_SRQ_FIRST_WQE_BW_NOTIF_REQ		= 38,
635	VXGE_HAL_MSG_TYPE_SRQ_FIRST_WQE_BW_NOTIF_RESP		= 39,
636	VXGE_HAL_MSG_TYPE_SRQ_WQE_BLOCKS_ADDED_NOTIF_REQ	= 40,
637	VXGE_HAL_MSG_TYPE_SRQ_WQE_BLOCKS_ADDED_NOTIF_RESP	= 41,
638	VXGE_HAL_MSG_TYPE_SRQ_RETURN_UNUSED_WQES_REQ		= 96,
639	VXGE_HAL_MSG_TYPE_SRQ_RETURN_UNUSED_WQES_RESP		= 42,
640	VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_NSMR_REQ		= 43,
641	VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_NSMR_RESP		= 44,
642	VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_MW_REQ			= 45,
643	VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_MW_RESP			= 46,
644	VXGE_HAL_MSG_TYPE_STAG_DE_ALLOCATE_REQ			= 47,
645	VXGE_HAL_MSG_TYPE_STAG_DE_ALLOCATE_RESP			= 48,
646	VXGE_HAL_MSG_TYPE_STAG_REGISTER_NSMR_REQ		= 49,
647	VXGE_HAL_MSG_TYPE_STAG_REGISTER_NSMR_RESP		= 50,
648	VXGE_HAL_MSG_TYPE_STAG_RE_REGISTER_NSMR_REQ		= 51,
649	VXGE_HAL_MSG_TYPE_STAG_RE_REGISTER_NSMR_RESP		= 52,
650	VXGE_HAL_MSG_TYPE_STAG_REGISTER_SMR_REQ			= 53,
651	VXGE_HAL_MSG_TYPE_STAG_REGISTER_SMR_RESP		= 54,
652	VXGE_HAL_MSG_TYPE_STAG_QUERY_REQ			= 55,
653	VXGE_HAL_MSG_TYPE_STAG_QUERY_RESP			= 56,
654	VXGE_HAL_MSG_TYPE_STAG_VALID_LOCAL_TAG_REQ		= 57,
655	VXGE_HAL_MSG_TYPE_STAG_VALID_LOCAL_TAG_RESP		= 58,
656	VXGE_HAL_MSG_TYPE_STAG_INVALID_LOCAL_TAG_REQ		= 87,
657	VXGE_HAL_MSG_TYPE_STAG_INVALID_LOCAL_TAG_RESP		= 88,
658	VXGE_HAL_MSG_TYPE_STAG_BIND_MW_REQ			= 89,
659	VXGE_HAL_MSG_TYPE_STAG_BIND_MW_RESP			= 90,
660	VXGE_HAL_MSG_TYPE_STAG_FAST_REGISTER_NSMR_REQ		= 91,
661	VXGE_HAL_MSG_TYPE_STAG_FAST_REGISTER_NSMR_RESP		= 92,
662	VXGE_HAL_MSG_TYPE_TCP_OPEN_REQ				= 59,
663	VXGE_HAL_MSG_TYPE_TCP_OPEN_RESP				= 60,
664	VXGE_HAL_MSG_TYPE_TCP_PROMOTE_TO_IWARP_REQ		= 61,
665	VXGE_HAL_MSG_TYPE_TCP_PROMOTE_TO_IWARP_RESP		= 62,
666	VXGE_HAL_MSG_TYPE_TCP_MODIFY_REQ			= 98,
667	VXGE_HAL_MSG_TYPE_TCP_MODIFY_RESP			= 99,
668	VXGE_HAL_MSG_TYPE_TCP_DELETE_REQ			= 63,
669	VXGE_HAL_MSG_TYPE_TCP_DELETE_RESP			= 64,
670	VXGE_HAL_MSG_TYPE_TCP_ABORT_REQ				= 65,
671	VXGE_HAL_MSG_TYPE_TCP_ABORT_RESP			= 66,
672	VXGE_HAL_MSG_TYPE_TCP_ESTABLISHED			= 78,
673	VXGE_HAL_MSG_TYPE_TCP_FIN_RECEIVED			= 79,
674	VXGE_HAL_MSG_TYPE_TCP_TIME_WAIT_DONE			= 80,
675	VXGE_HAL_MSG_TYPE_TCP_UPDATE_RXWIN			= 81,
676	VXGE_HAL_MSG_TYPE_TCP_UPDATE_MSS			= 82,
677	VXGE_HAL_MSG_TYPE_TCP_UPDATE_IP_HEADER			= 83,
678	VXGE_HAL_MSG_TYPE_TCP_UPDATE_KEEPALIVE			= 84,
679	VXGE_HAL_MSG_TYPE_TCP_UPDATE_FAILURE			= 85,
680	VXGE_HAL_MSG_TYPE_TCP_FIN_ACK_RECEIVED			= 87,
681	VXGE_HAL_MSG_TYPE_TCP_RELINK_TO_NCE_REQ			= 88,
682	VXGE_HAL_MSG_TYPE_TCP_RELINK_TO_NCE_RESP		= 89,
683	VXGE_HAL_MSG_TYPE_TCP_QP_LIMIT_EXCEEDED			= 100,
684	VXGE_HAL_MSG_TYPE_TCP_RDMA_TERMINATE_RECEIVED		= 101,
685	VXGE_HAL_MSG_TYPE_LRO_OPEN_REQ				= 67,
686	VXGE_HAL_MSG_TYPE_LRO_OPEN_RESP				= 68,
687	VXGE_HAL_MSG_TYPE_LRO_END_CLASSIF_REQ			= 69,
688	VXGE_HAL_MSG_TYPE_LRO_END_CLASSIF_RESP			= 70,
689	VXGE_HAL_MSG_TYPE_LRO_DELETE_REQ			= 71,
690	VXGE_HAL_MSG_TYPE_LRO_DELETE_RESP			= 72,
691	VXGE_HAL_MSG_TYPE_LRO_SESSION_CANDIDATE_NOTIF		= 73,
692	VXGE_HAL_MSG_TYPE_SPDM_OPEN_REQ				= 74,
693	VXGE_HAL_MSG_TYPE_SPDM_OPEN_RESP			= 75,
694	VXGE_HAL_MSG_TYPE_SPDM_DELETE_REQ			= 76,
695	VXGE_HAL_MSG_TYPE_SPDM_DELETE_RESP			= 77,
696	VXGE_HAL_MSG_TYPE_SESSION_EVENT_NOTIF			= 102,
697	VXGE_HAL_MSG_TYPE_SESSION_QUERY_REQ			= 103,
698	VXGE_HAL_MSG_TYPE_SESSION_QUERY_RESP			= 104,
699	VXGE_HAL_MSG_TYPE_SESSION_RETURN_IN_PROG_WQES		= 97,
700	VXGE_HAL_MSG_TYPE_SESSION_FRAME_WRITE			= 105,
701	/* The following are private for HAL */
702	VXGE_HAL_MSG_TYPE_SQ_CREATE_REQ				= 65537,
703	VXGE_HAL_MSG_TYPE_SQ_CREATE_RESP			= 65538,
704	VXGE_HAL_MSG_TYPE_SQ_DELETE_REQ				= 65539,
705	VXGE_HAL_MSG_TYPE_SQ_DELETE_RESP			= 65540
706} vxge_hal_message_type_e;
707
708
709/*
710 * struct vxge_hal_opaque_handle_t - Opaque handle used by the hal and clients
711 *				  to save their contexts
712 * @vpath_handle: Virtual path handle
713 * @hal_priv: Private data which HAL assigns
714 * @client_priv: Client assigned private data
715 *
716 * This structure is used to store the client and hal data and pass as
717 * opaque handle in the messages.
718 */
719typedef struct vxge_hal_opaque_handle_t {
720	vxge_hal_vpath_h		vpath_handle;
721#define	VXGE_HAL_OPAQUE_HANDLE_GET_VPATH_HANDLE(op) ((op)->vpath_handle)
722#define	VXGE_HAL_OPAQUE_HANDLE_VPATH_HANDLE(op, vrh) (op)->vpath_handle = vrh
723
724	u64				hal_priv;
725#define	VXGE_HAL_OPAQUE_HANDLE_GET_HAL_PRIV(op)	    ((op)->hal_priv)
726#define	VXGE_HAL_OPAQUE_HANDLE_HAL_PRIV(op, priv)   (op)->hal_priv = (u64)priv
727
728	u64				client_priv;
729#define	VXGE_HAL_OPAQUE_HANDLE_GET_CLIENT_PRIV(op)  ((op)->client_priv)
730#define	VXGE_HAL_OPAQUE_HANDLE_CLIENT_PRIV(op, priv)	\
731					    (op)->client_priv = (u64)priv
732
733} vxge_hal_opaque_handle_t;
734
735/*
736 * vxge_hal_vpath_callback_f - Callback to receive up messages.
737 * @client_handle: handle passed by client in attach or open function
738 * @msgh: Message handle.
739 * @msg_type: Type of message
740 * @obj_id: Object Id of object to which message belongs
741 * @result: Result code
742 * @opaque_handle: Opaque handle passed when the request was made.
743 *
744 * Callback function registered when opening vpath to receive the messages
745 * This callback function passed to vxge_hal_vpath_open and
746 * vxge_hal_vpath_attach routine to get replys to all asynchronous functions.
747 * The format of the reply is a message along with the parameters that are
748 * common fro all replys. The message handle passed to this callback is
749 * opaque for the iWARP/RDMA module and the information from the message can
750 * be got by calling appropriate get function depending on the message type
751 * passed as one of the parameter to the callback. The message types that
752 * are to be passed to the callback are the ones that are responses and
753 * notifications
754 */
755typedef vxge_hal_status_e(*vxge_hal_vpath_callback_f) (
756    vxge_hal_client_h client_handle,
757    vxge_hal_up_msg_h msgh,
758    vxge_hal_message_type_e msg_type,
759    vxge_hal_obj_id_t obj_id,
760    vxge_hal_status_e result,
761    vxge_hal_opaque_handle_t *opaque_handle);
762
763
764__EXTERN_END_DECLS
765
766#endif	/* VXGE_HAL_TYPES_H */
767