[OPENMS] This patch removes XXX_PTR64 and TO_ULONG_PTR from OpenSM.
authorleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Sun, 13 Jul 2008 08:55:53 +0000 (08:55 +0000)
committerleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Sun, 13 Jul 2008 08:55:53 +0000 (08:55 +0000)
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1375 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

ulp/opensm/user/include/iba/ib_types.h
ulp/opensm/user/include/iba/ib_types_extended.h
ulp/opensm/user/include/vendor/osm_vendor_al.h
ulp/opensm/user/libvendor/osm_vendor_al.c

index 91cebce..e23c1ae 100644 (file)
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-
-#if !defined(__IB_TYPES_H__)
-#define __IB_TYPES_H__
-
-#include <string.h>
-#include <complib/cl_types.h>
-#include <complib/cl_byteswap.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-#if defined( WIN32 ) || defined( _WIN64 )
-    #if defined( EXPORT_AL_SYMBOLS )
-         #define OSM_EXPORT    __declspec(dllexport)
-    #else
-         #define OSM_EXPORT    __declspec(dllimport)
-    #endif
-    #define OSM_API __stdcall
-    #define OSM_CDECL __cdecl
-#else
-    #define OSM_EXPORT extern
-    #define OSM_API
-    #define OSM_CDECL
-    #define __ptr64
-#endif
-
-#ifndef FUNC_PTR64
-#define FUNC_PTR64
-#endif
-
-#ifndef TYPEDEF_PTR64
-#define TYPEDEF_PTR64
-#endif
-
-#ifndef VOID_PTR64
-#define VOID_PTR64
-#endif
-
-#ifndef STRUCT_PTR64
-#define STRUCT_PTR64
-#endif
-
-#define IB_CONCAT(str1, str2) str1##str2
-
-#define TO_LONG_PTR(type,member_name) \
-    union { type member_name;  uint64_t IB_CONCAT(member_name,_padding) ; }
-
-
-
-/****h* IBA Base/Constants
-* NAME
-*      Constants
-*
-* DESCRIPTION
-*      The following constants are used throughout the IBA code base.
-*
-*      Definitions are from the InfiniBand Architecture Specification v1.2
-*
-*********/
-
-/****d* IBA Base: Constants/MAD_BLOCK_SIZE
-* NAME
-*      MAD_BLOCK_SIZE
-*
-* DESCRIPTION
-*      Size of a non-RMPP MAD datagram.
-*
-* SOURCE
-*/
-#define MAD_BLOCK_SIZE                                         256
-/**********/
-
-/****d* IBA Base: Constants/MAD_RMPP_HDR_SIZE
-* NAME
-*      MAD_RMPP_HDR_SIZE
-*
-* DESCRIPTION
-*      Size of an RMPP header, including the common MAD header.
-*
-* SOURCE
-*/
-#define MAD_RMPP_HDR_SIZE                                      36
-/**********/
-
-/****d* IBA Base: Constants/MAD_RMPP_DATA_SIZE
-* NAME
-*      MAD_RMPP_DATA_SIZE
-*
-* DESCRIPTION
-*      Size of an RMPP transaction data section.
-*
-* SOURCE
-*/
-#define MAD_RMPP_DATA_SIZE             (MAD_BLOCK_SIZE - MAD_RMPP_HDR_SIZE)
-/**********/
-
-/****d* IBA Base: Constants/MAD_BLOCK_GRH_SIZE
-* NAME
-*      MAD_BLOCK_GRH_SIZE
-*
-* DESCRIPTION
-*      Size of a MAD datagram, including the GRH.
-*
-* SOURCE
-*/
-#define MAD_BLOCK_GRH_SIZE                                     296
-/**********/
-
-/****d* IBA Base: Constants/IB_LID_PERMISSIVE
-* NAME
-*      IB_LID_PERMISSIVE
-*
-* DESCRIPTION
-*      Permissive LID
-*
-* SOURCE
-*/
-#define IB_LID_PERMISSIVE                                      0xFFFF
-/**********/
-
-/****d* IBA Base: Constants/IB_DEFAULT_PKEY
-* NAME
-*      IB_DEFAULT_PKEY
-*
-* DESCRIPTION
-*      P_Key value for the default partition.
-*
-* SOURCE
-*/
-#define IB_DEFAULT_PKEY                                                0xFFFF
-/**********/
-
-/****d* IBA Base: Constants/IB_QP1_WELL_KNOWN_Q_KEY
-* NAME
-*      IB_QP1_WELL_KNOWN_Q_KEY
-*
-* DESCRIPTION
-*      Well-known Q_Key for QP1 privileged mode access (15.4.2).
-*
-* SOURCE
-*/
-#define IB_QP1_WELL_KNOWN_Q_KEY                                CL_NTOH32(0x80010000)
-/*********/
-
-#define IB_QP0                                                         0
-#define IB_QP1                                                         CL_NTOH32(1)
-
-#define IB_QP_PRIVILEGED_Q_KEY                         CL_NTOH32(0x80000000)
-
-/****d* IBA Base: Constants/IB_LID_UCAST_START
-* NAME
-*      IB_LID_UCAST_START
-*
-* DESCRIPTION
-*      Lowest valid unicast LID value.
-*
-* SOURCE
-*/
-#define IB_LID_UCAST_START_HO                          0x0001
-#define IB_LID_UCAST_START                                     (CL_HTON16(IB_LID_UCAST_START_HO))
-/**********/
-
-/****d* IBA Base: Constants/IB_LID_UCAST_END
-* NAME
-*      IB_LID_UCAST_END
-*
-* DESCRIPTION
-*      Highest valid unicast LID value.
-*
-* SOURCE
-*/
-#define IB_LID_UCAST_END_HO                                    0xBFFF
-#define IB_LID_UCAST_END                                       (CL_HTON16(IB_LID_UCAST_END_HO))
-/**********/
-
-/****d* IBA Base: Constants/IB_LID_MCAST_START
-* NAME
-*      IB_LID_MCAST_START
-*
-* DESCRIPTION
-*      Lowest valid multicast LID value.
-*
-* SOURCE
-*/
-#define IB_LID_MCAST_START_HO                          0xC000
-#define IB_LID_MCAST_START                                     (CL_HTON16(IB_LID_MCAST_START_HO))
-/**********/
-
-/****d* IBA Base: Constants/IB_LID_MCAST_END
-* NAME
-*      IB_LID_MCAST_END
-*
-* DESCRIPTION
-*      Highest valid multicast LID value.
-*
-* SOURCE
-*/
-#define IB_LID_MCAST_END_HO                                    0xFFFE
-#define IB_LID_MCAST_END                                       (CL_HTON16(IB_LID_MCAST_END_HO))
-/**********/
-
-/****d* IBA Base: Constants/IB_DEFAULT_SUBNET_PREFIX
-* NAME
-*      IB_DEFAULT_SUBNET_PREFIX
-*
-* DESCRIPTION
-*      Default subnet GID prefix.
-*
-* SOURCE
-*/
-#define IB_DEFAULT_SUBNET_PREFIX                       (CL_HTON64(0xFE80000000000000ULL))
-/**********/
-
-/****d* IBA Base: Constants/IB_NODE_NUM_PORTS_MAX
-* NAME
-*      IB_NODE_NUM_PORTS_MAX
-*
-* DESCRIPTION
-*      Maximum number of ports in a single node (14.2.5.7).
-* SOURCE
-*/
-#define IB_NODE_NUM_PORTS_MAX                          0xFE
-/**********/
-
-/****d* IBA Base: Constants/IB_INVALID_PORT_NUM
-* NAME
-*      IB_INVALID_PORT_NUM
-*
-* DESCRIPTION
-*      Value used to indicate an invalid port number (14.2.5.10).
-*
-* SOURCE
-*/
-#define IB_INVALID_PORT_NUM                                    0xFF
-/*********/
-
-/****d* IBA Base: Constants/IB_SUBNET_PATH_HOPS_MAX
-* NAME
-*      IB_SUBNET_PATH_HOPS_MAX
-*
-* DESCRIPTION
-*      Maximum number of directed route switch hops in a subnet (14.2.1.2).
-*
-* SOURCE
-*/
-#define IB_SUBNET_PATH_HOPS_MAX                                64
-/*********/
-
-/****d* IBA Base: Constants/IB_PKEY_MAX_BLOCKS
-* NAME
-*      IB_PKEY_MAX_BLOCKS
-*
-* DESCRIPTION
-*      Maximum number of PKEY blocks (14.2.5.7).
-*
-* SOURCE
-*/
-#define IB_PKEY_MAX_BLOCKS                                     2048
-/*********/
-
-/****d* IBA Base: Constants/IB_MCAST_MAX_BLOCK_ID
-* NAME
-*      IB_MCAST_MAX_BLOCK_ID
-*
-* DESCRIPTION
-*      Maximum number of Multicast port mask blocks
-*
-* SOURCE
-*/
-#define IB_MCAST_MAX_BLOCK_ID                          511
-/*********/
-
-/****d* IBA Base: Constants/IB_MCAST_BLOCK_ID_MASK_HO
-* NAME
-*      IB_MCAST_BLOCK_ID_MASK_HO
-*
-* DESCRIPTION
-*      Mask (host order) to recover the Multicast block ID.
-*
-* SOURCE
-*/
-#define IB_MCAST_BLOCK_ID_MASK_HO                      0x000001FF
-/*********/
-
-/****d* IBA Base: Constants/IB_MCAST_BLOCK_SIZE
-* NAME
-*      IB_MCAST_BLOCK_SIZE
-*
-* DESCRIPTION
-*      Number of port mask entries in a multicast forwarding table block.
-*
-* SOURCE
-*/
-#define IB_MCAST_BLOCK_SIZE                                    32
-/*********/
-
-/****d* IBA Base: Constants/IB_MCAST_MASK_SIZE
-* NAME
-*      IB_MCAST_MASK_SIZE
-*
-* DESCRIPTION
-*      Number of port mask bits in each entry in the multicast forwarding table.
-*
-* SOURCE
-*/
-#define IB_MCAST_MASK_SIZE                                     16
-/*********/
-
-/****d* IBA Base: Constants/IB_MCAST_POSITION_MASK_HO
-* NAME
-*      IB_MCAST_POSITION_MASK_HO
-*
-* DESCRIPTION
-*      Mask (host order) to recover the multicast block position.
-*
-* SOURCE
-*/
-#define IB_MCAST_POSITION_MASK_HO                              0xF0000000
-/*********/
-
-/****d* IBA Base: Constants/IB_MCAST_POSITION_MAX
-* NAME
-*      IB_MCAST_POSITION_MAX
-*
-* DESCRIPTION
-*      Maximum value for the multicast block position.
-*
-* SOURCE
-*/
-#define IB_MCAST_POSITION_MAX                          0xF
-/*********/
-
-/****d* IBA Base: Constants/IB_MCAST_POSITION_SHIFT
-* NAME
-*      IB_MCAST_POSITION_SHIFT
-*
-* DESCRIPTION
-*      Shift value to normalize the multicast block position value.
-*
-* SOURCE
-*/
-#define IB_MCAST_POSITION_SHIFT                                28
-/*********/
-
-/****d* IBA Base: Constants/IB_PKEY_ENTRIES_MAX
-* NAME
-*      IB_PKEY_ENTRIES_MAX
-*
-* DESCRIPTION
-*      Maximum number of PKEY entries per port (14.2.5.7).
-*
-* SOURCE
-*/
-#define IB_PKEY_ENTRIES_MAX (IB_PKEY_MAX_BLOCKS * IB_NUM_PKEY_ELEMENTS_IN_BLOCK)
-/*********/
-
-/****d* IBA Base: Constants/IB_PKEY_BASE_MASK
-* NAME
-*      IB_PKEY_BASE_MASK
-*
-* DESCRIPTION
-*      Masks for the base P_Key value given a P_Key Entry.
-*
-* SOURCE
-*/
-#define IB_PKEY_BASE_MASK                                      (CL_HTON16(0x7FFF))
-/*********/
-
-/****d* IBA Base: Constants/IB_PKEY_TYPE_MASK
-* NAME
-*      IB_PKEY_TYPE_MASK
-*
-* DESCRIPTION
-*      Masks for the P_Key membership type given a P_Key Entry.
-*
-* SOURCE
-*/
-#define IB_PKEY_TYPE_MASK                                      (CL_NTOH16(0x8000))
-/*********/
-
-/****d* IBA Base: Constants/IB_DEFAULT_PARTIAL_PKEY
-* NAME
-*      IB_DEFAULT_PARTIAL_PKEY 
-*
-* DESCRIPTION
-*      0x7FFF in network order
-*
-* SOURCE
-*/
-#define IB_DEFAULT_PARTIAL_PKEY                                       (CL_HTON16(0x7FFF))
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_SUBN_LID
-* NAME
-*      IB_MCLASS_SUBN_LID
-*
-* DESCRIPTION
-*      Subnet Management Class, Subnet Manager LID routed (13.4.4)
-*
-* SOURCE
-*/
-#define IB_MCLASS_SUBN_LID                                     0x01
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_SUBN_DIR
-* NAME
-*      IB_MCLASS_SUBN_DIR
-*
-* DESCRIPTION
-*      Subnet Management Class, Subnet Manager directed route (13.4.4)
-*
-* SOURCE
-*/
-#define IB_MCLASS_SUBN_DIR                                     0x81
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_SUBN_ADM
-* NAME
-*      IB_MCLASS_SUBN_ADM
-*
-* DESCRIPTION
-*      Subnet Management Class, Subnet Administration (13.4.4)
-*
-* SOURCE
-*/
-#define IB_MCLASS_SUBN_ADM                                     0x03
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_PERF
-* NAME
-*      IB_MCLASS_PERF
-*
-* DESCRIPTION
-*      Subnet Management Class, Performance Manager (13.4.4)
-*
-* SOURCE
-*/
-#define IB_MCLASS_PERF                                         0x04
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_BM
-* NAME
-*      IB_MCLASS_BM
-*
-* DESCRIPTION
-*      Subnet Management Class, Baseboard Manager (13.4.4)
-*
-* SOURCE
-*/
-#define IB_MCLASS_BM                                           0x05
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_DEV_MGMT
-* NAME
-*      IB_MCLASS_DEV_MGMT
-*
-* DESCRIPTION
-*      Subnet Management Class, Device Management (13.4.4)
-*
-* SOURCE
-*/
-#define IB_MCLASS_DEV_MGMT                                     0x06
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_COMM_MGMT
-* NAME
-*      IB_MCLASS_COMM_MGMT
-*
-* DESCRIPTION
-*      Subnet Management Class, Communication Management (13.4.4)
-*
-* SOURCE
-*/
-#define IB_MCLASS_COMM_MGMT                                    0x07
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_SNMP
-* NAME
-*      IB_MCLASS_SNMP
-*
-* DESCRIPTION
-*      Subnet Management Class, SNMP Tunneling (13.4.4)
-*
-* SOURCE
-*/
-#define IB_MCLASS_SNMP                                         0x08
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MIN
-* NAME
-*      IB_MCLASS_VENDOR_LOW_RANGE_MIN
-*
-* DESCRIPTION
-*      Subnet Management Class, Vendor Specific Low Range Start
-*
-* SOURCE
-*/
-#define IB_MCLASS_VENDOR_LOW_RANGE_MIN 0x09
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MAX
-* NAME
-*      IB_MCLASS_VENDOR_LOW_RANGE_MAX
-*
-* DESCRIPTION
-*      Subnet Management Class, Vendor Specific Low Range End
-*
-* SOURCE
-*/
-#define IB_MCLASS_VENDOR_LOW_RANGE_MAX 0x0f
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_DEV_ADM
-* NAME
-*      IB_MCLASS_DEV_ADM
-*
-* DESCRIPTION
-*      Subnet Management Class, Device Administration
-*
-* SOURCE
-*/
-#define IB_MCLASS_DEV_ADM 0x10
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_BIS
-* NAME
-*      IB_MCLASS_BIS
-*
-* DESCRIPTION
-*      Subnet Management Class, BIS
-*
-* SOURCE
-*/
-#define IB_MCLASS_BIS 0x12
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MIN
-* NAME
-*      IB_MCLASS_VENDOR_HIGH_RANGE_MIN
-*
-* DESCRIPTION
-*      Subnet Management Class, Vendor Specific High Range Start
-*
-* SOURCE
-*/
-#define IB_MCLASS_VENDOR_HIGH_RANGE_MIN 0x30
-/**********/
-
-/****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MAX
-* NAME
-*      IB_MCLASS_VENDOR_HIGH_RANGE_MAX
-*
-* DESCRIPTION
-*      Subnet Management Class, Vendor Specific High Range End
-*
-* SOURCE
-*/
-#define IB_MCLASS_VENDOR_HIGH_RANGE_MAX 0x4f
-/**********/
-
-/****f* IBA Base: Types/ib_class_is_vendor_specific_low
-* NAME
-*      ib_class_is_vendor_specific_low
-*
-* DESCRIPTION
-*      Indicates if the Class Code if a vendor specific class from 
-*  the low range
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_class_is_vendor_specific_low(
-       IN              const   uint8_t class_code )
-{
-       return( (class_code >= IB_MCLASS_VENDOR_LOW_RANGE_MIN) &&
-           (class_code <= IB_MCLASS_VENDOR_LOW_RANGE_MAX) );
-}
-/*
-* PARAMETERS
-*      class_code
-*              [in] The Management Datagram Class Code
-*
-* RETURN VALUE
-*      TRUE if the class is in the Low range of Vendor Specific MADs 
-*      FALSE otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-* IB_MCLASS_VENDOR_LOW_RANGE_MIN, IB_MCLASS_VENDOR_LOW_RANGE_MAX
-*********/
-
-/****f* IBA Base: Types/ib_class_is_vendor_specific_high
-* NAME
-*      ib_class_is_vendor_specific_high
-*
-* DESCRIPTION
-*      Indicates if the Class Code if a vendor specific class from 
-*  the high range
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_class_is_vendor_specific_high(
-       IN              const   uint8_t class_code )
-{
-       return( (class_code >= IB_MCLASS_VENDOR_HIGH_RANGE_MIN) &&
-           (class_code <= IB_MCLASS_VENDOR_HIGH_RANGE_MAX) );
-}
-/*
-* PARAMETERS
-*      class_code
-*              [in] The Management Datagram Class Code
-*
-* RETURN VALUE
-*      TRUE if the class is in the High range of Vendor Specific MADs 
-*      FALSE otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-* IB_MCLASS_VENDOR_HIGH_RANGE_MIN, IB_MCLASS_VENDOR_HIGH_RANGE_MAX
-*********/
-
-
-/****f* IBA Base: Types/ib_class_is_vendor_specific
-* NAME
-*      ib_class_is_vendor_specific
-*
-* DESCRIPTION
-*      Indicates if the Class Code if a vendor specific class
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_class_is_vendor_specific(
-       IN              const   uint8_t class_code )
-{
-  return( ib_class_is_vendor_specific_low(class_code) ||
-                        ib_class_is_vendor_specific_high(class_code) );
-}
-/*
-* PARAMETERS
-*      class_code
-*              [in] The Management Datagram Class Code
-*
-* RETURN VALUE
-*      TRUE if the class is a Vendor Specific MAD
-*      FALSE otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-*  ib_class_is_vendor_specific_low, ib_class_is_vendor_specific_high
-*********/
-
-/****f* IBA Base: Types/ib_class_is_rmpp
-* NAME
-*      ib_class_is_rmpp
-*
-* DESCRIPTION
-*      Indicates if the Class Code supports RMPP
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_class_is_rmpp(
-        IN              const   uint8_t class_code )
-{
-       return( (class_code == IB_MCLASS_SUBN_ADM) ||
-               (class_code == IB_MCLASS_DEV_MGMT) ||
-               (class_code == IB_MCLASS_DEV_ADM) ||
-               (class_code == IB_MCLASS_BIS) ||
-               ib_class_is_vendor_specific_high( class_code ) ); 
-}
-/*
-* PARAMETERS
-*      class_code
-*              [in] The Management Datagram Class Code
-*
-* RETURN VALUE
-*      TRUE if the class supports RMPP
-*      FALSE otherwise.
-*
-* NOTES
-*
-*********/
-
-/*
- *     MAD methods
- */
-
-/****d* IBA Base: Constants/IB_MAX_METHOD
-* NAME
-*      IB_MAX_METHOD
-*
-* DESCRIPTION
-*      Total number of methods available to a class, not including the R-bit.
-*
-* SOURCE
-*/
-#define IB_MAX_METHODS                                         128
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_RESP_MASK
-* NAME
-*      IB_MAD_METHOD_RESP_MASK
-*
-* DESCRIPTION
-*      Response mask to extract 'R' bit from the method field. (13.4.5)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_RESP_MASK                                0x80
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_GET
-* NAME
-*      IB_MAD_METHOD_GET
-*
-* DESCRIPTION
-*      Get() Method (13.4.5)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_GET                                      0x01
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_SET
-* NAME
-*      IB_MAD_METHOD_SET
-*
-* DESCRIPTION
-*      Set() Method (13.4.5)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_SET                                      0x02
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_GET_RESP
-* NAME
-*      IB_MAD_METHOD_GET_RESP
-*
-* DESCRIPTION
-*      GetResp() Method (13.4.5)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_GET_RESP                         0x81
-/**********/
-
-#define IB_MAD_METHOD_DELETE                           0x15
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE
-* NAME
-*      IB_MAD_METHOD_GETTABLE
-*
-* DESCRIPTION
-*      SubnAdmGetTable() Method (15.2.2)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_GETTABLE                         0x12
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE_RESP
-* NAME
-*      IB_MAD_METHOD_GETTABLE_RESP
-*
-* DESCRIPTION
-*      SubnAdmGetTableResp() Method (15.2.2)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_GETTABLE_RESP                    0x92
-
-/**********/
-
-#define IB_MAD_METHOD_GETTRACETABLE                    0x13
-#define IB_MAD_METHOD_GETMULTI                         0x14
-#define IB_MAD_METHOD_GETMULTI_RESP                    0x94
-
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_SEND
-* NAME
-*      IB_MAD_METHOD_SEND
-*
-* DESCRIPTION
-*      Send() Method (13.4.5)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_SEND                                     0x03
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_TRAP
-* NAME
-*      IB_MAD_METHOD_TRAP
-*
-* DESCRIPTION
-*      Trap() Method (13.4.5)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_TRAP                                     0x05
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_REPORT
-* NAME
-*      IB_MAD_METHOD_REPORT
-*
-* DESCRIPTION
-*      Report() Method (13.4.5)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_REPORT                           0x06
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_REPORT_RESP
-* NAME
-*      IB_MAD_METHOD_REPORT_RESP
-*
-* DESCRIPTION
-*      ReportResp() Method (13.4.5)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_REPORT_RESP                      0x86
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_METHOD_TRAP_REPRESS
-* NAME
-*      IB_MAD_METHOD_TRAP_REPRESS
-*
-* DESCRIPTION
-*      TrapRepress() Method (13.4.5)
-*
-* SOURCE
-*/
-#define IB_MAD_METHOD_TRAP_REPRESS                     0x07
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_STATUS_BUSY
-* NAME
-*      IB_MAD_STATUS_BUSY
-*
-* DESCRIPTION
-*      Temporarily busy, MAD discarded (13.4.7)
-*
-* SOURCE
-*/
-#define IB_MAD_STATUS_BUSY                             (CL_HTON16(0x0001))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_STATUS_REDIRECT
-* NAME
-*      IB_MAD_STATUS_REDIRECT
-*
-* DESCRIPTION
-*      QP Redirection required (13.4.7)
-*
-* SOURCE
-*/
-#define IB_MAD_STATUS_REDIRECT                         (CL_HTON16(0x0002))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_CLASS_VER
-* NAME
-*      IB_MAD_STATUS_UNSUP_CLASS_VER
-*
-* DESCRIPTION
-*      Unsupported class version (13.4.7)
-*
-* SOURCE
-*/
-#define IB_MAD_STATUS_UNSUP_CLASS_VER                  (CL_HTON16(0x0004))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD
-* NAME
-*      IB_MAD_STATUS_UNSUP_METHOD
-*
-* DESCRIPTION
-*      Unsupported method (13.4.7)
-*
-* SOURCE
-*/
-#define IB_MAD_STATUS_UNSUP_METHOD                     (CL_HTON16(0x0008))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD_ATTR
-* NAME
-*      IB_MAD_STATUS_UNSUP_METHOD_ATTR
-*
-* DESCRIPTION
-*      Unsupported method/attribute combination (13.4.7)
-*
-* SOURCE
-*/
-#define IB_MAD_STATUS_UNSUP_METHOD_ATTR                        (CL_HTON16(0x000C))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_STATUS_INVALID_FIELD
-* NAME
-*      IB_MAD_STATUS_INVALID_FIELD
-*
-* DESCRIPTION
-*      Attribute contains one or more invalid fields (13.4.7)
-*
-* SOURCE
-*/
-#define IB_MAD_STATUS_INVALID_FIELD                    (CL_HTON16(0x001C))
-/**********/
-
-#define IB_MAD_STATUS_CLASS_MASK                       (CL_HTON16(0xFF00))
-
-#define IB_SA_MAD_STATUS_SUCCESS                       (CL_HTON16(0x0000))
-#define IB_SA_MAD_STATUS_NO_RESOURCES                  (CL_HTON16(0x0100))
-#define IB_SA_MAD_STATUS_REQ_INVALID                   (CL_HTON16(0x0200))
-#define IB_SA_MAD_STATUS_NO_RECORDS                    (CL_HTON16(0x0300))
-#define IB_SA_MAD_STATUS_TOO_MANY_RECORDS              (CL_HTON16(0x0400))
-#define IB_SA_MAD_STATUS_INVALID_GID                   (CL_HTON16(0x0500))
-#define IB_SA_MAD_STATUS_INSUF_COMPS                   (CL_HTON16(0x0600))
-
-#define IB_DM_MAD_STATUS_NO_IOC_RESP                   (CL_HTON16(0x0100))
-#define IB_DM_MAD_STATUS_NO_SVC_ENTRIES                        (CL_HTON16(0x0200))
-#define IB_DM_MAD_STATUS_IOC_FAILURE                   (CL_HTON16(0x8000))
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_CLASS_PORT_INFO
-* NAME
-*      IB_MAD_ATTR_CLASS_PORT_INFO
-*
-* DESCRIPTION
-*      ClassPortInfo attribute (13.4.8)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_CLASS_PORT_INFO                    (CL_NTOH16(0x0001))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_NOTICE
-* NAME
-*      IB_MAD_ATTR_NOTICE
-*
-* DESCRIPTION
-*      Notice attribute (13.4.8)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_NOTICE                                     (CL_NTOH16(0x0002))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO
-* NAME
-*      IB_MAD_ATTR_INFORM_INFO
-*
-* DESCRIPTION
-*      InformInfo attribute (13.4.8)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_INFORM_INFO                                (CL_NTOH16(0x0003))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_NODE_DESC
-* NAME
-*      IB_MAD_ATTR_NODE_DESC
-*
-* DESCRIPTION
-*      NodeDescription attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_NODE_DESC                          (CL_NTOH16(0x0010))
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_CTRL
-* NAME
-*      IB_MAD_ATTR_PORT_SMPL_CTRL
-*
-* DESCRIPTION
-*      NodeDescription attribute (16.1.2)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_PORT_SMPL_CTRL                     (CL_NTOH16(0x0010))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_NODE_INFO
-* NAME
-*      IB_MAD_ATTR_NODE_INFO
-*
-* DESCRIPTION
-*      NodeInfo attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_NODE_INFO                          (CL_NTOH16(0x0011))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_RSLT
-* NAME
-*      IB_MAD_ATTR_PORT_SMPL_RSLT
-*
-* DESCRIPTION
-*      NodeInfo attribute (16.1.2)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_PORT_SMPL_RSLT                     (CL_NTOH16(0x0011))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO
-* NAME
-*      IB_MAD_ATTR_SWITCH_INFO
-*
-* DESCRIPTION
-*      SwitchInfo attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SWITCH_INFO                                (CL_NTOH16(0x0012))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_CNTRS
-* NAME
-*      IB_MAD_ATTR_PORT_CNTRS
-*
-* DESCRIPTION
-*      SwitchInfo attribute (16.1.2)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_PORT_CNTRS                         (CL_NTOH16(0x0012))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_GUID_INFO
-* NAME
-*      IB_MAD_ATTR_GUID_INFO
-*
-* DESCRIPTION
-*      GUIDInfo attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_GUID_INFO                          (CL_NTOH16(0x0014))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_INFO
-* NAME
-*      IB_MAD_ATTR_PORT_INFO
-*
-* DESCRIPTION
-*      PortInfo attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_PORT_INFO                          (CL_NTOH16(0x0015))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_P_KEY_TABLE
-* NAME
-*      IB_MAD_ATTR_P_KEY_TABLE
-*
-* DESCRIPTION
-*      PartitionTable attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_P_KEY_TABLE                                (CL_NTOH16(0x0016))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_TABLE
-* NAME
-*      IB_MAD_ATTR_SLVL_TABLE
-*
-* DESCRIPTION
-*      SL VL Mapping Table attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SLVL_TABLE                         (CL_NTOH16(0x0017))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_VL_ARBITRATION
-* NAME
-*      IB_MAD_ATTR_VL_ARBITRATION
-*
-* DESCRIPTION
-*      VL Arbitration Table attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_VL_ARBITRATION                     (CL_NTOH16(0x0018))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_LIN_FWD_TBL
-* NAME
-*      IB_MAD_ATTR_LIN_FWD_TBL
-*
-* DESCRIPTION
-*      Switch linear forwarding table
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_LIN_FWD_TBL                                (CL_NTOH16(0x0019))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_RND_FWD_TBL
-* NAME
-*      IB_MAD_ATTR_RND_FWD_TBL
-*
-* DESCRIPTION
-*      Switch random forwarding table
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_RND_FWD_TBL                                (CL_NTOH16(0x001A))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_MCAST_FWD_TBL
-* NAME
-*      IB_MAD_ATTR_MCAST_FWD_TBL
-*
-* DESCRIPTION
-*      Switch multicast forwarding table
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_MCAST_FWD_TBL                      (CL_NTOH16(0x001B))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_NODE_RECORD
-* NAME
-*      IB_MAD_ATTR_NODE_RECORD
-*
-* DESCRIPTION
-*      NodeRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_NODE_RECORD                                (CL_NTOH16(0x0011))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORTINFO_RECORD
-* NAME
-*      IB_MAD_ATTR_PORTINFO_RECORD
-*
-* DESCRIPTION
-*      PortInfoRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_PORTINFO_RECORD                    (CL_NTOH16(0x0012))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO_RECORD
-* NAME
-*       IB_MAD_ATTR_SWITCH_INFO_RECORD
-*
-* DESCRIPTION
-*       SwitchInfoRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SWITCH_INFO_RECORD                 (CL_NTOH16(0x0014))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_LINK_RECORD
-* NAME
-*      IB_MAD_ATTR_LINK_RECORD
-*
-* DESCRIPTION
-*      LinkRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_LINK_RECORD                                (CL_NTOH16(0x0020))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SM_INFO
-* NAME
-*      IB_MAD_ATTR_SM_INFO
-*
-* DESCRIPTION
-*      SMInfo attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SM_INFO                            (CL_NTOH16(0x0020))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SMINFO_RECORD
-* NAME
-*      IB_MAD_ATTR_SMINFO_RECORD
-*
-* DESCRIPTION
-*      SMInfoRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SMINFO_RECORD                      (CL_NTOH16(0x0018))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_GUIDINFO_RECORD
-* NAME
-*       IB_MAD_ATTR_GUIDINFO_RECORD
-*
-* DESCRIPTION
-*       GuidInfoRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_GUIDINFO_RECORD                    (CL_NTOH16(0x0030))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_VENDOR_DIAG
-* NAME
-*      IB_MAD_ATTR_VENDOR_DIAG
-*
-* DESCRIPTION
-*      VendorDiag attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_VENDOR_DIAG                                (CL_NTOH16(0x0030))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_LED_INFO
-* NAME
-*      IB_MAD_ATTR_LED_INFO
-*
-* DESCRIPTION
-*      LedInfo attribute (14.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_LED_INFO                           (CL_NTOH16(0x0031))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_RECORD
-* NAME
-*      IB_MAD_ATTR_SERVICE_RECORD
-*
-* DESCRIPTION
-*      ServiceRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SERVICE_RECORD                     (CL_NTOH16(0x0031))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_LFT_RECORD
-* NAME
-*      IB_MAD_ATTR_LFT_RECORD
-*
-* DESCRIPTION
-*      LinearForwardingTableRecord attribute (15.2.5.6)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_LFT_RECORD                         (CL_NTOH16(0x0015))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_MFT_RECORD
-* NAME
-*       IB_MAD_ATTR_MFT_RECORD
-*
-* DESCRIPTION
-*       MulticastForwardingTableRecord attribute (15.2.5.8)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_MFT_RECORD                         (CL_NTOH16(0x0017))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_PKEYTBL_RECORD
-* NAME
-*      IB_MAD_ATTR_PKEYTBL_RECORD
-*
-* DESCRIPTION
-*      PKEY Table Record attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_PKEY_TBL_RECORD                    (CL_NTOH16(0x0033))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_PATH_RECORD
-* NAME
-*      IB_MAD_ATTR_PATH_RECORD
-*
-* DESCRIPTION
-*      PathRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_PATH_RECORD                                (CL_NTOH16(0x0035))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_VLARB_RECORD
-* NAME
-*      IB_MAD_ATTR_VLARB_RECORD
-*
-* DESCRIPTION
-*      VL Arbitration Table Record attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_VLARB_RECORD                       (CL_NTOH16(0x0036))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_RECORD
-* NAME
-*      IB_MAD_ATTR_SLVL_RECORD
-*
-* DESCRIPTION
-*      SLtoVL Mapping Table Record attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SLVL_RECORD                                (CL_NTOH16(0x0013))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_MCMEMBER_RECORD
-* NAME
-*      IB_MAD_ATTR_MCMEMBER_RECORD
-*
-* DESCRIPTION
-*      MCMemberRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_MCMEMBER_RECORD                    (CL_NTOH16(0x0038))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_TRACE_RECORD
-* NAME
-*      IB_MAD_ATTR_TRACE_RECORD
-*
-* DESCRIPTION
-*      TraceRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_TRACE_RECORD                       (CL_NTOH16(0x0039))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_MULTIPATH_RECORD
-* NAME
-*      IB_MAD_ATTR_MULTIPATH_RECORD
-*
-* DESCRIPTION
-*      MultiPathRecord attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_MULTIPATH_RECORD                   (CL_NTOH16(0x003A))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
-* NAME
-*      IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
-*
-* DESCRIPTION
-*      Service Association Record attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD             (CL_NTOH16(0x003B))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO_RECORD
-* NAME
-*      IB_MAD_ATTR_INFORM_INFO_RECORD
-*
-* DESCRIPTION
-*      InformInfo Record attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_INFORM_INFO_RECORD                 (CL_NTOH16(0x00F3))
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_IO_UNIT_INFO
-* NAME
-*      IB_MAD_ATTR_IO_UNIT_INFO
-*
-* DESCRIPTION
-*      IOUnitInfo attribute (16.3.3)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_IO_UNIT_INFO                       (CL_NTOH16(0x0010))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_IO_CONTROLLER_PROFILE
-* NAME
-*      IB_MAD_ATTR_IO_CONTROLLER_PROFILE
-*
-* DESCRIPTION
-*      IOControllerProfile attribute (16.3.3)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_IO_CONTROLLER_PROFILE      (CL_NTOH16(0x0011))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_ENTRIES
-* NAME
-*      IB_MAD_ATTR_SERVICE_ENTRIES
-*
-* DESCRIPTION
-*      ServiceEntries attribute (16.3.3)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SERVICE_ENTRIES                    (CL_NTOH16(0x0012))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT
-* NAME
-*      IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT
-*
-* DESCRIPTION
-*      DiagnosticTimeout attribute (16.3.3)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT         (CL_NTOH16(0x0020))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_PREPARE_TO_TEST
-* NAME
-*      IB_MAD_ATTR_PREPARE_TO_TEST
-*
-* DESCRIPTION
-*      PrepareToTest attribute (16.3.3)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_PREPARE_TO_TEST                    (CL_NTOH16(0x0021))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_ONCE
-* NAME
-*      IB_MAD_ATTR_TEST_DEVICE_ONCE
-*
-* DESCRIPTION
-*      TestDeviceOnce attribute (16.3.3)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_TEST_DEVICE_ONCE           (CL_NTOH16(0x0022))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_LOOP
-* NAME
-*      IB_MAD_ATTR_TEST_DEVICE_LOOP
-*
-* DESCRIPTION
-*      TestDeviceLoop attribute (16.3.3)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_TEST_DEVICE_LOOP           (CL_NTOH16(0x0023))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_DIAG_CODE
-* NAME
-*      IB_MAD_ATTR_DIAG_CODE
-*
-* DESCRIPTION
-*      DiagCode attribute (16.3.3)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_DIAG_CODE                          (CL_NTOH16(0x0024))
-/**********/
-
-/****d* IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
-* NAME
-*      IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
-*
-* DESCRIPTION
-*      Service Association Record attribute (15.2.5)
-*
-* SOURCE
-*/
-#define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD     (CL_NTOH16(0x003B))
-/**********/
-
-/****d* IBA Base: Constants/IB_NODE_TYPE_CA
-* NAME
-*      IB_NODE_TYPE_CA
-*
-* DESCRIPTION
-*      Encoded generic node type used in MAD attributes (13.4.8.2)
-*
-* SOURCE
-*/
-#define IB_NODE_TYPE_CA                                                0x01
-/**********/
-
-/****d* IBA Base: Constants/IB_NODE_TYPE_SWITCH
-* NAME
-*      IB_NODE_TYPE_SWITCH
-*
-* DESCRIPTION
-*      Encoded generic node type used in MAD attributes (13.4.8.2)
-*
-* SOURCE
-*/
-#define IB_NODE_TYPE_SWITCH                                    0x02
-/**********/
-
-/****d* IBA Base: Constants/IB_NODE_TYPE_ROUTER
-* NAME
-*      IB_NODE_TYPE_ROUTER
-*
-* DESCRIPTION
-*      Encoded generic node type used in MAD attributes (13.4.8.2)
-*
-* SOURCE
-*/
-#define IB_NODE_TYPE_ROUTER                                    0x03
-/**********/
-
-/****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_CA
-* NAME
-*      IB_NOTICE_NODE_TYPE_CA
-*
-* DESCRIPTION
-*      Encoded generic node type used in MAD attributes (13.4.8.2)
-*
-* SOURCE
-*/
-#define IB_NOTICE_NODE_TYPE_CA                         (CL_NTOH32(0x000001))
-/**********/
-
-/****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SWITCH
-* NAME
-*      IB_NOTICE_NODE_TYPE_SWITCH
-*
-* DESCRIPTION
-*      Encoded generic node type used in MAD attributes (13.4.8.2)
-*
-* SOURCE
-*/
-#define IB_NOTICE_NODE_TYPE_SWITCH                     (CL_NTOH32(0x000002))
-/**********/
-
-/****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_ROUTER
-* NAME
-*      IB_NOTICE_NODE_TYPE_ROUTER
-*
-* DESCRIPTION
-*      Encoded generic node type used in MAD attributes (13.4.8.2)
-*
-* SOURCE
-*/
-#define IB_NOTICE_NODE_TYPE_ROUTER                     (CL_NTOH32(0x000003))
-/**********/
-
-/****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SUBN_MGMT
-* NAME
-*      IB_NOTICE_NODE_TYPE_SUBN_MGMT
-*
-* DESCRIPTION
-*      Encoded generic node type used in MAD attributes (13.4.8.2).
-*      Note that this value is not defined for the NodeType field
-*      of the NodeInfo attribute (14.2.5.3).
-*
-* SOURCE
-*/
-#define IB_NOTICE_NODE_TYPE_SUBN_MGMT          (CL_NTOH32(0x000004))
-/**********/
-
-/****d* IBA Base: Constants/IB_MTU_LEN_TYPE
-* NAME
-*      IB_MTU_LEN_TYPE
-*
-* DESCRIPTION
-*      Encoded path MTU.
-*              1: 256
-*              2: 512
-*              3: 1024
-*              4: 2048
-*              5: 4096
-*              others: reserved
-*
-* SOURCE
-*/
-#define IB_MTU_LEN_256                                                 1
-#define IB_MTU_LEN_512                                                 2
-#define IB_MTU_LEN_1024                                                        3
-#define IB_MTU_LEN_2048                                                        4
-#define IB_MTU_LEN_4096                                                        5
-
-#define IB_MIN_MTU    IB_MTU_LEN_256
-#define IB_MAX_MTU    IB_MTU_LEN_4096
-
-/**********/
-
-/****d* IBA Base: Constants/IB_PATH_SELECTOR_TYPE
-* NAME
-*      IB_PATH_SELECTOR_TYPE
-*
-* DESCRIPTION
-*      Path selector.
-*              0: greater than specified
-*              1: less than specified
-*              2: exactly the specified
-*              3: largest available
-*
-* SOURCE
-*/
-#define IB_PATH_SELECTOR_GREATER_THAN          0
-#define IB_PATH_SELECTOR_LESS_THAN             1
-#define IB_PATH_SELECTOR_EXACTLY               2
-#define IB_PATH_SELECTOR_LARGEST               3
-/**********/
-
-/****d* IBA Base: Constants/IB_SMINFO_STATE_NOTACTIVE
-* NAME
-*      IB_SMINFO_STATE_NOTACTIVE
-*
-* DESCRIPTION
-*      Encoded state value used in the SMInfo attribute.
-*
-* SOURCE
-*/
-#define IB_SMINFO_STATE_NOTACTIVE                      0
-/**********/
-
-/****d* IBA Base: Constants/IB_SMINFO_STATE_DISCOVERING
-* NAME
-*      IB_SMINFO_STATE_DISCOVERING
-*
-* DESCRIPTION
-*      Encoded state value used in the SMInfo attribute.
-*
-* SOURCE
-*/
-#define IB_SMINFO_STATE_DISCOVERING                    1
-/**********/
-
-/****d* IBA Base: Constants/IB_SMINFO_STATE_STANDBY
-* NAME
-*      IB_SMINFO_STATE_STANDBY
-*
-* DESCRIPTION
-*      Encoded state value used in the SMInfo attribute.
-*
-* SOURCE
-*/
-#define IB_SMINFO_STATE_STANDBY                                2
-/**********/
-
-/****d* IBA Base: Constants/IB_SMINFO_STATE_MASTER
-* NAME
-*      IB_SMINFO_STATE_MASTER
-*
-* DESCRIPTION
-*      Encoded state value used in the SMInfo attribute.
-*
-* SOURCE
-*/
-#define IB_SMINFO_STATE_MASTER                         3
-/**********/
-
-/****d* IBA Base: Constants/IB_PATH_REC_SELECTOR_MASK
-* NAME
-*      IB_PATH_REC_SELECTOR_MASK
-*
-* DESCRIPTION
-*      Mask for the selector field for path record MTU, rate,
-*      and packet lifetime.
-*
-* SOURCE
-*/
-#define IB_PATH_REC_SELECTOR_MASK                      0xC0
-
-/****d* IBA Base: Constants/IB_MULTIPATH_REC_SELECTOR_MASK
-* NAME
-*       IB_MULTIPATH_REC_SELECTOR_MASK
-*
-* DESCRIPTION
-*       Mask for the selector field for multipath record MTU, rate,
-*       and packet lifetime.
-*
-* SOURCE
-*/
-#define IB_MULTIPATH_REC_SELECTOR_MASK                       0xC0
-/**********/
-
-/****d* IBA Base: Constants/IB_PATH_REC_BASE_MASK
-* NAME
-*      IB_PATH_REC_BASE_MASK
-*
-* DESCRIPTION
-*      Mask for the base value field for path record MTU, rate,
-*      and packet lifetime.
-*
-* SOURCE
-*/
-#define IB_PATH_REC_BASE_MASK                          0x3F
-/**********/
-
-/****d* IBA Base: Constants/IB_MULTIPATH_REC_BASE_MASK
-* NAME
-*       IB_MULTIPATH_REC_BASE_MASK
-*
-* DESCRIPTION
-*       Mask for the base value field for multipath record MTU, rate,
-*       and packet lifetime.
-*
-* SOURCE
-*/
-#define IB_MULTIPATH_REC_BASE_MASK                      0x3F
-/**********/
-
-/****h* IBA Base/Type Definitions
-* NAME
-*      Type Definitions
-*
-* DESCRIPTION
-*      Definitions are from the InfiniBand Architecture Specification v1.2
-*
-*********/
-
-/****d* IBA Base: Types/ib_net16_t
-* NAME
-*      ib_net16_t
-*
-* DESCRIPTION
-*      Defines the network ordered type for 16-bit values.
-*
-* SOURCE
-*/
-typedef uint16_t       ib_net16_t;
-/**********/
-
-/****d* IBA Base: Types/ib_net32_t
-* NAME
-*      ib_net32_t
-*
-* DESCRIPTION
-*      Defines the network ordered type for 32-bit values.
-*
-* SOURCE
-*/
-typedef uint32_t       ib_net32_t;
-/**********/
-
-/****d* IBA Base: Types/ib_net64_t
-* NAME
-*      ib_net64_t
-*
-* DESCRIPTION
-*      Defines the network ordered type for 64-bit values.
-*
-* SOURCE
-*/
-typedef uint64_t       ib_net64_t;
-/**********/
-
-/****d* IBA Base: Types/ib_gid_prefix_t
-* NAME
-*      ib_gid_prefix_t
-*
-* DESCRIPTION
-*
-* SOURCE
-*/
-typedef ib_net64_t             ib_gid_prefix_t;
-/**********/
-
-/****d* IBA Base: Constants/ib_link_states_t
-* NAME
-*      ib_link_states_t
-*
-* DESCRIPTION
-*      Defines the link states of a port.
-*
-* SOURCE
-*/
-#define IB_LINK_NO_CHANGE 0
-#define IB_LINK_DOWN      1
-#define IB_LINK_INIT     2
-#define IB_LINK_ARMED     3
-#define IB_LINK_ACTIVE    4
-#define IB_LINK_ACT_DEFER 5
-/**********/
-
-static const char* const __ib_node_type_str[] =
-{
-       "UNKNOWN",
-       "Channel Adapter",
-       "Switch",
-       "Router",
-       "Subnet Management"
-};
-
-/****f* IBA Base: Types/ib_get_node_type_str
-* NAME
-*      ib_get_node_type_str
-*
-* DESCRIPTION
-*      Returns a string for the specified node type.
-*
-* SYNOPSIS
-*/
-static inline const char*      OSM_API
-ib_get_node_type_str(
-       IN uint32_t node_type )
-{
-       if( node_type >= IB_NOTICE_NODE_TYPE_ROUTER )
-               node_type = 0;
-       return( __ib_node_type_str[node_type] );
-}
-/*
-* PARAMETERS
-*      node_type
-*              [in] Encoded node type as returned in the NodeInfo attribute.
-
-* RETURN VALUES
-*      Pointer to the node type string.
-*
-* NOTES
-*
-* SEE ALSO
-* ib_node_info_t
-*********/
-
-static const char* const __ib_port_state_str[] =
-{
-       "No State Change (NOP)",
-       "DOWN",
-       "INIT",
-       "ARMED",
-       "ACTIVE",
-       "ACTDEFER",
-       "UNKNOWN"
-};
-
-/****f* IBA Base: Types/ib_get_port_state_str
-* NAME
-*      ib_get_port_state_str
-*
-* DESCRIPTION
-*      Returns a string for the specified port state.
-*
-* SYNOPSIS
-*/
-static inline const char*      OSM_API
-ib_get_port_state_str(
-       IN                              uint8_t                                         port_state )
-{
-       if( port_state > IB_LINK_ACTIVE )
-               port_state = IB_LINK_ACTIVE + 1;
-       return( __ib_port_state_str[port_state] );
-}
-/*
-* PARAMETERS
-*      node_type
-*              [in] Encoded port state as returned in the PortInfo attribute.
-
-* RETURN VALUES
-*      Pointer to the port state string.
-*
-* NOTES
-*
-* SEE ALSO
-* ib_port_info_t
-*********/
-
-/****f* IBA Base: Types/ib_get_port_state_from_str
-* NAME
-*      ib_get_port_state_from_str
-*
-* DESCRIPTION
-*      Returns a string for the specified port state.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_get_port_state_from_str(
-       IN                              char*                                           p_port_state_str )
-{
-       if( !strncmp(p_port_state_str,"No State Change (NOP)", 12) )
-               return(0);
-       else if( !strncmp(p_port_state_str, "DOWN", 4) )
-               return(1);
-       else if( !strncmp(p_port_state_str, "INIT", 4) )
-               return(2);
-       else if( !strncmp(p_port_state_str, "ARMED" , 5) )
-               return(3);
-       else if( !strncmp(p_port_state_str, "ACTIVE", 6) )
-               return(4);
-       else if( !strncmp(p_port_state_str, "ACTDEFER", 8) )
-               return(5);
-       return(6);
-}
-/*
-* PARAMETERS
-*      p_port_state_str
-*              [in] A string matching one returned by ib_get_port_state_str
-*
-* RETURN VALUES
-*      The appropriate code.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_port_info_t
-*********/
-
-/****d* IBA Base: Constants/Join States
-* NAME
-*      Join States
-*
-* DESCRIPTION
-*      Defines the join state flags for multicast group management.
-*
-* SOURCE
-*/
-#define IB_JOIN_STATE_FULL             1
-#define IB_JOIN_STATE_NON              2
-#define IB_JOIN_STATE_SEND_ONLY                4
-/**********/
-
-/****f* IBA Base: Types/ib_pkey_get_base
-* NAME
-*      ib_pkey_get_base
-*
-* DESCRIPTION
-*      Returns the base P_Key value with the membership bit stripped.
-*
-* SYNOPSIS
-*/
-static inline ib_net16_t       OSM_API
-ib_pkey_get_base(
-       IN      const   ib_net16_t              pkey )
-{
-       return( (ib_net16_t)(pkey & IB_PKEY_BASE_MASK) );
-}
-/*
-* PARAMETERS
-*      pkey
-*              [in] P_Key value
-*
-* RETURN VALUE
-*      Returns the base P_Key value with the membership bit stripped.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_pkey_is_full_member
-* NAME
-*      ib_pkey_is_full_member
-*
-* DESCRIPTION
-*      Indicates if the port is a full member of the parition.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_pkey_is_full_member(
-       IN      const   ib_net16_t              pkey )
-{
-       return( (pkey & IB_PKEY_TYPE_MASK) == IB_PKEY_TYPE_MASK );
-}
-/*
-* PARAMETERS
-*      pkey
-*              [in] P_Key value
-*
-* RETURN VALUE
-*      TRUE if the port is a full member of the partition.
-*      FALSE otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-* ib_pkey_get_base, ib_net16_t
-*********/
-
-/****f* IBA Base: Types/ib_pkey_is_invalid
-* NAME
-*      ib_pkey_is_invalid
-*
-* DESCRIPTION
-*      Returns TRUE if the given P_Key is an invalid P_Key
-*  C10-116: the CI shall regard a P_Key as invalid if its low-order
-*           15 bits are all zero...
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_pkey_is_invalid(
-       IN      const   ib_net16_t              pkey )
-{
-  if (ib_pkey_get_base(pkey) == 0x0000)
-    return TRUE;
-
-  return FALSE;
-}
-/*
-* PARAMETERS
-*      pkey
-*              [in] P_Key value
-*
-* RETURN VALUE
-*      Returns the base P_Key value with the membership bit stripped.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****d* IBA Base: Types/ib_gid_t
-* NAME
-*      ib_gid_t
-*
-* DESCRIPTION
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef union _ib_gid
-{
-       uint8_t                         raw[16];
-       struct _ib_gid_unicast
-       {
-               ib_gid_prefix_t         prefix;
-               ib_net64_t              interface_id;
-
-       } PACK_SUFFIX unicast;
-
-       struct _ib_gid_multicast
-       {
-               uint8_t                 header[2];
-               uint8_t                 raw_group_id[14];
-
-       } PACK_SUFFIX multicast;
-
-}      PACK_SUFFIX ib_gid_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      raw
-*              GID represented as an unformated byte array.
-*
-*      unicast
-*              Typical unicast representation with subnet prefix and
-*              port GUID.
-*
-*      multicast
-*              Representation for multicast use.
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_gid_is_multicast
-* NAME
-*      ib_gid_is_multicast
-*
-* DESCRIPTION
-*       Returns a boolean indicating whether a GID is a multicast GID.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_gid_is_multicast(
-       IN      const   ib_gid_t*               p_gid )
-{
-       return( p_gid->raw[0] == 0xFF );
-}
-
-/****f* IBA Base: Types/ib_gid_get_scope
-* NAME
-*      ib_gid_get_scope
-*
-* DESCRIPTION
-*      Returns scope of (assumed) multicast GID.
-*
-* SYNOPSIS
-*/
-static inline uint8_t OSM_API
-ib_mgid_get_scope(
-       IN      const   ib_gid_t*               p_gid )
-{
-       return( p_gid->raw[1] & 0x0F );
-}
-
-/****f* IBA Base: Types/ib_gid_set_scope
-* NAME
-*      ib_gid_set_scope
-*
-* DESCRIPTION
-*      Sets scope of (assumed) multicast GID.
-*
-* SYNOPSIS
-*/
-static inline void OSM_API
-ib_mgid_set_scope(
-        IN             ib_gid_t* const         p_gid,
-       IN      const   uint8_t                 scope )
-{
-       p_gid->raw[1] &= 0xF0;
-       p_gid->raw[1] |= scope & 0x0F;
-}
-
-/****f* IBA Base: Types/ib_gid_set_default
-* NAME
-*      ib_gid_set_default
-*
-* DESCRIPTION
-*      Sets a GID to the default value.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_gid_set_default(
-       IN              ib_gid_t* const         p_gid,
-       IN      const   ib_net64_t              interface_id )
-{
-       p_gid->unicast.prefix = IB_DEFAULT_SUBNET_PREFIX;
-       p_gid->unicast.interface_id = interface_id;
-}
-/*
-* PARAMETERS
-*      p_gid
-*              [in] Pointer to the GID object.
-*
-*      interface_id
-*              [in] Manufacturer assigned EUI64 value of a port.
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_gid_t
-*********/
-
-/****f* IBA Base: Types/ib_gid_get_subnet_prefix
-* NAME
-*      ib_gid_get_subnet_prefix
-*
-* DESCRIPTION
-*      Gets the subnet prefix from a GID.
-*
-* SYNOPSIS
-*/
-static inline ib_net64_t       OSM_API
-ib_gid_get_subnet_prefix(
-       IN      const   ib_gid_t* const         p_gid )
-{
-       return( p_gid->unicast.prefix );
-}
-/*
-* PARAMETERS
-*      p_gid
-*              [in] Pointer to the GID object.
-*
-* RETURN VALUES
-*      64-bit subnet prefix value.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_gid_t
-*********/
-
-/****f* IBA Base: Types/ib_gid_is_link_local
-* NAME
-*      ib_gid_is_link_local
-*
-* DESCRIPTION
-*      Returns TRUE if the unicast GID scoping indicates link local,
-*      FALSE otherwise.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_gid_is_link_local(
-       IN      const   ib_gid_t* const         p_gid )
-{
-       return( ( ib_gid_get_subnet_prefix( p_gid ) &
-               CL_HTON64( 0xFFC0000000000000ULL ) ) == IB_DEFAULT_SUBNET_PREFIX );
-}
-/*
-* PARAMETERS
-*      p_gid
-*              [in] Pointer to the GID object.
-*
-* RETURN VALUES
-*      Returns TRUE if the unicast GID scoping indicates link local,
-*      FALSE otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_gid_t
-*********/
-
-/****f* IBA Base: Types/ib_gid_is_site_local
-* NAME
-*      ib_gid_is_site_local
-*
-* DESCRIPTION
-*      Returns TRUE if the unicast GID scoping indicates site local,
-*      FALSE otherwise.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_gid_is_site_local(
-       IN      const   ib_gid_t* const         p_gid )
-{
-       return( ( ib_gid_get_subnet_prefix( p_gid ) &
-               CL_HTON64( 0xFFFFFFFFFFFF0000ULL ) ) == CL_HTON64( 0xFEC0000000000000ULL ) );
-}
-/*
-* PARAMETERS
-*      p_gid
-*              [in] Pointer to the GID object.
-*
-* RETURN VALUES
-*      Returns TRUE if the unicast GID scoping indicates site local,
-*      FALSE otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_gid_t
-*********/
-
-/****f* IBA Base: Types/ib_gid_get_guid
-* NAME
-*      ib_gid_get_guid
-*
-* DESCRIPTION
-*      Gets the guid from a GID.
-*
-* SYNOPSIS
-*/
-static inline ib_net64_t       OSM_API
-ib_gid_get_guid(
-       IN      const   ib_gid_t* const         p_gid )
-{
-       return( p_gid->unicast.interface_id );
-}
-/*
-* PARAMETERS
-*      p_gid
-*              [in] Pointer to the GID object.
-*
-* RETURN VALUES
-*      64-bit GUID value.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_gid_t
-*********/
-
-/****s* IBA Base: Types/ib_path_rec_t
-* NAME
-*      ib_path_rec_t
-*
-* DESCRIPTION
-*      Path records encapsulate the properties of a given
-*      route between two end-points on a subnet.
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_path_rec
-{
-       uint8_t                                 resv0[8];
-       ib_gid_t                                dgid;
-       ib_gid_t                                sgid;
-       ib_net16_t                              dlid;
-       ib_net16_t                              slid;
-       ib_net32_t                              hop_flow_raw;
-       uint8_t                                 tclass;
-       uint8_t                                 num_path; 
-       ib_net16_t                              pkey;
-       ib_net16_t                              sl;
-       uint8_t                                 mtu;
-       uint8_t                                 rate;
-       uint8_t                                 pkt_life;
-       uint8_t                                 preference;
-       uint8_t                                 resv2[6];
-
-}      PACK_SUFFIX ib_path_rec_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      resv0
-*              Reserved bytes.
-*
-*      dgid
-*              GID of destination port.
-*
-*      sgid
-*              GID of source port.
-*
-*      dlid
-*              LID of destination port.
-*
-*      slid
-*              LID of source port.
-*
-*      hop_flow_raw
-*              Global routing parameters: hop count, flow label and raw bit.
-*
-*      tclass
-*              Another global routing parameter.
-*
-*      num_path
-*     Reversible path - 1 bit to say if path is reversible.
-*              num_path [6:0] In queries, maximum number of paths to return.
-*              In responses, undefined.
-*
-*      pkey
-*              Partition key (P_Key) to use on this path.
-*
-*      resv1
-*              Reserved byte.
-*
-*      sl
-*              Service level to use on this path.
-*
-*      mtu
-*              MTU and MTU selector fields to use on this path
-*
-*      rate
-*              Rate and rate selector fields to use on this path.
-*
-*      pkt_life
-*              Packet lifetime
-*
-*      preference
-*              Indicates the relative merit of this path versus other path
-*              records returned from the SA.  Lower numbers are better.
-*
-*      resv2
-*              Reserved bytes.
-* SEE ALSO
-*********/
-
-/* Path Record Component Masks */
-#define  IB_PR_COMPMASK_DGID              (CL_HTON64(((uint64_t)1)<<2))
-#define  IB_PR_COMPMASK_SGID              (CL_HTON64(((uint64_t)1)<<3))
-#define  IB_PR_COMPMASK_DLID              (CL_HTON64(((uint64_t)1)<<4))
-#define  IB_PR_COMPMASK_SLID              (CL_HTON64(((uint64_t)1)<<5))
-#define  IB_PR_COMPMASK_RAWTRAFFIC        (CL_HTON64(((uint64_t)1)<<6))
-#define  IB_PR_COMPMASK_RESV0             (CL_HTON64(((uint64_t)1)<<7))
-#define  IB_PR_COMPMASK_FLOWLABEL         (CL_HTON64(((uint64_t)1)<<8))
-#define  IB_PR_COMPMASK_HOPLIMIT          (CL_HTON64(((uint64_t)1)<<9))
-#define  IB_PR_COMPMASK_TCLASS            (CL_HTON64(((uint64_t)1)<<10))
-#define  IB_PR_COMPMASK_REVERSIBLE        (CL_HTON64(((uint64_t)1)<<11))
-#define  IB_PR_COMPMASK_NUMBPATH          (CL_HTON64(((uint64_t)1)<<12))
-#define  IB_PR_COMPMASK_PKEY              (CL_HTON64(((uint64_t)1)<<13))
-#define  IB_PR_COMPMASK_RESV1             (CL_HTON64(((uint64_t)1)<<14))
-#define  IB_PR_COMPMASK_SL                (CL_HTON64(((uint64_t)1)<<15))
-#define  IB_PR_COMPMASK_MTUSELEC          (CL_HTON64(((uint64_t)1)<<16))
-#define  IB_PR_COMPMASK_MTU               (CL_HTON64(((uint64_t)1)<<17))
-#define  IB_PR_COMPMASK_RATESELEC         (CL_HTON64(((uint64_t)1)<<18))
-#define  IB_PR_COMPMASK_RATE              (CL_HTON64(((uint64_t)1)<<19))
-#define  IB_PR_COMPMASK_PKTLIFETIMESELEC  (CL_HTON64(((uint64_t)1)<<20))
-#define  IB_PR_COMPMASK_PKTLIFETIME       (CL_HTON64(((uint64_t)1)<<21))
-
-/* Link Record Component Masks */
-#define IB_LR_COMPMASK_FROM_LID           (CL_HTON64(((uint64_t)1)<<0))
-#define IB_LR_COMPMASK_FROM_PORT          (CL_HTON64(((uint64_t)1)<<1))
-#define IB_LR_COMPMASK_TO_PORT            (CL_HTON64(((uint64_t)1)<<2))
-#define IB_LR_COMPMASK_TO_LID             (CL_HTON64(((uint64_t)1)<<3))
-
-/* VL Arbitration Record Masks */
-#define IB_VLA_COMPMASK_LID               (CL_HTON64(((uint64_t)1)<<0))
-#define IB_VLA_COMPMASK_OUT_PORT          (CL_HTON64(((uint64_t)1)<<1))
-#define IB_VLA_COMPMASK_BLOCK             (CL_HTON64(((uint64_t)1)<<2))
-
-/* SLtoVL Mapping Record Masks */
-#define IB_SLVL_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))
-#define IB_SLVL_COMPMASK_IN_PORT          (CL_HTON64(((uint64_t)1)<<1))
-#define IB_SLVL_COMPMASK_OUT_PORT         (CL_HTON64(((uint64_t)1)<<2))
-
-/* P_Key Table Record Masks */
-#define IB_PKEY_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))
-#define IB_PKEY_COMPMASK_BLOCK            (CL_HTON64(((uint64_t)1)<<1))
-#define IB_PKEY_COMPMASK_PORT             (CL_HTON64(((uint64_t)1)<<2))
-
-/* Switch Info Record Masks */
-#define IB_SWIR_COMPMASK_LID             (CL_HTON64(((uint64_t)1)<<0))
-#define IB_SWIR_COMPMASK_RESERVED1       (CL_HTON64(((uint64_t)1)<<1))
-
-/* LFT Record Masks */
-#define IB_LFTR_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))
-#define IB_LFTR_COMPMASK_BLOCK            (CL_HTON64(((uint64_t)1)<<1))
-
-/* MFT Record Masks */
-#define IB_MFTR_COMPMASK_LID             (CL_HTON64(((uint64_t)1)<<0))
-#define IB_MFTR_COMPMASK_POSITION        (CL_HTON64(((uint64_t)1)<<1))
-#define IB_MFTR_COMPMASK_RESERVED1       (CL_HTON64(((uint64_t)1)<<2))
-#define IB_MFTR_COMPMASK_BLOCK           (CL_HTON64(((uint64_t)1)<<3))
-#define IB_MFTR_COMPMASK_RESERVED2       (CL_HTON64(((uint64_t)1)<<4))
-
-/* NodeInfo Record Masks */
-#define IB_NR_COMPMASK_LID                (CL_HTON64(((uint64_t)1)<<0))
-#define IB_NR_COMPMASK_RESERVED1          (CL_HTON64(((uint64_t)1)<<1))
-#define IB_NR_COMPMASK_BASEVERSION        (CL_HTON64(((uint64_t)1)<<2))
-#define IB_NR_COMPMASK_CLASSVERSION       (CL_HTON64(((uint64_t)1)<<3))
-#define IB_NR_COMPMASK_NODETYPE           (CL_HTON64(((uint64_t)1)<<4))
-#define IB_NR_COMPMASK_NUMPORTS           (CL_HTON64(((uint64_t)1)<<5))
-#define IB_NR_COMPMASK_SYSIMAGEGUID       (CL_HTON64(((uint64_t)1)<<6))
-#define IB_NR_COMPMASK_NODEGUID           (CL_HTON64(((uint64_t)1)<<7))
-#define IB_NR_COMPMASK_PORTGUID           (CL_HTON64(((uint64_t)1)<<8))
-#define IB_NR_COMPMASK_PARTCAP            (CL_HTON64(((uint64_t)1)<<9))
-#define IB_NR_COMPMASK_DEVID              (CL_HTON64(((uint64_t)1)<<10))
-#define IB_NR_COMPMASK_REV                (CL_HTON64(((uint64_t)1)<<11))
-#define IB_NR_COMPMASK_PORTNUM            (CL_HTON64(((uint64_t)1)<<12))
-#define IB_NR_COMPMASK_VENDID             (CL_HTON64(((uint64_t)1)<<13))
-#define IB_NR_COMPMASK_NODEDESC           (CL_HTON64(((uint64_t)1)<<14))
-
-/* Service Record Component Masks Sec 15.2.5.14 Ver 1.1*/
-#define IB_SR_COMPMASK_SID                (CL_HTON64(((uint64_t)1)<<0))
-#define IB_SR_COMPMASK_SGID               (CL_HTON64(((uint64_t)1)<<1))
-#define IB_SR_COMPMASK_SPKEY              (CL_HTON64(((uint64_t)1)<<2))
-#define IB_SR_COMPMASK_RES1               (CL_HTON64(((uint64_t)1)<<3))
-#define IB_SR_COMPMASK_SLEASE             (CL_HTON64(((uint64_t)1)<<4))
-#define IB_SR_COMPMASK_SKEY               (CL_HTON64(((uint64_t)1)<<5))
-#define IB_SR_COMPMASK_SNAME              (CL_HTON64(((uint64_t)1)<<6))
-#define IB_SR_COMPMASK_SDATA8_0           (CL_HTON64(((uint64_t)1)<<7))
-#define IB_SR_COMPMASK_SDATA8_1           (CL_HTON64(((uint64_t)1)<<8))
-#define IB_SR_COMPMASK_SDATA8_2           (CL_HTON64(((uint64_t)1)<<9))
-#define IB_SR_COMPMASK_SDATA8_3           (CL_HTON64(((uint64_t)1)<<10))
-#define IB_SR_COMPMASK_SDATA8_4           (CL_HTON64(((uint64_t)1)<<11))
-#define IB_SR_COMPMASK_SDATA8_5           (CL_HTON64(((uint64_t)1)<<12))
-#define IB_SR_COMPMASK_SDATA8_6           (CL_HTON64(((uint64_t)1)<<13))
-#define IB_SR_COMPMASK_SDATA8_7           (CL_HTON64(((uint64_t)1)<<14))
-#define IB_SR_COMPMASK_SDATA8_8           (CL_HTON64(((uint64_t)1)<<15))
-#define IB_SR_COMPMASK_SDATA8_9           (CL_HTON64(((uint64_t)1)<<16))
-#define IB_SR_COMPMASK_SDATA8_10       (CL_HTON64(((uint64_t)1)<<17))
-#define IB_SR_COMPMASK_SDATA8_11       (CL_HTON64(((uint64_t)1)<<18))
-#define IB_SR_COMPMASK_SDATA8_12       (CL_HTON64(((uint64_t)1)<<19))
-#define IB_SR_COMPMASK_SDATA8_13       (CL_HTON64(((uint64_t)1)<<20))
-#define IB_SR_COMPMASK_SDATA8_14       (CL_HTON64(((uint64_t)1)<<21))
-#define IB_SR_COMPMASK_SDATA8_15       (CL_HTON64(((uint64_t)1)<<22))
-#define IB_SR_COMPMASK_SDATA16_0       (CL_HTON64(((uint64_t)1)<<23))
-#define IB_SR_COMPMASK_SDATA16_1       (CL_HTON64(((uint64_t)1)<<24))
-#define IB_SR_COMPMASK_SDATA16_2       (CL_HTON64(((uint64_t)1)<<25))
-#define IB_SR_COMPMASK_SDATA16_3       (CL_HTON64(((uint64_t)1)<<26))
-#define IB_SR_COMPMASK_SDATA16_4       (CL_HTON64(((uint64_t)1)<<27))
-#define IB_SR_COMPMASK_SDATA16_5       (CL_HTON64(((uint64_t)1)<<28))
-#define IB_SR_COMPMASK_SDATA16_6       (CL_HTON64(((uint64_t)1)<<29))
-#define IB_SR_COMPMASK_SDATA16_7       (CL_HTON64(((uint64_t)1)<<30))
-#define IB_SR_COMPMASK_SDATA32_0       (CL_HTON64(((uint64_t)1)<<31))
-#define IB_SR_COMPMASK_SDATA32_1       (CL_HTON64(((uint64_t)1)<<32))
-#define IB_SR_COMPMASK_SDATA32_2       (CL_HTON64(((uint64_t)1)<<33))
-#define IB_SR_COMPMASK_SDATA32_3       (CL_HTON64(((uint64_t)1)<<34))
-#define IB_SR_COMPMASK_SDATA64_0       (CL_HTON64(((uint64_t)1)<<35))
-#define IB_SR_COMPMASK_SDATA64_1       (CL_HTON64(((uint64_t)1)<<36))
-
-/* Port Info Record Component Masks */
-#define IB_PIR_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))
-#define IB_PIR_COMPMASK_PORTNUM          (CL_HTON64(((uint64_t)1)<<1))
-#define IB_PIR_COMPMASK_RESV1            (CL_HTON64(((uint64_t)1)<<2))
-#define IB_PIR_COMPMASK_MKEY             (CL_HTON64(((uint64_t)1)<<3))
-#define IB_PIR_COMPMASK_GIDPRE           (CL_HTON64(((uint64_t)1)<<4))
-#define IB_PIR_COMPMASK_BASELID          (CL_HTON64(((uint64_t)1)<<5))
-#define IB_PIR_COMPMASK_SMLID            (CL_HTON64(((uint64_t)1)<<6))
-#define IB_PIR_COMPMASK_CAPMASK          (CL_HTON64(((uint64_t)1)<<7))
-#define IB_PIR_COMPMASK_DIAGCODE         (CL_HTON64(((uint64_t)1)<<8))
-#define IB_PIR_COMPMASK_MKEYLEASEPRD     (CL_HTON64(((uint64_t)1)<<9))
-#define IB_PIR_COMPMASK_LOCALPORTNUM     (CL_HTON64(((uint64_t)1)<<10))
-#define IB_PIR_COMPMASK_LINKWIDTHENABLED (CL_HTON64(((uint64_t)1)<<11))
-#define IB_PIR_COMPMASK_LNKWIDTHSUPPORT  (CL_HTON64(((uint64_t)1)<<12))
-#define IB_PIR_COMPMASK_LNKWIDTHACTIVE   (CL_HTON64(((uint64_t)1)<<13))
-#define IB_PIR_COMPMASK_LNKSPEEDSUPPORT  (CL_HTON64(((uint64_t)1)<<14))
-#define IB_PIR_COMPMASK_PORTSTATE        (CL_HTON64(((uint64_t)1)<<15))
-#define IB_PIR_COMPMASK_PORTPHYSTATE     (CL_HTON64(((uint64_t)1)<<16))
-#define IB_PIR_COMPMASK_LINKDWNDFLTSTATE (CL_HTON64(((uint64_t)1)<<17))
-#define IB_PIR_COMPMASK_MKEYPROTBITS     (CL_HTON64(((uint64_t)1)<<18))
-#define IB_PIR_COMPMASK_RESV2            (CL_HTON64(((uint64_t)1)<<19))
-#define IB_PIR_COMPMASK_LMC              (CL_HTON64(((uint64_t)1)<<20))
-#define IB_PIR_COMPMASK_LINKSPEEDACTIVE  (CL_HTON64(((uint64_t)1)<<21))
-#define IB_PIR_COMPMASK_LINKSPEEDENABLE  (CL_HTON64(((uint64_t)1)<<22))
-#define IB_PIR_COMPMASK_NEIGHBORMTU      (CL_HTON64(((uint64_t)1)<<23))
-#define IB_PIR_COMPMASK_MASTERSMSL       (CL_HTON64(((uint64_t)1)<<24))
-#define IB_PIR_COMPMASK_VLCAP            (CL_HTON64(((uint64_t)1)<<25))
-#define IB_PIR_COMPMASK_INITTYPE         (CL_HTON64(((uint64_t)1)<<26))
-#define IB_PIR_COMPMASK_VLHIGHLIMIT      (CL_HTON64(((uint64_t)1)<<27))
-#define IB_PIR_COMPMASK_VLARBHIGHCAP     (CL_HTON64(((uint64_t)1)<<28))
-#define IB_PIR_COMPMASK_VLARBLOWCAP      (CL_HTON64(((uint64_t)1)<<29))
-#define IB_PIR_COMPMASK_INITTYPEREPLY    (CL_HTON64(((uint64_t)1)<<30))
-#define IB_PIR_COMPMASK_MTUCAP           (CL_HTON64(((uint64_t)1)<<31))
-#define IB_PIR_COMPMASK_VLSTALLCNT       (CL_HTON64(((uint64_t)1)<<32))
-#define IB_PIR_COMPMASK_HOQLIFE          (CL_HTON64(((uint64_t)1)<<33))
-#define IB_PIR_COMPMASK_OPVLS            (CL_HTON64(((uint64_t)1)<<34))
-#define IB_PIR_COMPMASK_PARENFIN         (CL_HTON64(((uint64_t)1)<<35))
-#define IB_PIR_COMPMASK_PARENFOUT        (CL_HTON64(((uint64_t)1)<<36))
-#define IB_PIR_COMPMASK_FILTERRAWIN      (CL_HTON64(((uint64_t)1)<<37))
-#define IB_PIR_COMPMASK_FILTERRAWOUT     (CL_HTON64(((uint64_t)1)<<38))
-#define IB_PIR_COMPMASK_MKEYVIO          (CL_HTON64(((uint64_t)1)<<39))
-#define IB_PIR_COMPMASK_PKEYVIO          (CL_HTON64(((uint64_t)1)<<40))
-#define IB_PIR_COMPMASK_QKEYVIO          (CL_HTON64(((uint64_t)1)<<41))
-#define IB_PIR_COMPMASK_GUIDCAP          (CL_HTON64(((uint64_t)1)<<42))
-#define IB_PIR_COMPMASK_RESV3            (CL_HTON64(((uint64_t)1)<<43))
-#define IB_PIR_COMPMASK_SUBNTO           (CL_HTON64(((uint64_t)1)<<44))
-#define IB_PIR_COMPMASK_RESV4            (CL_HTON64(((uint64_t)1)<<45))
-#define IB_PIR_COMPMASK_RESPTIME         (CL_HTON64(((uint64_t)1)<<46))
-#define IB_PIR_COMPMASK_LOCALPHYERR      (CL_HTON64(((uint64_t)1)<<47))
-#define IB_PIR_COMPMASK_OVERRUNERR       (CL_HTON64(((uint64_t)1)<<48))
-
-/* Multicast Member Record Component Masks */
-#define IB_MCR_COMPMASK_GID         (CL_HTON64(((uint64_t)1)<<0))
-#define IB_MCR_COMPMASK_MGID        (CL_HTON64(((uint64_t)1)<<0))
-#define IB_MCR_COMPMASK_PORT_GID    (CL_HTON64(((uint64_t)1)<<1))
-#define IB_MCR_COMPMASK_QKEY        (CL_HTON64(((uint64_t)1)<<2))
-#define IB_MCR_COMPMASK_MLID        (CL_HTON64(((uint64_t)1)<<3))
-#define IB_MCR_COMPMASK_MTU_SEL     (CL_HTON64(((uint64_t)1)<<4))
-#define IB_MCR_COMPMASK_MTU         (CL_HTON64(((uint64_t)1)<<5))
-#define IB_MCR_COMPMASK_TCLASS      (CL_HTON64(((uint64_t)1)<<6))
-#define IB_MCR_COMPMASK_PKEY        (CL_HTON64(((uint64_t)1)<<7))
-#define IB_MCR_COMPMASK_RATE_SEL    (CL_HTON64(((uint64_t)1)<<8))
-#define IB_MCR_COMPMASK_RATE        (CL_HTON64(((uint64_t)1)<<9))
-#define IB_MCR_COMPMASK_LIFE_SEL    (CL_HTON64(((uint64_t)1)<<10))
-#define IB_MCR_COMPMASK_LIFE        (CL_HTON64(((uint64_t)1)<<11))
-#define IB_MCR_COMPMASK_SL          (CL_HTON64(((uint64_t)1)<<12))
-#define IB_MCR_COMPMASK_FLOW        (CL_HTON64(((uint64_t)1)<<13))
-#define IB_MCR_COMPMASK_HOP         (CL_HTON64(((uint64_t)1)<<14))
-#define IB_MCR_COMPMASK_SCOPE       (CL_HTON64(((uint64_t)1)<<15))
-#define IB_MCR_COMPMASK_JOIN_STATE  (CL_HTON64(((uint64_t)1)<<16))
-#define IB_MCR_COMPMASK_PROXY       (CL_HTON64(((uint64_t)1)<<17))
-
-/* GUID Info Record Component Masks */
-#define IB_GIR_COMPMASK_LID            (CL_HTON64(((uint64_t)1)<<0))
-#define IB_GIR_COMPMASK_BLOCKNUM       (CL_HTON64(((uint64_t)1)<<1))
-#define IB_GIR_COMPMASK_RESV1          (CL_HTON64(((uint64_t)1)<<2))
-#define IB_GIR_COMPMASK_RESV2          (CL_HTON64(((uint64_t)1)<<3))
-#define IB_GIR_COMPMASK_GID0           (CL_HTON64(((uint64_t)1)<<4))
-#define IB_GIR_COMPMASK_GID1           (CL_HTON64(((uint64_t)1)<<5))
-#define IB_GIR_COMPMASK_GID2           (CL_HTON64(((uint64_t)1)<<6))
-#define IB_GIR_COMPMASK_GID3           (CL_HTON64(((uint64_t)1)<<7))
-#define IB_GIR_COMPMASK_GID4           (CL_HTON64(((uint64_t)1)<<8))
-#define IB_GIR_COMPMASK_GID5           (CL_HTON64(((uint64_t)1)<<9))
-#define IB_GIR_COMPMASK_GID6           (CL_HTON64(((uint64_t)1)<<10))
-#define IB_GIR_COMPMASK_GID7           (CL_HTON64(((uint64_t)1)<<11))
-
-/* MultiPath Record Component Masks */
-#define IB_MPR_COMPMASK_RAWTRAFFIC     (CL_HTON64(((uint64_t)1)<<0))
-#define IB_MPR_COMPMASK_RESV0          (CL_HTON64(((uint64_t)1)<<1))
-#define IB_MPR_COMPMASK_FLOWLABEL      (CL_HTON64(((uint64_t)1)<<2))
-#define IB_MPR_COMPMASK_HOPLIMIT       (CL_HTON64(((uint64_t)1)<<3))
-#define IB_MPR_COMPMASK_TCLASS         (CL_HTON64(((uint64_t)1)<<4))
-#define IB_MPR_COMPMASK_REVERSIBLE     (CL_HTON64(((uint64_t)1)<<5))
-#define IB_MPR_COMPMASK_NUMBPATH       (CL_HTON64(((uint64_t)1)<<6))
-#define IB_MPR_COMPMASK_PKEY           (CL_HTON64(((uint64_t)1)<<7))
-#define IB_MPR_COMPMASK_RESV1          (CL_HTON64(((uint64_t)1)<<8))
-#define IB_MPR_COMPMASK_SL             (CL_HTON64(((uint64_t)1)<<9))
-#define IB_MPR_COMPMASK_MTUSELEC       (CL_HTON64(((uint64_t)1)<<10))
-#define IB_MPR_COMPMASK_MTU            (CL_HTON64(((uint64_t)1)<<11))
-#define IB_MPR_COMPMASK_RATESELEC      (CL_HTON64(((uint64_t)1)<<12))
-#define IB_MPR_COMPMASK_RATE           (CL_HTON64(((uint64_t)1)<<13))
-#define IB_MPR_COMPMASK_PKTLIFETIMESELEC (CL_HTON64(((uint64_t)1)<<14))
-#define IB_MPR_COMPMASK_PKTLIFETIME    (CL_HTON64(((uint64_t)1)<<15))
-#define IB_MPR_COMPMASK_RESV2          (CL_HTON64(((uint64_t)1)<<16))
-#define IB_MPR_COMPMASK_INDEPSELEC     (CL_HTON64(((uint64_t)1)<<17))
-#define IB_MPR_COMPMASK_RESV3          (CL_HTON64(((uint64_t)1)<<18))
-#define IB_MPR_COMPMASK_SGIDCOUNT      (CL_HTON64(((uint64_t)1)<<19))
-#define IB_MPR_COMPMASK_DGIDCOUNT      (CL_HTON64(((uint64_t)1)<<20))
-#define IB_MPR_COMPMASK_RESV4          (CL_HTON64(((uint64_t)1)<<21))
-
-/* SMInfo Record Component Masks */
-#define IB_SMIR_COMPMASK_LID           (CL_HTON64(((uint64_t)1)<<0))
-#define IB_SMIR_COMPMASK_RESV0         (CL_HTON64(((uint64_t)1)<<1))
-#define IB_SMIR_COMPMASK_GUID          (CL_HTON64(((uint64_t)1)<<2))
-#define IB_SMIR_COMPMASK_SMKEY         (CL_HTON64(((uint64_t)1)<<3))
-#define IB_SMIR_COMPMASK_ACTCOUNT      (CL_HTON64(((uint64_t)1)<<4))
-#define IB_SMIR_COMPMASK_PRIORITY      (CL_HTON64(((uint64_t)1)<<5))
-#define IB_SMIR_COMPMASK_SMSTATE       (CL_HTON64(((uint64_t)1)<<6))
-
-/* InformInfo Record Component Masks */
-#define IB_IIR_COMPMASK_SUBSCRIBERGID  (CL_HTON64(((uint64_t)1)<<0))
-#define IB_IIR_COMPMASK_ENUM           (CL_HTON64(((uint64_t)1)<<1))
-#define IB_IIR_COMPMASK_RESV0          (CL_HTON64(((uint64_t)1)<<2))
-#define IB_IIR_COMPMASK_GID            (CL_HTON64(((uint64_t)1)<<3))
-#define IB_IIR_COMPMASK_LIDRANGEBEGIN  (CL_HTON64(((uint64_t)1)<<4))
-#define IB_IIR_COMPMASK_LIDRANGEEND    (CL_HTON64(((uint64_t)1)<<5))
-#define IB_IIR_COMPMASK_RESV1          (CL_HTON64(((uint64_t)1)<<6))
-#define IB_IIR_COMPMASK_ISGENERIC      (CL_HTON64(((uint64_t)1)<<7))
-#define IB_IIR_COMPMASK_SUBSCRIBE      (CL_HTON64(((uint64_t)1)<<8))
-#define IB_IIR_COMPMASK_TYPE           (CL_HTON64(((uint64_t)1)<<9))
-#define IB_IIR_COMPMASK_TRAPNUMB       (CL_HTON64(((uint64_t)1)<<10))
-#define IB_IIR_COMPMASK_DEVICEID       (CL_HTON64(((uint64_t)1)<<10))
-#define IB_IIR_COMPMASK_QPN            (CL_HTON64(((uint64_t)1)<<11))
-#define IB_IIR_COMPMASK_RESV2          (CL_HTON64(((uint64_t)1)<<12))
-#define IB_IIR_COMPMASK_RESPTIME       (CL_HTON64(((uint64_t)1)<<13))
-#define IB_IIR_COMPMASK_RESV3          (CL_HTON64(((uint64_t)1)<<14))
-#define IB_IIR_COMPMASK_PRODTYPE       (CL_HTON64(((uint64_t)1)<<15))
-#define IB_IIR_COMPMASK_VENDID         (CL_HTON64(((uint64_t)1)<<15))
-
-/****f* IBA Base: Types/ib_path_rec_init_local
-* NAME
-*      ib_path_rec_init_local
-*
-* DESCRIPTION
-*      Initializes a subnet local path record.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_path_rec_init_local(
-       IN      ib_path_rec_t* const    p_rec,
-       IN      ib_gid_t* const         p_dgid,
-       IN      ib_gid_t* const         p_sgid,
-       IN      ib_net16_t              dlid,
-       IN      ib_net16_t              slid,
-       IN      uint8_t                 num_path,
-       IN      ib_net16_t              pkey,
-       IN      uint8_t                 sl,
-       IN      uint8_t                 mtu_selector,
-       IN      uint8_t                 mtu,
-       IN      uint8_t                 rate_selector,
-       IN      uint8_t                 rate,
-       IN      uint8_t                 pkt_life_selector,
-       IN      uint8_t                 pkt_life,
-       IN      uint8_t                 preference )
-{
-       p_rec->dgid = *p_dgid;
-       p_rec->sgid = *p_sgid;
-       p_rec->dlid = dlid;
-       p_rec->slid = slid;
-       p_rec->num_path = num_path;
-       p_rec->pkey = pkey;
-       /* Lower 4 bits of path rec's SL are reserved. */
-       p_rec->sl = cl_ntoh16( sl );
-       p_rec->mtu = (uint8_t)((mtu & IB_PATH_REC_BASE_MASK) |
-                       (uint8_t)(mtu_selector << 6));
-       p_rec->rate = (uint8_t)((rate & IB_PATH_REC_BASE_MASK) |
-                       (uint8_t)(rate_selector << 6));
-       p_rec->pkt_life = (uint8_t)((pkt_life & IB_PATH_REC_BASE_MASK) |
-                       (uint8_t)(pkt_life_selector << 6));
-       p_rec->preference = preference;
-
-       /* Clear global routing fields for local path records */
-       p_rec->hop_flow_raw = 0;
-       p_rec->tclass = 0;
-
-       *((uint64_t*)p_rec->resv0) = 0;
-       *((uint32_t*)p_rec->resv2) = 0;
-       *((uint16_t*)p_rec->resv2 + 2) = 0;
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-*      dgid
-*              [in] GID of destination port.
-*
-*      sgid
-*              [in] GID of source port.
-*
-*      dlid
-*              [in] LID of destination port.
-*
-*      slid
-*              [in] LID of source port.
-*
-*      num_path
-*     [in] Reversible path - 1 bit to say if path is reversible.
-*              num_path [6:0] In queries, maximum number of paths to return.
-*              In responses, undefined.
-*
-*      pkey
-*              [in] Partition key (P_Key) to use on this path.
-*
-*      sl
-*              [in] Service level to use on this path.  Lower 4-bits are valid.
-*
-*      mtu_selector
-*              [in] Encoded MTU selector value to use on this path
-*
-*      mtu
-*              [in] Encoded MTU to use on this path
-*
-*      rate_selector
-*              [in] Encoded rate selector value to use on this path.
-*
-*      rate
-*              [in] Encoded rate to use on this path.
-*
-*      pkt_life_selector
-*              [in] Encoded Packet selector value lifetime for this path.
-*
-*      pkt_life
-*              [in] Encoded Packet lifetime for this path.
-*
-*      preference
-*              [in] Indicates the relative merit of this path versus other path
-*              records returned from the SA.  Lower numbers are better.
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_gid_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_num_path
-* NAME
-*      ib_path_rec_num_path
-*
-* DESCRIPTION
-*      Get max number of paths to return.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_rec_num_path(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( p_rec->num_path &0x7F );
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      Maximum number of paths to return for each unique SGID_DGID combination.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_sl
-* NAME
-*      ib_path_rec_sl
-*
-* DESCRIPTION
-*      Get path service level.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_rec_sl(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( (uint8_t)((cl_ntoh16( p_rec->sl )) & 0xF) );
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      SL.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_mtu
-* NAME
-*      ib_path_rec_mtu
-*
-* DESCRIPTION
-*      Get encoded path MTU.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_rec_mtu(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( (uint8_t)(p_rec->mtu & IB_PATH_REC_BASE_MASK) );
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      Encoded path MTU.
-*              1: 256
-*              2: 512
-*              3: 1024
-*              4: 2048
-*              5: 4096
-*              others: reserved
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_mtu_sel
-* NAME
-*      ib_path_rec_mtu_sel
-*
-* DESCRIPTION
-*      Get encoded path MTU selector.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_rec_mtu_sel(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( (uint8_t)((p_rec->mtu & IB_PATH_REC_SELECTOR_MASK) >> 6) );
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      Encoded path MTU selector value (for queries).
-*              0: greater than MTU specified
-*              1: less than MTU specified
-*              2: exactly the MTU specified
-*              3: largest MTU available
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_rate
-* NAME
-*      ib_path_rec_rate
-*
-* DESCRIPTION
-*      Get encoded path rate.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_rec_rate(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( (uint8_t)(p_rec->rate & IB_PATH_REC_BASE_MASK) );
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      Encoded path rate.
-*              2: 2.5 Gb/sec.
-*              3: 10 Gb/sec.
-*              4: 30 Gb/sec.
-*              5: 5 Gb/sec.
-*              6: 20 Gb/sec.
-*              7: 40 Gb/sec.
-*              8: 60 Gb/sec.
-*              9: 80 Gb/sec.
-*              10: 120 Gb/sec.
-*              others: reserved
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_rate_sel
-* NAME
-*      ib_path_rec_rate_sel
-*
-* DESCRIPTION
-*      Get encoded path rate selector.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_rec_rate_sel(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( (uint8_t)((p_rec->rate & IB_PATH_REC_SELECTOR_MASK) >> 6) );
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      Encoded path rate selector value (for queries).
-*              0: greater than rate specified
-*              1: less than rate specified
-*              2: exactly the rate specified
-*              3: largest rate available
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_pkt_life
-* NAME
-*      ib_path_rec_pkt_life
-*
-* DESCRIPTION
-*      Get encoded path pkt_life.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_rec_pkt_life(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( (uint8_t)(p_rec->pkt_life & IB_PATH_REC_BASE_MASK) );
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      Encoded path pkt_life = 4.096 ┬Ásec * 2 ** PacketLifeTime.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_pkt_life_sel
-* NAME
-*      ib_path_rec_pkt_life_sel
-*
-* DESCRIPTION
-*      Get encoded path pkt_lifetime selector.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_rec_pkt_life_sel(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( (uint8_t)((p_rec->pkt_life & IB_PATH_REC_SELECTOR_MASK) >> 6 ));
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      Encoded path pkt_lifetime selector value (for queries).
-*              0: greater than rate specified
-*              1: less than rate specified
-*              2: exactly the rate specified
-*              3: smallest packet lifetime available
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_flow_lbl
-* NAME
-*      ib_path_rec_flow_lbl
-*
-* DESCRIPTION
-*      Get flow label.
-*
-* SYNOPSIS
-*/
-static inline uint32_t OSM_API
-ib_path_rec_flow_lbl(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( ((cl_ntoh32(p_rec->hop_flow_raw) >> 8) & 0x000FFFFF) );
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      Flow label of the path record.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_path_rec_hop_limit
-* NAME
-*      ib_path_rec_hop_limit
-*
-* DESCRIPTION
-*      Get hop limit.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_rec_hop_limit(
-       IN      const   ib_path_rec_t* const    p_rec )
-{
-       return( (uint8_t)(p_rec->hop_flow_raw & 0x000000FF ) );
-}
-/*
-* PARAMETERS
-*      p_rec
-*              [in] Pointer to the path record object.
-*
-* RETURN VALUES
-*      Hop limit of the path record.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_path_rec_t
-*********/
-
-/****s* IBA Base: Constants/IB_CLASS_CAP_TRAP
-* NAME
-*      IB_CLASS_CAP_TRAP
-*
-* DESCRIPTION
-*      ClassPortInfo CapabilityMask bits.  This bit will be set
-*      if the class supports Trap() MADs (13.4.8.1).
-*
-* SEE ALSO
-*      ib_class_port_info_t, IB_CLASS_CAP_GETSET
-*
-* SOURCE
-*/
-#define IB_CLASS_CAP_TRAP                                      0x0001
-/*********/
-
-/****s* IBA Base: Constants/IB_CLASS_CAP_GETSET
-* NAME
-*      IB_CLASS_CAP_GETSET
-*
-* DESCRIPTION
-*      ClassPortInfo CapabilityMask bits.  This bit will be set
-*      if the class supports Get(Notice) and Set(Notice) MADs (13.4.8.1).
-*
-* SEE ALSO
-*      ib_class_port_info_t, IB_CLASS_CAP_TRAP
-*
-* SOURCE
-*/
-#define IB_CLASS_CAP_GETSET                                    0x0002
-/*********/
-
-/****s* IBA Base: Constants/IB_CLASS_RESP_TIME_MASK
-* NAME
-*      IB_CLASS_RESP_TIME_MASK
-*
-* DESCRIPTION
-*      Mask bits to extract the reponse time value from the
-*      resp_time_val field of ib_class_port_info_t.
-*
-* SEE ALSO
-*      ib_class_port_info_t
-*
-* SOURCE
-*/
-#define IB_CLASS_RESP_TIME_MASK                                0x1F
-/*********/
-/****s* IBA Base: Types/ib_class_port_info_t
-* NAME
-*      ib_class_port_info_t
-*
-* DESCRIPTION
-*      IBA defined ClassPortInfo attribute (13.4.8.1)
-*      route between two end-points on a subnet.
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_class_port_info
-{
-       uint8_t                                 base_ver;
-       uint8_t                                 class_ver;
-       ib_net16_t                              cap_mask;
-       uint8_t                                 reserved[3];
-       uint8_t                                 resp_time_val;
-       ib_gid_t                                redir_gid;
-       ib_net32_t                              redir_tc_sl_fl;
-       ib_net16_t                              redir_lid;
-       ib_net16_t                              redir_pkey;
-       ib_net32_t                              redir_qp;
-       ib_net32_t                              redir_qkey;
-       ib_gid_t                                trap_gid;
-       ib_net32_t                              trap_tc_sl_fl;
-       ib_net16_t                              trap_lid;
-       ib_net16_t                              trap_pkey;
-       ib_net32_t                              trap_hop_qp;
-       ib_net32_t                              trap_qkey;
-
-}      PACK_SUFFIX ib_class_port_info_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      base_ver
-*              Maximum supported MAD Base Version.
-*
-*      class_ver
-*              Maximum supported management class version.
-*
-*      cap_mask
-*              Supported capabilities of this management class.
-*
-*      resp_time_value
-*              Maximum expected response time.
-*
-*      redr_gid
-*              GID to use for redirection, or zero
-*
-*      recdir_tc_sl_fl
-*              Traffic class, service level and flow label the requester
-*              should use if the service is redirected.
-*
-*      redir_lid
-*              LID used for redirection, or zero
-*
-*      redir_pkey
-*              P_Key used for redirection
-*
-*      redir_qp
-*              QP number used for redirection
-*
-*      redir_qkey
-*              Q_Key associated with the redirected QP.  This shall be the
-*              well known Q_Key value.
-*
-*      trap_gid
-*              GID value used for trap messages from this service.
-*
-*      trap_tc_sl_fl
-*              Traffic class, service level and flow label used for
-*              trap messages originated by this service.
-*
-*      trap_lid
-*              LID used for trap messages, or zero
-*
-*      trap_pkey
-*              P_Key used for trap messages
-*
-*      trap_hop_qp
-*              Hop limit (upper 8 bits) and QP number used for trap messages
-*
-*      trap_qkey
-*              Q_Key associated with the trap messages QP.
-*
-* SEE ALSO
-*      IB_CLASS_CAP_GETSET, IB_CLASS_CAP_TRAP
-*
-*********/
-
-/****s* IBA Base: Types/ib_sm_info_t
-* NAME
-*      ib_sm_info_t
-*
-* DESCRIPTION
-*      SMInfo structure (14.2.5.13).
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_sm_info
-{
-       ib_net64_t                      guid;
-       ib_net64_t                      sm_key;
-       ib_net32_t                      act_count;
-       uint8_t                         pri_state;
-
-}      PACK_SUFFIX ib_sm_info_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      guid
-*              Port GUID for this SM.
-*
-*      sm_key
-*              SM_Key of this SM.
-*
-*      act_count
-*              Activity counter used as a heartbeat.
-*
-*      pri_state
-*              Priority and State information
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_sminfo_get_priority
-* NAME
-*      ib_sminfo_get_priority
-*
-* DESCRIPTION
-*      Returns the priority value.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_sminfo_get_priority(
-       IN      const   ib_sm_info_t* const             p_smi )
-{
-       return( (uint8_t)((p_smi->pri_state & 0xF0)>>4) );
-}
-/*
-* PARAMETERS
-*      p_smi
-*              [in] Pointer to the SMInfo Attribute.
-*
-* RETURN VALUES
-*      Returns the priority value.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_sminfo_get_state
-* NAME
-*      ib_sminfo_get_state
-*
-* DESCRIPTION
-*      Returns the state value.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_sminfo_get_state(
-       IN      const   ib_sm_info_t* const             p_smi )
-{
-       return( (uint8_t)(p_smi->pri_state & 0x0F) );
-}
-/*
-* PARAMETERS
-*      p_smi
-*              [in] Pointer to the SMInfo Attribute.
-*
-* RETURN VALUES
-*      Returns the state value.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****s* IBA Base: Types/ib_mad_t
-* NAME
-*      ib_mad_t
-*
-* DESCRIPTION
-*      IBA defined MAD header (13.4.3)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_mad
-{
-       uint8_t                                 base_ver;
-       uint8_t                                 mgmt_class;
-       uint8_t                                 class_ver;
-       uint8_t                                 method;
-       ib_net16_t                              status;
-       ib_net16_t                              class_spec;
-       ib_net64_t                              trans_id;
-       ib_net16_t                              attr_id;
-       ib_net16_t                              resv;
-       ib_net32_t                              attr_mod;
-}      PACK_SUFFIX ib_mad_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      base_ver
-*              MAD base format.
-*
-*      mgmt_class
-*              Class of operation.
-*
-*      class_ver
-*              Version of MAD class-specific format.
-*
-*      method
-*              Method to perform, including 'R' bit.
-*
-*      status
-*              Status of operation.
-*
-*      class_spec
-*              Reserved for subnet management.
-*
-*      trans_id
-*              Transaction ID.
-*
-*      attr_id
-*              Attribute ID.
-*
-*      resv
-*              Reserved field.
-*
-*      attr_mod
-*              Attribute modifier.
-*
-* SEE ALSO
-*********/
-
-
-/****s* IBA Base: Types/ib_rmpp_mad_t
-* NAME
-*      ib_rmpp_mad_t
-*
-* DESCRIPTION
-*      IBA defined MAD RMPP header (13.6.2.1)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_rmpp_mad
-{
-       ib_mad_t                                common_hdr;
-
-       uint8_t                                 rmpp_version;
-       uint8_t                                 rmpp_type;
-       uint8_t                                 rmpp_flags;
-       uint8_t                                 rmpp_status;
-
-       ib_net32_t                              seg_num;
-       ib_net32_t                              paylen_newwin;
-
-}      PACK_SUFFIX ib_rmpp_mad_t;
-#include <complib/cl_packoff.h>
-/*
-* SEE ALSO
-*      ib_mad_t
-*********/
-
-
-/****f* IBA Base: Types/ib_mad_init_new
-* NAME
-*      ib_mad_init_new
-*
-* DESCRIPTION
-*      Initializes a MAD common header.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_mad_init_new(
-       IN              ib_mad_t* const         p_mad,
-       IN              const   uint8_t         mgmt_class,
-       IN              const   uint8_t         class_ver,
-       IN              const   uint8_t         method,
-       IN              const   ib_net64_t      trans_id,
-       IN              const   ib_net16_t      attr_id,
-       IN              const   ib_net32_t      attr_mod )
-{
-       CL_ASSERT( p_mad );
-       p_mad->base_ver = 1;
-       p_mad->mgmt_class = mgmt_class;
-       p_mad->class_ver = class_ver;
-       p_mad->method = method;
-       p_mad->status = 0;
-       p_mad->class_spec = 0;
-       p_mad->trans_id = trans_id;
-       p_mad->attr_id = attr_id;
-       p_mad->resv = 0;
-       p_mad->attr_mod = attr_mod;
-}
-/*
-* PARAMETERS
-*      p_mad
-*              [in] Pointer to the MAD common header.
-*
-*      mgmt_class
-*              [in] Class of operation.
-*
-*      class_ver
-*              [in] Version of MAD class-specific format.
-*
-*      method
-*              [in] Method to perform, including 'R' bit.
-*
-*      trans_Id
-*              [in] Transaction ID.
-*
-*      attr_id
-*              [in] Attribute ID.
-*
-*      attr_mod
-*              [in] Attribute modifier.
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_mad_t
-*********/
-
-/****f* IBA Base: Types/ib_mad_init_response
-* NAME
-*      ib_mad_init_response
-*
-* DESCRIPTION
-*      Initializes a MAD common header as a response.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_mad_init_response(
-       IN      const   ib_mad_t* const         p_req_mad,
-       IN              ib_mad_t* const         p_mad,
-       IN      const   ib_net16_t              status )
-{
-       CL_ASSERT( p_req_mad );
-       CL_ASSERT( p_mad );
-       *p_mad = *p_req_mad;
-       p_mad->status = status;
-       if( p_mad->method == IB_MAD_METHOD_SET )
-               p_mad->method = IB_MAD_METHOD_GET;
-       p_mad->method |= IB_MAD_METHOD_RESP_MASK;
-}
-/*
-* PARAMETERS
-*      p_req_mad
-*              [in] Pointer to the MAD common header in the original request MAD.
-*
-*      p_mad
-*              [in] Pointer to the MAD common header to initialize.
-*
-*      status
-*              [in] MAD Status value to return;
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*      p_req_mad and p_mad may point to the same MAD.
-*
-* SEE ALSO
-*      ib_mad_t
-*********/
-
-/****f* IBA Base: Types/ib_mad_is_response
-* NAME
-*      ib_mad_is_response
-*
-* DESCRIPTION
-*      Returns TRUE if the MAD is a response ('R' bit set),
-*      FALSE otherwise.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_mad_is_response(
-       IN      const   ib_mad_t* const         p_mad )
-{
-       CL_ASSERT( p_mad );
-       return( (p_mad->method & IB_MAD_METHOD_RESP_MASK) ==
-                       IB_MAD_METHOD_RESP_MASK );
-}
-/*
-* PARAMETERS
-*      p_mad
-*              [in] Pointer to the MAD.
-*
-* RETURN VALUES
-*      Returns TRUE if the MAD is a response ('R' bit set),
-*      FALSE otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_mad_t
-*********/
-
-#define IB_RMPP_TYPE_DATA              1
-#define IB_RMPP_TYPE_ACK               2
-#define IB_RMPP_TYPE_STOP              3
-#define IB_RMPP_TYPE_ABORT             4
-
-#define IB_RMPP_NO_RESP_TIME           0x1F
-#define IB_RMPP_FLAG_ACTIVE            0x01
-#define IB_RMPP_FLAG_FIRST             0x02
-#define IB_RMPP_FLAG_LAST              0x04
-
-#define IB_RMPP_STATUS_SUCCESS         0
-#define IB_RMPP_STATUS_RESX            1               /* resources exhausted */
-#define IB_RMPP_STATUS_T2L             118             /* time too long */
-#define IB_RMPP_STATUS_BAD_LEN         119             /* incon. last and payload len */
-#define IB_RMPP_STATUS_BAD_SEG         120             /* incon. first and segment no */
-#define IB_RMPP_STATUS_BADT            121             /* bad rmpp type */
-#define IB_RMPP_STATUS_W2S             122             /* newwindowlast too small */
-#define IB_RMPP_STATUS_S2B             123             /* segment no too big */
-#define IB_RMPP_STATUS_BAD_STATUS      124             /* illegal status */
-#define IB_RMPP_STATUS_UNV             125             /* unsupported version */
-#define IB_RMPP_STATUS_TMR             126             /* too many retries */
-#define IB_RMPP_STATUS_UNSPEC          127             /* unspecified */
-
-/****f* IBA Base: Types/ib_rmpp_is_flag_set
-* NAME
-*      ib_rmpp_is_flag_set
-*
-* DESCRIPTION
-*      Returns TRUE if the MAD has the given RMPP flag set.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_rmpp_is_flag_set(
-       IN      const   ib_rmpp_mad_t* const    p_rmpp_mad,
-       IN      const   uint8_t                 flag )
-{
-       CL_ASSERT( p_rmpp_mad );
-       return( (p_rmpp_mad->rmpp_flags & flag) == flag );
-}
-/*
-* PARAMETERS
-*      ib_rmpp_mad_t
-*              [in] Pointer to a MAD with an RMPP header.
-*
-*      flag
-*              [in] The RMPP flag being examined.
-*
-* RETURN VALUES
-*      Returns TRUE if the MAD has the given RMPP flag set.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_mad_t, ib_rmpp_mad_t
-*********/
-
-static inline void     OSM_API
-ib_rmpp_set_resp_time(
-       IN              ib_rmpp_mad_t* const    p_rmpp_mad,
-       IN      const   uint8_t                 resp_time )
-{
-       CL_ASSERT( p_rmpp_mad );
-       p_rmpp_mad->rmpp_flags |= (resp_time << 3);
-}
-
-
-static inline uint8_t  OSM_API
-ib_rmpp_get_resp_time(
-       IN      const   ib_rmpp_mad_t* const    p_rmpp_mad )
-{
-       CL_ASSERT( p_rmpp_mad );
-       return( (uint8_t)(p_rmpp_mad->rmpp_flags >> 3) );
-}
-
-/****d* IBA Base: Constants/IB_SMP_DIRECTION
-* NAME
-*      IB_SMP_DIRECTION
-*
-* DESCRIPTION
-*      The Direction bit for directed route SMPs.
-*
-* SOURCE
-*/
-#define IB_SMP_DIRECTION_HO            0x8000
-#define IB_SMP_DIRECTION               (CL_HTON16(IB_SMP_DIRECTION_HO))
-/**********/
-
-/****d* IBA Base: Constants/IB_SMP_STATUS_MASK
-* NAME
-*      IB_SMP_STATUS_MASK
-*
-* DESCRIPTION
-*      Mask value for extracting status from a directed route SMP.
-*
-* SOURCE
-*/
-#define IB_SMP_STATUS_MASK_HO          0x7FFF
-#define IB_SMP_STATUS_MASK             (CL_HTON16(IB_SMP_STATUS_MASK_HO))
-/**********/
-
-/****s* IBA Base: Types/ib_smp_t
-* NAME
-*      ib_smp_t
-*
-* DESCRIPTION
-*      IBA defined SMP. (14.2.1.2)
-*
-* SYNOPSIS
-*/
-#define IB_SMP_DATA_SIZE 64
-#include <complib/cl_packon.h>
-typedef struct _ib_smp
-{
-       uint8_t                                 base_ver;
-       uint8_t                                 mgmt_class;
-       uint8_t                                 class_ver;
-       uint8_t                                 method;
-       ib_net16_t                              status;
-       uint8_t                                 hop_ptr;
-       uint8_t                                 hop_count;
-       ib_net64_t                              trans_id;
-       ib_net16_t                              attr_id;
-       ib_net16_t                              resv;
-       ib_net32_t                              attr_mod;
-       ib_net64_t                              m_key;
-       ib_net16_t                              dr_slid;
-       ib_net16_t                              dr_dlid;
-       uint32_t                                resv1[7];
-       uint8_t                                 data[IB_SMP_DATA_SIZE];
-       uint8_t                                 initial_path[IB_SUBNET_PATH_HOPS_MAX];
-       uint8_t                                 return_path[IB_SUBNET_PATH_HOPS_MAX];
-
-}      PACK_SUFFIX ib_smp_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      base_ver
-*              MAD base format.
-*
-*      mgmt_class
-*              Class of operation.
-*
-*      class_ver
-*              Version of MAD class-specific format.
-*
-*      method
-*              Method to perform, including 'R' bit.
-*
-*      status
-*              Status of operation.
-*
-*      hop_ptr
-*              Hop pointer for directed route MADs.
-*
-*      hop_count
-*              Hop count for directed route MADs.
-*
-*      trans_Id
-*              Transaction ID.
-*
-*      attr_id
-*              Attribute ID.
-*
-*      resv
-*              Reserved field.
-*
-*      attr_mod
-*              Attribute modifier.
-*
-*      m_key
-*              Management key value.
-*
-*      dr_slid
-*              Directed route source LID.
-*
-*      dr_dlid
-*              Directed route destination LID.
-*
-*      resv0
-*              Reserved for 64 byte alignment.
-*
-*      data
-*              MAD data payload.
-*
-*      initial_path
-*              Outbound port list.
-*
-*      return_path
-*              Inbound port list.
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_smp_get_status
-* NAME
-*      ib_smp_get_status
-*
-* DESCRIPTION
-*      Returns the SMP status value in network order.
-*
-* SYNOPSIS
-*/
-static inline ib_net16_t       OSM_API
-ib_smp_get_status(
-       IN      const   ib_smp_t* const         p_smp )
-{
-       return( (ib_net16_t)(p_smp->status & IB_SMP_STATUS_MASK) );
-}
-/*
-* PARAMETERS
-*      p_smp
-*              [in] Pointer to the SMP packet.
-*
-* RETURN VALUES
-*      Returns the SMP status value in network order.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_smp_t
-*********/
-
-/****f* IBA Base: Types/ib_smp_is_response
-* NAME
-*      ib_smp_is_response
-*
-* DESCRIPTION
-*      Returns TRUE if the SMP is a response MAD, FALSE otherwise.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_smp_is_response(
-       IN      const   ib_smp_t* const         p_smp )
-{
-       return( ib_mad_is_response( (const ib_mad_t*)p_smp ) );
-}
-/*
-* PARAMETERS
-*      p_smp
-*              [in] Pointer to the SMP packet.
-*
-* RETURN VALUES
-*      Returns TRUE if the SMP is a response MAD, FALSE otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_smp_t
-*********/
-
-/****f* IBA Base: Types/ib_smp_is_d
-* NAME
-*      ib_smp_is_d
-*
-* DESCRIPTION
-*      Returns TRUE if the SMP 'D' (direction) bit is set.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_smp_is_d(
-       IN      const   ib_smp_t* const         p_smp )
-{
-       return( (p_smp->status & IB_SMP_DIRECTION) == IB_SMP_DIRECTION );
-}
-/*
-* PARAMETERS
-*      p_smp
-*              [in] Pointer to the SMP packet.
-*
-* RETURN VALUES
-*      Returns TRUE if the SMP 'D' (direction) bit is set.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_smp_t
-*********/
-
-/****f* IBA Base: Types/ib_smp_init_new
-* NAME
-*      ib_smp_init_new
-*
-* DESCRIPTION
-*      Initializes a MAD common header.
-*
-* TODO
-*      This is too big for inlining, but leave it here for now
-*      since there is not yet another convient spot.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_smp_init_new(
-       IN              ib_smp_t* const         p_smp,
-       IN      const   uint8_t                 method,
-       IN      const   ib_net64_t              trans_id,
-       IN      const   ib_net16_t              attr_id,
-       IN      const   ib_net32_t              attr_mod,
-       IN      const   uint8_t                 hop_count,
-       IN      const   ib_net64_t              m_key,
-       IN      const   uint8_t*                path_out,
-       IN      const   ib_net16_t              dr_slid,
-       IN      const   ib_net16_t              dr_dlid )
-{
-       CL_ASSERT( p_smp );
-       CL_ASSERT( hop_count < IB_SUBNET_PATH_HOPS_MAX );
-       p_smp->base_ver = 1;
-       p_smp->mgmt_class = IB_MCLASS_SUBN_DIR;
-       p_smp->class_ver = 1;
-       p_smp->method = method;
-       p_smp->status = 0;
-       p_smp->hop_ptr = 0;
-       p_smp->hop_count = hop_count;
-       p_smp->trans_id = trans_id;
-       p_smp->attr_id = attr_id;
-       p_smp->resv = 0;
-       p_smp->attr_mod = attr_mod;
-       p_smp->m_key = m_key;
-       p_smp->dr_slid = dr_slid;
-       p_smp->dr_dlid = dr_dlid;
-
-       memset( p_smp->resv1, 0,
-               sizeof(p_smp->resv1) +
-               sizeof(p_smp->data) +
-               sizeof(p_smp->initial_path) +
-               sizeof(p_smp->return_path) );
-
-       /* copy the path */
-       memcpy( &p_smp->initial_path, path_out,
-               sizeof( p_smp->initial_path ) );
-}
-/*
-* PARAMETERS
-*      p_smp
-*              [in] Pointer to the SMP packet.
-*
-*      method
-*              [in] Method to perform, including 'R' bit.
-*
-*      trans_Id
-*              [in] Transaction ID.
-*
-*      attr_id
-*              [in] Attribute ID.
-*
-*      attr_mod
-*              [in] Attribute modifier.
-*
-*      hop_count
-*              [in] Number of hops in the path.
-*
-*      m_key
-*              [in] Management key for this SMP.
-*
-*      path_out
-*              [in] Port array for outbound path.
-*
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*      Payload area is initialized to zero.
-*
-*
-* SEE ALSO
-*      ib_mad_t
-*********/
-
-/****f* IBA Base: Types/ib_smp_get_payload_ptr
-* NAME
-*      ib_smp_get_payload_ptr
-*
-* DESCRIPTION
-*      Gets a pointer to the SMP payload area.
-*
-* SYNOPSIS
-*/
-static inline void*    OSM_API
-ib_smp_get_payload_ptr(
-       IN      const   ib_smp_t* const         p_smp )
-{
-       return( (void*)p_smp->data );
-}
-/*
-* PARAMETERS
-*      p_smp
-*              [in] Pointer to the SMP packet.
-*
-* RETURN VALUES
-*      Pointer to SMP payload area.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_mad_t
-*********/
-
-/****s* IBA Base: Types/ib_node_info_t
-* NAME
-*      ib_node_info_t
-*
-* DESCRIPTION
-*      IBA defined NodeInfo. (14.2.5.3)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_node_info
-{
-       uint8_t                         base_version;
-       uint8_t                         class_version;
-       uint8_t                         node_type;
-       uint8_t                         num_ports;
-       ib_net64_t                      sys_guid;
-       ib_net64_t                      node_guid;
-       ib_net64_t                      port_guid;
-       ib_net16_t                      partition_cap;
-       ib_net16_t                      device_id;
-       ib_net32_t                      revision;
-       ib_net32_t                      port_num_vendor_id;
-
-}      PACK_SUFFIX ib_node_info_t;
-#include <complib/cl_packoff.h>
-/************/
-
-/****s* IBA Base: Types/ib_sa_mad_t
-* NAME
-*      ib_sa_mad_t
-*
-* DESCRIPTION
-*      IBA defined SA MAD format. (15.2.1)
-*
-* SYNOPSIS
-*/
-#define IB_SA_DATA_SIZE 200
-
-#include <complib/cl_packon.h>
-typedef struct _ib_sa_mad
-{
-       uint8_t                                 base_ver;
-       uint8_t                                 mgmt_class;
-       uint8_t                                 class_ver;
-       uint8_t                                 method;
-       ib_net16_t                              status;
-       ib_net16_t                              resv;
-       ib_net64_t                              trans_id;
-       ib_net16_t                              attr_id;
-       ib_net16_t                              resv1;
-       ib_net32_t                              attr_mod;
-
-       uint8_t                                 rmpp_version;
-       uint8_t                                 rmpp_type;
-       uint8_t                                 rmpp_flags;
-       uint8_t                                 rmpp_status;
-
-       ib_net32_t                              seg_num;
-       ib_net32_t                              paylen_newwin;
-
-       ib_net64_t                              sm_key;
-
-       ib_net16_t                              attr_offset;
-       ib_net16_t                              resv3;
-
-       ib_net64_t                              comp_mask;
-
-       uint8_t                                 data[IB_SA_DATA_SIZE];
-}      PACK_SUFFIX ib_sa_mad_t;
-#include <complib/cl_packoff.h>
-/**********/
-#define IB_SA_MAD_HDR_SIZE (sizeof(ib_sa_mad_t) - IB_SA_DATA_SIZE)
-
-static inline uint32_t OSM_API
-ib_get_attr_size(
-       IN      const   ib_net16_t                              attr_offset )
-{
-       return( ((uint32_t)cl_ntoh16( attr_offset )) << 3 );
-}
-
-static inline ib_net16_t       OSM_API
-ib_get_attr_offset(
-       IN      const   uint32_t                                attr_size )
-{
-       return( cl_hton16( (uint16_t)(attr_size >> 3) ) );
-}
-
-/****f* IBA Base: Types/ib_sa_mad_get_payload_ptr
-* NAME
-*      ib_sa_mad_get_payload_ptr
-*
-* DESCRIPTION
-*      Gets a pointer to the SA MAD's payload area.
-*
-* SYNOPSIS
-*/
-static inline void*    OSM_API
-ib_sa_mad_get_payload_ptr(
-       IN      const   ib_sa_mad_t* const              p_sa_mad )
-{
-       return( (void*)p_sa_mad->data );
-}
-/*
-* PARAMETERS
-*      p_smp
-*              [in] Pointer to the SA MAD packet.
-*
-* RETURN VALUES
-*      Pointer to SA MAD payload area.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_mad_t
-*********/
-
-#define IB_NODE_INFO_PORT_NUM_MASK             (CL_NTOH32(0xFF000000))
-#define IB_NODE_INFO_VEND_ID_MASK              (CL_NTOH32(0x00FFFFFF))
-#if CPU_LE
-       #define IB_NODE_INFO_PORT_NUM_SHIFT 0
-#else
-       #define IB_NODE_INFO_PORT_NUM_SHIFT 24
-#endif
-
-/****f* IBA Base: Types/ib_node_info_get_local_port_num
-* NAME
-*      ib_node_info_get_local_port_num
-*
-* DESCRIPTION
-*      Gets a the local port number from the NodeInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_node_info_get_local_port_num(
-       IN      const   ib_node_info_t* const   p_ni )
-{
-       return( (uint8_t)(( p_ni->port_num_vendor_id &
-                       IB_NODE_INFO_PORT_NUM_MASK )
-                       >> IB_NODE_INFO_PORT_NUM_SHIFT ));
-}
-/*
-* PARAMETERS
-*      p_ni
-*              [in] Pointer to a NodeInfo attribute.
-*
-* RETURN VALUES
-*      Local port number that returned the attribute.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_node_info_t
-*********/
-
-/****f* IBA Base: Types/ib_node_info_get_vendor_id
-* NAME
-*      ib_node_info_get_vendor_id
-*
-* DESCRIPTION
-*      Gets the VendorID from the NodeInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline ib_net32_t       OSM_API
-ib_node_info_get_vendor_id(
-       IN      const   ib_node_info_t* const   p_ni )
-{
-       return( (ib_net32_t)( p_ni->port_num_vendor_id &
-                       IB_NODE_INFO_VEND_ID_MASK ) );
-}
-/*
-* PARAMETERS
-*      p_ni
-*              [in] Pointer to a NodeInfo attribute.
-*
-* RETURN VALUES
-*      VendorID that returned the attribute.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_node_info_t
-*********/
-
-#define IB_NODE_DESCRIPTION_SIZE 64
-
-#include <complib/cl_packon.h>
-typedef struct _ib_node_desc
-{
-       // Node String is an array of UTF-8 character that
-       // describes the node in text format
-       // Note that this string is NOT NULL TERMINATED!
-       uint8_t         description[IB_NODE_DESCRIPTION_SIZE];
-
-}      PACK_SUFFIX ib_node_desc_t;
-#include <complib/cl_packoff.h>
-
-#include <complib/cl_packon.h>
-typedef struct _ib_node_record_t
-{
-       ib_net16_t              lid;
-       ib_net16_t              resv;
-       ib_node_info_t  node_info;
-       ib_node_desc_t  node_desc;
-       uint8_t                 pad[4];
-
-}      PACK_SUFFIX ib_node_record_t;
-#include <complib/cl_packoff.h>
-
-/****s* IBA Base: Types/ib_port_info_t
-* NAME
-*      ib_port_info_t
-*
-* DESCRIPTION
-*      IBA defined PortInfo. (14.2.5.6)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_port_info
-{
-       ib_net64_t                      m_key;
-       ib_net64_t                      subnet_prefix;
-       ib_net16_t                      base_lid;
-       ib_net16_t                      master_sm_base_lid;
-       ib_net32_t                      capability_mask;
-       ib_net16_t                      diag_code;
-       ib_net16_t                      m_key_lease_period;
-       uint8_t                         local_port_num;
-       uint8_t                         link_width_enabled;
-       uint8_t                         link_width_supported;
-       uint8_t                         link_width_active;
-       uint8_t                         state_info1; /* LinkSpeedSupported and PortState */
-       uint8_t                         state_info2; /* PortPhysState and LinkDownDefaultState */
-       uint8_t                         mkey_lmc;
-       uint8_t                         link_speed;      /* LinkSpeedEnabled and LinkSpeedActive */
-       uint8_t                         mtu_smsl;
-       uint8_t                         vl_cap;          /* VLCap and InitType */
-       uint8_t                         vl_high_limit;
-       uint8_t                         vl_arb_high_cap;
-       uint8_t                         vl_arb_low_cap;
-       uint8_t                         mtu_cap;
-       uint8_t                         vl_stall_life;
-       uint8_t                         vl_enforce;
-       ib_net16_t                      m_key_violations;
-       ib_net16_t                      p_key_violations;
-       ib_net16_t                      q_key_violations;
-       uint8_t                         guid_cap;
-       uint8_t                         subnet_timeout; /* cli_rereg(1b), resrv(
-2b), timeout(5b) */
-       uint8_t                         resp_time_value;
-       uint8_t                         error_threshold;
-
-}      PACK_SUFFIX ib_port_info_t;
-#include <complib/cl_packoff.h>
-/************/
-
-#define IB_PORT_STATE_MASK                     0x0F
-#define IB_PORT_LMC_MASK                       0x07
-#define IB_PORT_LMC_MAX                                0x07
-#define IB_PORT_MPB_MASK                       0xC0
-#define IB_PORT_MPB_SHIFT                      6
-#define IB_PORT_LINK_SPEED_SHIFT               4
-#define IB_PORT_LINK_SPEED_SUPPORTED_MASK      0xF0
-#define IB_PORT_LINK_SPEED_ACTIVE_MASK         0xF0
-#define IB_PORT_LINK_SPEED_ENABLED_MASK                0x0F
-#define IB_PORT_PHYS_STATE_MASK                        0xF0
-#define IB_PORT_PHYS_STATE_SHIFT               4
-#define IB_PORT_LNKDWNDFTSTATE_MASK            0x0F
-
-#define IB_PORT_CAP_RESV0         (CL_NTOH32(0x00000001))
-#define IB_PORT_CAP_IS_SM         (CL_NTOH32(0x00000002))
-#define IB_PORT_CAP_HAS_NOTICE    (CL_NTOH32(0x00000004))
-#define IB_PORT_CAP_HAS_TRAP      (CL_NTOH32(0x00000008))
-#define IB_PORT_CAP_HAS_IPD       (CL_NTOH32(0x00000010))
-#define IB_PORT_CAP_HAS_AUTO_MIG  (CL_NTOH32(0x00000020))
-#define IB_PORT_CAP_HAS_SL_MAP    (CL_NTOH32(0x00000040))
-#define IB_PORT_CAP_HAS_NV_MKEY   (CL_NTOH32(0x00000080))
-#define IB_PORT_CAP_HAS_NV_PKEY   (CL_NTOH32(0x00000100))
-#define IB_PORT_CAP_HAS_LED_INFO  (CL_NTOH32(0x00000200))
-#define IB_PORT_CAP_SM_DISAB      (CL_NTOH32(0x00000400))
-#define IB_PORT_CAP_HAS_SYS_IMG_GUID  (CL_NTOH32(0x00000800))
-#define IB_PORT_CAP_HAS_PKEY_SW_EXT_PORT_TRAP (CL_NTOH32(0x00001000))
-#define IB_PORT_CAP_RESV13        (CL_NTOH32(0x00002000))
-#define IB_PORT_CAP_RESV14        (CL_NTOH32(0x00004000))
-#define IB_PORT_CAP_RESV15        (CL_NTOH32(0x00008000))
-#define IB_PORT_CAP_HAS_COM_MGT   (CL_NTOH32(0x00010000))
-#define IB_PORT_CAP_HAS_SNMP      (CL_NTOH32(0x00020000))
-#define IB_PORT_CAP_REINIT        (CL_NTOH32(0x00040000))
-#define IB_PORT_CAP_HAS_DEV_MGT   (CL_NTOH32(0x00080000))
-#define IB_PORT_CAP_HAS_VEND_CLS  (CL_NTOH32(0x00100000))
-#define IB_PORT_CAP_HAS_DR_NTC    (CL_NTOH32(0x00200000))
-#define IB_PORT_CAP_HAS_CAP_NTC   (CL_NTOH32(0x00400000))
-#define IB_PORT_CAP_HAS_BM        (CL_NTOH32(0x00800000))
-#define IB_PORT_CAP_HAS_LINK_RT_LATENCY (CL_NTOH32(0x01000000))
-#define IB_PORT_CAP_HAS_CLIENT_REREG (CL_NTOH32(0x02000000))
-#define IB_PORT_CAP_RESV26        (CL_NTOH32(0x04000000))
-#define IB_PORT_CAP_RESV27        (CL_NTOH32(0x08000000))
-#define IB_PORT_CAP_RESV28        (CL_NTOH32(0x10000000))
-#define IB_PORT_CAP_RESV29        (CL_NTOH32(0x20000000))
-#define IB_PORT_CAP_RESV30        (CL_NTOH32(0x40000000))
-#define IB_PORT_CAP_RESV31        (CL_NTOH32(0x80000000))
-
-/****f* IBA Base: Types/ib_port_info_get_port_state
-* NAME
-*      ib_port_info_get_port_state
-*
-* DESCRIPTION
-*      Returns the port state.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_port_state(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-       return( (uint8_t)(p_pi->state_info1 & IB_PORT_STATE_MASK) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Port state.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_port_state
-* NAME
-*      ib_port_info_set_port_state
-*
-* DESCRIPTION
-*      Sets the port state.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_port_state(
-       IN              ib_port_info_t* const   p_pi,
-       IN      const   uint8_t                 port_state )
-{
-       p_pi->state_info1 = (uint8_t)((p_pi->state_info1 & 0xF0) | port_state );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      port_state
-*              [in] Port state value to set.
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_vl_cap
-* NAME
-*      ib_port_info_get_vl_cap
-*
-* DESCRIPTION
-*      Gets the VL Capability of a port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_vl_cap(
-       IN const ib_port_info_t* const p_pi)
-{
-       return((p_pi->vl_cap >> 4) & 0x0F);
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      VL_CAP field
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_init_type
-* NAME
-*      ib_port_info_get_init_type
-*
-* DESCRIPTION
-*      Gets the init type of a port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_init_type(
-       IN const ib_port_info_t* const p_pi)
-{
-       return (uint8_t) (p_pi->vl_cap & 0x0F);
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      InitType field
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_op_vls
-* NAME
-*      ib_port_info_get_op_vls
-*
-* DESCRIPTION
-*      Gets the operational VLs on a port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_op_vls(
-       IN const ib_port_info_t* const p_pi)
-{
-       return((p_pi->vl_enforce >> 4) & 0x0F);
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      OP_VLS field
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_op_vls
-* NAME
-*      ib_port_info_set_op_vls
-*
-* DESCRIPTION
-*      Sets the operational VLs on a port.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_op_vls(
-       IN              ib_port_info_t* const   p_pi,
-       IN      const   uint8_t                 op_vls )
-{
-       p_pi->vl_enforce = (uint8_t)((p_pi->vl_enforce & 0x0F) | (op_vls << 4) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      op_vls
-*              [in] Encoded operation VLs value.
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_state_no_change
-* NAME
-*      ib_port_info_set_state_no_change
-*
-* DESCRIPTION
-*      Sets the port state fields to the value for "no change".
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_state_no_change(
-       IN              ib_port_info_t* const   p_pi )
-{
-       ib_port_info_set_port_state( p_pi, IB_LINK_NO_CHANGE );
-       p_pi->state_info2 = 0;
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_link_speed_sup
-* NAME
-*      ib_port_info_get_link_speed_sup
-*
-* DESCRIPTION
-*      Returns the encoded value for the link speed supported.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_link_speed_sup(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-       return( (uint8_t)((p_pi->state_info1 &
-                       IB_PORT_LINK_SPEED_SUPPORTED_MASK) >>
-                       IB_PORT_LINK_SPEED_SHIFT) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the encoded value for the link speed supported.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_link_speed_sup
-* NAME
-*      ib_port_info_set_link_speed_sup
-*
-* DESCRIPTION
-*      Given an integer of the supported link speed supported.
-*      Set the appropriate bits in state_info1
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_link_speed_sup(
-       IN      uint8_t const           speed,
-       IN      ib_port_info_t*         p_pi )
-{
-       p_pi->state_info1 =
-               ( ~IB_PORT_LINK_SPEED_SUPPORTED_MASK & p_pi->state_info1 ) |
-               ( IB_PORT_LINK_SPEED_SUPPORTED_MASK &
-                       (speed << IB_PORT_LINK_SPEED_SHIFT) );
-}
-/*
-* PARAMETERS
-*      speed
-*              [in] Supported Speeds Code.
-*
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      This function does not return a value.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_port_phys_state
-* NAME
-*      ib_port_info_get_port_phys_state
-*
-* DESCRIPTION
-*      Returns the encoded value for the port physical state.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_port_phys_state(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-       return( (uint8_t)((p_pi->state_info2 &
-                      IB_PORT_PHYS_STATE_MASK) >>
-                     IB_PORT_PHYS_STATE_SHIFT) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the encoded value for the port physical state.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_port_phys_state
-* NAME
-*      ib_port_info_set_port_phys_state
-*
-* DESCRIPTION
-*      Given an integer of the port physical state,
-*      Set the appropriate bits in state_info2
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_port_phys_state(
-       IN      uint8_t const           phys_state,
-       IN      ib_port_info_t*         p_pi )
-{
-       p_pi->state_info2 =
-               ( ~IB_PORT_PHYS_STATE_MASK & p_pi->state_info2 ) |
-               ( IB_PORT_PHYS_STATE_MASK &
-        (phys_state << IB_PORT_PHYS_STATE_SHIFT) );
-}
-/*
-* PARAMETERS
-*      phys_state
-*              [in] port physical state.
-*
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      This function does not return a value.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_link_down_def_state
-* NAME
-*      ib_port_info_get_link_down_def_state
-*
-* DESCRIPTION
-*      Returns the link down default state.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_link_down_def_state(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-       return( (uint8_t)(p_pi->state_info2 & IB_PORT_LNKDWNDFTSTATE_MASK) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      link down default state of the port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_link_down_def_state
-* NAME
-*      ib_port_info_set_link_down_def_state
-*
-* DESCRIPTION
-*      Sets the link down default state of the port.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_link_down_def_state(
-       IN              ib_port_info_t* const   p_pi,
-       IN      const   uint8_t                 link_dwn_state )
-{
-       p_pi->state_info2 = (uint8_t)((p_pi->state_info2 & 0xF0) | link_dwn_state );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      link_dwn_state
-*              [in] Link down default state of the port.
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_link_speed_active
-* NAME
-*      ib_port_info_get_link_speed_active
-*
-* DESCRIPTION
-*      Returns the Link Speed Active value assigned to this port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_link_speed_active(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-  return( (uint8_t)((p_pi->link_speed &
-                     IB_PORT_LINK_SPEED_ACTIVE_MASK) >>
-                    IB_PORT_LINK_SPEED_SHIFT) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the link speed active value assigned to this port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-#define IB_LINK_WIDTH_ACTIVE_1X                        1
-#define IB_LINK_WIDTH_ACTIVE_4X                        2
-#define IB_LINK_WIDTH_ACTIVE_12X               8
-#define IB_LINK_SPEED_ACTIVE_2_5               1
-#define IB_LINK_SPEED_ACTIVE_5                 2
-#define IB_LINK_SPEED_ACTIVE_10                        4
-
-/* following v1 ver1.2 p901 */
-#define IB_PATH_RECORD_RATE_2_5_GBS            2
-#define IB_PATH_RECORD_RATE_10_GBS             3
-#define IB_PATH_RECORD_RATE_30_GBS             4
-#define IB_PATH_RECORD_RATE_5_GBS              5
-#define IB_PATH_RECORD_RATE_20_GBS             6
-#define IB_PATH_RECORD_RATE_40_GBS             7
-#define IB_PATH_RECORD_RATE_60_GBS             8
-#define IB_PATH_RECORD_RATE_80_GBS             9
-#define IB_PATH_RECORD_RATE_120_GBS            10
-
-#define IB_MIN_RATE    IB_PATH_RECORD_RATE_2_5_GBS
-#define IB_MAX_RATE    IB_PATH_RECORD_RATE_120_GBS 
-
-/****f* IBA Base: Types/ib_port_info_compute_rate
-* NAME
-*      ib_port_info_compute_rate
-*
-* DESCRIPTION
-*      Returns the encoded value for the path rate.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_compute_rate(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-  uint8_t rate = 0;
-
-  switch (ib_port_info_get_link_speed_active(p_pi))
-  {
-  case IB_LINK_SPEED_ACTIVE_2_5:
-    switch (p_pi->link_width_active)
-    {
-    case IB_LINK_WIDTH_ACTIVE_1X:
-      rate = IB_PATH_RECORD_RATE_2_5_GBS;
-      break;
-      
-    case IB_LINK_WIDTH_ACTIVE_4X:
-      rate = IB_PATH_RECORD_RATE_10_GBS;
-      break;
-
-    case IB_LINK_WIDTH_ACTIVE_12X:
-      rate = IB_PATH_RECORD_RATE_30_GBS;
-      break;
-
-    default:
-      rate = IB_PATH_RECORD_RATE_2_5_GBS;
-      break;
-    }
-    break;
-  case IB_LINK_SPEED_ACTIVE_5:
-    switch (p_pi->link_width_active)
-    {
-    case IB_LINK_WIDTH_ACTIVE_1X:
-      rate = IB_PATH_RECORD_RATE_5_GBS;
-      break;
-
-    case IB_LINK_WIDTH_ACTIVE_4X:
-      rate = IB_PATH_RECORD_RATE_20_GBS;
-      break;
-
-    case IB_LINK_WIDTH_ACTIVE_12X:
-      rate = IB_PATH_RECORD_RATE_60_GBS;
-      break;
-
-    default:
-      rate = IB_PATH_RECORD_RATE_5_GBS;
-      break;
-    }
-    break;
-  case IB_LINK_SPEED_ACTIVE_10:
-    switch (p_pi->link_width_active)
-    {
-    case IB_LINK_WIDTH_ACTIVE_1X:
-      rate = IB_PATH_RECORD_RATE_10_GBS;
-      break;
-
-    case IB_LINK_WIDTH_ACTIVE_4X:
-      rate = IB_PATH_RECORD_RATE_40_GBS;
-      break;
-
-    case IB_LINK_WIDTH_ACTIVE_12X:
-      rate =IB_PATH_RECORD_RATE_120_GBS;
-      break;
-
-    default:
-      rate = IB_PATH_RECORD_RATE_10_GBS;
-      break;
-    }
-    break;
-  default:
-    rate = IB_PATH_RECORD_RATE_2_5_GBS;
-    break;
-  }
-
-  return rate;
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the encoded value for the link speed supported.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_path_get_ipd
-* NAME
-*      ib_path_get_ipd
-*
-* DESCRIPTION
-*      Returns the encoded value for the inter packet delay.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_path_get_ipd(
-       IN              uint8_t         local_link_width_supported,
-       IN              uint8_t         path_rec_rate )
-{
-       uint8_t ipd = 0;
-
-       switch(local_link_width_supported)
-       {
-               /* link_width_supported = 1: 1x */
-               case 1:
-                       break;
-
-               /* link_width_supported = 3: 1x or 4x */
-               case 3:
-                       switch(path_rec_rate & 0x3F)
-                       {
-                               case IB_PATH_RECORD_RATE_2_5_GBS:
-                                       ipd = 3;
-                                       break;
-                               default:
-                                       break;
-                       }
-                       break;
-
-               /* link_width_supported = 11: 1x or 4x or 12x */
-               case 11:
-                       switch(path_rec_rate & 0x3F)
-                       {
-                               case IB_PATH_RECORD_RATE_2_5_GBS:
-                                       ipd = 11;
-                                       break;
-                               case IB_PATH_RECORD_RATE_10_GBS:
-                                       ipd = 2;
-                                       break;
-                               default:
-                                       break;
-                       }
-                       break;
-
-               default:
-                       break;
-       }
-
-       return ipd;
-}
-/*
-* PARAMETERS
-*      local_link_width_supported
-*              [in] link with supported for this port
-*
-*      path_rec_rate
-*              [in] rate field of the path record
-*
-* RETURN VALUES
-*      Returns the ipd
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_mtu_cap
-* NAME
-*      ib_port_info_get_mtu_cap
-*
-* DESCRIPTION
-*      Returns the encoded value for the maximum MTU supported by this port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_mtu_cap(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-       return( (uint8_t)(p_pi->mtu_cap & 0x0F) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the LMC value assigned to this port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_neighbor_mtu
-* NAME
-*      ib_port_info_get_neighbor_mtu
-*
-* DESCRIPTION
-*      Returns the encoded value for the neighbor MTU at this port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_neighbor_mtu(
-       IN const ib_port_info_t* const p_pi )
-{
-       return( (uint8_t)((p_pi->mtu_smsl & 0xF0) >> 4) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the encoded value for the neighbor MTU at this port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_neighbor_mtu
-* NAME
-*      ib_port_info_set_neighbor_mtu
-*
-* DESCRIPTION
-*      Sets the Neighbor MTU value in the PortInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_neighbor_mtu(
-       IN              ib_port_info_t* const   p_pi,
-       IN      const   uint8_t                 mtu )
-{
-       CL_ASSERT( mtu <= 5 );
-       CL_ASSERT( mtu != 0 );
-       p_pi->mtu_smsl = (uint8_t)((p_pi->mtu_smsl & 0x0F) | (mtu << 4));
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      mtu
-*              [in] Encoded MTU value to set
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_master_smsl
-* NAME
-*      ib_port_info_get_master_smsl
-*
-* DESCRIPTION
-*      Returns the encoded value for the Master SMSL at this port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_master_smsl(
-       IN const ib_port_info_t* const p_pi )
-{
-  return (uint8_t) (p_pi->mtu_smsl & 0x0F); 
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the encoded value for the Master SMSL at this port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_master_smsl
-* NAME
-*      ib_port_info_set_master_smsl
-*
-* DESCRIPTION
-*      Sets the Master SMSL value in the PortInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_master_smsl(
-       IN              ib_port_info_t* const   p_pi,
-       IN      const   uint8_t                 smsl )
-{
-       p_pi->mtu_smsl = (uint8_t)((p_pi->mtu_smsl & 0xF0) | smsl );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      mtu
-*              [in] Encoded Master SMSL value to set
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_timeout
-* NAME
-*      ib_port_info_set_timeout
-*
-* DESCRIPTION
-*      Sets the encoded subnet timeout value in the PortInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_timeout(
-       IN              ib_port_info_t* const   p_pi,
-       IN      const   uint8_t                 timeout )
-{
-       CL_ASSERT( timeout <= 0x1F );
-       p_pi->subnet_timeout =
-     (uint8_t)(
-       (p_pi->subnet_timeout & 0x80) | (timeout & 0x1F));
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      timeout
-*              [in] Encoded timeout value to set
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_client_rereg
-* NAME
-*      ib_port_info_set_client_rereg
-*
-* DESCRIPTION
-*      Sets the encoded client reregistration bit value in the PortInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_client_rereg(
-       IN              ib_port_info_t* const   p_pi,
-       IN      const   uint8_t                 client_rereg )
-{
-       CL_ASSERT( client_rereg <= 0x1 );
-       p_pi->subnet_timeout =
-     (uint8_t)(
-       (p_pi->subnet_timeout & 0x1F) | ((client_rereg << 7) & 0x80));
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      client_rereg
-*              [in] Client reregistration value to set (either 1 or 0).
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_timeout
-* NAME
-*      ib_port_info_get_timeout
-*
-* DESCRIPTION
-*      Gets the encoded subnet timeout value in the PortInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_timeout(
-  IN                   ib_port_info_t const*   p_pi )
-{
-  return(p_pi->subnet_timeout & 0x1F );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      The encoded timeout value
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_client_rereg
-* NAME
-*      ib_port_info_get_client_rereg
-*
-* DESCRIPTION
-*      Gets the encoded client reregistration bit value in the PortInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_client_rereg(
-  IN                   ib_port_info_t const* p_pi )
-{
-  return ( (p_pi->subnet_timeout & 0x80 ) >> 7);
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Client reregistration value (either 1 or 0).
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_hoq_lifetime
-* NAME
-*      ib_port_info_set_hoq_lifetime
-*
-* DESCRIPTION
-*      Sets the Head of Queue Lifetime for which a packet can live in the head 
-*  of VL queue
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_hoq_lifetime(
-  IN           ib_port_info_t* const   p_pi,
-  IN   const   uint8_t                 hoq_life )
-{
-  p_pi->vl_stall_life = (uint8_t)((hoq_life & 0x1f) |
-                                                                                        (p_pi->vl_stall_life & 0xe0));
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      hoq_life
-*              [in] Encoded lifetime value to set
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_hoq_lifetime
-* NAME
-*      ib_port_info_get_hoq_lifetime
-*
-* DESCRIPTION
-*      Gets the Head of Queue Lifetime for which a packet can live in the head 
-*  of VL queue
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_hoq_lifetime(
-  IN   const   ib_port_info_t* const   p_pi )
-{
-  return( (uint8_t)(p_pi->vl_stall_life & 0x1f) );
-}
-
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*     Encoded lifetime value
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_vl_stall_count
-* NAME
-*      ib_port_info_set_vl_stall_count
-*
-* DESCRIPTION
-*      Sets the VL Stall Count which define the number of contiguous 
-*  HLL (hoq) drops that will put the VL into stalled mode.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_vl_stall_count(
-  IN           ib_port_info_t* const   p_pi,
-  IN   const   uint8_t                 vl_stall_count )
-{
-  p_pi->vl_stall_life = (uint8_t)((p_pi->vl_stall_life & 0x1f) |
-                                                                                        ((vl_stall_count << 5) & 0xe0));
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      vl_stall_count 
-*              [in] value to set
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_vl_stall_count
-* NAME
-*      ib_port_info_get_vl_stall_count
-*
-* DESCRIPTION
-*      Gets the VL Stall Count which define the number of contiguous 
-*  HLL (hoq) drops that will put the VL into stalled mode
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_vl_stall_count(
-  IN   const ib_port_info_t* const     p_pi )
-{
-  return( (uint8_t)(p_pi->vl_stall_life & 0xe0) >> 5);
-}
-
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*     vl stall count
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_lmc
-* NAME
-*      ib_port_info_get_lmc
-*
-* DESCRIPTION
-*      Returns the LMC value assigned to this port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_lmc(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-       return( (uint8_t)(p_pi->mkey_lmc & IB_PORT_LMC_MASK) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the LMC value assigned to this port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_lmc
-* NAME
-*      ib_port_info_set_lmc
-*
-* DESCRIPTION
-*      Sets the LMC value in the PortInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_lmc(
-       IN              ib_port_info_t* const   p_pi,
-       IN      const   uint8_t                 lmc )
-{
-       CL_ASSERT( lmc <= IB_PORT_LMC_MAX );
-       p_pi->mkey_lmc = (uint8_t)((p_pi->mkey_lmc & 0xF8) | lmc);
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      lmc
-*              [in] LMC value to set, must be less than 7.
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_link_speed_enabled
-* NAME
-*      ib_port_info_get_link_speed_enabled
-*
-* DESCRIPTION
-*      Returns the link speed enabled value assigned to this port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_link_speed_enabled(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-       return( (uint8_t)(p_pi->link_speed & IB_PORT_LINK_SPEED_ENABLED_MASK) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Port state.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_link_speed_enabled
-* NAME
-*      ib_port_info_set_link_speed_enabled
-*
-* DESCRIPTION
-*      Sets the link speed enabled value in the PortInfo attribute.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_link_speed_enabled(
-       IN              ib_port_info_t* const   p_pi,
-       IN      const   uint8_t                 link_speed_enabled )
-{
-       p_pi->link_speed = (uint8_t)((p_pi->link_speed & 0xF0) | link_speed_enabled );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      link_speed_enabled
-*              [in] link speed enabled value to set.
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_mpb
-* NAME
-*      ib_port_info_get_mpb
-*
-* DESCRIPTION
-*      Returns the M_Key protect bits assigned to this port.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_mpb(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-       return( (uint8_t)((p_pi->mkey_lmc & IB_PORT_MPB_MASK) >>
-                       IB_PORT_MPB_SHIFT) );
-}
-/*
-* PARAMETERS
-*      p_ni
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the M_Key protect bits assigned to this port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_mpb
-* NAME
-*      ib_port_info_set_mpb
-*
-* DESCRIPTION
-*      Set the M_Key protect bits of this port.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_mpb(
-       IN              ib_port_info_t*         p_pi,
-       IN              uint8_t                 mpb )
-{
-       p_pi->mkey_lmc =
-               (~IB_PORT_MPB_MASK & p_pi->mkey_lmc) |
-               ( IB_PORT_MPB_MASK & (mpb << IB_PORT_MPB_SHIFT) );
-}
-/*
-* PARAMETERS
-*      mpb
-*              [in] M_Key protect bits
-*      p_ni
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_local_phy_err_thd
-* NAME
-*      ib_port_info_get_local_phy_err_thd
-*
-* DESCRIPTION
-*      Returns the Phy Link Threshold
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_local_phy_err_thd(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-  return (uint8_t)( (p_pi->error_threshold & 0xF0) >> 4);
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the Phy Link error threshold assigned to this port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_get_overrun_err_thd
-* NAME
-*      ib_port_info_get_local_overrun_err_thd
-*
-* DESCRIPTION
-*      Returns the Credits Overrun Errors Threshold
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_port_info_get_overrun_err_thd(
-       IN      const   ib_port_info_t* const   p_pi )
-{
-  return (uint8_t)(p_pi->error_threshold & 0x0F);
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the Credits Overrun errors threshold assigned to this port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_port_info_set_phy_and_overrun_err_thd
-* NAME
-*      ib_port_info_set_phy_and_overrun_err_thd
-*
-* DESCRIPTION
-*      Sets the Phy Link and Credits Overrun Errors Threshold
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_port_info_set_phy_and_overrun_err_thd(
-  IN           ib_port_info_t* const   p_pi,
-  IN           uint8_t                 phy_threshold,
-  IN           uint8_t                 overrun_threshold )
-{
-  p_pi->error_threshold = 
-        (uint8_t)( ((phy_threshold & 0x0F) << 4) | (overrun_threshold & 0x0F) );
-}
-/*
-* PARAMETERS
-*      p_pi
-*              [in] Pointer to a PortInfo attribute.
-*
-*      phy_threshold
-*              [in] Physical Link Errors Threshold above which Trap 129 is generated 
-*
-*  overrun_threshold
-*     [in] Credits overrun Errors Threshold above which Trap 129 is generated 
-*
-* RETURN VALUES
-*      None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-typedef uint8_t                ib_svc_name_t[64];
-
-#include <complib/cl_packon.h>
-typedef struct _ib_service_record
-{
-       ib_net64_t              service_id;
-       ib_gid_t                service_gid;
-       ib_net16_t              service_pkey;
-       ib_net16_t              resv;
-       ib_net32_t              service_lease;
-       uint8_t                 service_key[16];
-       ib_svc_name_t           service_name;
-       uint8_t                 service_data8[16];
-       ib_net16_t              service_data16[8];
-       ib_net32_t              service_data32[4];
-       ib_net64_t              service_data64[2];
-
-}      PACK_SUFFIX ib_service_record_t;
-#include <complib/cl_packoff.h>
-
-#include <complib/cl_packon.h>
-typedef struct _ib_portinfo_record
-{
-       ib_net16_t              lid;
-       uint8_t                 port_num;
-       uint8_t                 resv;
-       ib_port_info_t          port_info;
-       uint8_t                 pad[6];
-
-}      PACK_SUFFIX ib_portinfo_record_t;
-#include <complib/cl_packoff.h>
-
-#include <complib/cl_packon.h>
-typedef struct _ib_link_record
-{
-       ib_net16_t              from_lid;
-       uint8_t                 from_port_num;
-       uint8_t                 to_port_num;
-       ib_net16_t              to_lid;
-       uint8_t                 pad[2];
-
-}      PACK_SUFFIX ib_link_record_t;
-#include <complib/cl_packoff.h>
-
-#include <complib/cl_packon.h>
-typedef struct _ib_sminfo_record
-{
-       ib_net16_t              lid;
-       uint16_t                resv0;
-       ib_sm_info_t            sm_info;
-       uint8_t                 pad[7];
-
-}      PACK_SUFFIX ib_sminfo_record_t;
-#include <complib/cl_packoff.h>
-
-/****s* IBA Base: Types/ib_lft_record_t
-* NAME
-*      ib_lft_record_t
-*
-* DESCRIPTION
-*      IBA defined LinearForwardingTableRecord (15.2.5.6)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_lft_record
-{
-       ib_net16_t              lid;
-       ib_net16_t              block_num;
-       uint32_t                resv0;
-       uint8_t                 lft[64];
-}      PACK_SUFFIX ib_lft_record_t;
-#include <complib/cl_packoff.h>
-/************/
-
-/****s* IBA Base: Types/ib_mft_record_t
-* NAME
-*      ib_mft_record_t
-*
-* DESCRIPTION
-*      IBA defined MulticastForwardingTableRecord (15.2.5.8)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_mft_record
-{
-       ib_net16_t              lid;
-       ib_net16_t              position_block_num;
-       uint32_t                resv0;
-       ib_net16_t              mft[IB_MCAST_BLOCK_SIZE];
-}      PACK_SUFFIX ib_mft_record_t;
-#include <complib/cl_packoff.h>
-/************/
-
-/****s* IBA Base: Types/ib_switch_info_t
-* NAME
-*      ib_switch_info_t
-*
-* DESCRIPTION
-*      IBA defined SwitchInfo. (14.2.5.4)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_switch_info
-{
-       ib_net16_t                      lin_cap;
-       ib_net16_t                      rand_cap;
-       ib_net16_t                      mcast_cap;
-       ib_net16_t                      lin_top;
-       uint8_t                         def_port;
-       uint8_t                         def_mcast_pri_port;
-       uint8_t                         def_mcast_not_port;
-       uint8_t                         life_state;
-       ib_net16_t                      lids_per_port;
-       ib_net16_t                      enforce_cap;
-       uint8_t                         flags;
-
-}      PACK_SUFFIX ib_switch_info_t;
-#include <complib/cl_packoff.h>
-/************/
-
-#include <complib/cl_packon.h>
-typedef struct _ib_switch_info_record
-{
-       ib_net16_t                      lid;
-       uint16_t                        resv0;
-       ib_switch_info_t                switch_info;
-       uint8_t                         pad[3];
-
-}      PACK_SUFFIX ib_switch_info_record_t;
-#include <complib/cl_packoff.h>
-
-#define IB_SWITCH_PSC 0x04
-
-/****f* IBA Base: Types/ib_switch_info_get_state_change
-* NAME
-*      ib_switch_info_get_state_change
-*
-* DESCRIPTION
-*      Returns the value of the state change flag.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_switch_info_get_state_change(
-       IN      const   ib_switch_info_t* const p_si )
-{
-       return( (p_si->life_state & IB_SWITCH_PSC) == IB_SWITCH_PSC );
-}
-/*
-* PARAMETERS
-*      p_si
-*              [in] Pointer to a SwitchInfo attribute.
-*
-* RETURN VALUES
-*      Returns the value of the state change flag.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_switch_info_clear_state_change
-* NAME
-*      ib_switch_info_clear_state_change
-*
-* DESCRIPTION
-*      Clears the switch's state change bit.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_switch_info_clear_state_change(
-       IN              ib_switch_info_t* const p_si )
-{
-       p_si->life_state = (uint8_t)(p_si->life_state & 0xFB);
-}
-/*
-* PARAMETERS
-*      p_ni
-*              [in] Pointer to a PortInfo attribute.
-*
-* RETURN VALUES
-*      Returns the LMC value assigned to this port.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_switch_info_is_enhanced_port0
-* NAME
-*      ib_switch_info_is_enhanced_port0
-*
-* DESCRIPTION
-*      Returns TRUE if the enhancedPort0 bit is on (meaning the switch
-*  port zero supports enhanced functions).
-*  Returns FALSE otherwise.
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_switch_info_is_enhanced_port0(
-       IN      const   ib_switch_info_t* const p_si )
-{
-       return( (p_si->flags & 0x08) == 0x08 );
-}
-/*
-* PARAMETERS
-*      p_si
-*              [in] Pointer to a SwitchInfo attribute.
-*
-* RETURN VALUES
-*      Returns TRUE if the switch supports enhanced port 0. FALSE otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****s* IBA Base: Types/ib_guid_info_t
-* NAME
-*      ib_guid_info_t
-*
-* DESCRIPTION
-*      IBA defined GuidInfo. (14.2.5.5)
-*
-* SYNOPSIS
-*/
-#define        GUID_TABLE_MAX_ENTRIES          8
-
-#include <complib/cl_packon.h>
-typedef struct _ib_guid_info
-{
-       ib_net64_t                      guid[GUID_TABLE_MAX_ENTRIES];
-
-}      PACK_SUFFIX ib_guid_info_t;
-#include <complib/cl_packoff.h>
-/************/
-
-#include <complib/cl_packon.h>
-typedef struct _ib_guidinfo_record
-{
-       ib_net16_t              lid;
-       uint8_t                 block_num;
-       uint8_t                 resv;
-       uint32_t                reserved;
-       ib_guid_info_t          guid_info;
-}      PACK_SUFFIX ib_guidinfo_record_t;
-#include <complib/cl_packoff.h>
-
-#define IB_MULTIPATH_MAX_GIDS 11       /* Support max that can fit into first MAD (for now) */
-
-#include <complib/cl_packon.h>
-typedef struct _ib_multipath_rec_t
-{
-       ib_net32_t              hop_flow_raw;
-       uint8_t                 tclass;
-       uint8_t                 num_path;
-       ib_net16_t              pkey;
-       uint8_t                 resv0;
-       uint8_t                 sl;
-       uint8_t                 mtu;
-       uint8_t                 rate;
-       uint8_t                 pkt_life;
-       uint8_t                 resv1;
-       uint8_t                 independence;   /* formerly resv2 */
-       uint8_t                 sgid_count;
-       uint8_t                 dgid_count;
-       uint8_t                 resv3[7];
-       ib_gid_t                gids[IB_MULTIPATH_MAX_GIDS];
-}      PACK_SUFFIX ib_multipath_rec_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*       hop_flow_raw
-*               Global routing parameters: hop count, flow label and raw bit.
-*
-*       tclass
-*               Another global routing parameter.
-*
-*       num_path
-*     Reversible path - 1 bit to say if path is reversible.
-*               num_path [6:0] In queries, maximum number of paths to return.
-*               In responses, undefined.
-*
-*       pkey
-*               Partition key (P_Key) to use on this path.
-*
-*       sl
-*               Service level to use on this path.
-*
-*       mtu
-*               MTU and MTU selector fields to use on this path
-*       rate
-*               Rate and rate selector fields to use on this path.
-*
-*       pkt_life
-*               Packet lifetime
-*
-*       preference
-*               Indicates the relative merit of this path versus other path
-*               records returned from the SA.  Lower numbers are better.
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_multipath_rec_num_path
-* NAME
-*       ib_multipath_rec_num_path
-*
-* DESCRIPTION
-*       Get max number of paths to return.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_multipath_rec_num_path(
-       IN      const   ib_multipath_rec_t* const       p_rec )
-{
-        return( p_rec->num_path &0x7F );
-}
-/*
-* PARAMETERS
-*       p_rec
-*               [in] Pointer to the multipath record object.
-*
-* RETURN VALUES
-*       Maximum number of paths to return for each unique SGID_DGID combination.
-*
-* NOTES
-*
-* SEE ALSO
-*       ib_multipath_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_multipath_rec_sl
-* NAME
-*       ib_multipath_rec_sl
-*
-* DESCRIPTION
-*       Get multipath service level.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_multipath_rec_sl(
-       IN      const   ib_multipath_rec_t* const       p_rec )
-{
-        return( (uint8_t)((cl_ntoh16( p_rec->sl )) & 0xF) );
-}
-/*
-* PARAMETERS
-*       p_rec
-*               [in] Pointer to the multipath record object.
-*
-* RETURN VALUES
-*      SL.
-*
-* NOTES
-*
-* SEE ALSO
-*       ib_multipath_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_multipath_rec_mtu
-* NAME
-*       ib_multipath_rec_mtu
-*
-* DESCRIPTION
-*       Get encoded path MTU.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_multipath_rec_mtu(
-       IN      const   ib_multipath_rec_t* const       p_rec )
-{
-        return( (uint8_t)(p_rec->mtu & IB_MULTIPATH_REC_BASE_MASK) );
-}
-/*
-* PARAMETERS
-*       p_rec
-*               [in] Pointer to the multipath record object.
-*
-* RETURN VALUES
-*       Encoded path MTU.
-*               1: 256
-*               2: 512
-*               3: 1024
-*               4: 2048
-*               5: 4096
-*               others: reserved
-*
-* NOTES
-*
-* SEE ALSO
-*       ib_multipath_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_multipath_rec_mtu_sel
-* NAME
-*       ib_multipath_rec_mtu_sel
-*
-* DESCRIPTION
-*       Get encoded multipath MTU selector.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_multipath_rec_mtu_sel(
-       IN      const   ib_multipath_rec_t* const       p_rec )
-{
-        return( (uint8_t)((p_rec->mtu & IB_MULTIPATH_REC_SELECTOR_MASK) >> 6) );
-}
-/*
-* PARAMETERS
-*       p_rec
-*               [in] Pointer to the multipath record object.
-*
-* RETURN VALUES
-*       Encoded path MTU selector value (for queries).
-*               0: greater than MTU specified
-*               1: less than MTU specified
-*               2: exactly the MTU specified
-*               3: largest MTU available
-*
-* NOTES
-*
-* SEE ALSO
-*       ib_multipath_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_multipath_rec_rate
-* NAME
-*       ib_multipath_rec_rate
-*
-* DESCRIPTION
-*       Get encoded multipath rate.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_multipath_rec_rate(
-       IN      const   ib_multipath_rec_t* const       p_rec )
-{
-        return( (uint8_t)(p_rec->rate & IB_MULTIPATH_REC_BASE_MASK) );
-}
-/*
-* PARAMETERS
-*       p_rec
-*               [in] Pointer to the multipath record object.
-*
-* RETURN VALUES
-*       Encoded multipath rate.
-*               2: 2.5 Gb/sec.
-*               3: 10 Gb/sec.
-*               4: 30 Gb/sec.
-*               others: reserved
-*
-* NOTES
-*
-* SEE ALSO
-*       ib_multipath_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_multipath_rec_rate_sel
-* NAME
-*       ib_multipath_rec_rate_sel
-*
-* DESCRIPTION
-*       Get encoded multipath rate selector.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_multipath_rec_rate_sel(
-       IN      const   ib_multipath_rec_t* const       p_rec )
-{
-        return( (uint8_t)((p_rec->rate & IB_MULTIPATH_REC_SELECTOR_MASK) >> 6) );
-}
-/*
-* PARAMETERS
-*       p_rec
-*               [in] Pointer to the multipath record object.
-*
-* RETURN VALUES
-*       Encoded path rate selector value (for queries).
-*               0: greater than rate specified
-*               1: less than rate specified
-*               2: exactly the rate specified
-*               3: largest rate available
-*
-* NOTES
-*
-* SEE ALSO
-*       ib_multipath_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_multipath_rec_pkt_life
-* NAME
-*       ib_multipath_rec_pkt_life
-*
-* DESCRIPTION
-*       Get encoded multipath pkt_life.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_multipath_rec_pkt_life(
-       IN      const   ib_multipath_rec_t* const       p_rec )
-{
-        return( (uint8_t)(p_rec->pkt_life & IB_MULTIPATH_REC_BASE_MASK) );
-}
-/*
-* PARAMETERS
-*       p_rec
-*               [in] Pointer to the multipath record object.
-*
-* RETURN VALUES
-*       Encoded multipath pkt_life = 4.096 ┬Ásec * 2 ** PacketLifeTime.
-*
-* NOTES
-*
-* SEE ALSO
-*       ib_multipath_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_multipath_rec_pkt_life_sel
-* NAME
-*       ib_multipath_rec_pkt_life_sel
-*
-* DESCRIPTION
-*       Get encoded multipath pkt_lifetime selector.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_multipath_rec_pkt_life_sel(
-       IN      const   ib_multipath_rec_t* const       p_rec )
-{
-        return( (uint8_t)((p_rec->pkt_life & IB_MULTIPATH_REC_SELECTOR_MASK) >> 6 ));
-}
-/*
-* PARAMETERS
-*       p_rec
-*               [in] Pointer to the multipath record object.
-*
-* RETURN VALUES
-*       Encoded path pkt_lifetime selector value (for queries).
-*               0: greater than rate specified
-*               1: less than rate specified
-*               2: exactly the rate specified
-*               3: smallest packet lifetime available
-*
-* NOTES
-*
-* SEE ALSO
-*       ib_multipath_rec_t
-*********/
-
-#define IB_NUM_PKEY_ELEMENTS_IN_BLOCK          32
-/****s* IBA Base: Types/ib_pkey_table_t
-* NAME
-*      ib_pkey_table_t
-*
-* DESCRIPTION
-*      IBA defined PKey table. (14.2.5.7)
-*
-* SYNOPSIS
-*/
-
-#include <complib/cl_packon.h>
-typedef struct _ib_pkey_table
-{
-       ib_net16_t              pkey_entry[IB_NUM_PKEY_ELEMENTS_IN_BLOCK];
-
-}      PACK_SUFFIX ib_pkey_table_t;
-#include <complib/cl_packoff.h>
-/************/
-
-/****s* IBA Base: Types/ib_pkey_table_record_t
-* NAME
-*      ib_pkey_table_record_t
-*
-* DESCRIPTION
-*      IBA defined P_Key Table Record for SA Query. (15.2.5.11)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_pkey_table_record
-{
-       ib_net16_t              lid; // for CA: lid of port, for switch lid of port 0
-       uint16_t                block_num;
-   uint8_t                     port_num; // for switch: port number, for CA: reserved
-       uint8_t                 reserved1;
-       uint16_t                reserved2;
-       ib_pkey_table_t         pkey_tbl;
-
-}      PACK_SUFFIX ib_pkey_table_record_t;
-#include <complib/cl_packoff.h>
-/************/
-
-#define IB_DROP_VL 15
-#define IB_MAX_NUM_VLS 16
-/****s* IBA Base: Types/ib_slvl_table_t
-* NAME
-*      ib_slvl_table_t
-*
-* DESCRIPTION
-*      IBA defined SL2VL Mapping Table Attribute. (14.2.5.8)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_slvl_table
-{
-       uint8_t raw_vl_by_sl[IB_MAX_NUM_VLS/2];
-}      PACK_SUFFIX ib_slvl_table_t;
-#include <complib/cl_packoff.h>
-/************/
-
-/****s* IBA Base: Types/ib_slvl_table_record_t
-* NAME
-*      ib_slvl_table_record_t
-*
-* DESCRIPTION
-*      IBA defined SL to VL Mapping Table Record for SA Query. (15.2.5.4)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_slvl_table_record
-{
-       ib_net16_t              lid; // for CA: lid of port, for switch lid of port 0
-       uint8_t                 in_port_num;    // reserved for CAs
-       uint8_t                 out_port_num;   // reserved for CAs
-       uint32_t                resv;
-       ib_slvl_table_t         slvl_tbl;
-
-}      PACK_SUFFIX ib_slvl_table_record_t;
-#include <complib/cl_packoff.h>
-/************/
-
-/****f* IBA Base: Types/ib_slvl_table_set
-* NAME
-*      ib_slvl_table_set
-*
-* DESCRIPTION
-*      Set slvl table entry.
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_slvl_table_set(
-  IN           ib_slvl_table_t*        p_slvl_tbl,
-  IN           uint8_t                 sl_index,
-  IN           uint8_t                 vl )
-{
-  uint8_t idx = sl_index/2;
-  CL_ASSERT(vl <= 15);
-  CL_ASSERT(sl_index <= 15);
-
-  if (sl_index%2)
-  {
-    /* this is an odd sl. Need to update the ls bits */
-    p_slvl_tbl->raw_vl_by_sl[idx] = ( p_slvl_tbl->raw_vl_by_sl[idx] & 0xF0 ) | vl ;
-  }
-  else
-  {
-    /* this is an even sl. Need to update the ms bits */
-    p_slvl_tbl->raw_vl_by_sl[idx] = ( vl << 4 ) | ( p_slvl_tbl->raw_vl_by_sl[idx] & 0x0F );
-  }
-}
-/*
-* PARAMETERS
-*      p_slvl_tbl
-*              [in] pointer to ib_slvl_table_t object.
-*
-*      sl_index
-*              [in] the sl index in the table to be updated.
-*
-*      vl
-*              [in] the vl value to update for that sl.
-*
-* RETURN VALUES
-*      None
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_slvl_table_t
-*********/
-
-/****f* IBA Base: Types/ib_slvl_table_get
-* NAME
-*      ib_slvl_table_get
-*
-* DESCRIPTION
-*      Get slvl table entry.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_slvl_table_get(
-  IN   const   ib_slvl_table_t*        p_slvl_tbl,
-  IN           uint8_t                 sl_index )
-{
-  uint8_t idx = sl_index/2;
-  CL_ASSERT(sl_index <= 15);
-
-  if (sl_index%2)
-  {
-    /* this is an odd sl. Need to return the ls bits. */
-    return ( p_slvl_tbl->raw_vl_by_sl[idx] & 0x0F );
-  }
-  else
-  {
-    /* this is an even sl. Need to return the ms bits. */
-    return ( (p_slvl_tbl->raw_vl_by_sl[idx] & 0xF0) >> 4 );
-  }
-}
-/*
-* PARAMETERS
-*      p_slvl_tbl
-*              [in] pointer to ib_slvl_table_t object.
-*
-*      sl_index
-*              [in] the sl index in the table whose value should be returned.
-*
-* RETURN VALUES
-*      vl for the requested sl_index.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_slvl_table_t
-*********/
-
-/****s* IBA Base: Types/ib_vl_arb_element_t
-* NAME
-*      ib_vl_arb_element_t
-*
-* DESCRIPTION
-*      IBA defined VL Arbitration Table Element. (14.2.5.9)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_vl_arb_element
-{
-  uint8_t vl;
-  uint8_t weight;
-}      PACK_SUFFIX ib_vl_arb_element_t;
-#include <complib/cl_packoff.h>
-/************/
-
-#define IB_NUM_VL_ARB_ELEMENTS_IN_BLOCK 32
-
-/****s* IBA Base: Types/ib_vl_arb_table_t
-* NAME
-*      ib_vl_arb_table_t
-*
-* DESCRIPTION
-*      IBA defined VL Arbitration Table. (14.2.5.9)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_vl_arb_table
-{
-       ib_vl_arb_element_t vl_entry[IB_NUM_VL_ARB_ELEMENTS_IN_BLOCK];
-}      PACK_SUFFIX ib_vl_arb_table_t;
-#include <complib/cl_packoff.h>
-/************/
-
-/****s* IBA Base: Types/ib_vl_arb_table_record_t
-* NAME
-*      ib_vl_arb_table_record_t
-*
-* DESCRIPTION
-*      IBA defined VL Arbitration Table Record for SA Query. (15.2.5.9)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_vl_arb_table_record
-{
-       ib_net16_t              lid; // for CA: lid of port, for switch lid of port 0
-       uint8_t                 port_num;
-       uint8_t                 block_num;
-       uint32_t                reserved;
-       ib_vl_arb_table_t       vl_arb_tbl;
-}      PACK_SUFFIX ib_vl_arb_table_record_t;
-#include <complib/cl_packoff.h>
-/************/
-
-/*
- *     Global route header information received with unreliable datagram messages
- */
-#include <complib/cl_packon.h>
-typedef struct _ib_grh
-{
-       ib_net32_t              ver_class_flow;
-       ib_net16_t              resv1;
-       uint8_t                 resv2;
-       uint8_t                 hop_limit;
-       ib_gid_t                src_gid;
-       ib_gid_t                dest_gid;
-}      PACK_SUFFIX ib_grh_t;
-#include <complib/cl_packoff.h>
-
-/****f* IBA Base: Types/ib_grh_get_ver_class_flow
-* NAME
-*      ib_grh_get_ver_class_flow
-*
-* DESCRIPTION
-*      Get encoded version, traffic class and flow label in grh
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_grh_get_ver_class_flow(
-       IN      const   ib_net32_t              ver_class_flow,
-       OUT             uint8_t* const          p_ver,
-       OUT             uint8_t* const          p_tclass,
-       OUT             uint32_t* const         p_flow_lbl )
-{
-       ib_net32_t tmp_ver_class_flow;
-
-       if (p_ver)
-               *p_ver = (uint8_t)(ver_class_flow & 0x0f);
-
-       tmp_ver_class_flow = ver_class_flow >> 4;
-
-       if (p_tclass)
-               *p_tclass = (uint8_t)(tmp_ver_class_flow & 0xff);
-
-       tmp_ver_class_flow = tmp_ver_class_flow >> 8;
-
-       if (p_flow_lbl)
-               *p_flow_lbl = tmp_ver_class_flow & 0xfffff;
-}
-/*
-* PARAMETERS
-*      ver_class_flow
-*              [in] the version, traffic class and flow label info.
-*
-* RETURN VALUES
-*      p_ver
-*              [out] pointer to the version info.
-*
-*      p_tclass
-*              [out] pointer to the traffic class info.
-*
-*      p_flow_lbl
-*              [out] pointer to the flow label info
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_grh_t
-*********/
-
-/****f* IBA Base: Types/ib_grh_set_ver_class_flow
-* NAME
-*      ib_grh_set_ver_class_flow
-*
-* DESCRIPTION
-*      Set encoded version, traffic class and flow label in grh
-*
-* SYNOPSIS
-*/
-static inline ib_net32_t       OSM_API
-ib_grh_set_ver_class_flow(
-       IN      const   uint8_t                 ver,
-       IN      const   uint8_t                 tclass,
-       IN      const   uint32_t                flow_lbl )
-{
-       ib_net32_t              ver_class_flow;
-
-       ver_class_flow = flow_lbl;
-       ver_class_flow = ver_class_flow << 8;
-       ver_class_flow = ver_class_flow | tclass;
-       ver_class_flow = ver_class_flow << 4;
-       ver_class_flow = ver_class_flow | ver;
-       return (ver_class_flow);
-}
-/*
-* PARAMETERS
-*      ver
-*              [in] the version info.
-*
-*      tclass
-*              [in] the traffic class info.
-*
-*      flow_lbl
-*              [in] the flow label info
-*
-* RETURN VALUES
-*      ver_class_flow
-*              [out] the version, traffic class and flow label info.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_grh_t
-*********/
-
-/****s* IBA Base: Types/ib_member_rec_t
-* NAME
-*      ib_member_rec_t
-*
-* DESCRIPTION
-*      Multicast member record, used to create, join, and leave multicast
-*      groups.
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_member_rec
-{
-       ib_gid_t                                mgid;
-       ib_gid_t                                port_gid;
-       ib_net32_t                              qkey;
-       ib_net16_t                              mlid;
-       uint8_t                                 mtu;
-       uint8_t                                 tclass;
-       ib_net16_t                              pkey;
-       uint8_t                                 rate;
-       uint8_t                                 pkt_life;
-       ib_net32_t                              sl_flow_hop;
-       uint8_t                                 scope_state;
-       uint8_t                                 proxy_join:1;
-       uint8_t                                 reserved[2];
-       uint8_t                                 pad[4];
-
-}      PACK_SUFFIX ib_member_rec_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      mgid
-*              Multicast GID address for this multicast group.
-*
-*      port_gid
-*              Valid GID of the endpoint joining this multicast group.
-*
-*      qkey
-*              Q_Key to be sued by this multicast group.
-*
-*      mlid
-*              Multicast LID for this multicast group.
-*
-*      mtu
-*              MTU and MTU selector fields to use on this path
-*
-*      tclass
-*              Another global routing parameter.
-*
-*      pkey
-*              Partition key (P_Key) to use for this member.
-*
-*      rate
-*              Rate and rate selector fields to use on this path.
-*
-*      pkt_life
-*              Packet lifetime
-*
-*      sl_flow_hop
-*              Global routing parameters: service level, hop count, and flow label.
-*
-*      scope_state
-*              MGID scope and JoinState of multicast request.
-*
-*      proxy_join
-*              Enables others in the Partition to proxy add/remove from the group
-*
-* SEE ALSO
-*********/
-
-/****f* IBA Base: Types/ib_member_get_sl_flow_hop
-* NAME
-*      ib_member_get_sl_flow_hop
-*
-* DESCRIPTION
-*      Get encoded sl, flow label, and hop limit
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_member_get_sl_flow_hop(
-       IN const ib_net32_t sl_flow_hop,
-       OUT uint8_t* const p_sl,
-       OUT uint32_t* const p_flow_lbl,
-       OUT uint8_t* const p_hop )
-{
-       uint32_t tmp;
-
-       tmp = cl_ntoh32(sl_flow_hop);
-       if (p_hop)
-               *p_hop = (uint8_t)tmp;
-       tmp >>= 8;
-
-       if (p_flow_lbl)
-               *p_flow_lbl = (uint32_t)(tmp & 0xfffff);
-       tmp >>= 20;
-
-       if (p_sl)
-               *p_sl = (uint8_t)tmp;
-}
-/*
-* PARAMETERS
-*      sl_flow_hop
-*              [in] the sl, flow label, and hop limit of MC Group
-*
-* RETURN VALUES
-*      p_sl
-*              [out] pointer to the service level
-*
-*      p_flow_lbl
-*              [out] pointer to the flow label info
-*
-*      p_hop
-*              [out] pointer to the hop count limit.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_member_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_member_set_sl_flow_hop
-* NAME
-*      ib_member_set_sl_flow_hop
-*
-* DESCRIPTION
-*      Set encoded sl, flow label, and hop limit
-*
-* SYNOPSIS
-*/
-static inline ib_net32_t       OSM_API
-ib_member_set_sl_flow_hop(
-       IN const uint8_t sl,
-       IN const uint32_t flow_label,
-       IN const uint8_t hop_limit )
-{
-       uint32_t tmp;
-
-       tmp = (sl << 28) | ((flow_label & 0xfffff) << 8) | hop_limit;
-       return cl_hton32(tmp);
-}
-/*
-* PARAMETERS
-*      sl
-*              [in] the service level.
-*
-*      flow_lbl
-*              [in] the flow label info
-*
-*      hop_limit
-*              [in] the hop limit.
-*
-* RETURN VALUES
-*      sl_flow_hop
-*              [out] the encoded sl, flow label, and hop limit
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_member_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_member_get_scope_state
-* NAME
-*      ib_member_get_scope_state
-*
-* DESCRIPTION
-*      Get encoded MGID scope and JoinState
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_member_get_scope_state(
-       IN      const   uint8_t                 scope_state,
-       OUT             uint8_t* const          p_scope,
-       OUT             uint8_t* const          p_state )
-{
-       uint8_t         tmp_scope_state;
-
-       if (p_state)
-               *p_state = (uint8_t)(scope_state & 0x0f);
-
-       tmp_scope_state = scope_state >> 4;
-
-       if (p_scope)
-               *p_scope = (uint8_t)(tmp_scope_state & 0x0f);
-
-}
-/*
-* PARAMETERS
-*      scope_state
-*              [in] the scope and state
-*
-* RETURN VALUES
-*      p_scope
-*              [out] pointer to the MGID scope
-*
-*      p_state
-*              [out] pointer to the join state
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_member_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_member_set_scope_state
-* NAME
-*      ib_member_set_scope_state
-*
-* DESCRIPTION
-*      Set encoded version, MGID scope and JoinState
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_member_set_scope_state(
-       IN      const   uint8_t                 scope,
-       IN      const   uint8_t                 state )
-{
-       uint8_t         scope_state;
-
-       scope_state = scope;
-       scope_state = scope_state << 4;
-       scope_state = scope_state | state;
-       return (scope_state);
-}
-/*
-* PARAMETERS
-*      scope
-*              [in] the MGID scope
-*
-*      state
-*              [in] the JoinState
-*
-* RETURN VALUES
-*      scope_state
-*              [out] the encoded one
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_member_rec_t
-*********/
-
-/****f* IBA Base: Types/ib_member_set_join_state
-* NAME
-*      ib_member_set_join_state
-*
-* DESCRIPTION
-*      Set JoinState
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_member_set_join_state(
-       IN OUT          ib_member_rec_t         *p_mc_rec,
-       IN      const   uint8_t                 state )
-{
-       /* keep the scope as it is */
-       p_mc_rec->scope_state = (p_mc_rec->scope_state & 0xF0) | (0x0f & state);
-}
-/*
-* PARAMETERS
-*      p_mc_rec
-*              [in] pointer to the member record
-*
-*      state
-*              [in] the JoinState
-*
-* RETURN VALUES
-*      NONE
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_member_rec_t
-*********/
-
-/*
- * Join State Codes:
- */
-#define IB_MC_REC_STATE_FULL_MEMBER 0x01
-#define IB_MC_REC_STATE_NON_MEMBER 0x02
-#define IB_MC_REC_STATE_SEND_ONLY_MEMBER 0x04
-
-/*
- *     Generic MAD notice types
- */
-#define IB_NOTICE_TYPE_FATAL                           0x00
-#define IB_NOTICE_TYPE_URGENT                          0x01
-#define IB_NOTICE_TYPE_SECURITY                                0x02
-#define IB_NOTICE_TYPE_SUBN_MGMT                       0x03
-#define IB_NOTICE_TYPE_INFO                            0x04
-#define IB_NOTICE_TYPE_EMPTY                           0x7F
-
-#include <complib/cl_packon.h>
-typedef struct _ib_mad_notice_attr    // Total Size calc  Accumulated
-{
-  uint8_t                      generic_type;    // 1                1
-  
-  union _notice_g_or_v
-  {
-        struct _notice_generic            // 5                6
-        {
-               uint8_t         prod_type_msb;
-               ib_net16_t      prod_type_lsb;
-               ib_net16_t      trap_num;
-        }      PACK_SUFFIX generic;
-        
-        struct _notice_vend
-        {
-               uint8_t         vend_id_msb;
-               ib_net16_t      vend_id_lsb;
-               ib_net16_t      dev_id;
-        }      PACK_SUFFIX vend;
-  } g_or_v;
-  
-  ib_net16_t                   issuer_lid;    // 2                 8
-  ib_net16_t                   toggle_count;  // 2                 10
-  
-  union _data_details               // 54                64
-       {
-         struct _raw_data
-         {
-                uint8_t        details[54];
-         } PACK_SUFFIX raw_data;
-
-         struct _ntc_64_67
-         {
-                uint8_t    res[6];
-                ib_gid_t   gid;        // the Node or Multicast Group that came in/out
-         } PACK_SUFFIX ntc_64_67;
-
-         struct _ntc_128 {
-                ib_net16_t sw_lid; // the sw lid of which link state changed
-         } PACK_SUFFIX ntc_128;
-         
-         struct _ntc_129_131 {
-                ib_net16_t    pad;
-                ib_net16_t    lid;             // lid and port number of the violation
-                uint8_t     port_num;
-         } PACK_SUFFIX ntc_129_131;
-         
-         struct _ntc_144 {
-                ib_net16_t    pad1;
-                ib_net16_t    lid;             // lid where capability mask changed
-                ib_net16_t    pad2;
-                ib_net32_t    new_cap_mask; // new capability mask
-         } PACK_SUFFIX ntc_144;
-
-         struct _ntc_145 {
-                ib_net16_t    pad1;
-                ib_net16_t    lid;             // lid where sys guid changed
-                ib_net16_t    pad2;
-                ib_net64_t    new_sys_guid; // new system image guid
-         } PACK_SUFFIX ntc_145;
-
-         struct _ntc_256 {                       // total: 54
-                ib_net16_t    pad1;                   // 2
-                ib_net16_t    lid;                    // 2
-                ib_net16_t    pad2;                   // 2
-                uint8_t       method;                 // 1
-                uint8_t       pad3;                   // 1
-                ib_net16_t    attr_id;                // 2
-                ib_net32_t    attr_mod;               // 4
-                ib_net64_t    mkey;                   // 8
-                uint8_t       dr_slid;                // 1
-                uint8_t       dr_trunc_hop;           // 1
-                uint8_t       dr_rtn_path[30];        // 30
-         } PACK_SUFFIX ntc_256;
-
-         struct _ntc_257_258 // violation of p/q_key // 49
-         {
-                ib_net16_t    pad1;                   // 2
-                ib_net16_t    lid1;                   // 2
-                ib_net16_t    lid2;                   // 2
-                ib_net32_t    key;                    // 2
-                uint8_t       sl;                     // 1
-                ib_net32_t    qp1;                    // 4
-                ib_net32_t    qp2;                    // 4
-                ib_gid_t      gid1;                   // 16
-                ib_gid_t      gid2;                   // 16
-         } PACK_SUFFIX ntc_257_258;
-
-         struct _ntc_259 // p/q_key violation with sw info 53
-         {
-                ib_net16_t    data_valid;   // 2
-                ib_net16_t    lid1;         // 2
-                ib_net16_t    lid2;         // 2
-                ib_net32_t    key;          // 4
-                uint8_t       sl;           // 1
-                ib_net32_t    qp1;          // 4
-                uint8_t       qp2_msb;      // 1
-                ib_net16_t    qp2_lsb;      // 2
-                ib_gid_t      gid1;         // 16
-                ib_gid_t      gid2;         // 16
-                ib_net16_t    sw_lid;       // 2
-                uint8_t       port_no;      // 1
-         } PACK_SUFFIX ntc_259;
-
-       } data_details;
-
-  ib_gid_t                     issuer_gid;    // 16          80
-
-}      PACK_SUFFIX ib_mad_notice_attr_t;
-#include <complib/cl_packoff.h>
-
-/****f* IBA Base: Types/ib_notice_is_generic
-* NAME
-*      ib_notice_is_generic
-*
-* DESCRIPTION
-*      Check if the notice is generic
-*
-* SYNOPSIS
-*/
-static inline boolean_t        OSM_API
-ib_notice_is_generic(
-  IN           const   ib_mad_notice_attr_t *p_ntc )
-{
-  return (p_ntc->generic_type & 0x80);
-}
-/*
-* PARAMETERS
-*      p_ntc
-*              [in] Pointer to  the notice MAD attribute
-*
-* RETURN VALUES
-*      TRUE if mad is generic
-*
-* SEE ALSO
-*      ib_mad_notice_attr_t
-*********/
-
-/****f* IBA Base: Types/ib_notice_get_type
-* NAME
-*      ib_notice_get_type
-*
-* DESCRIPTION
-*      Get the notice type
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_notice_get_type(
-  IN           const   ib_mad_notice_attr_t *p_ntc )
-{
-  return p_ntc->generic_type & 0x7f;
-}
-/*
-* PARAMETERS
-*      p_ntc
-*              [in] Pointer to  the notice MAD attribute
-*
-* RETURN VALUES
-*      TRUE if mad is generic
-*
-* SEE ALSO
-*      ib_mad_notice_attr_t
-*********/
-
-/****f* IBA Base: Types/ib_notice_get_prod_type
-* NAME
-*      ib_notice_get_prod_type
-*
-* DESCRIPTION
-*      Get the notice Producer Type of Generic Notice
-*
-* SYNOPSIS
-*/
-static inline ib_net32_t       OSM_API
-ib_notice_get_prod_type(
-  IN              const        ib_mad_notice_attr_t *p_ntc )
-{
-  uint32_t pt;
-
-  pt = cl_ntoh16(p_ntc->g_or_v.generic.prod_type_lsb) |
-    (p_ntc->g_or_v.generic.prod_type_msb << 16);
-  return cl_hton32(pt);
-}
-/*
-* PARAMETERS
-*      p_ntc
-*              [in] Pointer to the notice MAD attribute
-*
-* RETURN VALUES
-*      The producer type
-*
-* SEE ALSO
-*      ib_mad_notice_attr_t
-*********/
-
-/****f* IBA Base: Types/ib_notice_set_prod_type
-* NAME
-*      ib_notice_set_prod_type
-*
-* DESCRIPTION
-*      Set the notice Producer Type of Generic Notice
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_notice_set_prod_type(
-  IN ib_mad_notice_attr_t *p_ntc,
-  IN ib_net32_t prod_type_val )
-{
-  uint32_t ptv = cl_ntoh32(prod_type_val);
-  p_ntc->g_or_v.generic.prod_type_lsb = cl_hton16((uint16_t)(ptv & 0x0000ffff));
-  p_ntc->g_or_v.generic.prod_type_msb = (uint8_t)( (ptv & 0x00ff0000) >> 16);
-}
-/*
-* PARAMETERS
-*      p_ntc
-*              [in] Pointer to the notice MAD attribute
-*
-*  prod_type
-*     [in] The producer Type code
-*
-* RETURN VALUES
-*      None
-*
-* SEE ALSO
-*      ib_mad_notice_attr_t
-*********/
-
-/****f* IBA Base: Types/ib_notice_set_prod_type_ho
-* NAME
-*      ib_notice_set_prod_type_ho
-*
-* DESCRIPTION
-*      Set the notice Producer Type of Generic Notice given Host Order
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_notice_set_prod_type_ho(
-  IN ib_mad_notice_attr_t *p_ntc,
-  IN uint32_t prod_type_val_ho )
-{
-  p_ntc->g_or_v.generic.prod_type_lsb = 
-         cl_hton16( (uint16_t)(prod_type_val_ho & 0x0000ffff) );
-  p_ntc->g_or_v.generic.prod_type_msb = 
-         (uint8_t)( (prod_type_val_ho & 0x00ff0000) >> 16);
-}
-/*
-* PARAMETERS
-*      p_ntc
-*              [in] Pointer to the notice MAD attribute
-*
-*      prod_type
-*              [in] The producer Type code in host order
-*
-* RETURN VALUES
-*      None
-*
-* SEE ALSO
-*      ib_mad_notice_attr_t
-*********/
-
-/****f* IBA Base: Types/ib_notice_get_vend_id
-* NAME
-*      ib_notice_get_vend_id
-*
-* DESCRIPTION
-*      Get the Vendor Id of Vendor type Notice
-*
-* SYNOPSIS
-*/
-static inline ib_net32_t       OSM_API
-ib_notice_get_vend_id(
-  IN           const   ib_mad_notice_attr_t *p_ntc )
-{
-  uint32_t vi;
-
-  vi = cl_ntoh16(p_ntc->g_or_v.vend.vend_id_lsb) |
-    (p_ntc->g_or_v.vend.vend_id_msb << 16);
-  return cl_hton32(vi);
-}
-/*
-* PARAMETERS
-*      p_ntc
-*              [in] Pointer to the notice MAD attribute
-*
-* RETURN VALUES
-*      The Vendor Id of Vendor type Notice
-*
-* SEE ALSO
-*      ib_mad_notice_attr_t
-*********/
-
-/****f* IBA Base: Types/ib_notice_set_vend_id
-* NAME
-*      ib_notice_set_vend_id
-*
-* DESCRIPTION
-*      Set the notice Producer Type of Generic Notice
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_notice_set_vend_id(
-  IN ib_mad_notice_attr_t *p_ntc,
-  IN ib_net32_t vend_id )
-{
-  uint32_t vi = cl_ntoh32(vend_id);
-  p_ntc->g_or_v.vend.vend_id_lsb = cl_hton16((uint16_t)(vi & 0x0000ffff));
-  p_ntc->g_or_v.vend.vend_id_msb = (uint8_t)((vi & 0x00ff0000) >> 16);
-}
-/*
-* PARAMETERS
-*      p_ntc
-*              [in] Pointer to the notice MAD attribute
-*
-*      vend_id
-*              [in] The producer Type code
-*
-* RETURN VALUES
-*      None
-*
-* SEE ALSO
-*      ib_mad_notice_attr_t
-*********/
-
-/****f* IBA Base: Types/ib_notice_set_vend_id_ho
-* NAME
-*      ib_notice_set_vend_id_ho
-*
-* DESCRIPTION
-*      Set the notice Producer Type of Generic Notice given a host order value
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_notice_set_vend_id_ho(
-  IN ib_mad_notice_attr_t *p_ntc,
-  IN uint32_t vend_id_ho )
-{
-  p_ntc->g_or_v.vend.vend_id_lsb = 
-         cl_hton16((uint16_t)(vend_id_ho & 0x0000ffff));
-  p_ntc->g_or_v.vend.vend_id_msb =
-         (uint8_t)((vend_id_ho & 0x00ff0000) >> 16);
-}
-/*
-* PARAMETERS
-*      p_ntc
-*              [in] Pointer to the notice MAD attribute
-*
-*      vend_id_ho
-*              [in] The producer Type code in host order
-*
-* RETURN VALUES
-*      None
-*
-* SEE ALSO
-*      ib_mad_notice_attr_t
-*********/
-
-#include <complib/cl_packon.h>
-typedef struct _ib_inform_info
-{
-  ib_gid_t                             gid;
-  ib_net16_t                           lid_range_begin;
-  ib_net16_t                           lid_range_end;
-  ib_net16_t                           reserved1;
-  uint8_t                              is_generic;
-  uint8_t                              subscribe;
-  ib_net16_t                           trap_type;
-  union _inform_g_or_v
-  {
-        struct _inform_generic
-        {
-               ib_net16_t              trap_num;
-               ib_net32_t              qpn_resp_time_val;
-               uint8_t                 reserved2;
-               uint8_t                 node_type_msb;
-               ib_net16_t              node_type_lsb;
-        } PACK_SUFFIX generic;
-        
-        struct _inform_vend
-        {
-               ib_net16_t              dev_id;
-               ib_net32_t              qpn_resp_time_val;
-               uint8_t                 reserved2;
-               uint8_t                 vendor_id_msb;
-               ib_net16_t              vendor_id_lsb;
-        } PACK_SUFFIX vend;
-        
-  }    PACK_SUFFIX g_or_v;
-  
-}      PACK_SUFFIX ib_inform_info_t;
-#include <complib/cl_packoff.h>
-
-/****f* IBA Base: Types/ib_inform_info_get_qpn_resp_time
-* NAME
-*      ib_inform_info_get_qpn_resp_time
-*
-* DESCRIPTION
-*      Get QPN of the inform info
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_inform_info_get_qpn_resp_time(
-  IN   const   ib_net32_t              qpn_resp_time_val,
-  OUT          ib_net32_t* const       p_qpn,
-  OUT          uint8_t* const          p_resp_time_val )
-{
-  uint32_t tmp = cl_ntoh32(qpn_resp_time_val);
-
-  if (p_qpn)
-    *p_qpn = cl_hton32((tmp & 0xffffff00) >> 8);
-       
-       if (p_resp_time_val)
-               *p_resp_time_val = (uint8_t)(tmp & 0x0000001f);
-}
-/*
-* PARAMETERS
-*      qpn_resp_time_val
-*              [in] the  qpn and resp time val from the mad
-*
-* RETURN VALUES
-*      p_qpn
-*              [out] pointer to the qpn
-*
-*      p_state
-*              [out] pointer to the resp time val
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_inform_info_t
-*********/
-
-/****f* IBA Base: Types/ib_inform_info_set_qpn
-* NAME
-*      ib_inform_info_set_qpn
-*
-* DESCRIPTION
-*      Set the QPN of the inform info
-*
-* SYNOPSIS
-*/
-static inline void     OSM_API
-ib_inform_info_set_qpn(
-  IN   ib_inform_info_t        *p_ii,
-  IN   ib_net32_t const        qpn)
-{
-  uint32_t tmp = cl_ntoh32(p_ii->g_or_v.generic.qpn_resp_time_val);
-
-  p_ii->g_or_v.generic.qpn_resp_time_val = 
-    cl_hton32(
-      (tmp & 0x000000ff) |
-      ((cl_ntoh32(qpn) << 8) & 0xffffff00)
-      );
-}
-/*
-* PARAMETERS
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_inform_info_t
-*********/
-
-/****f* IBA Base: Types/ib_inform_info_get_node_type
-* NAME
-*      ib_inform_info_get_node_type
-*
-* DESCRIPTION
-*      Get Node Type of the Inform Info
-*
-* SYNOPSIS
-*/
-static inline ib_net32_t       OSM_API
-ib_inform_info_get_node_type(
-  IN           const   ib_inform_info_t  *p_inf)
-{
-  uint32_t nt;
-
-  nt = cl_ntoh16(p_inf->g_or_v.generic.node_type_lsb) |
-    (p_inf->g_or_v.generic.node_type_msb << 16);
-  return cl_hton32(nt);
-}
-/*
-* PARAMETERS
-*      p_inf
-*              [in] pointer to an inform info
-*
-* RETURN VALUES
-*     The node type
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_inform_info_t
-*********/
-
-/****f* IBA Base: Types/ib_inform_info_get_vend_id
-* NAME
-*      ib_inform_info_get_vend_id
-*
-* DESCRIPTION
-*      Get Node Type of the Inform Info
-*
-* SYNOPSIS
-*/
-static inline ib_net32_t       OSM_API
-ib_inform_info_get_vend_id(
-  IN           const   ib_inform_info_t  *p_inf)
-{
-  uint32_t vi;
-
-  vi = cl_ntoh16(p_inf->g_or_v.vend.vendor_id_lsb) |
-    (p_inf->g_or_v.vend.vendor_id_msb << 16);
-  return cl_hton32(vi);
-}
-/*
-* PARAMETERS
-*      p_inf
-*              [in] pointer to an inform info
-*
-* RETURN VALUES
-*     The node type
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_inform_info_t
-*********/
-
-/****s* IBA Base: Types/ib_inform_info_record_t
-* NAME
-*      ib_inform_info_record_t
-*
-* DESCRIPTION
-*      IBA defined InformInfo Record. (15.2.5.12)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_inform_info_record
-{
-       ib_gid_t                        subscriber_gid;
-       ib_net16_t                      subscriber_enum;
-       uint8_t                         reserved[6];
-       ib_inform_info_t                inform_info;
-       uint8_t                         pad[4];
-}      PACK_SUFFIX ib_inform_info_record_t;
-#include <complib/cl_packoff.h>
-
-/****d* IBA Base: Types/DM_SVC_NAME
-* NAME
-*      DM_SVC_NAME
-*
-* DESCRIPTION
-*      IBA defined Device Management service name (16.3)
-*
-* SYNOPSIS
-*/
-#define        DM_SVC_NAME                             "DeviceManager.IBTA"
-/*
-* SEE ALSO
-*********/
-
-/****s* IBA Base: Types/ib_dm_mad_t
-* NAME
-*      ib_dm_mad_t
-*
-* DESCRIPTION
-*      IBA defined Device Management MAD (16.3.1)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_dm_mad
-{
-       ib_mad_t                header;
-       uint8_t                 resv[40];
-
-#define        IB_DM_DATA_SIZE         192
-       uint8_t                 data[IB_DM_DATA_SIZE];
-
-}      PACK_SUFFIX ib_dm_mad_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      header
-*              Common MAD header.
-*
-*      resv
-*              Reserved.
-*
-*      data
-*              Device Management payload.  The structure and content of this field
-*              depend upon the method, attr_id, and attr_mod fields in the header.
-*
-* SEE ALSO
-* ib_mad_t
-*********/
-
-/****s* IBA Base: Types/ib_iou_info_t
-* NAME
-*      ib_iou_info_t
-*
-* DESCRIPTION
-*      IBA defined IO Unit information structure (16.3.3.3)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_iou_info
-{
-       ib_net16_t              change_id;
-       uint8_t                 max_controllers;
-       uint8_t                 diag_rom;
-
-#define        IB_DM_CTRL_LIST_SIZE    128
-
-       uint8_t                 controller_list[IB_DM_CTRL_LIST_SIZE];
-#define        IOC_NOT_INSTALLED               0x0
-#define        IOC_INSTALLED                   0x1
-//             Reserved values                         0x02-0xE
-#define        SLOT_DOES_NOT_EXIST             0xF
-
-}      PACK_SUFFIX ib_iou_info_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      change_id
-*              Value incremented, with rollover, by any change to the controller_list.
-*
-*      max_controllers
-*              Number of slots in controller_list.
-*
-*      diag_rom
-*              A byte containing two fields: DiagDeviceID and OptionROM.
-*              These fields may be read using the ib_iou_info_diag_dev_id
-*              and ib_iou_info_option_rom functions.
-*
-*      controller_list
-*              A series of 4-bit nibbles, with each nibble representing a slot
-*              in the IO Unit.  Individual nibbles may be read using the
-*              ioc_at_slot function.
-*
-* SEE ALSO
-* ib_dm_mad_t, ib_iou_info_diag_dev_id, ib_iou_info_option_rom, ioc_at_slot
-*********/
-
-/****f* IBA Base: Types/ib_iou_info_diag_dev_id
-* NAME
-*      ib_iou_info_diag_dev_id
-*
-* DESCRIPTION
-*      Returns the DiagDeviceID.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_iou_info_diag_dev_id(
-       IN      const   ib_iou_info_t* const    p_iou_info )
-{
-       return( (uint8_t)(p_iou_info->diag_rom >> 6 & 1) );
-}
-/*
-* PARAMETERS
-*      p_iou_info
-*              [in] Pointer to the IO Unit information structure.
-*
-* RETURN VALUES
-*      DiagDeviceID field of the IO Unit information.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_iou_info_t
-*********/
-
-/****f* IBA Base: Types/ib_iou_info_option_rom
-* NAME
-*      ib_iou_info_option_rom
-*
-* DESCRIPTION
-*      Returns the OptionROM.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ib_iou_info_option_rom(
-       IN      const   ib_iou_info_t*  const   p_iou_info )
-{
-       return( (uint8_t)(p_iou_info->diag_rom >> 7) );
-}
-/*
-* PARAMETERS
-*      p_iou_info
-*              [in] Pointer to the IO Unit information structure.
-*
-* RETURN VALUES
-*      OptionROM field of the IO Unit information.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_iou_info_t
-*********/
-
-/****f* IBA Base: Types/ioc_at_slot
-* NAME
-*      ioc_at_slot
-*
-* DESCRIPTION
-*      Returns the IOC value at the specified slot.
-*
-* SYNOPSIS
-*/
-static inline uint8_t  OSM_API
-ioc_at_slot(
-       IN      const   ib_iou_info_t*  const   p_iou_info,
-       IN              uint8_t                 slot )
-{
-       if( slot >= IB_DM_CTRL_LIST_SIZE ) return SLOT_DOES_NOT_EXIST;
-       else return (int8_t)
-               ( (slot%2) ?
-                       ((p_iou_info->controller_list[slot/2] & 0xf0) >> 4 ):
-                       (p_iou_info->controller_list[slot/2] & 0x0f) );
-}
-/*
-* PARAMETERS
-*      p_iou_info
-*              [in] Pointer to the IO Unit information structure.
-*
-*      slot
-*              [in] Pointer to the IO Unit information structure.
-*
-* RETURN VALUES
-*      OptionROM field of the IO Unit information.
-*
-* NOTES
-*
-* SEE ALSO
-*      ib_iou_info_t
-*********/
-
-/****s* IBA Base: Types/ib_ioc_profile_t
-* NAME
-*      ib_ioc_profile_t
-*
-* DESCRIPTION
-*      IBA defined IO Controller profile structure (16.3.3.4)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_ioc_profile
-{
-       ib_net64_t                              ioc_guid;
-
-       ib_net32_t                              vend_id;
-
-       ib_net32_t                              dev_id;
-       ib_net16_t                              dev_ver;
-       ib_net16_t                              resv2;
-
-       ib_net32_t                              subsys_vend_id;
-       ib_net32_t                              subsys_id;
-
-       ib_net16_t                              io_class;
-       ib_net16_t                              io_subclass;
-       ib_net16_t                              protocol;
-       ib_net16_t                              protocol_ver;
-
-       ib_net32_t                              resv3;
-       ib_net16_t                              send_msg_depth;
-       uint8_t                                 resv4;
-       uint8_t                                 rdma_read_depth;
-       ib_net32_t                              send_msg_size;
-       ib_net32_t                              rdma_size;
-
-       uint8_t                                 ctrl_ops_cap;
-#define        CTRL_OPS_CAP_ST         0x01
-#define        CTRL_OPS_CAP_SF         0x02
-#define        CTRL_OPS_CAP_RT         0x04
-#define        CTRL_OPS_CAP_RF         0x08
-#define        CTRL_OPS_CAP_WT         0x10
-#define        CTRL_OPS_CAP_WF         0x20
-#define        CTRL_OPS_CAP_AT         0x40
-#define        CTRL_OPS_CAP_AF         0x80
-
-       uint8_t                                 resv5;
-
-       uint8_t                                 num_svc_entries;
-#define        MAX_NUM_SVC_ENTRIES     0xff
-
-       uint8_t                                 resv6[9];
-
-#define        CTRL_ID_STRING_LEN      64
-       char                                    id_string[CTRL_ID_STRING_LEN];
-
-}      PACK_SUFFIX ib_ioc_profile_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      ioc_guid
-*              An EUI-64 GUID used to uniquely identify the IO controller.
-*
-*      vend_id
-*              IO controller vendor ID, IEEE format.
-*
-*      dev_id
-*              A number assigned by the vendor to identify the type of controller.
-*
-*      dev_ver
-*              A number assigned by the vendor to identify the divice version.
-*
-*      subsys_vend_id
-*              ID of the vendor of the enclosure, if any, in which the IO controller
-*              resides in IEEE format; otherwise zero.
-*
-*      subsys_id
-*              A number identifying the subsystem where the controller resides.
-*
-*      io_class
-*              0x0000 - 0xfffe = reserved for IO classes encompased by InfiniBand
-*              Architecture.  0xffff = Vendor specific.
-*
-*      io_subclass
-*              0x0000 - 0xfffe = reserved for IO subclasses encompased by InfiniBand
-*              Architecture.  0xffff = Vendor specific.  This shall be set to 0xfff
-*              if the io_class component is 0xffff.
-*
-*      protocol
-*              0x0000 - 0xfffe = reserved for IO subclasses encompased by InfiniBand
-*              Architecture.  0xffff = Vendor specific.  This shall be set to 0xfff
-*              if the io_class component is 0xffff.
-*
-*      protocol_ver
-*              Protocol specific.
-*
-*      send_msg_depth
-*              Maximum depth of the send message queue.
-*
-*      rdma_read_depth
-*              Maximum depth of the per-channel RDMA read queue.
-*
-*      send_msg_size
-*              Maximum size of send messages.
-*
-*      ctrl_ops_cap
-*              Supported operation types of this IO controller.  A bit set to one
-*              for affirmation of supported capability.
-*
-*      num_svc_entries
-*              Number of entries in the service entries table.
-*
-*      id_string
-*              UTF-8 encoded string for identifying the controller to an operator.
-*
-* SEE ALSO
-* ib_dm_mad_t
-*********/
-
-static inline uint32_t OSM_API
-ib_ioc_profile_get_vend_id(
-       IN      const   ib_ioc_profile_t* const         p_ioc_profile )
-{
-       return( cl_ntoh32(p_ioc_profile->vend_id) >> 8 );
-}
-
-
-static inline void     OSM_API
-ib_ioc_profile_set_vend_id(
-       IN              ib_ioc_profile_t* const         p_ioc_profile,
-       IN      const   uint32_t                        vend_id )
-{
-       p_ioc_profile->vend_id = (cl_hton32(vend_id) << 8);
-}
-
-/****s* IBA Base: Types/ib_svc_entry_t
-* NAME
-*      ib_svc_entry_t
-*
-* DESCRIPTION
-*      IBA defined IO Controller service entry structure (16.3.3.5)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_svc_entry
-{
-#define        MAX_SVC_ENTRY_NAME_LEN          40
-       char                            name[MAX_SVC_ENTRY_NAME_LEN];
-
-       ib_net64_t                      id;
-
-}      PACK_SUFFIX ib_svc_entry_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      name
-*              UTF-8 encoded, null-terminated name of the service.
-*
-*      id
-*              An identifier of the associated Service.
-*
-* SEE ALSO
-* ib_svc_entries_t
-*********/
-
-/****s* IBA Base: Types/ib_svc_entries_t
-* NAME
-*      ib_svc_entries_t
-*
-* DESCRIPTION
-*      IBA defined IO Controller service entry array (16.3.3.5)
-*
-* SYNOPSIS
-*/
-#include <complib/cl_packon.h>
-typedef struct _ib_svc_entries
-{
-#define        SVC_ENTRY_COUNT                 4
-       ib_svc_entry_t                  service_entry[SVC_ENTRY_COUNT];
-
-}      PACK_SUFFIX ib_svc_entries_t;
-#include <complib/cl_packoff.h>
-/*
-* FIELDS
-*      service_entry
-*              An array of IO controller service entries.
-*
-* SEE ALSO
-* ib_dm_mad_t, ib_svc_entry_t
-*********/
-
-static inline void     OSM_API
-ib_dm_get_slot_lo_hi(
-       IN      const   ib_net32_t              slot_lo_hi,
-       OUT             uint8_t         *const  p_slot,
-       OUT             uint8_t         *const  p_lo,
-       OUT             uint8_t         *const  p_hi )
-{
-       ib_net32_t              tmp_slot_lo_hi = CL_NTOH32( slot_lo_hi );
-
-       if( p_slot )
-               *p_slot = (uint8_t)( ( tmp_slot_lo_hi >> 16 ) & 0x0f );
-
-       if( p_hi )
-               *p_hi   = (uint8_t)( ( tmp_slot_lo_hi >> 8 ) & 0xff );
-
-       if( p_lo )
-               *p_lo   = (uint8_t)( ( tmp_slot_lo_hi >> 0 ) & 0xff );
-}
-
-/*
- *     IBA defined information describing an I/O controller
- */
-#include <complib/cl_packon.h>
-typedef struct _ib_ioc_info
-{
-       ib_net64_t                              module_guid;
-       ib_net64_t                              iou_guid;
-       ib_ioc_profile_t                        ioc_profile;
-       ib_net64_t                              access_key;
-       uint16_t                                initiators_conf;
-       uint8_t                                 resv[38];
-
-}      PACK_SUFFIX ib_ioc_info_t;
-#include <complib/cl_packoff.h>
-
-/*
- * Defines known Communication management class versions
- */
-#define IB_MCLASS_CM_VER_2                             2
-#define IB_MCLASS_CM_VER_1                             1
-
-/*
- *     Defines the size of user available data in communication management MADs
- */
-#define IB_REQ_CM_RDMA_PDATA_SIZE                      56
-#define IB_REQ_PDATA_SIZE_VER2                         92
-#define IB_MRA_PDATA_SIZE_VER2                         222
-#define IB_REJ_PDATA_SIZE_VER2                         148
-#define IB_REP_PDATA_SIZE_VER2                         196
-#define IB_RTU_PDATA_SIZE_VER2                         224
-#define IB_LAP_PDATA_SIZE_VER2                         168
-#define IB_APR_PDATA_SIZE_VER2                         148
-#define IB_DREQ_PDATA_SIZE_VER2                                220
-#define IB_DREP_PDATA_SIZE_VER2                                224
-#define IB_SIDR_REQ_PDATA_SIZE_VER2                    216
-#define IB_SIDR_REP_PDATA_SIZE_VER2                    136
-
-#define IB_REQ_PDATA_SIZE_VER1                         92
-#define IB_MRA_PDATA_SIZE_VER1                         222
-#define IB_REJ_PDATA_SIZE_VER1                         148
-#define IB_REP_PDATA_SIZE_VER1                         204
-#define IB_RTU_PDATA_SIZE_VER1                         224
-#define IB_LAP_PDATA_SIZE_VER1                         168
-#define IB_APR_PDATA_SIZE_VER1                         151
-#define IB_DREQ_PDATA_SIZE_VER1                                220
-#define IB_DREP_PDATA_SIZE_VER1                                224
-#define IB_SIDR_REQ_PDATA_SIZE_VER1                    216
-#define IB_SIDR_REP_PDATA_SIZE_VER1                    140
-
-#define IB_ARI_SIZE                                    72              // redefine
-#define IB_APR_INFO_SIZE                               72
-
-/****d* Access Layer/ib_rej_status_t
-* NAME
-*      ib_rej_status_t
-*
-* DESCRIPTION
-*      Rejection reasons.
-*
-* SYNOPSIS
-*/
-typedef        ib_net16_t                                      ib_rej_status_t;
-/*
-* SEE ALSO
-*      ib_cm_rej, ib_cm_rej_rec_t
-*
-* SOURCE
-*/
-#define IB_REJ_INSUF_QP                                        CL_HTON16(1)
-#define IB_REJ_INSUF_EEC                               CL_HTON16(2)
-#define IB_REJ_INSUF_RESOURCES                         CL_HTON16(3)
-#define IB_REJ_TIMEOUT                                 CL_HTON16(4)
-#define IB_REJ_UNSUPPORTED                             CL_HTON16(5)
-#define IB_REJ_INVALID_COMM_ID                         CL_HTON16(6)
-#define IB_REJ_INVALID_COMM_INSTANCE                   CL_HTON16(7)
-#define IB_REJ_INVALID_SID                             CL_HTON16(8)
-#define IB_REJ_INVALID_XPORT                           CL_HTON16(9)
-#define IB_REJ_STALE_CONN                              CL_HTON16(10)
-#define IB_REJ_RDC_NOT_EXIST                           CL_HTON16(11)
-#define IB_REJ_INVALID_GID                             CL_HTON16(12)
-#define IB_REJ_INVALID_LID                             CL_HTON16(13)
-#define IB_REJ_INVALID_SL                              CL_HTON16(14)
-#define IB_REJ_INVALID_TRAFFIC_CLASS                   CL_HTON16(15)
-#define IB_REJ_INVALID_HOP_LIMIT                       CL_HTON16(16)
-#define IB_REJ_INVALID_PKT_RATE                                CL_HTON16(17)
-#define IB_REJ_INVALID_ALT_GID                         CL_HTON16(18)
-#define IB_REJ_INVALID_ALT_LID                         CL_HTON16(19)
-#define IB_REJ_INVALID_ALT_SL                          CL_HTON16(20)
-#define IB_REJ_INVALID_ALT_TRAFFIC_CLASS               CL_HTON16(21)
-#define IB_REJ_INVALID_ALT_HOP_LIMIT                   CL_HTON16(22)
-#define IB_REJ_INVALID_ALT_PKT_RATE                    CL_HTON16(23)
-#define IB_REJ_PORT_REDIRECT                           CL_HTON16(24)
-#define IB_REJ_INVALID_MTU                             CL_HTON16(26)
-#define IB_REJ_INSUFFICIENT_RESP_RES                   CL_HTON16(27)
-#define IB_REJ_USER_DEFINED                            CL_HTON16(28)
-#define IB_REJ_INVALID_RNR_RETRY                       CL_HTON16(29)
-#define IB_REJ_DUPLICATE_LOCAL_COMM_ID                 CL_HTON16(30)
-#define IB_REJ_INVALID_CLASS_VER                       CL_HTON16(31)
-#define IB_REJ_INVALID_FLOW_LBL                                CL_HTON16(32)
-#define IB_REJ_INVALID_ALT_FLOW_LBL                    CL_HTON16(33)
-
-#define IB_REJ_SERVICE_HANDOFF                         CL_HTON16(65535)
-/******/
-
-/****d* Access Layer/ib_apr_status_t
-* NAME
-*      ib_apr_status_t
-*
-* DESCRIPTION
-*      Automatic path migration status information.
-*
-* SYNOPSIS
-*/
-typedef uint8_t                                                ib_apr_status_t;
-/*
-* SEE ALSO
-*      ib_cm_apr, ib_cm_apr_rec_t
-*
-* SOURCE
- */
-#define IB_AP_SUCCESS                                  0
-#define IB_AP_INVALID_COMM_ID                          1
-#define IB_AP_UNSUPPORTED                              2
-#define IB_AP_REJECT                                   3
-#define IB_AP_REDIRECT                                 4
-#define IB_AP_IS_CURRENT                               5
-#define IB_AP_INVALID_QPN_EECN                         6
-#define IB_AP_INVALID_LID                              7
-#define IB_AP_INVALID_GID                              8
-#define IB_AP_INVALID_FLOW_LBL                         9
-#define IB_AP_INVALID_TCLASS                           10
-#define IB_AP_INVALID_HOP_LIMIT                                11
-#define IB_AP_INVALID_PKT_RATE                         12
-#define IB_AP_INVALID_SL                               13
-/******/
-
-/****d* Access Layer/ib_cm_cap_mask_t
-* NAME
-*      ib_cm_cap_mask_t
-*
-* DESCRIPTION
-*      Capability mask values in ClassPortInfo.
-*
-* SYNOPSIS
-*/
-#define IB_CM_RELIABLE_CONN_CAPABLE                    CL_HTON16(9)
-#define IB_CM_RELIABLE_DGRM_CAPABLE                    CL_HTON16(10)
-#define IB_CM_RDGRM_CAPABLE                            CL_HTON16(11)
-#define IB_CM_UNRELIABLE_CONN_CAPABLE                  CL_HTON16(12)
-#define IB_CM_SIDR_CAPABLE                             CL_HTON16(13)
-/*
-* SEE ALSO
-*      ib_cm_rep, ib_class_port_info_t
-*
-* SOURCE
-*
-*******/
-
-/*
- *     Service ID resolution status
- */
-typedef uint16_t                                       ib_sidr_status_t;
-#define IB_SIDR_SUCCESS                                        0
-#define IB_SIDR_UNSUPPORTED                            1
-#define IB_SIDR_REJECT                                 2
-#define IB_SIDR_NO_QP                                  3
-#define IB_SIDR_REDIRECT                               4
-#define IB_SIDR_UNSUPPORTED_VER                                5
-
-/*
- *     The following definitions are shared between the Access Layer and VPD
- */
-
-
-typedef struct _ib_ca* TYPEDEF_PTR64                   ib_ca_handle_t ;
-typedef struct _ib_pd* TYPEDEF_PTR64                   ib_pd_handle_t ;
-typedef struct _ib_rdd* TYPEDEF_PTR64                  ib_rdd_handle_t;
-typedef struct _ib_mr* TYPEDEF_PTR64                   ib_mr_handle_t;
-typedef struct _ib_mw* TYPEDEF_PTR64                   ib_mw_handle_t;
-typedef struct _ib_qp* TYPEDEF_PTR64                   ib_qp_handle_t;
-typedef struct _ib_eec* TYPEDEF_PTR64                  ib_eec_handle_t;
-typedef struct _ib_cq* TYPEDEF_PTR64                   ib_cq_handle_t;
-typedef struct _ib_av* TYPEDEF_PTR64                   ib_av_handle_t;
-typedef struct _ib_mcast* TYPEDEF_PTR64                ib_mcast_handle_t;
-/* Currently for windows branch, use the extended version of ib special verbs struct 
-       in order to be compliant with Infinicon ib_types; later we'll change it to support 
-       OpenSM ib_types.h */
-
-#ifndef WIN32
-/****d* Access Layer/ib_api_status_t
-* NAME
-*      ib_api_status_t
-*
-* DESCRIPTION
-*      Function return codes indicating the success or failure of an API call.
-*      Note that success is indicated by the return value IB_SUCCESS, which
-*      is always zero.
-*
-* NOTES
-*      IB_VERBS_PROCESSING_DONE is used by UVP library to terminate a verbs call
-*      in the pre-ioctl step itself.
-*
-* SYNOPSIS
-*/
-typedef enum _ib_api_status_t
-{
-       IB_SUCCESS,
-       IB_INSUFFICIENT_RESOURCES,
-       IB_INSUFFICIENT_MEMORY,
-       IB_INVALID_PARAMETER,
-       IB_INVALID_SETTING,
-       IB_NOT_FOUND,
-       IB_TIMEOUT,
-       IB_CANCELED,
-       IB_INTERRUPTED,
-       IB_INVALID_PERMISSION,
-       IB_UNSUPPORTED,
-       IB_OVERFLOW,
-       IB_MAX_MCAST_QPS_REACHED,
-       IB_INVALID_QP_STATE,
-       IB_INVALID_EEC_STATE,
-       IB_INVALID_APM_STATE,
-       IB_INVALID_PORT_STATE,
-       IB_INVALID_STATE,
-       IB_RESOURCE_BUSY,
-       IB_INVALID_PKEY,
-       IB_INVALID_LKEY,
-       IB_INVALID_RKEY,
-       IB_INVALID_MAX_WRS,
-       IB_INVALID_MAX_SGE,
-       IB_INVALID_CQ_SIZE,
-       IB_INVALID_SERVICE_TYPE,
-       IB_INVALID_GID,
-       IB_INVALID_LID,
-       IB_INVALID_GUID,
-       IB_INVALID_CA_HANDLE,
-       IB_INVALID_AV_HANDLE,
-       IB_INVALID_CQ_HANDLE,
-       IB_INVALID_EEC_HANDLE,
-       IB_INVALID_QP_HANDLE,
-       IB_INVALID_PD_HANDLE,
-       IB_INVALID_MR_HANDLE,
-       IB_INVALID_MW_HANDLE,
-       IB_INVALID_RDD_HANDLE,
-       IB_INVALID_MCAST_HANDLE,
-       IB_INVALID_CALLBACK,
-       IB_INVALID_AL_HANDLE,                   /* InfiniBand Access Layer */
-       IB_INVALID_HANDLE,                      /* InfiniBand Access Layer */
-       IB_ERROR,                               /* InfiniBand Access Layer */
-       IB_REMOTE_ERROR,                        /* Infiniband Access Layer */
-       IB_VERBS_PROCESSING_DONE,               /* See Notes above         */
-       IB_INVALID_WR_TYPE,
-       IB_QP_IN_TIMEWAIT,
-       IB_EE_IN_TIMEWAIT,
-       IB_INVALID_PORT,
-       IB_NOT_DONE,
-       IB_UNKNOWN_ERROR                        /* ALWAYS LAST ENUM VALUE! */
-
-}      ib_api_status_t;
-/*****/
-
-OSM_EXPORT const char* ib_error_str[];
-
-/****f* IBA Base: Types/ib_get_err_str
-* NAME
-*      ib_get_err_str
-*
-* DESCRIPTION
-*      Returns a string for the specified status value.
-*
-* SYNOPSIS
-*/
-static inline const char*      OSM_API
-ib_get_err_str(
-       IN              ib_api_status_t                 status )
-{
-       if( status > IB_UNKNOWN_ERROR )
-               status = IB_UNKNOWN_ERROR;
-       return( ib_error_str[status] );
-}
-/*
-* PARAMETERS
-*      status
-*              [in] status value
-*
-* RETURN VALUES
-*      Pointer to the status description string.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****d* Verbs/ib_async_event_t
-* NAME
-*      ib_async_event_t -- Async event types
-*
-* DESCRIPTION
-*      This type indicates the reason the async callback was called.
-*      The context in the ib_event_rec_t indicates the resource context
-*      that associated with the callback.  For example, for IB_AE_CQ_ERROR
-*      the context provided during the ib_create_cq is returned in the event.
-*
-* SYNOPSIS
-*/
-typedef enum _ib_async_event_t
-{
-       IB_AE_SQ_ERROR = 1,
-       IB_AE_SQ_DRAINED,
-       IB_AE_RQ_ERROR,
-       IB_AE_CQ_ERROR,
-       IB_AE_QP_FATAL,
-       IB_AE_QP_COMM,
-       IB_AE_QP_APM,
-       IB_AE_EEC_FATAL,
-       IB_AE_EEC_COMM,
-       IB_AE_EEC_APM,
-       IB_AE_LOCAL_FATAL,
-       IB_AE_PKEY_TRAP,
-       IB_AE_QKEY_TRAP,
-       IB_AE_MKEY_TRAP,
-       IB_AE_PORT_TRAP,
-       IB_AE_SYSIMG_GUID_TRAP,
-       IB_AE_BUF_OVERRUN,
-       IB_AE_LINK_INTEGRITY,
-       IB_AE_FLOW_CTRL_ERROR,
-       IB_AE_BKEY_TRAP,
-       IB_AE_QP_APM_ERROR,
-       IB_AE_EEC_APM_ERROR,
-       IB_AE_WQ_REQ_ERROR,
-       IB_AE_WQ_ACCESS_ERROR,
-       IB_AE_PORT_ACTIVE,
-       IB_AE_PORT_DOWN,
-       IB_AE_UNKNOWN           /* ALWAYS LAST ENUM VALUE */
-
-}      ib_async_event_t;
-/*
-* VALUES
-*      IB_AE_SQ_ERROR
-*              An error occurred when accessing the send queue of the QP or EEC.
-*              This event is optional.
-*
-*      IB_AE_SQ_DRAINED
-*              The send queue of the specified QP has completed the outstanding
-*              messages in progress when the state change was requested and, if
-*              applicable, has received all acknowledgements for those messages.
-*
-*      IB_AE_RQ_ERROR
-*              An error occurred when accessing the receive queue of the QP or EEC.
-*              This event is optional.
-*
-*      IB_AE_CQ_ERROR
-*              An error occurred when writing an entry to the CQ.
-*
-*      IB_AE_QP_FATAL
-*              A catastrophic error occurred while accessing or processing the
-*              work queue that prevents reporting of completions.
-*
-*      IB_AE_QP_COMM
-*              The first packet has arrived for the receive work queue where the
-*              QP is still in the RTR state.
-*
-*      IB_AE_QP_APM
-*              If alternate path migration is supported, this event indicates that
-*              the QP connection has migrated to the alternate path.
-*
-*      IB_AE_EEC_FATAL
-*              If reliable datagram service is supported, this event indicates that
-*              a catastrophic error occurred while accessing or processing the EEC
-*              that prevents reporting of completions.
-*
-*      IB_AE_EEC_COMM
-*              If reliable datagram service is supported, this event indicates that
-*              the first packet has arrived for the receive work queue where the
-*              EEC is still in the RTR state.
-*
-*      IB_AE_EEC_APM
-*              If reliable datagram service and alternate path migration is supported,
-*              this event indicates that the EEC connection has migrated to the
-*              alternate path.
-*
-*      IB_AE_LOCAL_FATAL
-*              A catastrophic HCA error occurred which cannot be attributed to any
-*              resource; behavior is indeterminate.
-*
-*      IB_AE_PKEY_TRAP
-*              A PKEY violation was detected.  This event is optional.
-*
-*      IB_AE_QKEY_TRAP
-*              A QKEY violation was detected.  This event is optional.
-*
-*      IB_AE_MKEY_TRAP
-*              An MKEY violation was detected.  This event is optional.
-*
-*      IB_AE_PORT_TRAP
-*              A port capability change was detected.  This event is optional.
-*
-*      IB_AE_SYSIMG_GUID_TRAP
-*              If the system image GUID is supported, this event indicates that the
-*              system image GUID of this HCA has been changed.  This event is
-*              optional.
-*
-*      IB_AE_BUF_OVERRUN
-*              The number of consecutive flow control update periods with at least
-*              one overrun error in each period has exceeded the threshold specified
-*              in the port info attributes.  This event is optional.
-*
-*      IB_AE_LINK_INTEGRITY
-*              The detection of excessively frequent local physical errors has
-*              exceeded the threshold specified in the port info attributes.  This
-*              event is optional.
-*
-*      IB_AE_FLOW_CTRL_ERROR
-*              An HCA watchdog timer monitoring the arrival of flow control updates
-*              has expired without receiving an update.  This event is optional.
-*
-*      IB_AE_BKEY_TRAP
-*              An BKEY violation was detected.  This event is optional.
-*
-*      IB_AE_QP_APM_ERROR
-*              If alternate path migration is supported, this event indicates that
-*              an incoming path migration request to this QP was not accepted.
-*
-*      IB_AE_EEC_APM_ERROR
-*              If reliable datagram service and alternate path migration is supported,
-*              this event indicates that an incoming path migration request to this
-*              EEC was not accepted.
-*
-*      IB_AE_WQ_REQ_ERROR
-*              An OpCode violation was detected at the responder.
-*
-*      IB_AE_WQ_ACCESS_ERROR
-*              An access violation was detected at the responder.
-*
-*      IB_AE_PORT_ACTIVE
-*              If the port active event is supported, this event is generated
-*              when the link becomes active: IB_LINK_ACTIVE.
-*
-*      IB_AE_PORT_DOWN
-*              The link is declared unavailable: IB_LINK_INIT, IB_LINK_ARMED,
-*              IB_LINK_DOWN.
-*
-*      IB_AE_UNKNOWN
-*              An unknown error occurred which cannot be attributed to any
-*              resource; behavior is indeterminate.
-*
-*****/
-
-OSM_EXPORT const char* ib_async_event_str[];
-
-/****f* IBA Base: Types/ib_get_async_event_str
-* NAME
-*      ib_get_async_event_str
-*
-* DESCRIPTION
-*      Returns a string for the specified asynchronous event.
-*
-* SYNOPSIS
-*/
-static inline const char*      OSM_API
-ib_get_async_event_str(
-       IN              ib_async_event_t                event )
-{
-       if( event > IB_AE_UNKNOWN )
-               event = IB_AE_UNKNOWN;
-       return( ib_async_event_str[event] );
-}
-/*
-* PARAMETERS
-*      event
-*              [in] event value
-*
-* RETURN VALUES
-*      Pointer to the asynchronous event description string.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****s* Verbs/ib_event_rec_t
-* NAME
-*      ib_event_rec_t -- Async event notification record
-*
-* DESCRIPTION
-*      When an async event callback is made, this structure is passed to indicate
-*      the type of event, the source of event that caused it, and the context
-*      associated with this event.
-*
-*      context -- Context of the resource that caused the event.
-*              -- ca_context if this is a port/adapter event.
-*              -- qp_context if the source is a QP event
-*              -- cq_context if the source is a CQ event.
-*              -- ee_context if the source is an EE event.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_event_rec
-{
-       void                                    *context;
-       ib_async_event_t                        type;
-
-       /* HCA vendor specific event information. */
-       uint64_t                                vendor_specific;
-
-       /* The following structures are valid only for trap types. */
-       union _trap
-       {
-               struct
-               {
-                       uint16_t                        lid;
-                       ib_net64_t                      port_guid;
-                       uint8_t                         port_num;
-
-                       /*
-                        * The following structure is valid only for
-                        * P_KEY, Q_KEY, and M_KEY violation traps.
-                        */
-                       struct
-                       {
-                               uint8_t                 sl;
-                               uint16_t                src_lid;
-                               uint16_t                dest_lid;
-                               union _key
-                               {
-                                       uint16_t        pkey;
-                                       uint32_t        qkey;
-                                       uint64_t        mkey;
-                               } key;
-                               uint32_t                src_qp;
-                               uint32_t                dest_qp;
-                               ib_gid_t                src_gid;
-                               ib_gid_t                dest_gid;
-
-                       }       violation;
-
-               } info;
-
-               ib_net64_t                              sysimg_guid;
-
-       }       trap;
-
-}      ib_event_rec_t;
-/*******/
-
-/****d* Access Layer/ib_atomic_t
-* NAME
-*      ib_atomic_t
-*
-* DESCRIPTION
-*      Indicates atomicity levels supported by an adapter.
-*
-* SYNOPSIS
-*/
-typedef enum _ib_atomic_t
-{
-       IB_ATOMIC_NONE,
-       IB_ATOMIC_LOCAL,
-       IB_ATOMIC_GLOBAL
-
-}      ib_atomic_t;
-/*
-* VALUES
-*      IB_ATOMIC_NONE
-*              Atomic operations not supported.
-*
-*      IB_ATOMIC_LOCAL
-*              Atomic operations guaranteed between QPs of a single CA.
-*
-*      IB_ATOMIC_GLOBAL
-*              Atomic operations are guaranteed between CA and any other entity
-*              in the system.
-*****/
-
-/****s* Access Layer/ib_port_cap_t
-* NAME
-*      ib_port_cap_t
-*
-* DESCRIPTION
-*      Indicates which management agents are currently available on the specified
-*      port.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_port_cap
-{
-       boolean_t               cm;
-       boolean_t               snmp;
-       boolean_t               dev_mgmt;
-       boolean_t               vend;
-       boolean_t               sm;
-       boolean_t               sm_disable;
-       boolean_t               qkey_ctr;
-       boolean_t               pkey_ctr;
-       boolean_t               notice;
-       boolean_t               trap;
-       boolean_t               apm;
-       boolean_t               slmap;
-       boolean_t               pkey_nvram;
-       boolean_t               mkey_nvram;
-       boolean_t               sysguid;
-       boolean_t               dr_notice;
-       boolean_t               boot_mgmt;
-       boolean_t               capm_notice;
-       boolean_t               reinit;
-       boolean_t               ledinfo;
-       boolean_t               port_active;
-
-}      ib_port_cap_t;
-/*****/
-
-/****d* Access Layer/ib_init_type_t
-* NAME
-*      ib_init_type_t
-*
-* DESCRIPTION
-*      If supported by the HCA, the type of initialization requested by
-*      this port before SM moves it to the active or armed state.  If the
-*      SM implements reinitialization, it shall set these bits to indicate
-*      the type of initialization performed prior to activating the port.
-*      Otherwise, these bits shall be set to 0.
-*
-* SYNOPSIS
-*/
-typedef uint8_t                                        ib_init_type_t;
-#define IB_INIT_TYPE_NO_LOAD                   0x01
-#define IB_INIT_TYPE_PRESERVE_CONTENT          0x02
-#define IB_INIT_TYPE_PRESERVE_PRESENCE         0x04
-#define IB_INIT_TYPE_DO_NOT_RESUSCITATE                0x08
-/*****/
-
-/****s* Access Layer/ib_port_attr_mod_t
-* NAME
-*      ib_port_attr_mod_t
-*
-* DESCRIPTION
-*      Port attributes that may be modified.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_port_attr_mod
-{
-       ib_port_cap_t                           cap;
-       uint16_t                                pkey_ctr;
-       uint16_t                                qkey_ctr;
-
-       ib_init_type_t                          init_type;
-       ib_net64_t                              system_image_guid;
-
-}      ib_port_attr_mod_t;
-/*
-* SEE ALSO
-*      ib_port_cap_t
-*****/
-
-/****s* Access Layer/ib_port_attr_t
-* NAME
-*      ib_port_attr_t
-*
-* DESCRIPTION
-*      Information about a port on a given channel adapter.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_port_attr
-{
-       ib_net64_t                              port_guid;
-       uint8_t                                 port_num;
-       uint8_t                                 mtu;
-       uint64_t                                max_msg_size;
-       ib_net16_t                              lid;
-       uint8_t                                 lmc;
-
-       /*
-        * LinkWidthSupported as defined in PortInfo.  Required to calculate
-        * inter-packet delay (a.k.a. static rate).
-        */
-       uint8_t                                 link_width_supported;
-
-       uint16_t                                max_vls;
-
-       ib_net16_t                              sm_lid;
-       uint8_t                                 sm_sl;
-       uint8_t                                 link_state;
-
-       ib_init_type_t                          init_type_reply; /* Optional */
-
-       /*
-        * subnet_timeout:
-        * The maximum expected subnet propagation delay to reach any port on
-        * the subnet.  This value also determines the rate at which traps can
-        * be generated from this node.
-        *
-        * timeout = 4.096 microseconds * 2^subnet_timeout
-        */
-       uint8_t                                 subnet_timeout;
-
-       ib_port_cap_t                           cap;
-       uint16_t                                pkey_ctr;
-       uint16_t                                qkey_ctr;
-
-       uint16_t                                num_gids;
-       uint16_t                                num_pkeys;
-       /*
-        * Pointers at the end of the structure to allow doing a simple
-        * memory comparison of contents up to the first pointer.
-        */
-       ib_gid_t                                *p_gid_table;
-       ib_net16_t                              *p_pkey_table;
-
-}      ib_port_attr_t;
-/*
-* SEE ALSO
-*      uint8_t, ib_port_cap_t, ib_link_states_t
-*****/
-
-/****s* Access Layer/ib_ca_attr_t
-* NAME
-*      ib_ca_attr_t
-*
-* DESCRIPTION
-*      Information about a channel adapter.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_ca_attr
-{
-       ib_net64_t                              ca_guid;
-
-       uint32_t                                vend_id;
-       uint16_t                                dev_id;
-       uint16_t                                revision;
-       uint64_t                                fw_ver;
-
-       /*
-        * Total size of the ca attributes in bytes
-        */
-       uint32_t                                size;
-       uint32_t                                max_qps;
-       uint32_t                                max_wrs;
-
-       uint32_t                                max_sges;
-       uint32_t                                max_rd_sges;
-
-       uint32_t                                max_cqs;
-       uint32_t                                max_cqes;
-
-       uint32_t                                max_pds;
-
-       uint32_t                                init_regions;
-       uint64_t                                init_region_size;
-
-       uint32_t                                init_windows;
-       uint32_t                                max_addr_handles;
-
-       uint32_t                                max_partitions;
-
-       ib_atomic_t                             atomicity;
-
-       uint8_t                                 max_qp_resp_res;
-       uint8_t                                 max_eec_resp_res;
-       uint8_t                                 max_resp_res;
-
-       uint8_t                                 max_qp_init_depth;
-       uint8_t                                 max_eec_init_depth;
-
-       uint32_t                                max_eecs;
-       uint32_t                                max_rdds;
-
-       uint32_t                                max_ipv6_qps;
-       uint32_t                                max_ether_qps;
-
-       uint32_t                                max_mcast_grps;
-       uint32_t                                max_mcast_qps;
-       uint32_t                                max_qps_per_mcast_grp;
-       uint32_t                                max_fmr;
-       uint32_t                                max_map_per_fmr;
-
-       /*
-        * local_ack_delay:
-        * Specifies the maximum time interval between the local CA receiving
-        * a message and the transmission of the associated ACK or NAK.
-        *
-        * timeout = 4.096 microseconds * 2^local_ack_delay
-        */
-       uint8_t                                 local_ack_delay;
-
-       boolean_t                               bad_pkey_ctr_support;
-       boolean_t                               bad_qkey_ctr_support;
-       boolean_t                               raw_mcast_support;
-       boolean_t                               apm_support;
-       boolean_t                               av_port_check;
-       boolean_t                               change_primary_port;
-       boolean_t                               modify_wr_depth;
-       boolean_t                               current_qp_state_support;
-       boolean_t                               shutdown_port_capability;
-       boolean_t                               init_type_support;
-       boolean_t                               port_active_event_support;
-       boolean_t                               system_image_guid_support;
-       boolean_t                               hw_agents;
-
-       ib_net64_t                              system_image_guid;
-
-       uint32_t                                num_page_sizes;
-       uint8_t                                 num_ports;
-
-       uint32_t                                *p_page_size;
-       ib_port_attr_t                          *p_port_attr;
-
-}      ib_ca_attr_t;
-/*
-* FIELDS
-*      ca_guid
-*              GUID for this adapter.
-*
-*      vend_id
-*              IEEE vendor ID for this adapter
-*
-*      dev_id
-*              Device ID of this adapter. (typically from PCI device ID)
-*
-*      revision
-*              Revision ID of this adapter
-*
-*      fw_ver
-*              Device Firmware version.
-*
-*      size
-*              Total size in bytes for the HCA attributes.  This size includes total
-*              size required for all the variable members of the structure.  If a
-*              vendor requires to pass vendor specific fields beyond this structure,
-*              the HCA vendor can choose to report a larger size.  If a vendor is
-*              reporting extended vendor specific features, they should also provide
-*              appropriate access functions to aid with the required interpretation.
-*
-*      max_qps
-*              Maximum number of QP's supported by this HCA.
-*
-*      max_wrs
-*              Maximum number of work requests supported by this HCA.
-*
-*      max_sges
-*              Maximum number of scatter gather elements supported per work request.
-*
-*      max_rd_sges
-*              Maximum number of scatter gather elements supported for READ work
-*              requests for a Reliable Datagram QP.  This value must be zero if RD
-*              service is not supported.
-*
-*      max_cqs
-*              Maximum number of Completion Queues supported.
-*
-*      max_cqes
-*              Maximum number of CQ elements supported per CQ.
-*
-*      max_pds
-*              Maximum number of protection domains supported.
-*
-*      init_regions
-*              Initial number of memory regions supported.  These are only informative
-*              values.  HCA vendors can extended and grow these limits on demand.
-*
-*      init_region_size
-*              Initial limit on the size of the registered memory region.
-*
-*      init_windows
-*              Initial number of window entries supported.
-*
-*      max_addr_handles
-*              Maximum number of address handles supported.
-*
-*      max_partitions
-*              Maximum number of partitions supported.
-*
-*      atomicity
-*              Indicates level of atomic operations supported by this HCA.
-*
-*      max_qp_resp_res
-*      max_eec_resp_res
-*              Maximum limit on number of responder resources for incoming RDMA
-*              operations, on QPs and EEC's respectively.
-*
-*      max_resp_res
-*              Maximum number of responder resources per HCA, with this HCA used as
-*              the target.
-*
-*      max_qp_init_depth
-*      max_eec_init_depth
-*              Maximimum initiator depth per QP or EEC for initiating RDMA reads and
-*              atomic operations.
-*
-*      max_eecs
-*              Maximimum number of EEC's supported by the HCA.
-*
-*      max_rdds
-*              Maximum number of Reliable datagram domains supported.
-*
-*      max_ipv6_qps
-*      max_ether_qps
-*              Maximum number of IPV6 and raw ether QP's supported by this HCA.
-*
-*      max_mcast_grps
-*              Maximum number of multicast groups supported.
-*
-*      max_mcast_qps
-*              Maximum number of QP's that can support multicast operations.
-*
-*      max_qps_per_mcast_grp
-*              Maximum number of multicast QP's per multicast group.
-*
-*      local_ack_delay
-*              Specifies the maximum time interval between the local CA receiving
-*              a message and the transmission of the associated ACK or NAK.
-*              timeout = 4.096 microseconds * 2^local_ack_delay
-*
-*      bad_pkey_ctr_support
-*      bad_qkey_ctr_support
-*              Indicates support for the bad pkey and qkey counters.
-*
-*      raw_mcast_support
-*              Indicates support for raw packet multicast.
-*
-*      apm_support
-*              Indicates support for Automatic Path Migration.
-*
-*      av_port_check
-*              Indicates ability to check port number in address handles.
-*
-*      change_primary_port
-*              Indicates ability to change primary port for a QP or EEC during a
-*              SQD->RTS transition.
-*
-*      modify_wr_depth
-*              Indicates ability to modify QP depth during a modify QP operation.
-*              Check the verb specification for permitted states.
-*
-*      current_qp_state_support
-*              Indicates ability of the HCA to support the current QP state modifier
-*              during a modify QP operation.
-*
-*      shutdown_port_capability
-*              Shutdown port capability support indicator.
-*
-*      init_type_support
-*              Indicates init_type_reply and ability to set init_type is supported.
-*
-*      port_active_event_support
-*              Port active event support indicator.
-*
-*      system_image_guid_support
-*              System image GUID support indicator.
-*
-*      hw_agents
-*              Indicates SMA is implemented in HW.
-*
-*      system_image_guid
-*              Optional system image GUID.  This field is valid only if the
-*              system_image_guid_support flag is set.
-*
-*      num_page_sizes
-*              Indicates support for different page sizes supported by the HCA.
-*              The variable size array can be obtained from p_page_size.
-*
-*      num_ports
-*              Number of physical ports supported on this HCA.
-*
-*      p_page_size
-*              Array holding different page size supported.
-*
-*      p_port_attr
-*              Array holding port attributes.
-*
-* NOTES
-*      This structure contains the attributes of a channel adapter.  Users must
-*      call ib_copy_ca_attr to copy the contents of this structure to a new
-*      memory region.
-*
-* SEE ALSO
-*      ib_port_attr_t, ib_atomic_t, ib_copy_ca_attr
-*****/
-
-/****f* Access layer/ib_copy_ca_attr
-* NAME
-*      ib_copy_ca_attr
-*
-* DESCRIPTION
-*      Copies CA attributes.
-*
-* SYNOPSIS
-*/
-ib_ca_attr_t*
-ib_copy_ca_attr(
-       IN              ib_ca_attr_t* const             p_dest,
-       IN      const   ib_ca_attr_t* const             p_src );
-/*
-* PARAMETERS
-*      p_dest
-*              Pointer to the buffer that is the destination of the copy.
-*
-*      p_src
-*              Pointer to the CA attributes to copy.
-*
-* RETURN VALUE
-*      Pointer to the copied CA attributes.
-*
-* NOTES
-*      The buffer pointed to by the p_dest parameter must be at least the size
-*      specified in the size field of the buffer pointed to by p_src.
-*
-* SEE ALSO
-*      ib_ca_attr_t, ib_dup_ca_attr, ib_free_ca_attr
-*****/
-
-/****s* Access Layer/ib_av_attr_t
-* NAME
-*      ib_av_attr_t
-*
-* DESCRIPTION
-*      IBA address vector.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_av_attr
-{
-       uint8_t                                 port_num;
-
-       uint8_t                                 sl;
-       ib_net16_t                              dlid;
-
-       boolean_t                               grh_valid;
-       ib_grh_t                                grh;
-       uint8_t                                 static_rate;
-       uint8_t                                 path_bits;
-
-       struct _av_conn
-       {
-               uint8_t                         path_mtu;
-               uint8_t                         local_ack_timeout;
-               uint8_t                         seq_err_retry_cnt;
-               uint8_t                         rnr_retry_cnt;
-
-       }       conn;
-
-}      ib_av_attr_t;
-/*
-* SEE ALSO
-*      ib_gid_t
-*****/
-
-/****d* Access Layer/ib_qp_type_t
-* NAME
-*      ib_qp_type_t
-*
-* DESCRIPTION
-*      Indicates the type of queue pair being created.
-*
-* SYNOPSIS
-*/
-typedef enum _ib_qp_type
-{
-       IB_QPT_RELIABLE_CONN    = 0,    /* Matches CM REQ transport type */
-       IB_QPT_UNRELIABLE_CONN  = 1,    /* Matches CM REQ transport type */
-       IB_QPT_RELIABLE_DGRM    = 2,    /* Matches CM REQ transport type */
-       IB_QPT_UNRELIABLE_DGRM,
-       IB_QPT_QP0,
-       IB_QPT_QP1,
-       IB_QPT_RAW_IPV6,
-       IB_QPT_RAW_ETHER,
-       IB_QPT_MAD,                     /* InfiniBand Access Layer */
-       IB_QPT_QP0_ALIAS,               /* InfiniBand Access Layer */
-       IB_QPT_QP1_ALIAS                /* InfiniBand Access Layer */
-
-}      ib_qp_type_t;
-/*
-* VALUES
-*      IB_QPT_RELIABLE_CONN
-*              Reliable, connected queue pair.
-*
-*      IB_QPT_UNRELIABLE_CONN
-*              Unreliable, connected queue pair.
-*
-*      IB_QPT_RELIABLE_DGRM
-*              Reliable, datagram queue pair.
-*
-*      IB_QPT_UNRELIABLE_DGRM
-*              Unreliable, datagram queue pair.
-*
-*      IB_QPT_QP0
-*              Queue pair 0.
-*
-*      IB_QPT_QP1
-*              Queue pair 1.
-*
-*      IB_QPT_RAW_DGRM
-*              Raw datagram queue pair.
-*
-*      IB_QPT_RAW_IPV6
-*              Raw IP version 6 queue pair.
-*
-*      IB_QPT_RAW_ETHER
-*              Raw Ethernet queue pair.
-*
-*      IB_QPT_MAD
-*              Unreliable, datagram queue pair that will send and receive management
-*              datagrams with assistance from the access layer.
-*
-*      IB_QPT_QP0_ALIAS
-*              Alias to queue pair 0.  Aliased QPs can only be created on an aliased
-*              protection domain.
-*
-*      IB_QPT_QP1_ALIAS
-*              Alias to queue pair 1.  Aliased QPs can only be created on an aliased
-*              protection domain.
-*****/
-
-/****d* Access Layer/ib_access_t
-* NAME
-*      ib_access_t
-*
-* DESCRIPTION
-*      Indicates the type of access is permitted on resources such as QPs,
-*      memory regions and memory windows.
-*
-* SYNOPSIS
-*/
-typedef uint32_t                               ib_access_t;
-#define IB_AC_RDMA_READ                                0x00000001
-#define IB_AC_RDMA_WRITE                       0x00000002
-#define IB_AC_ATOMIC                           0x00000004
-#define IB_AC_LOCAL_WRITE                      0x00000008
-#define IB_AC_MW_BIND                          0x00000010
-/*
-* NOTES
-*      Users may combine access rights using a bit-wise or operation to specify
-*      additional access.  For example: IB_AC_RDMA_READ | IB_AC_RDMA_WRITE grants
-*      RDMA read and write access.
-*****/
-
-/****d* Access Layer/ib_qp_state_t
-* NAME
-*      ib_qp_state_t
-*
-* DESCRIPTION
-*      Indicates or sets the state of a queue pair.  The current state of a queue
-*      pair is returned through the ib_qp_query call and set via the
-*      ib_qp_modify call.
-*
-* SYNOPSIS
-*/
-typedef uint32_t                               ib_qp_state_t;
-#define IB_QPS_RESET                           0x00000001
-#define IB_QPS_INIT                            0x00000002
-#define IB_QPS_RTR                             0x00000004
-#define IB_QPS_RTS                             0x00000008
-#define IB_QPS_SQD                             0x00000010
-#define IB_QPS_SQD_DRAINING                    0x00000030
-#define IB_QPS_SQD_DRAINED                     0x00000050
-#define IB_QPS_SQERR                           0x00000080
-#define IB_QPS_ERROR                           0x00000100
-#define IB_QPS_TIME_WAIT                       0xDEAD0000      /* InfiniBand Access Layer */
-/*****/
-
-/****d* Access Layer/ib_apm_state_t
-* NAME
-*      ib_apm_state_t
-*
-* DESCRIPTION
-*      The current automatic path migration state of a queue pair
-*
-* SYNOPSIS
-*/
-typedef enum _ib_apm_state
-{
-       IB_APM_MIGRATED = 1,
-       IB_APM_REARM,
-       IB_APM_ARMED
-
-}      ib_apm_state_t;
-/*****/
-
-/****s* Access Layer/ib_qp_create_t
-* NAME
-*      ib_qp_create_t
-*
-* DESCRIPTION
-*      Attributes used to initialize a queue pair at creation time.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_qp_create
-{
-       ib_qp_type_t                    qp_type;
-
-TO_LONG_PTR(   struct _ib_rdd* ,                       h_rdd) ; 
-
-       uint32_t                        sq_depth;
-       uint32_t                        rq_depth;
-       uint32_t                        sq_sge;
-       uint32_t                        rq_sge;
-
-TO_LONG_PTR(   ib_cq_handle_t ,                        h_sq_cq) ; 
-TO_LONG_PTR(   ib_cq_handle_t ,                        h_rq_cq) ; 
-
-       boolean_t                       sq_signaled;
-
-}      ib_qp_create_t;
-/*
-* FIELDS
-*      type
-*              Specifies the type of queue pair to create.
-*
-*      h_rdd
-*              A handle to a reliable datagram domain to associate with the queue
-*              pair.  This field is ignored if the queue pair is not a reliable
-*              datagram type queue pair.
-*
-*      sq_depth
-*              Indicates the requested maximum number of work requests that may be
-*              outstanding on the queue pair's send queue.  This value must be less
-*              than or equal to the maximum reported by the channel adapter associated
-*              with the queue pair.
-*
-*      rq_depth
-*              Indicates the requested maximum number of work requests that may be
-*              outstanding on the queue pair's receive queue.  This value must be less
-*              than or equal to the maximum reported by the channel adapter associated
-*              with the queue pair.
-*
-*      sq_sge
-*              Indicates the maximum number scatter-gather elements that may be
-*              given in a send work request.  This value must be less
-*              than or equal to the maximum reported by the channel adapter associated
-*              with the queue pair.
-*
-*      rq_sge
-*              Indicates the maximum number scatter-gather elements that may be
-*              given in a receive work request.  This value must be less
-*              than or equal to the maximum reported by the channel adapter associated
-*              with the queue pair.
-*
-*      h_sq_cq
-*              A handle to the completion queue that will be used to report send work
-*              request completions.  This handle must be NULL if the type is
-*              IB_QPT_MAD, IB_QPT_QP0_ALIAS, or IB_QPT_QP1_ALIAS.
-*
-*      h_rq_cq
-*              A handle to the completion queue that will be used to report receive
-*              work request completions.  This handle must be NULL if the type is
-*              IB_QPT_MAD, IB_QPT_QP0_ALIAS, or IB_QPT_QP1_ALIAS.
-*
-*      sq_signaled
-*              A flag that is used to indicate whether the queue pair will signal
-*              an event upon completion of a send work request.  If set to
-*              TRUE, send work requests will always generate a completion
-*              event.  If set to FALSE, a completion event will only be
-*              generated if the send_opt field of the send work request has the
-*              IB_SEND_OPT_SIGNALED flag set.
-*
-* SEE ALSO
-*      ib_qp_type_t, ib_qp_attr_t
-*****/
-
-/****s* Access Layer/ib_qp_attr_t
-* NAME
-*      ib_qp_attr_t
-*
-* DESCRIPTION
-*      Queue pair attributes returned through ib_query_qp.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_qp_attr
-{
-TO_LONG_PTR(   struct _ib_pd* ,                                h_pd) ; 
-       ib_qp_type_t                            qp_type;
-       ib_access_t                             access_ctrl;
-       uint16_t                                pkey_index;
-
-       uint32_t                                sq_depth;
-       uint32_t                                rq_depth;
-       uint32_t                                sq_sge;
-       uint32_t                                rq_sge;
-       uint8_t                                 init_depth;
-       uint8_t                                 resp_res;
-
-TO_LONG_PTR(   ib_cq_handle_t ,                                h_sq_cq) ; 
-TO_LONG_PTR(   ib_cq_handle_t ,                                h_rq_cq) ; 
-TO_LONG_PTR(   struct _ib_rdd* ,                               h_rdd) ; 
-
-       boolean_t                               sq_signaled;
-
-       ib_qp_state_t                           state;
-       ib_net32_t                              num;
-       ib_net32_t                              dest_num;
-       ib_net32_t                              qkey;
-
-       ib_net32_t                              sq_psn;
-       ib_net32_t                              rq_psn;
-
-       uint8_t                                 primary_port;
-       uint8_t                                 alternate_port;
-       ib_av_attr_t                            primary_av;
-       ib_av_attr_t                            alternate_av;
-       ib_apm_state_t                          apm_state;
-
-}      ib_qp_attr_t;
-/*
-* FIELDS
-*      h_pd
-*              This is a handle to a protection domain associated with the queue
-*              pair, or NULL if the queue pair is type IB_QPT_RELIABLE_DGRM.
-*
-* NOTES
-*      Other fields are defined by the Infiniband specification.
-*
-* SEE ALSO
-*      ib_qp_type_t, ib_access_t, ib_qp_state_t, ib_av_attr_t, ib_apm_state_t
-*****/
-
-/****d* Access Layer/ib_qp_opts_t
-* NAME
-*      ib_qp_opts_t
-*
-* DESCRIPTION
-*      Optional fields supplied in the modify QP operation.
-*
-* SYNOPSIS
-*/
-typedef uint32_t                               ib_qp_opts_t;
-#define IB_MOD_QP_ALTERNATE_AV                 0x00000001
-#define IB_MOD_QP_PKEY                         0x00000002
-#define IB_MOD_QP_APM_STATE                    0x00000004
-#define IB_MOD_QP_PRIMARY_AV                   0x00000008
-#define IB_MOD_QP_RNR_NAK_TIMEOUT              0x00000010
-#define IB_MOD_QP_RESP_RES                     0x00000020
-#define IB_MOD_QP_INIT_DEPTH                   0x00000040
-#define IB_MOD_QP_PRIMARY_PORT                 0x00000080
-#define IB_MOD_QP_ACCESS_CTRL                  0x00000100
-#define IB_MOD_QP_QKEY                         0x00000200
-#define IB_MOD_QP_SQ_DEPTH                     0x00000400
-#define IB_MOD_QP_RQ_DEPTH                     0x00000800
-#define IB_MOD_QP_CURRENT_STATE                        0x00001000
-#define IB_MOD_QP_RETRY_CNT                    0x00002000
-#define IB_MOD_QP_LOCAL_ACK_TIMEOUT            0x00004000
-#define IB_MOD_QP_RNR_RETRY_CNT                        0x00008000
-/*
-* SEE ALSO
-*      ib_qp_mod_t
-*****/
-
-/****s* Access Layer/ib_qp_mod_t
-* NAME
-*      ib_qp_mod_t
-*
-* DESCRIPTION
-*      Information needed to change the state of a queue pair through the
-*      ib_modify_qp call.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_qp_mod
-{
-       ib_qp_state_t                           req_state;
-
-       union _qp_state
-       {
-               struct _qp_reset
-               {
-                       /*
-                        * Time, in milliseconds, that the QP needs to spend in
-                        * the time wait state before being reused.
-                        */
-                       uint32_t                timewait;
-
-               }       reset;
-
-               struct _qp_init
-               {
-                       ib_qp_opts_t            opts;
-                       uint8_t                 primary_port;
-                       ib_net32_t              qkey;
-                       uint16_t                pkey_index;
-                       ib_access_t             access_ctrl;
-
-               }       init;
-
-               struct _qp_rtr
-               {
-                       ib_net32_t              rq_psn;
-                       ib_net32_t              dest_qp;
-                       ib_av_attr_t            primary_av;
-                       uint8_t                 resp_res;
-
-                       ib_qp_opts_t            opts;
-                       ib_av_attr_t            alternate_av;
-                       ib_net32_t              qkey;
-                       uint16_t                pkey_index;
-                       ib_access_t             access_ctrl;
-                       uint32_t                sq_depth;
-                       uint32_t                rq_depth;
-                       uint8_t                 rnr_nak_timeout;
-
-               }       rtr;
-
-               struct _qp_rts
-               {
-                       ib_net32_t              sq_psn;
-                       uint8_t                 retry_cnt;
-                       uint8_t                 rnr_retry_cnt;
-                       uint8_t                 rnr_nak_timeout;
-                       uint8_t                 local_ack_timeout;
-                       uint8_t                 init_depth;
-
-                       ib_qp_opts_t            opts;
-                       ib_qp_state_t           current_state;
-                       ib_net32_t              qkey;
-                       ib_access_t             access_ctrl;
-                       uint8_t                 resp_res;
-
-                       ib_av_attr_t            primary_av;
-                       ib_av_attr_t            alternate_av;
-
-                       uint32_t                sq_depth;
-                       uint32_t                rq_depth;
-
-                       ib_apm_state_t          apm_state;
-                       uint8_t                 primary_port;
-                       uint16_t                pkey_index;
-
-               }       rts;
-
-               struct _qp_sqd
-               {
-                       boolean_t               sqd_event;
-
-               }       sqd;
-
-       }       state;
-
-}      ib_qp_mod_t;
-/*
-* SEE ALSO
-*      ib_qp_state_t, ib_access_t, ib_av_attr_t, ib_apm_state_t
-*****/
-
-/****s* Access Layer/ib_eec_attr_t
-* NAME
-*      ib_eec_attr_t
-*
-* DESCRIPTION
-*      Information about an end-to-end context.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_eec_attr
-{
-       ib_qp_state_t                           state;
-TO_LONG_PTR(   struct _ib_rdd* ,                               h_rdd) ; 
-       ib_net32_t                              local_eecn;
-
-       ib_net32_t                              sq_psn;
-       ib_net32_t                              rq_psn;
-       uint8_t                                 primary_port;
-       uint16_t                                pkey_index;
-       uint32_t                                resp_res;
-       ib_net32_t                              remote_eecn;
-       uint32_t                                init_depth;
-       uint32_t                                dest_num;       // ??? What is this?
-       ib_av_attr_t                            primary_av;
-       ib_av_attr_t                            alternate_av;
-       ib_apm_state_t                          apm_state;
-
-}      ib_eec_attr_t;
-/*
-* SEE ALSO
-*      ib_qp_state_t, ib_av_attr_t, ib_apm_state_t
-*****/
-
-/****d* Access Layer/ib_eec_opts_t
-* NAME
-*      ib_eec_opts_t
-*
-* DESCRIPTION
-*      Optional fields supplied in the modify EEC operation.
-*
-* SYNOPSIS
-*/
-typedef uint32_t                               ib_eec_opts_t;
-#define IB_MOD_EEC_ALTERNATE_AV                        0x00000001
-#define IB_MOD_EEC_PKEY                                0x00000002
-#define IB_MOD_EEC_APM_STATE                   0x00000004
-#define IB_MOD_EEC_PRIMARY_AV                  0x00000008
-#define IB_MOD_EEC_RNR                         0x00000010
-#define IB_MOD_EEC_RESP_RES                    0x00000020
-#define IB_MOD_EEC_OUTSTANDING                 0x00000040
-#define IB_MOD_EEC_PRIMARY_PORT                        0x00000080
-/*
-* NOTES
-*
-*
-*****/
-
-/****s* Access Layer/ib_eec_mod_t
-* NAME
-*      ib_eec_mod_t
-*
-* DESCRIPTION
-*      Information needed to change the state of an end-to-end context through
-*      the ib_modify_eec function.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_eec_mod
-{
-       ib_qp_state_t                                   req_state;
-
-       union _eec_state
-       {
-               struct _eec_init
-               {
-                       uint8_t                         primary_port;
-                       uint16_t                        pkey_index;
-
-               }       init;
-
-               struct _eec_rtr
-               {
-                       ib_net32_t                      rq_psn;
-                       ib_net32_t                      remote_eecn;
-                       ib_av_attr_t                    primary_av;
-                       uint8_t                         resp_res;
-
-                       ib_eec_opts_t                   opts;
-                       ib_av_attr_t                    alternate_av;
-                       uint16_t                        pkey_index;
-
-               }       rtr;
-
-               struct _eec_rts
-               {
-                       ib_net32_t                      sq_psn;
-                       uint8_t                         retry_cnt;
-                       uint8_t                         rnr_retry_cnt;
-                       uint8_t                         local_ack_timeout;
-                       uint8_t                         init_depth;
-
-                       ib_eec_opts_t                   opts;
-                       ib_av_attr_t                    alternate_av;
-                       ib_apm_state_t                  apm_state;
-
-                       ib_av_attr_t                    primary_av;
-                       uint16_t                        pkey_index;
-                       uint8_t                         primary_port;
-
-               }       rts;
-
-               struct _eec_sqd
-               {
-                       boolean_t                       sqd_event;
-
-               }       sqd;
-
-       }       state;
-
-}      ib_eec_mod_t;
-/*
-* SEE ALSO
-*      ib_qp_state_t, ib_av_attr_t, ib_apm_state_t
-*****/
-
-/****d* Access Layer/ib_wr_type_t
-* NAME
-*      ib_wr_type_t
-*
-* DESCRIPTION
-*      Identifies the type of work request posted to a queue pair.
-*
-* SYNOPSIS
-*/
-typedef enum _ib_wr_type_t
-{
-       WR_SEND = 1,
-       WR_RDMA_WRITE,
-       WR_RDMA_READ,
-       WR_COMPARE_SWAP,
-       WR_FETCH_ADD
-
-}      ib_wr_type_t;
-/*****/
-
-/****s* Access Layer/ib_local_ds_t
-* NAME
-*      ib_local_ds_t
-*
-* DESCRIPTION
-*      Local data segment information referenced by send and receive work
-*      requests.  This is used to specify local data buffers used as part of a
-*      work request.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_local_ds
-{
-       void                                    *vaddr;
-       uint32_t                                length;
-       uint32_t                                lkey;
-
-}      ib_local_ds_t;
-/*****/
-
-/****d* Access Layer/ib_send_opt_t
-* NAME
-*      ib_send_opt_t
-*
-* DESCRIPTION
-*      Optional flags used when posting send work requests.  These flags
-*      indicate specific processing for the send operation.
-*
-* SYNOPSIS
-*/
-typedef uint32_t                       ib_send_opt_t;
-#define IB_SEND_OPT_IMMEDIATE          0x00000001
-#define IB_SEND_OPT_FENCE              0x00000002
-#define IB_SEND_OPT_SIGNALED           0x00000004
-#define IB_SEND_OPT_SOLICITED          0x00000008
-#define IB_SEND_OPT_INLINE             0x00000010
-#define IB_SEND_OPT_LOCAL              0x00000020
-#define IB_SEND_OPT_VEND_MASK          0xFFFF0000
-/*
-* VALUES
-*      The following flags determine the behavior of a work request when
-*      posted to the send side.
-*
-*      IB_SEND_OPT_IMMEDIATE
-*              Send immediate data with the given request.
-*
-*      IB_SEND_OPT_FENCE
-*              The operation is fenced.  Complete all pending send operations
-*              before processing this request.
-*
-*      IB_SEND_OPT_SIGNALED
-*              If the queue pair is configured for signaled completion, then
-*              generate a completion queue entry when this request completes.
-*
-*      IB_SEND_OPT_SOLICITED
-*              Set the solicited bit on the last packet of this request.
-*
-*      IB_SEND_OPT_INLINE
-*              Indicates that the requested send data should be copied into a VPD
-*              owned data buffer.  This flag permits the user to issue send operations
-*              without first needing to register the buffer(s) associated with the
-*              send operation.  Verb providers that support this operation may place
-*              vendor specific restrictions on the size of send operation that may
-*              be performed as inline.
-*
-*
-*  IB_SEND_OPT_LOCAL
-*     Indicates that a sent MAD request should be given to the local VPD for
-*     processing.  MADs sent using this option are not placed on the wire.
-*     This send option is only valid for MAD send operations.
-*
-*
-*      IB_SEND_OPT_VEND_MASK
-*              This mask indicates bits reserved in the send options that may be used
-*              by the verbs provider to indicate vendor specific options.  Bits set
-*              in this area of the send options are ignored by the Access Layer, but
-*              may have specific meaning to the underlying VPD.
-*
-*****/
-
-/****s* Access Layer/ib_send_wr_t
-* NAME
-*      ib_send_wr_t
-*
-* DESCRIPTION
-*      Information used to submit a work request to the send queue of a queue
-*      pair.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_send_wr
-{
-       struct _ib_send_wr                      *p_next;
-       uint64_t                                wr_id;
-       ib_wr_type_t                            wr_type;
-       ib_send_opt_t                           send_opt;
-       uint32_t                                num_ds;
-       ib_local_ds_t                           *ds_array;
-       ib_net32_t                              immediate_data;
-
-       union _send_dgrm
-       {
-               struct _send_ud
-               {
-                       ib_net32_t              remote_qp;
-                       ib_net32_t              remote_qkey;
-TO_LONG_PTR(                   ib_av_handle_t ,                h_av) ; 
-
-               }       ud;
-
-               struct _send_rd
-               {
-                       ib_net32_t              remote_qp;
-                       ib_net32_t              remote_qkey;
-                       ib_net32_t              eecn;
-
-               }       rd;
-
-               struct _send_raw_ether
-               {
-                       ib_net16_t              dest_lid;
-                       uint8_t                 path_bits;
-                       uint8_t                 sl;
-                       uint8_t                 max_static_rate;
-                       ib_net16_t              ether_type;
-
-               }       raw_ether;
-
-               struct _send_raw_ipv6
-               {
-                       ib_net16_t              dest_lid;
-                       uint8_t                 path_bits;
-                       uint8_t                 sl;
-                       uint8_t                 max_static_rate;
-
-               }       raw_ipv6;
-
-       }       dgrm;
-
-       struct _send_remote_ops
-       {
-               uint64_t                        vaddr;
-               uint32_t                        rkey;
-
-               ib_net64_t                      atomic1;
-               ib_net64_t                      atomic2;
-
-       }       remote_ops;
-
-}      ib_send_wr_t;
-/*
-* FIELDS
-*      p_next
-*              A pointer used to chain work requests together.  This permits multiple
-*              work requests to be posted to a queue pair through a single function
-*              call.  This value is set to NULL to mark the end of the chain.
-*
-*      wr_id
-*              A 64-bit work request identifier that is returned to the consumer
-*              as part of the work completion.
-*
-*      wr_type
-*              The type of work request being submitted to the send queue.
-*
-*      send_opt
-*              Optional send control parameters.
-*
-*      num_ds
-*              Number of local data segments specified by this work request.
-*
-*      ds_array
-*              A reference to an array of local data segments used by the send
-*              operation.
-*
-*      immediate_data
-*              32-bit field sent as part of a message send or RDMA write operation.
-*              This field is only valid if the send_opt flag IB_SEND_OPT_IMMEDIATE
-*              has been set.
-*
-*      dgrm.ud.remote_qp
-*              Identifies the destination queue pair of an unreliable datagram send
-*              operation.
-*
-*      dgrm.ud.remote_qkey
-*              The qkey for the destination queue pair.
-*
-*      dgrm.ud.h_av
-*              An address vector that specifies the path information used to route
-*              the outbound datagram to the destination queue pair.
-*
-*      dgrm.rd.remote_qp
-*              Identifies the destination queue pair of a reliable datagram send
-*              operation.
-*
-*      dgrm.rd.remote_qkey
-*              The qkey for the destination queue pair.
-*
-*      dgrm.rd.eecn
-*              The local end-to-end context number to use with the reliable datagram
-*              send operation.
-*
-*      dgrm.raw_ether.dest_lid
-*              The destination LID that will receive this raw ether send.
-*
-*      dgrm.raw_ether.path_bits
-*              path bits...
-*
-*      dgrm.raw_ether.sl
-*              service level...
-*
-*      dgrm.raw_ether.max_static_rate
-*              static rate...
-*
-*      dgrm.raw_ether.ether_type
-*              ether type...
-*
-*      dgrm.raw_ipv6.dest_lid
-*              The destination LID that will receive this raw ether send.
-*
-*      dgrm.raw_ipv6.path_bits
-*              path bits...
-*
-*      dgrm.raw_ipv6.sl
-*              service level...
-*
-*      dgrm.raw_ipv6.max_static_rate
-*              static rate...
-*
-*      remote_ops.vaddr
-*              The registered virtual memory address of the remote memory to access
-*              with an RDMA or atomic operation.
-*
-*      remote_ops.rkey
-*              The rkey associated with the specified remote vaddr. This data must
-*              be presented exactly as obtained from the remote node. No swapping
-*              of data must be performed.
-*
-*      atomic1
-*              The first operand for an atomic operation.
-*
-*      atomic2
-*              The second operand for an atomic operation.
-*
-* NOTES
-*      The format of data sent over the fabric is user-defined and is considered
-*      opaque to the access layer.  The sole exception to this are MADs posted
-*      to a MAD QP service.  MADs are expected to match the format defined by
-*      the Infiniband specification and must be in network-byte order when posted
-*      to the MAD QP service.
-*
-* SEE ALSO
-*      ib_wr_type_t, ib_local_ds_t, ib_send_opt_t
-*****/
-
-/****s* Access Layer/ib_recv_wr_t
-* NAME
-*      ib_recv_wr_t
-*
-* DESCRIPTION
-*      Information used to submit a work request to the receive queue of a queue
-*      pair.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_recv_wr
-{
-       struct _ib_recv_wr              *p_next;
-       uint64_t                        wr_id;
-       uint32_t                        num_ds;
-       ib_local_ds_t                   *ds_array;
-}      ib_recv_wr_t;
-/*
-* FIELDS
-*      p_next
-*              A pointer used to chain work requests together.  This permits multiple
-*              work requests to be posted to a queue pair through a single function
-*              call.  This value is set to NULL to mark the end of the chain.
-*
-*      wr_id
-*              A 64-bit work request identifier that is returned to the consumer
-*              as part of the work completion.
-*
-*      num_ds
-*              Number of local data segments specified by this work request.
-*
-*      ds_array
-*              A reference to an array of local data segments used by the send
-*              operation.
-*
-* SEE ALSO
-*      ib_local_ds_t
-*****/
-
-/****s* Access Layer/ib_bind_wr_t
-* NAME
-*      ib_bind_wr_t
-*
-* DESCRIPTION
-*      Information used to submit a memory window bind work request to the send
-*      queue of a queue pair.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_bind_wr
-{
-       uint64_t                                wr_id;
-       ib_send_opt_t                           send_opt;
-
-TO_LONG_PTR(   struct _ib_mr* ,                                h_mr) ; 
-       ib_access_t                             access_ctrl;
-       uint32_t                                current_rkey;
-
-       ib_local_ds_t                           local_ds;
-
-}      ib_bind_wr_t;
-/*
-* FIELDS
-*      wr_id
-*              A 64-bit work request identifier that is returned to the consumer
-*              as part of the work completion.
-*
-*      send_opt
-*              Optional send control parameters.
-*
-*      h_mr
-*              Handle to the memory region to which this window is being bound.
-*
-*      access_ctrl
-*              Access rights for this memory window.
-*
-*      current_rkey
-*              The current rkey assigned to this window for remote access.
-*
-*      local_ds
-*              A reference to a local data segment used by the bind operation.
-*
-* SEE ALSO
-*      ib_send_opt_t, ib_access_t, ib_local_ds_t
-*****/
-
-/****d* Access Layer/ib_wc_status_t
-* NAME
-*      ib_wc_status_t
-*
-* DESCRIPTION
-*      Indicates the status of a completed work request.  These VALUES are
-*      returned to the user when retrieving completions.  Note that success is
-*      identified as IB_WCS_SUCCESS, which is always zero.
-*
-* SYNOPSIS
-*/
-typedef enum _ib_wc_status_t
-{
-       IB_WCS_SUCCESS,
-       IB_WCS_LOCAL_LEN_ERR,
-       IB_WCS_LOCAL_OP_ERR,
-       IB_WCS_LOCAL_PROTECTION_ERR,
-       IB_WCS_WR_FLUSHED_ERR,
-       IB_WCS_MEM_WINDOW_BIND_ERR,
-       IB_WCS_REM_ACCESS_ERR,
-       IB_WCS_REM_OP_ERR,
-       IB_WCS_RNR_RETRY_ERR,
-       IB_WCS_TIMEOUT_RETRY_ERR,
-       IB_WCS_REM_INVALID_REQ_ERR,
-       IB_WCS_BAD_RESP_ERR,
-       IB_WCS_LOCAL_ACCESS_ERR,
-       IB_WCS_GENERAL_ERR,
-       IB_WCS_UNMATCHED_RESPONSE,                      /* InfiniBand Access Layer */
-       IB_WCS_CANCELED,                                        /* InfiniBand Access Layer */
-       IB_WCS_REM_ABORT_ERR,
-       IB_WCS_UNKNOWN                                          /* Must be last. */
-
-}      ib_wc_status_t;
-/*
-* VALUES
-*      IB_WCS_SUCCESS
-*              Work request completed successfully.
-*
-*      IB_WCS_MAD
-*              The completed work request was associated with a managmenet datagram
-*              that requires post processing.  The MAD will be returned to the user
-*              through a callback once all post processing has completed.
-*
-*      IB_WCS_LOCAL_LEN_ERR
-*              Generated for a work request posted to the send queue when the
-*              total of the data segment lengths exceeds the message length of the
-*              channel.  Generated for a work request posted to the receive queue when
-*              the total of the data segment lengths is too small for a
-*              valid incoming message.
-*
-*      IB_WCS_LOCAL_OP_ERR
-*              An internal QP consistency error was generated while processing this
-*              work request.  This may indicate that the QP was in an incorrect state
-*              for the requested operation.
-*
-*      IB_WCS_LOCAL_EEC_OP_ERR
-*              An internal EEC consistency error was generated while processing
-*              this work request.  This may indicate that the EEC was in an incorrect
-*              state for the requested operation.
-*
-*      IB_WCS_LOCAL_PROTECTION_ERR
-*              The data segments of the locally posted work request did not refer to
-*              a valid memory region.  The memory may not have been properly
-*              registered for the requested operation.
-*
-*      IB_WCS_WR_FLUSHED_ERR
-*              The work request was flushed from the QP before being completed.
-*
-*      IB_WCS_MEM_WINDOW_BIND_ERR
-*              A memory window bind operation failed due to insufficient access
-*              rights.
-*
-*      IB_WCS_REM_ACCESS_ERR,
-*              A protection error was detected at the remote node for a RDMA or atomic
-*              operation.
-*
-*      IB_WCS_REM_OP_ERR,
-*              The operation could not be successfully completed at the remote node.
-*              This may indicate that the remote QP was in an invalid state or
-*              contained an invalid work request.
-*
-*      IB_WCS_RNR_RETRY_ERR,
-*              The RNR retry count was exceeded while trying to send this message.
-*
-*      IB_WCS_TIMEOUT_RETRY_ERR
-*              The local transport timeout counter expired while trying to send this
-*              message.
-*
-*      IB_WCS_REM_INVALID_REQ_ERR,
-*              The remote node detected an invalid message on the channel.  This error
-*              is usually a result of one of the following:
-*                      - The operation was not supported on receive queue.
-*                      - There was insufficient buffers to receive a new RDMA request.
-*                      - There was insufficient buffers to receive a new atomic operation.
-*                      - An RDMA request was larger than 2^31 bytes.
-*
-*      IB_WCS_REM_INVALID_RD_REQ_ERR,
-*              Responder detected an invalid RD message.  This may be the result of an
-*              invalid qkey or an RDD mismatch.
-*
-*      IB_WCS_REM_ABORT_ERR,
-*              The operation was aborted (e.g., For UD QPs associated with an SRQ, 
-*              the responder aborted the operation).
-*
-*      IB_WCS_UNMATCHED_RESPONSE
-*              A response MAD was received for which there was no matching send.  The
-*              send operation may have been canceled by the user or may have timed
-*              out.
-*
-*      IB_WCS_CANCELED
-*              The completed work request was canceled by the user.
-*****/
-
-OSM_EXPORT const char* ib_wc_status_str[];
-
-/****f* IBA Base: Types/ib_get_wc_status_str
-* NAME
-*      ib_get_wc_status_str
-*
-* DESCRIPTION
-*      Returns a string for the specified work completion status.
-*
-* SYNOPSIS
-*/
-static inline const char*      OSM_API
-ib_get_wc_status_str(
-       IN              ib_wc_status_t                  wc_status )
-{
-       if( wc_status > IB_WCS_UNKNOWN )
-               wc_status = IB_WCS_UNKNOWN;
-       return( ib_wc_status_str[wc_status] );
-}
-/*
-* PARAMETERS
-*      wc_status
-*              [in] work completion status value
-*
-* RETURN VALUES
-*      Pointer to the work completion status description string.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****d* Access Layer/ib_wc_type_t
-* NAME
-*      ib_wc_type_t
-*
-* DESCRIPTION
-*      Indicates the type of work completion.
-*
-* SYNOPSIS
-*/
-typedef enum _ib_wc_type_t
-{
-       IB_WC_SEND,
-       IB_WC_RDMA_WRITE,
-       IB_WC_RECV,
-       IB_WC_RDMA_READ,
-       IB_WC_MW_BIND,
-       IB_WC_FETCH_ADD,
-       IB_WC_COMPARE_SWAP,
-       IB_WC_RECV_RDMA_WRITE
-
-}      ib_wc_type_t;
-/*****/
-
-/****d* Access Layer/ib_recv_opt_t
-* NAME
-*      ib_recv_opt_t
-*
-* DESCRIPTION
-*      Indicates optional fields valid in a receive work completion.
-*
-* SYNOPSIS
-*/
-typedef uint32_t                       ib_recv_opt_t;
-#define        IB_RECV_OPT_IMMEDIATE           0x00000001
-#define IB_RECV_OPT_FORWARD            0x00000002
-#define IB_RECV_OPT_GRH_VALID          0x00000004
-#define IB_RECV_OPT_VEND_MASK          0xFFFF0000
-/*
-* VALUES
-*      IB_RECV_OPT_IMMEDIATE
-*              Indicates that immediate data is valid for this work completion.
-*
-*      IB_RECV_OPT_FORWARD
-*              Indicates that the received trap should be forwarded to the SM.
-*
-*      IB_RECV_OPT_GRH_VALID
-*              Indicates presence of the global route header. When set, the first
-*              40 bytes received are the GRH.
-*
-*      IB_RECV_OPT_VEND_MASK
-*              This mask indicates bits reserved in the receive options that may be
-*              used by the verbs provider to indicate vendor specific options.  Bits
-*              set in this area of the receive options are ignored by the Access Layer,
-*              but may have specific meaning to the underlying VPD.
-*****/
-
-/****s* Access Layer/ib_wc_t
-* NAME
-*      ib_wc_t
-*
-* DESCRIPTION
-*      Work completion information.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_wc
-{
-       struct _ib_wc                   *p_next;
-       uint64_t                        wr_id;
-       ib_wc_type_t                    wc_type;
-
-       uint32_t                        length;
-       ib_wc_status_t                  status;
-       uint64_t                        vendor_specific;
-
-       union _wc_recv
-       {
-               struct _wc_conn
-               {
-                       ib_recv_opt_t   recv_opt;
-                       ib_net32_t      immediate_data;
-
-               }       conn;
-
-               struct _wc_ud
-               {
-                       ib_recv_opt_t   recv_opt;
-                       ib_net32_t      immediate_data;
-                       ib_net32_t      remote_qp;
-                       uint16_t        pkey_index;
-                       ib_net16_t      remote_lid;
-                       uint8_t         remote_sl;
-                       uint8_t         path_bits;
-
-               }       ud;
-
-               struct _wc_rd
-               {
-                       ib_net32_t      remote_eecn;
-                       ib_net32_t      remote_qp;
-                       ib_net16_t      remote_lid;
-                       uint8_t         remote_sl;
-                       uint32_t        free_cnt;
-
-               }       rd;
-
-               struct _wc_raw_ipv6
-               {
-                       ib_net16_t      remote_lid;
-                       uint8_t         remote_sl;
-                       uint8_t         path_bits;
-
-               }       raw_ipv6;
-
-               struct _wc_raw_ether
-               {
-                       ib_net16_t      remote_lid;
-                       uint8_t         remote_sl;
-                       uint8_t         path_bits;
-                       ib_net16_t      ether_type;
-
-               }       raw_ether;
-
-       }       recv;
-
-}      ib_wc_t;
-/*
-* FIELDS
-*      p_next
-*              A pointer used to chain work completions.  This permits multiple
-*              work completions to be retrieved from a completion queue through a
-*              single function call.  This value is set to NULL to mark the end of
-*              the chain.
-*
-*      wr_id
-*              The 64-bit work request identifier that was specified when posting the
-*              work request.
-*
-*      wc_type
-*              Indicates the type of work completion.
-*
-*
-*      length
-*              The total length of the data sent or received with the work request.
-*
-*      status
-*              The result of the work request.
-*
-*      vendor_specific
-*              HCA vendor specific information returned as part of the completion.
-*
-*      recv.conn.recv_opt
-*              Indicates optional fields valid as part of a work request that
-*              completed on a connected (reliable or unreliable) queue pair.
-*
-*      recv.conn.immediate_data
-*              32-bit field received as part of an inbound message on a connected
-*              queue pair.  This field is only valid if the recv_opt flag
-*              IB_RECV_OPT_IMMEDIATE has been set.
-*
-*      recv.ud.recv_opt
-*              Indicates optional fields valid as part of a work request that
-*              completed on an unreliable datagram queue pair.
-*
-*      recv.ud.immediate_data
-*              32-bit field received as part of an inbound message on a unreliable
-*              datagram queue pair.  This field is only valid if the recv_opt flag
-*              IB_RECV_OPT_IMMEDIATE has been set.
-*
-*      recv.ud.remote_qp
-*              Identifies the source queue pair of a received datagram.
-*
-*      recv.ud.pkey_index
-*              The pkey index for the source queue pair. This is valid only for
-*              GSI type QP's.
-*
-*      recv.ud.remote_lid
-*              The source LID of the received datagram.
-*
-*      recv.ud.remote_sl
-*              The service level used by the source of the received datagram.
-*
-*      recv.ud.path_bits
-*              path bits...
-*
-*      recv.rd.remote_eecn
-*              The remote end-to-end context number that sent the received message.
-*
-*      recv.rd.remote_qp
-*              Identifies the source queue pair of a received message.
-*
-*      recv.rd.remote_lid
-*              The source LID of the received message.
-*
-*      recv.rd.remote_sl
-*              The service level used by the source of the received message.
-*
-*      recv.rd.free_cnt
-*              The number of available entries in the completion queue.  Reliable
-*              datagrams may complete out of order, so this field may be used to
-*              determine the number of additional completions that may occur.
-*
-*      recv.raw_ipv6.remote_lid
-*              The source LID of the received message.
-*
-*      recv.raw_ipv6.remote_sl
-*              The service level used by the source of the received message.
-*
-*      recv.raw_ipv6.path_bits
-*              path bits...
-*
-*      recv.raw_ether.remote_lid
-*              The source LID of the received message.
-*
-*      recv.raw_ether.remote_sl
-*              The service level used by the source of the received message.
-*
-*      recv.raw_ether.path_bits
-*              path bits...
-*
-*      recv.raw_ether.ether_type
-*              ether type...
-* NOTES
-*      When the work request completes with error, the only values that the
-*      consumer can depend on are the wr_id field, and the status of the
-*      operation.
-*
-*      If the consumer is using the same CQ for completions from more than
-*      one type of QP (i.e Reliable Connected, Datagram etc), then the consumer
-*      must have additional information to decide what fields of the union are
-*      valid.
-* SEE ALSO
-*      ib_wc_type_t, ib_qp_type_t, ib_wc_status_t, ib_recv_opt_t
-*****/
-
-/****s* Access Layer/ib_mr_create_t
-* NAME
-*      ib_mr_create_t
-*
-* DESCRIPTION
-*      Information required to create a registered memory region.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_mr_create
-{
-       void                                    *vaddr;
-       uint64_t                                length;
-       ib_access_t                             access_ctrl;
-}      ib_mr_create_t;
-/*
-* FIELDS
-*      vaddr
-*              Starting virtual address of the region being registered.
-*
-*      length
-*              Length of the buffer to register.
-*
-*      access_ctrl
-*              Access rights of the registered region.
-*
-* SEE ALSO
-*      ib_access_t
-*****/
-
-/****s* Access Layer/ib_phys_create_t
-* NAME
-*      ib_phys_create_t
-*
-* DESCRIPTION
-*      Information required to create a physical memory region.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_phys_create
-{
-       uint64_t                                length;
-       uint32_t                                num_bufs;
-       uint64_t                                *buf_array;
-       uint32_t                                buf_offset;
-       uint32_t                                page_size;
-       ib_access_t                             access_ctrl;
-}      ib_phys_create_t;
-/*
-*      length
-*              The length of the memory region in bytes.
-*
-*      num_bufs
-*              Number of buffers listed in the specified buffer array.
-*
-*      buf_array
-*              An array of physical buffers to be registered as a single memory
-*              region.
-*
-*      buf_offset
-*              The offset into the first physical page of the specified memory
-*              region to start the virtual address.
-*
-*      page_size
-*              The physical page size of the memory being registered.
-*
-*      access_ctrl
-*              Access rights of the registered region.
-*
-* SEE ALSO
-*      ib_access_t
-*****/
-
-/****s* Access Layer/ib_mr_attr_t
-* NAME
-*      ib_mr_attr_t
-*
-* DESCRIPTION
-*      Attributes of a registered memory region.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_mr_attr
-{
-TO_LONG_PTR(   struct _ib_pd* ,                        h_pd) ; 
-       void                            *local_lb;
-       void                            *local_ub;
-       void                            *remote_lb;
-       void                            *remote_ub;
-       ib_access_t                     access_ctrl;
-       uint32_t                        lkey;
-       uint32_t                        rkey;
-}      ib_mr_attr_t;
-/*
-* DESCRIPTION
-*      h_pd
-*              Handle to the protection domain for this memory region.
-*
-*      local_lb
-*              The virtual address of the lower bound of protection for local
-*              memory access.
-*
-*      local_ub
-*              The virtual address of the upper bound of protection for local
-*              memory access.
-*
-*      remote_lb
-*              The virtual address of the lower bound of protection for remote
-*              memory access.
-*
-*      remote_ub
-*              The virtual address of the upper bound of protection for remote
-*              memory access.
-*
-*      access_ctrl
-*              Access rights for the specified memory region.
-*
-*      lkey
-*              The lkey associated with this memory region.
-*
-*      rkey
-*              The rkey associated with this memory region.
-*
-* NOTES
-*      The remote_lb, remote_ub, and rkey are only valid if remote memory access
-*      is enabled for this memory region.
-*
-* SEE ALSO
-*      ib_access_t
-*****/
-
-/****d* Access Layer/ib_ca_mod_t
-* NAME
-*      ib_ca_mod_t -- Modify port attributes and error counters
-*
-* DESCRIPTION
-*      Specifies modifications to the port attributes of a channel adapter.
-*
-* SYNOPSIS
-*/
-typedef uint32_t                               ib_ca_mod_t;
-#define IB_CA_MOD_IS_CM_SUPPORTED              0x00000001
-#define IB_CA_MOD_IS_SNMP_SUPPORTED            0x00000002
-#define        IB_CA_MOD_IS_DEV_MGMT_SUPPORTED         0x00000004
-#define        IB_CA_MOD_IS_VEND_SUPPORTED             0x00000008
-#define        IB_CA_MOD_IS_SM                         0x00000010
-#define IB_CA_MOD_IS_SM_DISABLED               0x00000020
-#define IB_CA_MOD_QKEY_CTR                     0x00000040
-#define IB_CA_MOD_PKEY_CTR                     0x00000080
-#define IB_CA_MOD_IS_NOTICE_SUPPORTED          0x00000100
-#define IB_CA_MOD_IS_TRAP_SUPPORTED            0x00000200
-#define IB_CA_MOD_IS_APM_SUPPORTED             0x00000400
-#define IB_CA_MOD_IS_SLMAP_SUPPORTED           0x00000800
-#define IB_CA_MOD_IS_PKEY_NVRAM_SUPPORTED      0x00001000
-#define IB_CA_MOD_IS_MKEY_NVRAM_SUPPORTED      0x00002000
-#define IB_CA_MOD_IS_SYSGUID_SUPPORTED         0x00004000
-#define IB_CA_MOD_IS_DR_NOTICE_SUPPORTED       0x00008000
-#define IB_CA_MOD_IS_BOOT_MGMT_SUPPORTED       0x00010000
-#define IB_CA_MOD_IS_CAPM_NOTICE_SUPPORTED     0x00020000
-#define IB_CA_MOD_IS_REINIT_SUPORTED           0x00040000
-#define IB_CA_MOD_IS_LEDINFO_SUPPORTED         0x00080000
-#define IB_CA_MOD_SHUTDOWN_PORT                        0x00100000
-#define IB_CA_MOD_INIT_TYPE_VALUE              0x00200000
-#define IB_CA_MOD_SYSTEM_IMAGE_GUID            0x00400000
-/*
-* VALUES
-*      IB_CA_MOD_IS_CM_SUPPORTED
-*              Indicates if there is a communication manager accessible through
-*              the port.
-*
-*      IB_CA_MOD_IS_SNMP_SUPPORTED
-*              Indicates if there is an SNMP agent accessible through the port.
-*
-*      IB_CA_MOD_IS_DEV_MGMT_SUPPORTED
-*              Indicates if there is a device management agent accessible
-*              through the port.
-*
-*      IB_CA_MOD_IS_VEND_SUPPORTED
-*              Indicates if there is a vendor supported agent accessible
-*              through the port.
-*
-*      IB_CA_MOD_IS_SM
-*              Indicates if there is a subnet manager accessible through
-*              the port.
-*
-*      IB_CA_MOD_IS_SM_DISABLED
-*              Indicates if the port has been disabled for configuration by the
-*              subnet manager.
-*
-*      IB_CA_MOD_QKEY_CTR
-*              Used to reset the qkey violation counter associated with the
-*              port.
-*
-*      IB_CA_MOD_PKEY_CTR
-*              Used to reset the pkey violation counter associated with the
-*              port.
-*
-*      IB_CA_MOD_IS_NOTICE_SUPPORTED
-*              Indicates that this CA supports ability to generate Notices for
-*              Port State changes. (only applicable to switches)
-*
-*      IB_CA_MOD_IS_TRAP_SUPPORTED
-*              Indicates that this management port supports ability to generate
-*              trap messages. (only applicable to switches)
-*
-*      IB_CA_MOD_IS_APM_SUPPORTED
-*              Indicates that this port is capable of performing Automatic
-*              Path Migration.
-*
-*      IB_CA_MOD_IS_SLMAP_SUPPORTED
-*              Indicates this port supports SLMAP capability.
-*
-*      IB_CA_MOD_IS_PKEY_NVRAM_SUPPORTED
-*              Indicates that PKEY is supported in NVRAM
-*
-*      IB_CA_MOD_IS_MKEY_NVRAM_SUPPORTED
-*              Indicates that MKEY is supported in NVRAM
-*
-*      IB_CA_MOD_IS_SYSGUID_SUPPORTED
-*              Indicates System Image GUID support.
-*
-*      IB_CA_MOD_IS_DR_NOTICE_SUPPORTED
-*              Indicate support for generating Direct Routed Notices
-*
-*      IB_CA_MOD_IS_BOOT_MGMT_SUPPORTED
-*              Indicates support for Boot Management
-*
-*      IB_CA_MOD_IS_CAPM_NOTICE_SUPPORTED
-*              Indicates capability to generate notices for changes to CAPMASK
-*
-*      IB_CA_MOD_IS_REINIT_SUPORTED
-*              Indicates type of node init supported. Refer to Chapter 14 for
-*              Initialization actions.
-*
-*      IB_CA_MOD_IS_LEDINFO_SUPPORTED
-*              Indicates support for LED info.
-*
-*      IB_CA_MOD_SHUTDOWN_PORT
-*              Used to modify the port active indicator.
-*
-*      IB_CA_MOD_INIT_TYPE_VALUE
-*              Used to modify the init_type value for the port.
-*
-*      IB_CA_MOD_SYSTEM_IMAGE_GUID
-*              Used to modify the system image GUID for the port.
-*****/
-
-/****d* Access Layer/ib_mr_mod_t
-* NAME
-*      ib_mr_mod_t
-*
-* DESCRIPTION
-*      Mask used to specify which attributes of a registered memory region are
-*      being modified.
-*
-* SYNOPSIS
-*/
-typedef uint32_t                                               ib_mr_mod_t;
-#define IB_MR_MOD_ADDR                                 0x00000001
-#define IB_MR_MOD_PD                                   0x00000002
-#define IB_MR_MOD_ACCESS                               0x00000004
-/*
-* PARAMETERS
-*      IB_MEM_MOD_ADDR
-*              The address of the memory region is being modified.
-*
-*      IB_MEM_MOD_PD
-*              The protection domain associated with the memory region is being
-*              modified.
-*
-*      IB_MEM_MOD_ACCESS
-*              The access rights the memory region are being modified.
-*****/
-
-/****d* IBA Base: Constants/IB_SMINFO_STATE_INIT
-* NAME
-*      IB_SMINFO_STATE_INIT
-*
-* DESCRIPTION
-*      Encoded state value used in the SMInfo attribute.
-*
-* SOURCE
-*/
-#define IB_SMINFO_STATE_INIT                                   4
-/**********/
-
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_HANDOVER
-* NAME
-*      IB_SMINFO_ATTR_MOD_HANDOVER
-*
-* DESCRIPTION
-*      Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
-*
-* SOURCE
-*/
-#define IB_SMINFO_ATTR_MOD_HANDOVER            (CL_NTOH32(0x000001))
-/**********/
-
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_ACKNOWLEDGE
-* NAME
-*      IB_SMINFO_ATTR_MOD_ACKNOWLEDGE
-*
-* DESCRIPTION
-*      Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
-*
-* SOURCE
-*/
-#define IB_SMINFO_ATTR_MOD_ACKNOWLEDGE         (CL_NTOH32(0x000002))
-/**********/
-
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_DISABLE
-* NAME
-*      IB_SMINFO_ATTR_MOD_DISABLE
-*
-* DESCRIPTION
-*      Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
-*
-* SOURCE
-*/
-#define IB_SMINFO_ATTR_MOD_DISABLE                     (CL_NTOH32(0x000003))
-/**********/
-
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_STANDBY
-* NAME
-*      IB_SMINFO_ATTR_MOD_STANDBY
-*
-* DESCRIPTION
-*      Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
-*
-* SOURCE
-*/
-#define IB_SMINFO_ATTR_MOD_STANDBY                     (CL_NTOH32(0x000004))
-/**********/
-
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_DISCOVER
-* NAME
-*      IB_SMINFO_ATTR_MOD_DISCOVER
-*
-* DESCRIPTION
-*      Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
-*
-* SOURCE
-*/
-#define IB_SMINFO_ATTR_MOD_DISCOVER                    (CL_NTOH32(0x000005))
-/**********/
-
-/****s* Access Layer/ib_ci_op_t
-* NAME
-*      ib_ci_op_t
-*
-* DESCRIPTION
-*      A structure used for vendor specific CA interface communication.
-*
-* SYNOPSIS
-*/
-typedef struct _ib_ci_op
-{
-       IN              uint32_t                        command;
-       IN      OUT     void*                           p_buf OPTIONAL;
-       IN              uint32_t                        buf_size;
-       IN      OUT     uint32_t                        num_bytes_ret;
-       IN      OUT     int32_t                         status;
-
-}      ib_ci_op_t;
-/*
-* FIELDS
-*      command
-*              A command code that is understood by the verbs provider.
-*
-*      p_buf
-*              A reference to a buffer containing vendor specific data.  The verbs
-*              provider must not access pointers in the p_buf between user-mode and
-*              kernel-mode.  Any pointers embedded in the p_buf are invalidated by
-*              the user-mode/kernel-mode transition.
-*
-*      buf_size
-*              The size of the buffer in bytes.
-*
-*      num_bytes_ret
-*              The size in bytes of the vendor specific data returned in the buffer.
-*              This field is set by the verbs provider.  The verbs provider should
-*              verify that the buffer size is sufficient to hold the data being
-*              returned.
-*
-*      status
-*              The completion status from the verbs provider.  This field should be
-*              initialize to indicate an error to allow detection and cleanup in
-*              case a communication error occurs between user-mode and kernel-mode.
-*
-* NOTES
-*      This structure is provided to allow the exchange of vendor specific
-*      data between the originator and the verbs provider.  Users of this
-*      structure are expected to know the format of data in the p_buf based
-*      on the structure command field or the usage context.
-*****/
-
-END_C_DECLS
-
-#endif /* ndef WIN */
-#if defined( __WIN__ )
-    #include <iba/ib_types_extended.h>
-#endif
-
-#endif /* __IB_TYPES_H__ */
-
-
+/*\r
+ * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.\r
+ * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.\r
+ * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.\r
+ * Portions Copyright (c) 2008 Microsoft Corporation.  All rights reserved.\r
+ *\r
+ * This software is available to you under the OpenIB.org BSD license\r
+ * below:\r
+ *\r
+ *     Redistribution and use in source and binary forms, with or\r
+ *     without modification, are permitted provided that the following\r
+ *     conditions are met:\r
+ *\r
+ *      - Redistributions of source code must retain the above\r
+ *        copyright notice, this list of conditions and the following\r
+ *        disclaimer.\r
+ *\r
+ *      - Redistributions in binary form must reproduce the above\r
+ *        copyright notice, this list of conditions and the following\r
+ *        disclaimer in the documentation and/or other materials\r
+ *        provided with the distribution.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
+ * SOFTWARE.\r
+ *\r
+ * $Id$\r
+ */\r
+\r
+\r
+\r
+#if !defined(__IB_TYPES_H__)\r
+#define __IB_TYPES_H__\r
+\r
+#include <string.h>\r
+#include <complib/cl_types.h>\r
+#include <complib/cl_byteswap.h>\r
+\r
+#ifdef __cplusplus\r
+#  define BEGIN_C_DECLS extern "C" {\r
+#  define END_C_DECLS   }\r
+#else /* !__cplusplus */\r
+#  define BEGIN_C_DECLS\r
+#  define END_C_DECLS\r
+#endif /* __cplusplus */\r
+\r
+BEGIN_C_DECLS\r
+\r
+#if defined( WIN32 ) || defined( _WIN64 )\r
+    #if defined( EXPORT_AL_SYMBOLS )\r
+         #define OSM_EXPORT    __declspec(dllexport)\r
+    #else\r
+         #define OSM_EXPORT    __declspec(dllimport)\r
+    #endif\r
+    #define OSM_API __stdcall\r
+    #define OSM_CDECL __cdecl\r
+#else\r
+    #define OSM_EXPORT extern\r
+    #define OSM_API\r
+    #define OSM_CDECL\r
+    #define __ptr64\r
+#endif\r
+\r
+\r
+#define IB_CONCAT(str1, str2) str1##str2\r
+\r
+#define TO_LONG_PTR(type,member_name) \\r
+    union { type member_name;  uint64_t IB_CONCAT(member_name,_padding) ; }\r
+\r
+\r
+\r
+/****h* IBA Base/Constants\r
+* NAME\r
+*      Constants\r
+*\r
+* DESCRIPTION\r
+*      The following constants are used throughout the IBA code base.\r
+*\r
+*      Definitions are from the InfiniBand Architecture Specification v1.2\r
+*\r
+*********/\r
+\r
+/****d* IBA Base: Constants/MAD_BLOCK_SIZE\r
+* NAME\r
+*      MAD_BLOCK_SIZE\r
+*\r
+* DESCRIPTION\r
+*      Size of a non-RMPP MAD datagram.\r
+*\r
+* SOURCE\r
+*/\r
+#define MAD_BLOCK_SIZE                                         256\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/MAD_RMPP_HDR_SIZE\r
+* NAME\r
+*      MAD_RMPP_HDR_SIZE\r
+*\r
+* DESCRIPTION\r
+*      Size of an RMPP header, including the common MAD header.\r
+*\r
+* SOURCE\r
+*/\r
+#define MAD_RMPP_HDR_SIZE                                      36\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/MAD_RMPP_DATA_SIZE\r
+* NAME\r
+*      MAD_RMPP_DATA_SIZE\r
+*\r
+* DESCRIPTION\r
+*      Size of an RMPP transaction data section.\r
+*\r
+* SOURCE\r
+*/\r
+#define MAD_RMPP_DATA_SIZE             (MAD_BLOCK_SIZE - MAD_RMPP_HDR_SIZE)\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/MAD_BLOCK_GRH_SIZE\r
+* NAME\r
+*      MAD_BLOCK_GRH_SIZE\r
+*\r
+* DESCRIPTION\r
+*      Size of a MAD datagram, including the GRH.\r
+*\r
+* SOURCE\r
+*/\r
+#define MAD_BLOCK_GRH_SIZE                                     296\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_LID_PERMISSIVE\r
+* NAME\r
+*      IB_LID_PERMISSIVE\r
+*\r
+* DESCRIPTION\r
+*      Permissive LID\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_LID_PERMISSIVE                                      0xFFFF\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_DEFAULT_PKEY\r
+* NAME\r
+*      IB_DEFAULT_PKEY\r
+*\r
+* DESCRIPTION\r
+*      P_Key value for the default partition.\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_DEFAULT_PKEY                                                0xFFFF\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_QP1_WELL_KNOWN_Q_KEY\r
+* NAME\r
+*      IB_QP1_WELL_KNOWN_Q_KEY\r
+*\r
+* DESCRIPTION\r
+*      Well-known Q_Key for QP1 privileged mode access (15.4.2).\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_QP1_WELL_KNOWN_Q_KEY                                CL_NTOH32(0x80010000)\r
+/*********/\r
+\r
+#define IB_QP0                                                         0\r
+#define IB_QP1                                                         CL_NTOH32(1)\r
+\r
+#define IB_QP_PRIVILEGED_Q_KEY                         CL_NTOH32(0x80000000)\r
+\r
+/****d* IBA Base: Constants/IB_LID_UCAST_START\r
+* NAME\r
+*      IB_LID_UCAST_START\r
+*\r
+* DESCRIPTION\r
+*      Lowest valid unicast LID value.\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_LID_UCAST_START_HO                          0x0001\r
+#define IB_LID_UCAST_START                                     (CL_HTON16(IB_LID_UCAST_START_HO))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_LID_UCAST_END\r
+* NAME\r
+*      IB_LID_UCAST_END\r
+*\r
+* DESCRIPTION\r
+*      Highest valid unicast LID value.\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_LID_UCAST_END_HO                                    0xBFFF\r
+#define IB_LID_UCAST_END                                       (CL_HTON16(IB_LID_UCAST_END_HO))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_LID_MCAST_START\r
+* NAME\r
+*      IB_LID_MCAST_START\r
+*\r
+* DESCRIPTION\r
+*      Lowest valid multicast LID value.\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_LID_MCAST_START_HO                          0xC000\r
+#define IB_LID_MCAST_START                                     (CL_HTON16(IB_LID_MCAST_START_HO))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_LID_MCAST_END\r
+* NAME\r
+*      IB_LID_MCAST_END\r
+*\r
+* DESCRIPTION\r
+*      Highest valid multicast LID value.\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_LID_MCAST_END_HO                                    0xFFFE\r
+#define IB_LID_MCAST_END                                       (CL_HTON16(IB_LID_MCAST_END_HO))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_DEFAULT_SUBNET_PREFIX\r
+* NAME\r
+*      IB_DEFAULT_SUBNET_PREFIX\r
+*\r
+* DESCRIPTION\r
+*      Default subnet GID prefix.\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_DEFAULT_SUBNET_PREFIX                       (CL_HTON64(0xFE80000000000000ULL))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_NODE_NUM_PORTS_MAX\r
+* NAME\r
+*      IB_NODE_NUM_PORTS_MAX\r
+