1d6b92ffaSHans Petter Selasky /*
2d6b92ffaSHans Petter Selasky  * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
3d6b92ffaSHans Petter Selasky  * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
4d6b92ffaSHans Petter Selasky  * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
5d6b92ffaSHans Petter Selasky  *
6d6b92ffaSHans Petter Selasky  * This software is available to you under a choice of one of two
7d6b92ffaSHans Petter Selasky  * licenses.  You may choose to be licensed under the terms of the GNU
8d6b92ffaSHans Petter Selasky  * General Public License (GPL) Version 2, available from the file
9d6b92ffaSHans Petter Selasky  * COPYING in the main directory of this source tree, or the
10d6b92ffaSHans Petter Selasky  * OpenIB.org BSD license below:
11d6b92ffaSHans Petter Selasky  *
12d6b92ffaSHans Petter Selasky  *     Redistribution and use in source and binary forms, with or
13d6b92ffaSHans Petter Selasky  *     without modification, are permitted provided that the following
14d6b92ffaSHans Petter Selasky  *     conditions are met:
15d6b92ffaSHans Petter Selasky  *
16d6b92ffaSHans Petter Selasky  *      - Redistributions of source code must retain the above
17d6b92ffaSHans Petter Selasky  *        copyright notice, this list of conditions and the following
18d6b92ffaSHans Petter Selasky  *        disclaimer.
19d6b92ffaSHans Petter Selasky  *
20d6b92ffaSHans Petter Selasky  *      - Redistributions in binary form must reproduce the above
21d6b92ffaSHans Petter Selasky  *        copyright notice, this list of conditions and the following
22d6b92ffaSHans Petter Selasky  *        disclaimer in the documentation and/or other materials
23d6b92ffaSHans Petter Selasky  *        provided with the distribution.
24d6b92ffaSHans Petter Selasky  *
25d6b92ffaSHans Petter Selasky  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26d6b92ffaSHans Petter Selasky  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27d6b92ffaSHans Petter Selasky  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28d6b92ffaSHans Petter Selasky  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
29d6b92ffaSHans Petter Selasky  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
30d6b92ffaSHans Petter Selasky  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
31d6b92ffaSHans Petter Selasky  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32d6b92ffaSHans Petter Selasky  * SOFTWARE.
33d6b92ffaSHans Petter Selasky  *
34d6b92ffaSHans Petter Selasky  */
35d6b92ffaSHans Petter Selasky 
36d6b92ffaSHans Petter Selasky /*
37d6b92ffaSHans Petter Selasky  * Abstract:
38d6b92ffaSHans Petter Selasky  * 	Declaration of osm_mad_wrapper_t.
39d6b92ffaSHans Petter Selasky  *	This object represents the context wrapper for OpenSM MAD processing.
40d6b92ffaSHans Petter Selasky  *	This object is part of the OpenSM family of objects.
41d6b92ffaSHans Petter Selasky  */
42d6b92ffaSHans Petter Selasky 
43d6b92ffaSHans Petter Selasky #ifndef _OSM_VENDOR_AL_H_
44d6b92ffaSHans Petter Selasky #define _OSM_VENDOR_AL_H_
45d6b92ffaSHans Petter Selasky 
46d6b92ffaSHans Petter Selasky #include <iba/ib_types.h>
47d6b92ffaSHans Petter Selasky #include <iba/ib_al.h>
48d6b92ffaSHans Petter Selasky #include <complib/cl_qlist.h>
49d6b92ffaSHans Petter Selasky #include <complib/cl_thread.h>
50d6b92ffaSHans Petter Selasky #include <opensm/osm_base.h>
51d6b92ffaSHans Petter Selasky #include <opensm/osm_log.h>
52d6b92ffaSHans Petter Selasky 
53d6b92ffaSHans Petter Selasky #ifdef __cplusplus
54d6b92ffaSHans Petter Selasky #  define BEGIN_C_DECLS extern "C" {
55d6b92ffaSHans Petter Selasky #  define END_C_DECLS   }
56d6b92ffaSHans Petter Selasky #else				/* !__cplusplus */
57d6b92ffaSHans Petter Selasky #  define BEGIN_C_DECLS
58d6b92ffaSHans Petter Selasky #  define END_C_DECLS
59d6b92ffaSHans Petter Selasky #endif				/* __cplusplus */
60d6b92ffaSHans Petter Selasky 
61d6b92ffaSHans Petter Selasky BEGIN_C_DECLS
62d6b92ffaSHans Petter Selasky /****h* OpenSM/Vendor AL
63d6b92ffaSHans Petter Selasky * NAME
64d6b92ffaSHans Petter Selasky *	Vendor AL
65d6b92ffaSHans Petter Selasky *
66d6b92ffaSHans Petter Selasky * DESCRIPTION
67d6b92ffaSHans Petter Selasky *
68d6b92ffaSHans Petter Selasky *	The Vendor AL object is thread safe.
69d6b92ffaSHans Petter Selasky *
70d6b92ffaSHans Petter Selasky *	This object should be treated as opaque and should be
71d6b92ffaSHans Petter Selasky *	manipulated only through the provided functions.
72d6b92ffaSHans Petter Selasky *
73d6b92ffaSHans Petter Selasky *	Enable various hacks to compensate for bugs in external code...
74d6b92ffaSHans Petter Selasky *
75d6b92ffaSHans Petter Selasky *
76d6b92ffaSHans Petter Selasky * AUTHOR
77d6b92ffaSHans Petter Selasky *
78d6b92ffaSHans Petter Selasky *
79d6b92ffaSHans Petter Selasky *********/
80d6b92ffaSHans Petter Selasky /****h* OpenSM/Vendor Access Layer (AL)
81d6b92ffaSHans Petter Selasky * NAME
82d6b92ffaSHans Petter Selasky *	Vendor AL
83d6b92ffaSHans Petter Selasky *
84d6b92ffaSHans Petter Selasky * DESCRIPTION
85d6b92ffaSHans Petter Selasky *	This file is the vendor specific file for the AL Infiniband API.
86d6b92ffaSHans Petter Selasky *
87d6b92ffaSHans Petter Selasky * AUTHOR
88d6b92ffaSHans Petter Selasky *	Steve King, Intel
89d6b92ffaSHans Petter Selasky *
90d6b92ffaSHans Petter Selasky *********/
91d6b92ffaSHans Petter Selasky #define OSM_AL_SQ_SGE 256
92d6b92ffaSHans Petter Selasky #define OSM_AL_RQ_SGE 256
93d6b92ffaSHans Petter Selasky #define OSM_DEFAULT_RETRY_COUNT 3
94d6b92ffaSHans Petter Selasky /* AL supports RMPP */
95d6b92ffaSHans Petter Selasky #define VENDOR_RMPP_SUPPORT 1
96d6b92ffaSHans Petter Selasky /****s* OpenSM: Vendor AL/osm_ca_info_t
97d6b92ffaSHans Petter Selasky * NAME
98d6b92ffaSHans Petter Selasky *   osm_ca_info_t
99d6b92ffaSHans Petter Selasky *
100d6b92ffaSHans Petter Selasky * DESCRIPTION
101d6b92ffaSHans Petter Selasky * 	Structure containing information about local Channle Adapters.
102d6b92ffaSHans Petter Selasky *
103d6b92ffaSHans Petter Selasky * SYNOPSIS
104d6b92ffaSHans Petter Selasky */
105d6b92ffaSHans Petter Selasky typedef struct _osm_ca_info {
106d6b92ffaSHans Petter Selasky 	ib_net64_t guid;
107d6b92ffaSHans Petter Selasky 	size_t attr_size;
108d6b92ffaSHans Petter Selasky 	ib_ca_attr_t *p_attr;
109d6b92ffaSHans Petter Selasky 
110d6b92ffaSHans Petter Selasky } osm_ca_info_t;
111d6b92ffaSHans Petter Selasky /*
112d6b92ffaSHans Petter Selasky * FIELDS
113d6b92ffaSHans Petter Selasky *	guid
114d6b92ffaSHans Petter Selasky *		Node GUID of the local CA.
115d6b92ffaSHans Petter Selasky *
116d6b92ffaSHans Petter Selasky *	attr_size
117d6b92ffaSHans Petter Selasky *		Size of the CA attributes for this CA.
118d6b92ffaSHans Petter Selasky *
119d6b92ffaSHans Petter Selasky *	p_attr
120d6b92ffaSHans Petter Selasky *		Pointer to dynamicly allocated CA Attribute structure.
121d6b92ffaSHans Petter Selasky *
122d6b92ffaSHans Petter Selasky * SEE ALSO
123d6b92ffaSHans Petter Selasky *********/
124d6b92ffaSHans Petter Selasky 
125d6b92ffaSHans Petter Selasky /****f* OpenSM: CA Info/osm_ca_info_get_num_ports
126d6b92ffaSHans Petter Selasky * NAME
127d6b92ffaSHans Petter Selasky *	osm_ca_info_get_num_ports
128d6b92ffaSHans Petter Selasky *
129d6b92ffaSHans Petter Selasky * DESCRIPTION
130d6b92ffaSHans Petter Selasky *	Returns the number of ports owned by this CA.
131d6b92ffaSHans Petter Selasky *
132d6b92ffaSHans Petter Selasky * SYNOPSIS
133d6b92ffaSHans Petter Selasky */
134d6b92ffaSHans Petter Selasky static inline uint8_t
osm_ca_info_get_num_ports(IN const osm_ca_info_t * const p_ca_info)135d6b92ffaSHans Petter Selasky osm_ca_info_get_num_ports(IN const osm_ca_info_t * const p_ca_info)
136d6b92ffaSHans Petter Selasky {
137d6b92ffaSHans Petter Selasky 	return (p_ca_info->p_attr->num_ports);
138d6b92ffaSHans Petter Selasky }
139d6b92ffaSHans Petter Selasky 
140d6b92ffaSHans Petter Selasky /*
141d6b92ffaSHans Petter Selasky * PARAMETERS
142d6b92ffaSHans Petter Selasky *	p_ca_info
143d6b92ffaSHans Petter Selasky *		[in] Pointer to a CA Info object.
144d6b92ffaSHans Petter Selasky *
145d6b92ffaSHans Petter Selasky * RETURN VALUE
146d6b92ffaSHans Petter Selasky *	Returns the number of ports owned by this CA.
147d6b92ffaSHans Petter Selasky *
148d6b92ffaSHans Petter Selasky * NOTES
149d6b92ffaSHans Petter Selasky *
150d6b92ffaSHans Petter Selasky * SEE ALSO
151d6b92ffaSHans Petter Selasky *********/
152d6b92ffaSHans Petter Selasky 
153d6b92ffaSHans Petter Selasky /****f* OpenSM: CA Info/osm_ca_info_get_port_guid
154d6b92ffaSHans Petter Selasky * NAME
155d6b92ffaSHans Petter Selasky *	osm_ca_info_get_port_guid
156d6b92ffaSHans Petter Selasky *
157d6b92ffaSHans Petter Selasky * DESCRIPTION
158d6b92ffaSHans Petter Selasky *	Returns the port GUID of the specified port owned by this CA.
159d6b92ffaSHans Petter Selasky *
160d6b92ffaSHans Petter Selasky * SYNOPSIS
161d6b92ffaSHans Petter Selasky */
162d6b92ffaSHans Petter Selasky static inline ib_net64_t
osm_ca_info_get_port_guid(IN const osm_ca_info_t * const p_ca_info,IN const uint8_t index)163d6b92ffaSHans Petter Selasky osm_ca_info_get_port_guid(IN const osm_ca_info_t * const p_ca_info,
164d6b92ffaSHans Petter Selasky 			  IN const uint8_t index)
165d6b92ffaSHans Petter Selasky {
166d6b92ffaSHans Petter Selasky 	return (p_ca_info->p_attr->p_port_attr[index].port_guid);
167d6b92ffaSHans Petter Selasky }
168d6b92ffaSHans Petter Selasky 
169d6b92ffaSHans Petter Selasky /*
170d6b92ffaSHans Petter Selasky * PARAMETERS
171d6b92ffaSHans Petter Selasky *	p_ca_info
172d6b92ffaSHans Petter Selasky *		[in] Pointer to a CA Info object.
173d6b92ffaSHans Petter Selasky *
174d6b92ffaSHans Petter Selasky *	index
175d6b92ffaSHans Petter Selasky *		[in] Port "index" for which to retrieve the port GUID.
176d6b92ffaSHans Petter Selasky *		The index is the offset into the ca's internal array
177d6b92ffaSHans Petter Selasky *		of port attributes.
178d6b92ffaSHans Petter Selasky *
179d6b92ffaSHans Petter Selasky * RETURN VALUE
180d6b92ffaSHans Petter Selasky *	Returns the port GUID of the specified port owned by this CA.
181d6b92ffaSHans Petter Selasky *
182d6b92ffaSHans Petter Selasky * NOTES
183d6b92ffaSHans Petter Selasky *
184d6b92ffaSHans Petter Selasky * SEE ALSO
185d6b92ffaSHans Petter Selasky *********/
186d6b92ffaSHans Petter Selasky 
187d6b92ffaSHans Petter Selasky /****f* OpenSM: CA Info/osm_ca_info_get_port_num
188d6b92ffaSHans Petter Selasky * NAME
189d6b92ffaSHans Petter Selasky *	osm_ca_info_get_port_num
190d6b92ffaSHans Petter Selasky *
191d6b92ffaSHans Petter Selasky * DESCRIPTION
192d6b92ffaSHans Petter Selasky *	Returns the port number of the specified port owned by this CA.
193d6b92ffaSHans Petter Selasky *	Port numbers start with 1 for HCA's.
194d6b92ffaSHans Petter Selasky *
195d6b92ffaSHans Petter Selasky * SYNOPSIS
196d6b92ffaSHans Petter Selasky */
197d6b92ffaSHans Petter Selasky static inline uint8_t
osm_ca_info_get_port_num(IN const osm_ca_info_t * const p_ca_info,IN const uint8_t index)198d6b92ffaSHans Petter Selasky osm_ca_info_get_port_num(IN const osm_ca_info_t * const p_ca_info,
199d6b92ffaSHans Petter Selasky 			 IN const uint8_t index)
200d6b92ffaSHans Petter Selasky {
201d6b92ffaSHans Petter Selasky 	return (p_ca_info->p_attr->p_port_attr[index].port_num);
202d6b92ffaSHans Petter Selasky }
203d6b92ffaSHans Petter Selasky 
204d6b92ffaSHans Petter Selasky /*
205d6b92ffaSHans Petter Selasky * PARAMETERS
206d6b92ffaSHans Petter Selasky *	p_ca_info
207d6b92ffaSHans Petter Selasky *		[in] Pointer to a CA Info object.
208d6b92ffaSHans Petter Selasky *
209d6b92ffaSHans Petter Selasky *	index
210d6b92ffaSHans Petter Selasky *		[in] Port "index" for which to retrieve the port GUID.
211d6b92ffaSHans Petter Selasky *		The index is the offset into the ca's internal array
212d6b92ffaSHans Petter Selasky *		of port attributes.
213d6b92ffaSHans Petter Selasky *
214d6b92ffaSHans Petter Selasky * RETURN VALUE
215d6b92ffaSHans Petter Selasky *	Returns the port GUID of the specified port owned by this CA.
216d6b92ffaSHans Petter Selasky *
217d6b92ffaSHans Petter Selasky * NOTES
218d6b92ffaSHans Petter Selasky *
219d6b92ffaSHans Petter Selasky * SEE ALSO
220d6b92ffaSHans Petter Selasky *********/
221d6b92ffaSHans Petter Selasky 
222d6b92ffaSHans Petter Selasky /****f* OpenSM: CA Info/osm_ca_info_get_ca_guid
223d6b92ffaSHans Petter Selasky * NAME
224d6b92ffaSHans Petter Selasky *	osm_ca_info_get_ca_guid
225d6b92ffaSHans Petter Selasky *
226d6b92ffaSHans Petter Selasky * DESCRIPTION
227d6b92ffaSHans Petter Selasky *	Returns the GUID of the specified CA.
228d6b92ffaSHans Petter Selasky *
229d6b92ffaSHans Petter Selasky * SYNOPSIS
230d6b92ffaSHans Petter Selasky */
231d6b92ffaSHans Petter Selasky static inline ib_net64_t
osm_ca_info_get_ca_guid(IN const osm_ca_info_t * const p_ca_info)232d6b92ffaSHans Petter Selasky osm_ca_info_get_ca_guid(IN const osm_ca_info_t * const p_ca_info)
233d6b92ffaSHans Petter Selasky {
234d6b92ffaSHans Petter Selasky 	return (p_ca_info->p_attr->ca_guid);
235d6b92ffaSHans Petter Selasky }
236d6b92ffaSHans Petter Selasky 
237d6b92ffaSHans Petter Selasky /*
238d6b92ffaSHans Petter Selasky * PARAMETERS
239d6b92ffaSHans Petter Selasky *	p_ca_info
240d6b92ffaSHans Petter Selasky *		[in] Pointer to a CA Info object.
241d6b92ffaSHans Petter Selasky *
242d6b92ffaSHans Petter Selasky * RETURN VALUE
243d6b92ffaSHans Petter Selasky *	Returns the GUID of the specified CA.
244d6b92ffaSHans Petter Selasky *
245d6b92ffaSHans Petter Selasky * NOTES
246d6b92ffaSHans Petter Selasky *
247d6b92ffaSHans Petter Selasky * SEE ALSO
248d6b92ffaSHans Petter Selasky *********/
249d6b92ffaSHans Petter Selasky 
250d6b92ffaSHans Petter Selasky /****s* OpenSM: Vendor AL/osm_bind_handle_t
251d6b92ffaSHans Petter Selasky * NAME
252d6b92ffaSHans Petter Selasky *   osm_bind_handle_t
253d6b92ffaSHans Petter Selasky *
254d6b92ffaSHans Petter Selasky * DESCRIPTION
255d6b92ffaSHans Petter Selasky * 	handle returned by the vendor transport bind call.
256d6b92ffaSHans Petter Selasky *
257d6b92ffaSHans Petter Selasky * SYNOPSIS
258d6b92ffaSHans Petter Selasky */
259d6b92ffaSHans Petter Selasky typedef struct _osm_vendor {
260d6b92ffaSHans Petter Selasky 	ib_al_handle_t h_al;
261d6b92ffaSHans Petter Selasky 	osm_log_t *p_log;
262d6b92ffaSHans Petter Selasky 	uint32_t ca_count;
263d6b92ffaSHans Petter Selasky 	osm_ca_info_t *p_ca_info;
264d6b92ffaSHans Petter Selasky 	uint32_t timeout;
265d6b92ffaSHans Petter Selasky 	ib_ca_handle_t h_ca;
266d6b92ffaSHans Petter Selasky 	ib_pd_handle_t h_pd;
267d6b92ffaSHans Petter Selasky 
268d6b92ffaSHans Petter Selasky } osm_vendor_t;
269d6b92ffaSHans Petter Selasky /*
270d6b92ffaSHans Petter Selasky * FIELDS
271d6b92ffaSHans Petter Selasky *	h_al
272d6b92ffaSHans Petter Selasky *		Handle returned by AL open call (ib_open_al).
273d6b92ffaSHans Petter Selasky *
274d6b92ffaSHans Petter Selasky *	p_log
275d6b92ffaSHans Petter Selasky *		Pointer to the log object.
276d6b92ffaSHans Petter Selasky *
277d6b92ffaSHans Petter Selasky *	ca_count
278d6b92ffaSHans Petter Selasky *		Number of CA's in the array pointed to by p_ca_info.
279d6b92ffaSHans Petter Selasky *
280d6b92ffaSHans Petter Selasky *	p_ca_info
281d6b92ffaSHans Petter Selasky *		Pointer to dynamically allocated array of CA info objects.
282d6b92ffaSHans Petter Selasky *
283d6b92ffaSHans Petter Selasky *	h_pool
284d6b92ffaSHans Petter Selasky *		MAD Pool handle returned by ib_create_mad_pool at init time.
285d6b92ffaSHans Petter Selasky *
286d6b92ffaSHans Petter Selasky *	timeout
287d6b92ffaSHans Petter Selasky *		Transaction timeout time in milliseconds.
288d6b92ffaSHans Petter Selasky *
289d6b92ffaSHans Petter Selasky * SEE ALSO
290d6b92ffaSHans Petter Selasky *********/
291d6b92ffaSHans Petter Selasky 
292d6b92ffaSHans Petter Selasky #define OSM_BIND_INVALID_HANDLE 0
293d6b92ffaSHans Petter Selasky 
294d6b92ffaSHans Petter Selasky /****s* OpenSM: Vendor AL/osm_bind_handle_t
295d6b92ffaSHans Petter Selasky * NAME
296d6b92ffaSHans Petter Selasky *   osm_bind_handle_t
297d6b92ffaSHans Petter Selasky *
298d6b92ffaSHans Petter Selasky * DESCRIPTION
299d6b92ffaSHans Petter Selasky * 	handle returned by the vendor transport bind call.
300d6b92ffaSHans Petter Selasky *
301d6b92ffaSHans Petter Selasky * SYNOPSIS
302d6b92ffaSHans Petter Selasky */
303d6b92ffaSHans Petter Selasky typedef void *osm_bind_handle_t;
304d6b92ffaSHans Petter Selasky /***********/
305d6b92ffaSHans Petter Selasky 
306d6b92ffaSHans Petter Selasky /****s* OpenSM/osm_vend_wrap_t
307d6b92ffaSHans Petter Selasky * NAME
308d6b92ffaSHans Petter Selasky *   AL Vendor MAD Wrapper
309d6b92ffaSHans Petter Selasky *
310d6b92ffaSHans Petter Selasky * DESCRIPTION
311d6b92ffaSHans Petter Selasky *	AL specific MAD wrapper. AL transport layer uses this for
312d6b92ffaSHans Petter Selasky *	housekeeping.
313d6b92ffaSHans Petter Selasky *
314d6b92ffaSHans Petter Selasky * SYNOPSIS
315d6b92ffaSHans Petter Selasky *********/
316d6b92ffaSHans Petter Selasky typedef struct _osm_vend_wrap_t {
317d6b92ffaSHans Petter Selasky 	uint32_t size;
318d6b92ffaSHans Petter Selasky 	osm_bind_handle_t h_bind;
319d6b92ffaSHans Petter Selasky 	ib_mad_element_t *p_elem;
320d6b92ffaSHans Petter Selasky 	ib_av_handle_t h_av;
321d6b92ffaSHans Petter Selasky 	void *p_resp_madw;
322d6b92ffaSHans Petter Selasky 
323d6b92ffaSHans Petter Selasky } osm_vend_wrap_t;
324d6b92ffaSHans Petter Selasky /*
325d6b92ffaSHans Petter Selasky * FIELDS
326d6b92ffaSHans Petter Selasky *	size
327d6b92ffaSHans Petter Selasky *		Size of the allocated MAD
328d6b92ffaSHans Petter Selasky *
329d6b92ffaSHans Petter Selasky *	h_bind
330d6b92ffaSHans Petter Selasky *		Bind handle used on this transaction
331d6b92ffaSHans Petter Selasky *
332d6b92ffaSHans Petter Selasky *	p_elem
333d6b92ffaSHans Petter Selasky *		Pointer to the mad element structure associated with
334d6b92ffaSHans Petter Selasky *		this mad.
335d6b92ffaSHans Petter Selasky *
336d6b92ffaSHans Petter Selasky *	h_av
337d6b92ffaSHans Petter Selasky *		Address vector handle used for this transaction.
338d6b92ffaSHans Petter Selasky *
339d6b92ffaSHans Petter Selasky *	p_resp_madw
340d6b92ffaSHans Petter Selasky *		Pointer to the mad wrapper structure used to hold the pending
341d6b92ffaSHans Petter Selasky *		reponse to the mad, if any.  If a response is expected, the
342d6b92ffaSHans Petter Selasky *		wrapper for the reponse is allocated during the send call.
343d6b92ffaSHans Petter Selasky *
344d6b92ffaSHans Petter Selasky * SEE ALSO
345d6b92ffaSHans Petter Selasky *********/
346d6b92ffaSHans Petter Selasky 
347d6b92ffaSHans Petter Selasky END_C_DECLS
348d6b92ffaSHans Petter Selasky #endif				/* _OSM_VENDOR_AL_H_ */
349