]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/dev/vxge/include/vxgehal-types.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / dev / vxge / include / vxgehal-types.h
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$*/
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  */
48 typedef 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  */
62 typedef 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  */
77 typedef u8 macaddr_t[VXGE_HAL_ETH_ALEN];
78
79 /*
80  * struct vxge_hal_ipv4 - IP version 4 address type
81  * @addr: IP address
82  */
83 typedef 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  */
91 typedef 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  */
100 typedef 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  */
109 typedef u64 vxge_hal_obj_id_t;
110
111 /* basic handles */
112
113 /*
114  * typedef vxge_hal_device_h - Handle to the adapter object
115  */
116 typedef void *vxge_hal_device_h;
117
118 /*
119  * typedef vxge_hal_vpath_h - Handle to the virtual path object returned to LL
120  */
121 typedef void *vxge_hal_vpath_h;
122
123 /*
124  * typedef vxge_hal_client_h - Handle passed by client for client's private data
125  */
126 typedef 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  */
132 typedef void *vxge_hal_ring_h;
133
134 /*
135  * typedef vxge_hal_fifo_h - Handle to the fifo object used for non offload send
136  */
137 typedef 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  */
144 typedef 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  */
150 typedef void *vxge_hal_rxd_h;
151
152 /*
153  * typedef vxge_hal_up_msg_h - Handle to the up message queue
154  */
155 typedef void *vxge_hal_up_msg_h;
156
157 /*
158  * typedef vxge_hal_down_msg_h - Handle to the down message queue
159  */
160 typedef void *vxge_hal_down_msg_h;
161
162
163 /*
164  * typedef vxge_hal_callback_h - Handle to callback function
165  */
166 typedef 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  */
598 typedef 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  */
719 typedef 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  */
755 typedef 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 */