[opensm] removed opensm\user\include\ib_types.h, even though it was not used, it...
authorstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 18 Mar 2010 21:28:11 +0000 (21:28 +0000)
committerstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 18 Mar 2010 21:28:11 +0000 (21:28 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2755 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

ulp/opensm/user/include/iba/ib_types.h [deleted file]

diff --git a/ulp/opensm/user/include/iba/ib_types.h b/ulp/opensm/user/include/iba/ib_types.h
deleted file mode 100644 (file)
index 7465a92..0000000
+++ /dev/null
@@ -1,10707 +0,0 @@
-/*\r
- * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.\r
- * Copyright (c) 2002-2009 Mellanox Technologies LTD. All rights reserved.\r
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.\r
- * Copyright (c) 2009 HNR Consulting. All rights reserved.\r
- *\r
- * This software is available to you under a choice of one of two\r
- * licenses.  You may choose to be licensed under the terms of the GNU\r
- * General Public License (GPL) Version 2, available from the file\r
- * COPYING in the main directory of this source tree, or the\r
- * OpenIB.org BSD license 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
- */\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
-#if defined( __WIN__ )\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
-/****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
-/****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
-/****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
-/****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
-/****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
-/****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
-/****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
-/****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_HTON32(0x80010000)\r
-/*********/\r
-#define IB_QP0                                                         0\r
-#define IB_QP1                                                         CL_HTON32(1)\r
-#define IB_QP_PRIVILEGED_Q_KEY                         CL_HTON32(0x80000000)\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
-/****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
-/****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
-/****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
-/****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
-/****d* IBA Base: Constants/IB_NODE_NUM_PORTS_MAX\r
-* NAME\r
-*      IB_NODE_NUM_PORTS_MAX\r
-*\r
-* DESCRIPTION\r
-*      Maximum number of ports in a single node (14.2.5.7).\r
-* SOURCE\r
-*/\r
-#define IB_NODE_NUM_PORTS_MAX                          0xFE\r
-/**********/\r
-/****d* IBA Base: Constants/IB_INVALID_PORT_NUM\r
-* NAME\r
-*      IB_INVALID_PORT_NUM\r
-*\r
-* DESCRIPTION\r
-*      Value used to indicate an invalid port number (14.2.5.10).\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_INVALID_PORT_NUM                                    0xFF\r
-/*********/\r
-/****d* IBA Base: Constants/IB_SUBNET_PATH_HOPS_MAX\r
-* NAME\r
-*      IB_SUBNET_PATH_HOPS_MAX\r
-*\r
-* DESCRIPTION\r
-*      Maximum number of directed route switch hops in a subnet (14.2.1.2).\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SUBNET_PATH_HOPS_MAX                                64\r
-/*********/\r
-/****d* IBA Base: Constants/IB_HOPLIMIT_MAX\r
-* NAME\r
-*      IB_HOPLIMIT_MAX\r
-*\r
-* DESCRIPTION\r
-*       Maximum number of router hops allowed.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_HOPLIMIT_MAX                                        255\r
-/*********/\r
-/****d* IBA Base: Constants/IB_MC_SCOPE_*\r
-* NAME\r
-*      IB_MC_SCOPE_*\r
-*\r
-* DESCRIPTION\r
-*      Scope component definitions from IBA 1.2.1 (Table 3 p. 148)\r
-*/\r
-#define IB_MC_SCOPE_LINK_LOCAL         0x2\r
-#define IB_MC_SCOPE_SITE_LOCAL         0x5\r
-#define IB_MC_SCOPE_ORG_LOCAL          0x8\r
-#define IB_MC_SCOPE_GLOBAL             0xE\r
-/*********/\r
-/****d* IBA Base: Constants/IB_PKEY_MAX_BLOCKS\r
-* NAME\r
-*      IB_PKEY_MAX_BLOCKS\r
-*\r
-* DESCRIPTION\r
-*      Maximum number of PKEY blocks (14.2.5.7).\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_PKEY_MAX_BLOCKS                                     2048\r
-/*********/\r
-/****d* IBA Base: Constants/IB_MCAST_MAX_BLOCK_ID\r
-* NAME\r
-*      IB_MCAST_MAX_BLOCK_ID\r
-*\r
-* DESCRIPTION\r
-*      Maximum number of Multicast port mask blocks\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCAST_MAX_BLOCK_ID                          511\r
-/*********/\r
-/****d* IBA Base: Constants/IB_MCAST_BLOCK_ID_MASK_HO\r
-* NAME\r
-*      IB_MCAST_BLOCK_ID_MASK_HO\r
-*\r
-* DESCRIPTION\r
-*      Mask (host order) to recover the Multicast block ID.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCAST_BLOCK_ID_MASK_HO                      0x000001FF\r
-/*********/\r
-/****d* IBA Base: Constants/IB_MCAST_BLOCK_SIZE\r
-* NAME\r
-*      IB_MCAST_BLOCK_SIZE\r
-*\r
-* DESCRIPTION\r
-*      Number of port mask entries in a multicast forwarding table block.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCAST_BLOCK_SIZE                                    32\r
-/*********/\r
-/****d* IBA Base: Constants/IB_MCAST_MASK_SIZE\r
-* NAME\r
-*      IB_MCAST_MASK_SIZE\r
-*\r
-* DESCRIPTION\r
-*      Number of port mask bits in each entry in the multicast forwarding table.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCAST_MASK_SIZE                                     16\r
-/*********/\r
-/****d* IBA Base: Constants/IB_MCAST_POSITION_MASK_HO\r
-* NAME\r
-*      IB_MCAST_POSITION_MASK_HO\r
-*\r
-* DESCRIPTION\r
-*      Mask (host order) to recover the multicast block position.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCAST_POSITION_MASK_HO                              0xF0000000\r
-/*********/\r
-/****d* IBA Base: Constants/IB_MCAST_POSITION_MAX\r
-* NAME\r
-*      IB_MCAST_POSITION_MAX\r
-*\r
-* DESCRIPTION\r
-*      Maximum value for the multicast block position.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCAST_POSITION_MAX                          0xF\r
-/*********/\r
-/****d* IBA Base: Constants/IB_MCAST_POSITION_SHIFT\r
-* NAME\r
-*      IB_MCAST_POSITION_SHIFT\r
-*\r
-* DESCRIPTION\r
-*      Shift value to normalize the multicast block position value.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCAST_POSITION_SHIFT                                28\r
-/*********/\r
-/****d* IBA Base: Constants/IB_PKEY_ENTRIES_MAX\r
-* NAME\r
-*      IB_PKEY_ENTRIES_MAX\r
-*\r
-* DESCRIPTION\r
-*      Maximum number of PKEY entries per port (14.2.5.7).\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_PKEY_ENTRIES_MAX (IB_PKEY_MAX_BLOCKS * IB_NUM_PKEY_ELEMENTS_IN_BLOCK)\r
-/*********/\r
-/****d* IBA Base: Constants/IB_PKEY_BASE_MASK\r
-* NAME\r
-*      IB_PKEY_BASE_MASK\r
-*\r
-* DESCRIPTION\r
-*      Masks for the base P_Key value given a P_Key Entry.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_PKEY_BASE_MASK                                      (CL_HTON16(0x7FFF))\r
-/*********/\r
-/****d* IBA Base: Constants/IB_PKEY_TYPE_MASK\r
-* NAME\r
-*      IB_PKEY_TYPE_MASK\r
-*\r
-* DESCRIPTION\r
-*      Masks for the P_Key membership type given a P_Key Entry.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_PKEY_TYPE_MASK                                      (CL_HTON16(0x8000))\r
-/*********/\r
-/****d* IBA Base: Constants/IB_DEFAULT_PARTIAL_PKEY\r
-* NAME\r
-*      IB_DEFAULT_PARTIAL_PKEY\r
-*\r
-* DESCRIPTION\r
-*      0x7FFF in network order\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_DEFAULT_PARTIAL_PKEY                                       (CL_HTON16(0x7FFF))\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_SUBN_LID\r
-* NAME\r
-*      IB_MCLASS_SUBN_LID\r
-*\r
-* DESCRIPTION\r
-*      Subnet Management Class, Subnet Manager LID routed (13.4.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_SUBN_LID                                     0x01\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_SUBN_DIR\r
-* NAME\r
-*      IB_MCLASS_SUBN_DIR\r
-*\r
-* DESCRIPTION\r
-*      Subnet Management Class, Subnet Manager directed route (13.4.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_SUBN_DIR                                     0x81\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_SUBN_ADM\r
-* NAME\r
-*      IB_MCLASS_SUBN_ADM\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Subnet Administration (13.4.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_SUBN_ADM                                     0x03\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_PERF\r
-* NAME\r
-*      IB_MCLASS_PERF\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Performance Management (13.4.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_PERF                                         0x04\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_BM\r
-* NAME\r
-*      IB_MCLASS_BM\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Baseboard Management (13.4.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_BM                                           0x05\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_DEV_MGMT\r
-* NAME\r
-*      IB_MCLASS_DEV_MGMT\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Device Management (13.4.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_DEV_MGMT                                     0x06\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_COMM_MGMT\r
-* NAME\r
-*      IB_MCLASS_COMM_MGMT\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Communication Management (13.4.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_COMM_MGMT                                    0x07\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_SNMP\r
-* NAME\r
-*      IB_MCLASS_SNMP\r
-*\r
-* DESCRIPTION\r
-*      Management Class, SNMP Tunneling (13.4.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_SNMP                                         0x08\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MIN\r
-* NAME\r
-*      IB_MCLASS_VENDOR_LOW_RANGE_MIN\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Vendor Specific Low Range Start\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_VENDOR_LOW_RANGE_MIN 0x09\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MAX\r
-* NAME\r
-*      IB_MCLASS_VENDOR_LOW_RANGE_MAX\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Vendor Specific Low Range End\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_VENDOR_LOW_RANGE_MAX 0x0f\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_DEV_ADM\r
-* NAME\r
-*      IB_MCLASS_DEV_ADM\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Device Administration\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_DEV_ADM 0x10\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_BIS\r
-* NAME\r
-*      IB_MCLASS_BIS\r
-*\r
-* DESCRIPTION\r
-*      Management Class, BIS\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_BIS 0x12\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MIN\r
-* NAME\r
-*      IB_MCLASS_VENDOR_HIGH_RANGE_MIN\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Vendor Specific High Range Start\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_VENDOR_HIGH_RANGE_MIN 0x30\r
-/**********/\r
-/****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MAX\r
-* NAME\r
-*      IB_MCLASS_VENDOR_HIGH_RANGE_MAX\r
-*\r
-* DESCRIPTION\r
-*      Management Class, Vendor Specific High Range End\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MCLASS_VENDOR_HIGH_RANGE_MAX 0x4f\r
-/**********/\r
-/****f* IBA Base: Types/ib_class_is_vendor_specific_low\r
-* NAME\r
-*      ib_class_is_vendor_specific_low\r
-*\r
-* DESCRIPTION\r
-*      Indicates if the Class Code if a vendor specific class from\r
-*  the low range\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_class_is_vendor_specific_low(IN const uint8_t class_code)\r
-{\r
-       return ((class_code >= IB_MCLASS_VENDOR_LOW_RANGE_MIN) &&\r
-               (class_code <= IB_MCLASS_VENDOR_LOW_RANGE_MAX));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      class_code\r
-*              [in] The Management Datagram Class Code\r
-*\r
-* RETURN VALUE\r
-*      TRUE if the class is in the Low range of Vendor Specific MADs\r
-*      FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-* IB_MCLASS_VENDOR_LOW_RANGE_MIN, IB_MCLASS_VENDOR_LOW_RANGE_MAX\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_class_is_vendor_specific_high\r
-* NAME\r
-*      ib_class_is_vendor_specific_high\r
-*\r
-* DESCRIPTION\r
-*      Indicates if the Class Code if a vendor specific class from\r
-*  the high range\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_class_is_vendor_specific_high(IN const uint8_t class_code)\r
-{\r
-       return ((class_code >= IB_MCLASS_VENDOR_HIGH_RANGE_MIN) &&\r
-               (class_code <= IB_MCLASS_VENDOR_HIGH_RANGE_MAX));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      class_code\r
-*              [in] The Management Datagram Class Code\r
-*\r
-* RETURN VALUE\r
-*      TRUE if the class is in the High range of Vendor Specific MADs\r
-*      FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-* IB_MCLASS_VENDOR_HIGH_RANGE_MIN, IB_MCLASS_VENDOR_HIGH_RANGE_MAX\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_class_is_vendor_specific\r
-* NAME\r
-*      ib_class_is_vendor_specific\r
-*\r
-* DESCRIPTION\r
-*      Indicates if the Class Code if a vendor specific class\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_class_is_vendor_specific(IN const uint8_t class_code)\r
-{\r
-       return (ib_class_is_vendor_specific_low(class_code) ||\r
-               ib_class_is_vendor_specific_high(class_code));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      class_code\r
-*              [in] The Management Datagram Class Code\r
-*\r
-* RETURN VALUE\r
-*      TRUE if the class is a Vendor Specific MAD\r
-*      FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*  ib_class_is_vendor_specific_low, ib_class_is_vendor_specific_high\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_class_is_rmpp\r
-* NAME\r
-*      ib_class_is_rmpp\r
-*\r
-* DESCRIPTION\r
-*      Indicates if the Class Code supports RMPP\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API ib_class_is_rmpp(IN const uint8_t class_code)\r
-{\r
-       return ((class_code == IB_MCLASS_SUBN_ADM) ||\r
-               (class_code == IB_MCLASS_DEV_MGMT) ||\r
-               (class_code == IB_MCLASS_DEV_ADM) ||\r
-               (class_code == IB_MCLASS_BIS) ||\r
-               ib_class_is_vendor_specific_high(class_code));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      class_code\r
-*              [in] The Management Datagram Class Code\r
-*\r
-* RETURN VALUE\r
-*      TRUE if the class supports RMPP\r
-*      FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-*********/\r
-\r
-/*\r
- *     MAD methods\r
- */\r
-\r
-/****d* IBA Base: Constants/IB_MAX_METHOD\r
-* NAME\r
-*      IB_MAX_METHOD\r
-*\r
-* DESCRIPTION\r
-*      Total number of methods available to a class, not including the R-bit.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAX_METHODS                                         128\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_RESP_MASK\r
-* NAME\r
-*      IB_MAD_METHOD_RESP_MASK\r
-*\r
-* DESCRIPTION\r
-*      Response mask to extract 'R' bit from the method field. (13.4.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_RESP_MASK                                0x80\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_GET\r
-* NAME\r
-*      IB_MAD_METHOD_GET\r
-*\r
-* DESCRIPTION\r
-*      Get() Method (13.4.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_GET                                      0x01\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_SET\r
-* NAME\r
-*      IB_MAD_METHOD_SET\r
-*\r
-* DESCRIPTION\r
-*      Set() Method (13.4.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_SET                                      0x02\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_GET_RESP\r
-* NAME\r
-*      IB_MAD_METHOD_GET_RESP\r
-*\r
-* DESCRIPTION\r
-*      GetResp() Method (13.4.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_GET_RESP                         0x81\r
-/**********/\r
-\r
-#define IB_MAD_METHOD_DELETE                           0x15\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE\r
-* NAME\r
-*      IB_MAD_METHOD_GETTABLE\r
-*\r
-* DESCRIPTION\r
-*      SubnAdmGetTable() Method (15.2.2)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_GETTABLE                         0x12\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE_RESP\r
-* NAME\r
-*      IB_MAD_METHOD_GETTABLE_RESP\r
-*\r
-* DESCRIPTION\r
-*      SubnAdmGetTableResp() Method (15.2.2)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_GETTABLE_RESP                    0x92\r
-\r
-/**********/\r
-\r
-#define IB_MAD_METHOD_GETTRACETABLE                    0x13\r
-#define IB_MAD_METHOD_GETMULTI                         0x14\r
-#define IB_MAD_METHOD_GETMULTI_RESP                    0x94\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_SEND\r
-* NAME\r
-*      IB_MAD_METHOD_SEND\r
-*\r
-* DESCRIPTION\r
-*      Send() Method (13.4.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_SEND                                     0x03\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_TRAP\r
-* NAME\r
-*      IB_MAD_METHOD_TRAP\r
-*\r
-* DESCRIPTION\r
-*      Trap() Method (13.4.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_TRAP                                     0x05\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_REPORT\r
-* NAME\r
-*      IB_MAD_METHOD_REPORT\r
-*\r
-* DESCRIPTION\r
-*      Report() Method (13.4.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_REPORT                           0x06\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_REPORT_RESP\r
-* NAME\r
-*      IB_MAD_METHOD_REPORT_RESP\r
-*\r
-* DESCRIPTION\r
-*      ReportResp() Method (13.4.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_REPORT_RESP                      0x86\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_METHOD_TRAP_REPRESS\r
-* NAME\r
-*      IB_MAD_METHOD_TRAP_REPRESS\r
-*\r
-* DESCRIPTION\r
-*      TrapRepress() Method (13.4.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_METHOD_TRAP_REPRESS                     0x07\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_STATUS_BUSY\r
-* NAME\r
-*      IB_MAD_STATUS_BUSY\r
-*\r
-* DESCRIPTION\r
-*      Temporarily busy, MAD discarded (13.4.7)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_STATUS_BUSY                             (CL_HTON16(0x0001))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_STATUS_REDIRECT\r
-* NAME\r
-*      IB_MAD_STATUS_REDIRECT\r
-*\r
-* DESCRIPTION\r
-*      QP Redirection required (13.4.7)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_STATUS_REDIRECT                         (CL_HTON16(0x0002))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_CLASS_VER\r
-* NAME\r
-*      IB_MAD_STATUS_UNSUP_CLASS_VER\r
-*\r
-* DESCRIPTION\r
-*      Unsupported class version (13.4.7)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_STATUS_UNSUP_CLASS_VER                  (CL_HTON16(0x0004))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD\r
-* NAME\r
-*      IB_MAD_STATUS_UNSUP_METHOD\r
-*\r
-* DESCRIPTION\r
-*      Unsupported method (13.4.7)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_STATUS_UNSUP_METHOD                     (CL_HTON16(0x0008))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD_ATTR\r
-* NAME\r
-*      IB_MAD_STATUS_UNSUP_METHOD_ATTR\r
-*\r
-* DESCRIPTION\r
-*      Unsupported method/attribute combination (13.4.7)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_STATUS_UNSUP_METHOD_ATTR                        (CL_HTON16(0x000C))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_STATUS_INVALID_FIELD\r
-* NAME\r
-*      IB_MAD_STATUS_INVALID_FIELD\r
-*\r
-* DESCRIPTION\r
-*      Attribute contains one or more invalid fields (13.4.7)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_STATUS_INVALID_FIELD                    (CL_HTON16(0x001C))\r
-/**********/\r
-\r
-#define IB_MAD_STATUS_CLASS_MASK                       (CL_HTON16(0xFF00))\r
-\r
-#define IB_SA_MAD_STATUS_SUCCESS                       (CL_HTON16(0x0000))\r
-#define IB_SA_MAD_STATUS_NO_RESOURCES                  (CL_HTON16(0x0100))\r
-#define IB_SA_MAD_STATUS_REQ_INVALID                   (CL_HTON16(0x0200))\r
-#define IB_SA_MAD_STATUS_NO_RECORDS                    (CL_HTON16(0x0300))\r
-#define IB_SA_MAD_STATUS_TOO_MANY_RECORDS              (CL_HTON16(0x0400))\r
-#define IB_SA_MAD_STATUS_INVALID_GID                   (CL_HTON16(0x0500))\r
-#define IB_SA_MAD_STATUS_INSUF_COMPS                   (CL_HTON16(0x0600))\r
-#define IB_SA_MAD_STATUS_DENIED                                (CL_HTON16(0x0700))\r
-#define IB_SA_MAD_STATUS_PRIO_SUGGESTED                        (CL_HTON16(0x0800))\r
-\r
-#define IB_DM_MAD_STATUS_NO_IOC_RESP                   (CL_HTON16(0x0100))\r
-#define IB_DM_MAD_STATUS_NO_SVC_ENTRIES                        (CL_HTON16(0x0200))\r
-#define IB_DM_MAD_STATUS_IOC_FAILURE                   (CL_HTON16(0x8000))\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_CLASS_PORT_INFO\r
-* NAME\r
-*      IB_MAD_ATTR_CLASS_PORT_INFO\r
-*\r
-* DESCRIPTION\r
-*      ClassPortInfo attribute (13.4.8)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_CLASS_PORT_INFO                    (CL_HTON16(0x0001))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_NOTICE\r
-* NAME\r
-*      IB_MAD_ATTR_NOTICE\r
-*\r
-* DESCRIPTION\r
-*      Notice attribute (13.4.8)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_NOTICE                                     (CL_HTON16(0x0002))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO\r
-* NAME\r
-*      IB_MAD_ATTR_INFORM_INFO\r
-*\r
-* DESCRIPTION\r
-*      InformInfo attribute (13.4.8)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_INFORM_INFO                                (CL_HTON16(0x0003))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_NODE_DESC\r
-* NAME\r
-*      IB_MAD_ATTR_NODE_DESC\r
-*\r
-* DESCRIPTION\r
-*      NodeDescription attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_NODE_DESC                          (CL_HTON16(0x0010))\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_CTRL\r
-* NAME\r
-*      IB_MAD_ATTR_PORT_SMPL_CTRL\r
-*\r
-* DESCRIPTION\r
-*      PortSamplesControl attribute (16.1.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PORT_SMPL_CTRL                     (CL_HTON16(0x0010))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_NODE_INFO\r
-* NAME\r
-*      IB_MAD_ATTR_NODE_INFO\r
-*\r
-* DESCRIPTION\r
-*      NodeInfo attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_NODE_INFO                          (CL_HTON16(0x0011))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_RSLT\r
-* NAME\r
-*      IB_MAD_ATTR_PORT_SMPL_RSLT\r
-*\r
-* DESCRIPTION\r
-*      PortSamplesResult attribute (16.1.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PORT_SMPL_RSLT                     (CL_HTON16(0x0011))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO\r
-* NAME\r
-*      IB_MAD_ATTR_SWITCH_INFO\r
-*\r
-* DESCRIPTION\r
-*      SwitchInfo attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SWITCH_INFO                                (CL_HTON16(0x0012))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_CNTRS\r
-* NAME\r
-*      IB_MAD_ATTR_PORT_CNTRS\r
-*\r
-* DESCRIPTION\r
-*      PortCounters attribute (16.1.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PORT_CNTRS                         (CL_HTON16(0x0012))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_CNTRS_EXT\r
-* NAME\r
-*       IB_MAD_ATTR_PORT_CNTRS_EXT\r
-*\r
-* DESCRIPTION\r
-*       PortCountersExtended attribute (16.1.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PORT_CNTRS_EXT                     (CL_HTON16(0x001D))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_XMIT_DATA_SL\r
-* NAME\r
-*      IB_MAD_ATTR_PORT_XMIT_DATA_SL\r
-*\r
-* DESCRIPTION\r
-*      PortXmitDataSL attribute (A13.6.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PORT_XMIT_DATA_SL                  (CL_HTON16(0x0036))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_RCV_DATA_SL\r
-* NAME\r
-*      IB_MAD_ATTR_PORT_RCV_DATA_SL\r
-*\r
-* DESCRIPTION\r
-*      PortRcvDataSL attribute (A13.6.4)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PORT_RCV_DATA_SL                   (CL_HTON16(0x0037))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_GUID_INFO\r
-* NAME\r
-*      IB_MAD_ATTR_GUID_INFO\r
-*\r
-* DESCRIPTION\r
-*      GUIDInfo attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_GUID_INFO                          (CL_HTON16(0x0014))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORT_INFO\r
-* NAME\r
-*      IB_MAD_ATTR_PORT_INFO\r
-*\r
-* DESCRIPTION\r
-*      PortInfo attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PORT_INFO                          (CL_HTON16(0x0015))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_P_KEY_TABLE\r
-* NAME\r
-*      IB_MAD_ATTR_P_KEY_TABLE\r
-*\r
-* DESCRIPTION\r
-*      PartitionTable attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_P_KEY_TABLE                                (CL_HTON16(0x0016))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_TABLE\r
-* NAME\r
-*      IB_MAD_ATTR_SLVL_TABLE\r
-*\r
-* DESCRIPTION\r
-*      SL VL Mapping Table attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SLVL_TABLE                         (CL_HTON16(0x0017))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_VL_ARBITRATION\r
-* NAME\r
-*      IB_MAD_ATTR_VL_ARBITRATION\r
-*\r
-* DESCRIPTION\r
-*      VL Arbitration Table attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_VL_ARBITRATION                     (CL_HTON16(0x0018))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_LIN_FWD_TBL\r
-* NAME\r
-*      IB_MAD_ATTR_LIN_FWD_TBL\r
-*\r
-* DESCRIPTION\r
-*      Switch linear forwarding table\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_LIN_FWD_TBL                                (CL_HTON16(0x0019))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_RND_FWD_TBL\r
-* NAME\r
-*      IB_MAD_ATTR_RND_FWD_TBL\r
-*\r
-* DESCRIPTION\r
-*      Switch random forwarding table\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_RND_FWD_TBL                                (CL_HTON16(0x001A))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_MCAST_FWD_TBL\r
-* NAME\r
-*      IB_MAD_ATTR_MCAST_FWD_TBL\r
-*\r
-* DESCRIPTION\r
-*      Switch multicast forwarding table\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_MCAST_FWD_TBL                      (CL_HTON16(0x001B))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_NODE_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_NODE_RECORD\r
-*\r
-* DESCRIPTION\r
-*      NodeRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_NODE_RECORD                                (CL_HTON16(0x0011))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PORTINFO_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_PORTINFO_RECORD\r
-*\r
-* DESCRIPTION\r
-*      PortInfoRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PORTINFO_RECORD                    (CL_HTON16(0x0012))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO_RECORD\r
-* NAME\r
-*       IB_MAD_ATTR_SWITCH_INFO_RECORD\r
-*\r
-* DESCRIPTION\r
-*       SwitchInfoRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SWITCH_INFO_RECORD                 (CL_HTON16(0x0014))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_LINK_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_LINK_RECORD\r
-*\r
-* DESCRIPTION\r
-*      LinkRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_LINK_RECORD                                (CL_HTON16(0x0020))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SM_INFO\r
-* NAME\r
-*      IB_MAD_ATTR_SM_INFO\r
-*\r
-* DESCRIPTION\r
-*      SMInfo attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SM_INFO                            (CL_HTON16(0x0020))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SMINFO_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_SMINFO_RECORD\r
-*\r
-* DESCRIPTION\r
-*      SMInfoRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SMINFO_RECORD                      (CL_HTON16(0x0018))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_GUIDINFO_RECORD\r
-* NAME\r
-*       IB_MAD_ATTR_GUIDINFO_RECORD\r
-*\r
-* DESCRIPTION\r
-*       GuidInfoRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_GUIDINFO_RECORD                    (CL_HTON16(0x0030))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_VENDOR_DIAG\r
-* NAME\r
-*      IB_MAD_ATTR_VENDOR_DIAG\r
-*\r
-* DESCRIPTION\r
-*      VendorDiag attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_VENDOR_DIAG                                (CL_HTON16(0x0030))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_LED_INFO\r
-* NAME\r
-*      IB_MAD_ATTR_LED_INFO\r
-*\r
-* DESCRIPTION\r
-*      LedInfo attribute (14.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_LED_INFO                           (CL_HTON16(0x0031))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_SERVICE_RECORD\r
-*\r
-* DESCRIPTION\r
-*      ServiceRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SERVICE_RECORD                     (CL_HTON16(0x0031))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_LFT_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_LFT_RECORD\r
-*\r
-* DESCRIPTION\r
-*      LinearForwardingTableRecord attribute (15.2.5.6)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_LFT_RECORD                         (CL_HTON16(0x0015))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_MFT_RECORD\r
-* NAME\r
-*       IB_MAD_ATTR_MFT_RECORD\r
-*\r
-* DESCRIPTION\r
-*       MulticastForwardingTableRecord attribute (15.2.5.8)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_MFT_RECORD                         (CL_HTON16(0x0017))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PKEYTBL_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_PKEYTBL_RECORD\r
-*\r
-* DESCRIPTION\r
-*      PKEY Table Record attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PKEY_TBL_RECORD                    (CL_HTON16(0x0033))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PATH_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_PATH_RECORD\r
-*\r
-* DESCRIPTION\r
-*      PathRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PATH_RECORD                                (CL_HTON16(0x0035))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_VLARB_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_VLARB_RECORD\r
-*\r
-* DESCRIPTION\r
-*      VL Arbitration Table Record attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_VLARB_RECORD                       (CL_HTON16(0x0036))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_SLVL_RECORD\r
-*\r
-* DESCRIPTION\r
-*      SLtoVL Mapping Table Record attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SLVL_RECORD                                (CL_HTON16(0x0013))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_MCMEMBER_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_MCMEMBER_RECORD\r
-*\r
-* DESCRIPTION\r
-*      MCMemberRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_MCMEMBER_RECORD                    (CL_HTON16(0x0038))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_TRACE_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_TRACE_RECORD\r
-*\r
-* DESCRIPTION\r
-*      TraceRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_TRACE_RECORD                       (CL_HTON16(0x0039))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_MULTIPATH_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_MULTIPATH_RECORD\r
-*\r
-* DESCRIPTION\r
-*      MultiPathRecord attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_MULTIPATH_RECORD                   (CL_HTON16(0x003A))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_SVC_ASSOCIATION_RECORD\r
-*\r
-* DESCRIPTION\r
-*      Service Association Record attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD             (CL_HTON16(0x003B))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_INFORM_INFO_RECORD\r
-*\r
-* DESCRIPTION\r
-*      InformInfo Record attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_INFORM_INFO_RECORD                 (CL_HTON16(0x00F3))\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_IO_UNIT_INFO\r
-* NAME\r
-*      IB_MAD_ATTR_IO_UNIT_INFO\r
-*\r
-* DESCRIPTION\r
-*      IOUnitInfo attribute (16.3.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_IO_UNIT_INFO                       (CL_HTON16(0x0010))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_IO_CONTROLLER_PROFILE\r
-* NAME\r
-*      IB_MAD_ATTR_IO_CONTROLLER_PROFILE\r
-*\r
-* DESCRIPTION\r
-*      IOControllerProfile attribute (16.3.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_IO_CONTROLLER_PROFILE      (CL_HTON16(0x0011))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_ENTRIES\r
-* NAME\r
-*      IB_MAD_ATTR_SERVICE_ENTRIES\r
-*\r
-* DESCRIPTION\r
-*      ServiceEntries attribute (16.3.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SERVICE_ENTRIES                    (CL_HTON16(0x0012))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT\r
-* NAME\r
-*      IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT\r
-*\r
-* DESCRIPTION\r
-*      DiagnosticTimeout attribute (16.3.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT         (CL_HTON16(0x0020))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_PREPARE_TO_TEST\r
-* NAME\r
-*      IB_MAD_ATTR_PREPARE_TO_TEST\r
-*\r
-* DESCRIPTION\r
-*      PrepareToTest attribute (16.3.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_PREPARE_TO_TEST                    (CL_HTON16(0x0021))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_ONCE\r
-* NAME\r
-*      IB_MAD_ATTR_TEST_DEVICE_ONCE\r
-*\r
-* DESCRIPTION\r
-*      TestDeviceOnce attribute (16.3.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_TEST_DEVICE_ONCE           (CL_HTON16(0x0022))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_LOOP\r
-* NAME\r
-*      IB_MAD_ATTR_TEST_DEVICE_LOOP\r
-*\r
-* DESCRIPTION\r
-*      TestDeviceLoop attribute (16.3.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_TEST_DEVICE_LOOP           (CL_HTON16(0x0023))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_DIAG_CODE\r
-* NAME\r
-*      IB_MAD_ATTR_DIAG_CODE\r
-*\r
-* DESCRIPTION\r
-*      DiagCode attribute (16.3.3)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_DIAG_CODE                          (CL_HTON16(0x0024))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD\r
-* NAME\r
-*      IB_MAD_ATTR_SVC_ASSOCIATION_RECORD\r
-*\r
-* DESCRIPTION\r
-*      Service Association Record attribute (15.2.5)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD     (CL_HTON16(0x003B))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_NODE_TYPE_CA\r
-* NAME\r
-*      IB_NODE_TYPE_CA\r
-*\r
-* DESCRIPTION\r
-*      Encoded generic node type used in MAD attributes (13.4.8.2)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_NODE_TYPE_CA                                                0x01\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_NODE_TYPE_SWITCH\r
-* NAME\r
-*      IB_NODE_TYPE_SWITCH\r
-*\r
-* DESCRIPTION\r
-*      Encoded generic node type used in MAD attributes (13.4.8.2)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_NODE_TYPE_SWITCH                                    0x02\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_NODE_TYPE_ROUTER\r
-* NAME\r
-*      IB_NODE_TYPE_ROUTER\r
-*\r
-* DESCRIPTION\r
-*      Encoded generic node type used in MAD attributes (13.4.8.2)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_NODE_TYPE_ROUTER                                    0x03\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_NOTICE_PRODUCER_TYPE_CA\r
-* NAME\r
-*      IB_NOTICE_PRODUCER_TYPE_CA\r
-*\r
-* DESCRIPTION\r
-*      Encoded generic producer type used in Notice attribute (13.4.8.2)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_NOTICE_PRODUCER_TYPE_CA                     (CL_HTON32(0x000001))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_NOTICE_PRODUCER_TYPE_SWITCH\r
-* NAME\r
-*      IB_NOTICE_PRODUCER_TYPE_SWITCH\r
-*\r
-* DESCRIPTION\r
-*      Encoded generic producer type used in Notice attribute (13.4.8.2)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_NOTICE_PRODUCER_TYPE_SWITCH                 (CL_HTON32(0x000002))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_NOTICE_PRODUCER_TYPE_ROUTER\r
-* NAME\r
-*      IB_NOTICE_PRODUCER_TYPE_ROUTER\r
-*\r
-* DESCRIPTION\r
-*      Encoded generic producer type used in Notice attribute (13.4.8.2)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_NOTICE_PRODUCER_TYPE_ROUTER                 (CL_HTON32(0x000003))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_NOTICE_PRODUCER_TYPE_CLASS_MGR\r
-* NAME\r
-*      IB_NOTICE_PRODUCER_TYPE_CLASS_MGR\r
-*\r
-* DESCRIPTION\r
-*      Encoded generic producer type used in Notice attribute (13.4.8.2)\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_NOTICE_PRODUCER_TYPE_CLASS_MGR                      (CL_HTON32(0x000004))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MTU_LEN_TYPE\r
-* NAME\r
-*      IB_MTU_LEN_TYPE\r
-*\r
-* DESCRIPTION\r
-*      Encoded path MTU.\r
-*              1: 256\r
-*              2: 512\r
-*              3: 1024\r
-*              4: 2048\r
-*              5: 4096\r
-*              others: reserved\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MTU_LEN_256                                                 1\r
-#define IB_MTU_LEN_512                                                 2\r
-#define IB_MTU_LEN_1024                                                        3\r
-#define IB_MTU_LEN_2048                                                        4\r
-#define IB_MTU_LEN_4096                                                        5\r
-\r
-#define IB_MIN_MTU    IB_MTU_LEN_256\r
-#define IB_MAX_MTU    IB_MTU_LEN_4096\r
-\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_PATH_SELECTOR_TYPE\r
-* NAME\r
-*      IB_PATH_SELECTOR_TYPE\r
-*\r
-* DESCRIPTION\r
-*      Path selector.\r
-*              0: greater than specified\r
-*              1: less than specified\r
-*              2: exactly the specified\r
-*              3: largest available\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_PATH_SELECTOR_GREATER_THAN          0\r
-#define IB_PATH_SELECTOR_LESS_THAN             1\r
-#define IB_PATH_SELECTOR_EXACTLY               2\r
-#define IB_PATH_SELECTOR_LARGEST               3\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_STATE_NOTACTIVE\r
-* NAME\r
-*      IB_SMINFO_STATE_NOTACTIVE\r
-*\r
-* DESCRIPTION\r
-*      Encoded state value used in the SMInfo attribute.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_STATE_NOTACTIVE                      0\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_STATE_DISCOVERING\r
-* NAME\r
-*      IB_SMINFO_STATE_DISCOVERING\r
-*\r
-* DESCRIPTION\r
-*      Encoded state value used in the SMInfo attribute.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_STATE_DISCOVERING                    1\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_STATE_STANDBY\r
-* NAME\r
-*      IB_SMINFO_STATE_STANDBY\r
-*\r
-* DESCRIPTION\r
-*      Encoded state value used in the SMInfo attribute.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_STATE_STANDBY                                2\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_STATE_MASTER\r
-* NAME\r
-*      IB_SMINFO_STATE_MASTER\r
-*\r
-* DESCRIPTION\r
-*      Encoded state value used in the SMInfo attribute.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_STATE_MASTER                         3\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_PATH_REC_SL_MASK\r
-* NAME\r
-*      IB_PATH_REC_SL_MASK\r
-*\r
-* DESCRIPTION\r
-*      Mask for the sl field for path record\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_PATH_REC_SL_MASK                            0x000F\r
-\r
-/****d* IBA Base: Constants/IB_MULTIPATH_REC_SL_MASK\r
-* NAME\r
-*      IB_MILTIPATH_REC_SL_MASK\r
-*\r
-* DESCRIPTION\r
-*      Mask for the sl field for MultiPath record\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MULTIPATH_REC_SL_MASK                       0x000F\r
-\r
-/****d* IBA Base: Constants/IB_PATH_REC_QOS_CLASS_MASK\r
-* NAME\r
-*      IB_PATH_REC_QOS_CLASS_MASK\r
-*\r
-* DESCRIPTION\r
-*      Mask for the QoS class field for path record\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_PATH_REC_QOS_CLASS_MASK                     0xFFF0\r
-\r
-/****d* IBA Base: Constants/IB_MULTIPATH_REC_QOS_CLASS_MASK\r
-* NAME\r
-*      IB_MULTIPATH_REC_QOS_CLASS_MASK\r
-*\r
-* DESCRIPTION\r
-*      Mask for the QoS class field for MultiPath record\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MULTIPATH_REC_QOS_CLASS_MASK                        0xFFF0\r
-\r
-/****d* IBA Base: Constants/IB_PATH_REC_SELECTOR_MASK\r
-* NAME\r
-*      IB_PATH_REC_SELECTOR_MASK\r
-*\r
-* DESCRIPTION\r
-*      Mask for the selector field for path record MTU, rate,\r
-*      and packet lifetime.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_PATH_REC_SELECTOR_MASK                      0xC0\r
-\r
-/****d* IBA Base: Constants/IB_MULTIPATH_REC_SELECTOR_MASK\r
-* NAME\r
-*       IB_MULTIPATH_REC_SELECTOR_MASK\r
-*\r
-* DESCRIPTION\r
-*       Mask for the selector field for multipath record MTU, rate,\r
-*       and packet lifetime.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MULTIPATH_REC_SELECTOR_MASK                       0xC0\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_PATH_REC_BASE_MASK\r
-* NAME\r
-*      IB_PATH_REC_BASE_MASK\r
-*\r
-* DESCRIPTION\r
-*      Mask for the base value field for path record MTU, rate,\r
-*      and packet lifetime.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_PATH_REC_BASE_MASK                          0x3F\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_MULTIPATH_REC_BASE_MASK\r
-* NAME\r
-*       IB_MULTIPATH_REC_BASE_MASK\r
-*\r
-* DESCRIPTION\r
-*       Mask for the base value field for multipath record MTU, rate,\r
-*       and packet lifetime.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_MULTIPATH_REC_BASE_MASK                      0x3F\r
-/**********/\r
-\r
-/****h* IBA Base/Type Definitions\r
-* NAME\r
-*      Type Definitions\r
-*\r
-* DESCRIPTION\r
-*      Definitions are from the InfiniBand Architecture Specification v1.2\r
-*\r
-*********/\r
-\r
-/****d* IBA Base: Types/ib_net16_t\r
-* NAME\r
-*      ib_net16_t\r
-*\r
-* DESCRIPTION\r
-*      Defines the network ordered type for 16-bit values.\r
-*\r
-* SOURCE\r
-*/\r
-typedef uint16_t ib_net16_t;\r
-/**********/\r
-\r
-/****d* IBA Base: Types/ib_net32_t\r
-* NAME\r
-*      ib_net32_t\r
-*\r
-* DESCRIPTION\r
-*      Defines the network ordered type for 32-bit values.\r
-*\r
-* SOURCE\r
-*/\r
-typedef uint32_t ib_net32_t;\r
-/**********/\r
-\r
-/****d* IBA Base: Types/ib_net64_t\r
-* NAME\r
-*      ib_net64_t\r
-*\r
-* DESCRIPTION\r
-*      Defines the network ordered type for 64-bit values.\r
-*\r
-* SOURCE\r
-*/\r
-typedef uint64_t ib_net64_t;\r
-/**********/\r
-\r
-/****d* IBA Base: Types/ib_gid_prefix_t\r
-* NAME\r
-*      ib_gid_prefix_t\r
-*\r
-* DESCRIPTION\r
-*\r
-* SOURCE\r
-*/\r
-typedef ib_net64_t ib_gid_prefix_t;\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/ib_link_states_t\r
-* NAME\r
-*      ib_link_states_t\r
-*\r
-* DESCRIPTION\r
-*      Defines the link states of a port.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_LINK_NO_CHANGE 0\r
-#define IB_LINK_DOWN      1\r
-#define IB_LINK_INIT     2\r
-#define IB_LINK_ARMED     3\r
-#define IB_LINK_ACTIVE    4\r
-#define IB_LINK_ACT_DEFER 5\r
-/**********/\r
-\r
-static const char *const __ib_node_type_str[] = {\r
-       "UNKNOWN",\r
-       "Channel Adapter",\r
-       "Switch",\r
-       "Router"\r
-};\r
-\r
-/****f* IBA Base: Types/ib_get_node_type_str\r
-* NAME\r
-*      ib_get_node_type_str\r
-*\r
-* DESCRIPTION\r
-*      Returns a string for the specified node type.\r
-*      14.2.5.3 NodeInfo\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline const char *OSM_API ib_get_node_type_str(IN uint8_t node_type)\r
-{\r
-       if (node_type > IB_NODE_TYPE_ROUTER)\r
-               node_type = 0;\r
-       return (__ib_node_type_str[node_type]);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      node_type\r
-*              [in] Encoded node type as returned in the NodeInfo attribute.\r
-\r
-* RETURN VALUES\r
-*      Pointer to the node type string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-* ib_node_info_t\r
-*********/\r
-\r
-static const char *const __ib_producer_type_str[] = {\r
-       "UNKNOWN",\r
-       "Channel Adapter",\r
-       "Switch",\r
-       "Router",\r
-       "Class Manager"\r
-};\r
-\r
-/****f* IBA Base: Types/ib_get_producer_type_str\r
-* NAME\r
-*      ib_get_producer_type_str\r
-*\r
-* DESCRIPTION\r
-*      Returns a string for the specified producer type\r
-*      13.4.8.2 Notice\r
-*      13.4.8.3 InformInfo\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline const char *OSM_API\r
-ib_get_producer_type_str(IN ib_net32_t producer_type)\r
-{\r
-       if (cl_ntoh32(producer_type) >\r
-           CL_NTOH32(IB_NOTICE_PRODUCER_TYPE_CLASS_MGR))\r
-               producer_type = 0;\r
-       return (__ib_producer_type_str[cl_ntoh32(producer_type)]);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      producer_type\r
-*              [in] Encoded producer type from the Notice attribute\r
-\r
-* RETURN VALUES\r
-*      Pointer to the producer type string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-* ib_notice_get_prod_type\r
-*********/\r
-\r
-static const char *const __ib_port_state_str[] = {\r
-       "No State Change (NOP)",\r
-       "DOWN",\r
-       "INIT",\r
-       "ARMED",\r
-       "ACTIVE",\r
-       "ACTDEFER",\r
-       "UNKNOWN"\r
-};\r
-\r
-/****f* IBA Base: Types/ib_get_port_state_str\r
-* NAME\r
-*      ib_get_port_state_str\r
-*\r
-* DESCRIPTION\r
-*      Returns a string for the specified port state.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline const char *OSM_API ib_get_port_state_str(IN uint8_t port_state)\r
-{\r
-       if (port_state > IB_LINK_ACTIVE)\r
-               port_state = IB_LINK_ACTIVE + 1;\r
-       return (__ib_port_state_str[port_state]);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      port_state\r
-*              [in] Encoded port state as returned in the PortInfo attribute.\r
-\r
-* RETURN VALUES\r
-*      Pointer to the port state string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-* ib_port_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_get_port_state_from_str\r
-* NAME\r
-*      ib_get_port_state_from_str\r
-*\r
-* DESCRIPTION\r
-*      Returns a string for the specified port state.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_get_port_state_from_str(IN char *p_port_state_str)\r
-{\r
-       if (!strncmp(p_port_state_str, "No State Change (NOP)", 12))\r
-               return (0);\r
-       else if (!strncmp(p_port_state_str, "DOWN", 4))\r
-               return (1);\r
-       else if (!strncmp(p_port_state_str, "INIT", 4))\r
-               return (2);\r
-       else if (!strncmp(p_port_state_str, "ARMED", 5))\r
-               return (3);\r
-       else if (!strncmp(p_port_state_str, "ACTIVE", 6))\r
-               return (4);\r
-       else if (!strncmp(p_port_state_str, "ACTDEFER", 8))\r
-               return (5);\r
-       return (6);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_port_state_str\r
-*              [in] A string matching one returned by ib_get_port_state_str\r
-*\r
-* RETURN VALUES\r
-*      The appropriate code.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_port_info_t\r
-*********/\r
-\r
-/****d* IBA Base: Constants/Join States\r
-* NAME\r
-*      Join States\r
-*\r
-* DESCRIPTION\r
-*      Defines the join state flags for multicast group management.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_JOIN_STATE_FULL             1\r
-#define IB_JOIN_STATE_NON              2\r
-#define IB_JOIN_STATE_SEND_ONLY                4\r
-/**********/\r
-\r
-/****f* IBA Base: Types/ib_pkey_get_base\r
-* NAME\r
-*      ib_pkey_get_base\r
-*\r
-* DESCRIPTION\r
-*      Returns the base P_Key value with the membership bit stripped.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net16_t OSM_API ib_pkey_get_base(IN const ib_net16_t pkey)\r
-{\r
-       return ((ib_net16_t) (pkey & IB_PKEY_BASE_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      pkey\r
-*              [in] P_Key value\r
-*\r
-* RETURN VALUE\r
-*      Returns the base P_Key value with the membership bit stripped.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_pkey_is_full_member\r
-* NAME\r
-*      ib_pkey_is_full_member\r
-*\r
-* DESCRIPTION\r
-*      Indicates if the port is a full member of the parition.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API ib_pkey_is_full_member(IN const ib_net16_t pkey)\r
-{\r
-       return ((pkey & IB_PKEY_TYPE_MASK) == IB_PKEY_TYPE_MASK);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      pkey\r
-*              [in] P_Key value\r
-*\r
-* RETURN VALUE\r
-*      TRUE if the port is a full member of the partition.\r
-*      FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-* ib_pkey_get_base, ib_net16_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_pkey_is_invalid\r
-* NAME\r
-*      ib_pkey_is_invalid\r
-*\r
-* DESCRIPTION\r
-*      Returns TRUE if the given P_Key is an invalid P_Key\r
-*  C10-116: the CI shall regard a P_Key as invalid if its low-order\r
-*           15 bits are all zero...\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API ib_pkey_is_invalid(IN const ib_net16_t pkey)\r
-{\r
-       return ib_pkey_get_base(pkey) == 0x0000 ? TRUE : FALSE;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      pkey\r
-*              [in] P_Key value\r
-*\r
-* RETURN VALUE\r
-*      Returns the base P_Key value with the membership bit stripped.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****d* IBA Base: Types/ib_gid_t\r
-* NAME\r
-*      ib_gid_t\r
-*\r
-* DESCRIPTION\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef union _ib_gid {\r
-       uint8_t raw[16];\r
-       struct _ib_gid_unicast {\r
-               ib_gid_prefix_t prefix;\r
-               ib_net64_t interface_id;\r
-       } PACK_SUFFIX unicast;\r
-       struct _ib_gid_multicast {\r
-               uint8_t header[2];\r
-               uint8_t raw_group_id[14];\r
-       } PACK_SUFFIX multicast;\r
-} PACK_SUFFIX ib_gid_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      raw\r
-*              GID represented as an unformated byte array.\r
-*\r
-*      unicast\r
-*              Typical unicast representation with subnet prefix and\r
-*              port GUID.\r
-*\r
-*      multicast\r
-*              Representation for multicast use.\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_gid_is_multicast\r
-* NAME\r
-*      ib_gid_is_multicast\r
-*\r
-* DESCRIPTION\r
-*       Returns a boolean indicating whether a GID is a multicast GID.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API ib_gid_is_multicast(IN const ib_gid_t * p_gid)\r
-{\r
-       return (p_gid->raw[0] == 0xFF);\r
-}\r
-\r
-/****f* IBA Base: Types/ib_gid_get_scope\r
-* NAME\r
-*      ib_gid_get_scope\r
-*\r
-* DESCRIPTION\r
-*      Returns scope of (assumed) multicast GID.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API ib_mgid_get_scope(IN const ib_gid_t * p_gid)\r
-{\r
-       return (p_gid->raw[1] & 0x0F);\r
-}\r
-\r
-/****f* IBA Base: Types/ib_gid_set_scope\r
-* NAME\r
-*      ib_gid_set_scope\r
-*\r
-* DESCRIPTION\r
-*      Sets scope of (assumed) multicast GID.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_mgid_set_scope(IN ib_gid_t * const p_gid, IN const uint8_t scope)\r
-{\r
-       p_gid->raw[1] &= 0xF0;\r
-       p_gid->raw[1] |= scope & 0x0F;\r
-}\r
-\r
-/****f* IBA Base: Types/ib_gid_set_default\r
-* NAME\r
-*      ib_gid_set_default\r
-*\r
-* DESCRIPTION\r
-*      Sets a GID to the default value.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_gid_set_default(IN ib_gid_t * const p_gid, IN const ib_net64_t interface_id)\r
-{\r
-       p_gid->unicast.prefix = IB_DEFAULT_SUBNET_PREFIX;\r
-       p_gid->unicast.interface_id = interface_id;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_gid\r
-*              [in] Pointer to the GID object.\r
-*\r
-*      interface_id\r
-*              [in] Manufacturer assigned EUI64 value of a port.\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_gid_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_gid_get_subnet_prefix\r
-* NAME\r
-*      ib_gid_get_subnet_prefix\r
-*\r
-* DESCRIPTION\r
-*      Gets the subnet prefix from a GID.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net64_t OSM_API\r
-ib_gid_get_subnet_prefix(IN const ib_gid_t * const p_gid)\r
-{\r
-       return (p_gid->unicast.prefix);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_gid\r
-*              [in] Pointer to the GID object.\r
-*\r
-* RETURN VALUES\r
-*      64-bit subnet prefix value.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_gid_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_gid_is_link_local\r
-* NAME\r
-*      ib_gid_is_link_local\r
-*\r
-* DESCRIPTION\r
-*      Returns TRUE if the unicast GID scoping indicates link local,\r
-*      FALSE otherwise.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_gid_is_link_local(IN const ib_gid_t * const p_gid)\r
-{\r
-       return ((ib_gid_get_subnet_prefix(p_gid) &\r
-                CL_HTON64(0xFFC0000000000000ULL)) == IB_DEFAULT_SUBNET_PREFIX);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_gid\r
-*              [in] Pointer to the GID object.\r
-*\r
-* RETURN VALUES\r
-*      Returns TRUE if the unicast GID scoping indicates link local,\r
-*      FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_gid_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_gid_is_site_local\r
-* NAME\r
-*      ib_gid_is_site_local\r
-*\r
-* DESCRIPTION\r
-*      Returns TRUE if the unicast GID scoping indicates site local,\r
-*      FALSE otherwise.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_gid_is_site_local(IN const ib_gid_t * const p_gid)\r
-{\r
-       return ((ib_gid_get_subnet_prefix(p_gid) &\r
-                CL_HTON64(0xFFFFFFFFFFFF0000ULL)) ==\r
-               CL_HTON64(0xFEC0000000000000ULL));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_gid\r
-*              [in] Pointer to the GID object.\r
-*\r
-* RETURN VALUES\r
-*      Returns TRUE if the unicast GID scoping indicates site local,\r
-*      FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_gid_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_gid_get_guid\r
-* NAME\r
-*      ib_gid_get_guid\r
-*\r
-* DESCRIPTION\r
-*      Gets the guid from a GID.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net64_t OSM_API\r
-ib_gid_get_guid(IN const ib_gid_t * const p_gid)\r
-{\r
-       return (p_gid->unicast.interface_id);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_gid\r
-*              [in] Pointer to the GID object.\r
-*\r
-* RETURN VALUES\r
-*      64-bit GUID value.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_gid_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_path_rec_t\r
-* NAME\r
-*      ib_path_rec_t\r
-*\r
-* DESCRIPTION\r
-*      Path records encapsulate the properties of a given\r
-*      route between two end-points on a subnet.\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_path_rec {\r
-       ib_net64_t service_id;\r
-       ib_gid_t dgid;\r
-       ib_gid_t sgid;\r
-       ib_net16_t dlid;\r
-       ib_net16_t slid;\r
-       ib_net32_t hop_flow_raw;\r
-       uint8_t tclass;\r
-       uint8_t num_path;\r
-       ib_net16_t pkey;\r
-       ib_net16_t qos_class_sl;\r
-       uint8_t mtu;\r
-       uint8_t rate;\r
-       uint8_t pkt_life;\r
-       uint8_t preference;\r
-       uint8_t resv2[6];\r
-} PACK_SUFFIX ib_path_rec_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      service_id\r
-*              Service ID for QoS.\r
-*\r
-*      dgid\r
-*              GID of destination port.\r
-*\r
-*      sgid\r
-*              GID of source port.\r
-*\r
-*      dlid\r
-*              LID of destination port.\r
-*\r
-*      slid\r
-*              LID of source port.\r
-*\r
-*      hop_flow_raw\r
-*              Global routing parameters: hop count, flow label and raw bit.\r
-*\r
-*      tclass\r
-*              Another global routing parameter.\r
-*\r
-*      num_path\r
-*     Reversible path - 1 bit to say if path is reversible.\r
-*              num_path [6:0] In queries, maximum number of paths to return.\r
-*              In responses, undefined.\r
-*\r
-*      pkey\r
-*              Partition key (P_Key) to use on this path.\r
-*\r
-*      qos_class_sl\r
-*              QoS class and service level to use on this path.\r
-*\r
-*      mtu\r
-*              MTU and MTU selector fields to use on this path\r
-*\r
-*      rate\r
-*              Rate and rate selector fields to use on this path.\r
-*\r
-*      pkt_life\r
-*              Packet lifetime\r
-*\r
-*      preference\r
-*              Indicates the relative merit of this path versus other path\r
-*              records returned from the SA.  Lower numbers are better.\r
-*\r
-*      resv2\r
-*              Reserved bytes.\r
-* SEE ALSO\r
-*********/\r
-\r
-/* Path Record Component Masks */\r
-#define  IB_PR_COMPMASK_SERVICEID_MSB     (CL_HTON64(((uint64_t)1)<<0))\r
-#define  IB_PR_COMPMASK_SERVICEID_LSB     (CL_HTON64(((uint64_t)1)<<1))\r
-#define  IB_PR_COMPMASK_DGID              (CL_HTON64(((uint64_t)1)<<2))\r
-#define  IB_PR_COMPMASK_SGID              (CL_HTON64(((uint64_t)1)<<3))\r
-#define  IB_PR_COMPMASK_DLID              (CL_HTON64(((uint64_t)1)<<4))\r
-#define  IB_PR_COMPMASK_SLID              (CL_HTON64(((uint64_t)1)<<5))\r
-#define  IB_PR_COMPMASK_RAWTRAFFIC        (CL_HTON64(((uint64_t)1)<<6))\r
-#define  IB_PR_COMPMASK_RESV0             (CL_HTON64(((uint64_t)1)<<7))\r
-#define  IB_PR_COMPMASK_FLOWLABEL         (CL_HTON64(((uint64_t)1)<<8))\r
-#define  IB_PR_COMPMASK_HOPLIMIT          (CL_HTON64(((uint64_t)1)<<9))\r
-#define  IB_PR_COMPMASK_TCLASS            (CL_HTON64(((uint64_t)1)<<10))\r
-#define  IB_PR_COMPMASK_REVERSIBLE        (CL_HTON64(((uint64_t)1)<<11))\r
-#define  IB_PR_COMPMASK_NUMBPATH          (CL_HTON64(((uint64_t)1)<<12))\r
-#define  IB_PR_COMPMASK_PKEY              (CL_HTON64(((uint64_t)1)<<13))\r
-#define  IB_PR_COMPMASK_QOS_CLASS         (CL_HTON64(((uint64_t)1)<<14))\r
-#define  IB_PR_COMPMASK_SL                (CL_HTON64(((uint64_t)1)<<15))\r
-#define  IB_PR_COMPMASK_MTUSELEC          (CL_HTON64(((uint64_t)1)<<16))\r
-#define  IB_PR_COMPMASK_MTU               (CL_HTON64(((uint64_t)1)<<17))\r
-#define  IB_PR_COMPMASK_RATESELEC         (CL_HTON64(((uint64_t)1)<<18))\r
-#define  IB_PR_COMPMASK_RATE              (CL_HTON64(((uint64_t)1)<<19))\r
-#define  IB_PR_COMPMASK_PKTLIFETIMESELEC  (CL_HTON64(((uint64_t)1)<<20))\r
-#define  IB_PR_COMPMASK_PKTLIFETIME       (CL_HTON64(((uint64_t)1)<<21))\r
-\r
-/* Link Record Component Masks */\r
-#define IB_LR_COMPMASK_FROM_LID           (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_LR_COMPMASK_FROM_PORT          (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_LR_COMPMASK_TO_PORT            (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_LR_COMPMASK_TO_LID             (CL_HTON64(((uint64_t)1)<<3))\r
-\r
-/* VL Arbitration Record Masks */\r
-#define IB_VLA_COMPMASK_LID               (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_VLA_COMPMASK_OUT_PORT          (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_VLA_COMPMASK_BLOCK             (CL_HTON64(((uint64_t)1)<<2))\r
-\r
-/* SLtoVL Mapping Record Masks */\r
-#define IB_SLVL_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_SLVL_COMPMASK_IN_PORT          (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_SLVL_COMPMASK_OUT_PORT         (CL_HTON64(((uint64_t)1)<<2))\r
-\r
-/* P_Key Table Record Masks */\r
-#define IB_PKEY_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_PKEY_COMPMASK_BLOCK            (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_PKEY_COMPMASK_PORT             (CL_HTON64(((uint64_t)1)<<2))\r
-\r
-/* Switch Info Record Masks */\r
-#define IB_SWIR_COMPMASK_LID             (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_SWIR_COMPMASK_RESERVED1       (CL_HTON64(((uint64_t)1)<<1))\r
-\r
-/* LFT Record Masks */\r
-#define IB_LFTR_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_LFTR_COMPMASK_BLOCK            (CL_HTON64(((uint64_t)1)<<1))\r
-\r
-/* MFT Record Masks */\r
-#define IB_MFTR_COMPMASK_LID             (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_MFTR_COMPMASK_POSITION        (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_MFTR_COMPMASK_RESERVED1       (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_MFTR_COMPMASK_BLOCK           (CL_HTON64(((uint64_t)1)<<3))\r
-#define IB_MFTR_COMPMASK_RESERVED2       (CL_HTON64(((uint64_t)1)<<4))\r
-\r
-/* NodeInfo Record Masks */\r
-#define IB_NR_COMPMASK_LID                (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_NR_COMPMASK_RESERVED1          (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_NR_COMPMASK_BASEVERSION        (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_NR_COMPMASK_CLASSVERSION       (CL_HTON64(((uint64_t)1)<<3))\r
-#define IB_NR_COMPMASK_NODETYPE           (CL_HTON64(((uint64_t)1)<<4))\r
-#define IB_NR_COMPMASK_NUMPORTS           (CL_HTON64(((uint64_t)1)<<5))\r
-#define IB_NR_COMPMASK_SYSIMAGEGUID       (CL_HTON64(((uint64_t)1)<<6))\r
-#define IB_NR_COMPMASK_NODEGUID           (CL_HTON64(((uint64_t)1)<<7))\r
-#define IB_NR_COMPMASK_PORTGUID           (CL_HTON64(((uint64_t)1)<<8))\r
-#define IB_NR_COMPMASK_PARTCAP            (CL_HTON64(((uint64_t)1)<<9))\r
-#define IB_NR_COMPMASK_DEVID              (CL_HTON64(((uint64_t)1)<<10))\r
-#define IB_NR_COMPMASK_REV                (CL_HTON64(((uint64_t)1)<<11))\r
-#define IB_NR_COMPMASK_PORTNUM            (CL_HTON64(((uint64_t)1)<<12))\r
-#define IB_NR_COMPMASK_VENDID             (CL_HTON64(((uint64_t)1)<<13))\r
-#define IB_NR_COMPMASK_NODEDESC           (CL_HTON64(((uint64_t)1)<<14))\r
-\r
-/* Service Record Component Masks Sec 15.2.5.14 Ver 1.1*/\r
-#define IB_SR_COMPMASK_SID                (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_SR_COMPMASK_SGID               (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_SR_COMPMASK_SPKEY              (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_SR_COMPMASK_RES1               (CL_HTON64(((uint64_t)1)<<3))\r
-#define IB_SR_COMPMASK_SLEASE             (CL_HTON64(((uint64_t)1)<<4))\r
-#define IB_SR_COMPMASK_SKEY               (CL_HTON64(((uint64_t)1)<<5))\r
-#define IB_SR_COMPMASK_SNAME              (CL_HTON64(((uint64_t)1)<<6))\r
-#define IB_SR_COMPMASK_SDATA8_0           (CL_HTON64(((uint64_t)1)<<7))\r
-#define IB_SR_COMPMASK_SDATA8_1           (CL_HTON64(((uint64_t)1)<<8))\r
-#define IB_SR_COMPMASK_SDATA8_2           (CL_HTON64(((uint64_t)1)<<9))\r
-#define IB_SR_COMPMASK_SDATA8_3           (CL_HTON64(((uint64_t)1)<<10))\r
-#define IB_SR_COMPMASK_SDATA8_4           (CL_HTON64(((uint64_t)1)<<11))\r
-#define IB_SR_COMPMASK_SDATA8_5           (CL_HTON64(((uint64_t)1)<<12))\r
-#define IB_SR_COMPMASK_SDATA8_6           (CL_HTON64(((uint64_t)1)<<13))\r
-#define IB_SR_COMPMASK_SDATA8_7           (CL_HTON64(((uint64_t)1)<<14))\r
-#define IB_SR_COMPMASK_SDATA8_8           (CL_HTON64(((uint64_t)1)<<15))\r
-#define IB_SR_COMPMASK_SDATA8_9           (CL_HTON64(((uint64_t)1)<<16))\r
-#define IB_SR_COMPMASK_SDATA8_10       (CL_HTON64(((uint64_t)1)<<17))\r
-#define IB_SR_COMPMASK_SDATA8_11       (CL_HTON64(((uint64_t)1)<<18))\r
-#define IB_SR_COMPMASK_SDATA8_12       (CL_HTON64(((uint64_t)1)<<19))\r
-#define IB_SR_COMPMASK_SDATA8_13       (CL_HTON64(((uint64_t)1)<<20))\r
-#define IB_SR_COMPMASK_SDATA8_14       (CL_HTON64(((uint64_t)1)<<21))\r
-#define IB_SR_COMPMASK_SDATA8_15       (CL_HTON64(((uint64_t)1)<<22))\r
-#define IB_SR_COMPMASK_SDATA16_0       (CL_HTON64(((uint64_t)1)<<23))\r
-#define IB_SR_COMPMASK_SDATA16_1       (CL_HTON64(((uint64_t)1)<<24))\r
-#define IB_SR_COMPMASK_SDATA16_2       (CL_HTON64(((uint64_t)1)<<25))\r
-#define IB_SR_COMPMASK_SDATA16_3       (CL_HTON64(((uint64_t)1)<<26))\r
-#define IB_SR_COMPMASK_SDATA16_4       (CL_HTON64(((uint64_t)1)<<27))\r
-#define IB_SR_COMPMASK_SDATA16_5       (CL_HTON64(((uint64_t)1)<<28))\r
-#define IB_SR_COMPMASK_SDATA16_6       (CL_HTON64(((uint64_t)1)<<29))\r
-#define IB_SR_COMPMASK_SDATA16_7       (CL_HTON64(((uint64_t)1)<<30))\r
-#define IB_SR_COMPMASK_SDATA32_0       (CL_HTON64(((uint64_t)1)<<31))\r
-#define IB_SR_COMPMASK_SDATA32_1       (CL_HTON64(((uint64_t)1)<<32))\r
-#define IB_SR_COMPMASK_SDATA32_2       (CL_HTON64(((uint64_t)1)<<33))\r
-#define IB_SR_COMPMASK_SDATA32_3       (CL_HTON64(((uint64_t)1)<<34))\r
-#define IB_SR_COMPMASK_SDATA64_0       (CL_HTON64(((uint64_t)1)<<35))\r
-#define IB_SR_COMPMASK_SDATA64_1       (CL_HTON64(((uint64_t)1)<<36))\r
-\r
-/* Port Info Record Component Masks */\r
-#define IB_PIR_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_PIR_COMPMASK_PORTNUM          (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_PIR_COMPMASK_RESV1            (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_PIR_COMPMASK_MKEY             (CL_HTON64(((uint64_t)1)<<3))\r
-#define IB_PIR_COMPMASK_GIDPRE           (CL_HTON64(((uint64_t)1)<<4))\r
-#define IB_PIR_COMPMASK_BASELID          (CL_HTON64(((uint64_t)1)<<5))\r
-#define IB_PIR_COMPMASK_SMLID            (CL_HTON64(((uint64_t)1)<<6))\r
-#define IB_PIR_COMPMASK_CAPMASK          (CL_HTON64(((uint64_t)1)<<7))\r
-#define IB_PIR_COMPMASK_DIAGCODE         (CL_HTON64(((uint64_t)1)<<8))\r
-#define IB_PIR_COMPMASK_MKEYLEASEPRD     (CL_HTON64(((uint64_t)1)<<9))\r
-#define IB_PIR_COMPMASK_LOCALPORTNUM     (CL_HTON64(((uint64_t)1)<<10))\r
-#define IB_PIR_COMPMASK_LINKWIDTHENABLED (CL_HTON64(((uint64_t)1)<<11))\r
-#define IB_PIR_COMPMASK_LNKWIDTHSUPPORT  (CL_HTON64(((uint64_t)1)<<12))\r
-#define IB_PIR_COMPMASK_LNKWIDTHACTIVE   (CL_HTON64(((uint64_t)1)<<13))\r
-#define IB_PIR_COMPMASK_LNKSPEEDSUPPORT  (CL_HTON64(((uint64_t)1)<<14))\r
-#define IB_PIR_COMPMASK_PORTSTATE        (CL_HTON64(((uint64_t)1)<<15))\r
-#define IB_PIR_COMPMASK_PORTPHYSTATE     (CL_HTON64(((uint64_t)1)<<16))\r
-#define IB_PIR_COMPMASK_LINKDWNDFLTSTATE (CL_HTON64(((uint64_t)1)<<17))\r
-#define IB_PIR_COMPMASK_MKEYPROTBITS     (CL_HTON64(((uint64_t)1)<<18))\r
-#define IB_PIR_COMPMASK_RESV2            (CL_HTON64(((uint64_t)1)<<19))\r
-#define IB_PIR_COMPMASK_LMC              (CL_HTON64(((uint64_t)1)<<20))\r
-#define IB_PIR_COMPMASK_LINKSPEEDACTIVE  (CL_HTON64(((uint64_t)1)<<21))\r
-#define IB_PIR_COMPMASK_LINKSPEEDENABLE  (CL_HTON64(((uint64_t)1)<<22))\r
-#define IB_PIR_COMPMASK_NEIGHBORMTU      (CL_HTON64(((uint64_t)1)<<23))\r
-#define IB_PIR_COMPMASK_MASTERSMSL       (CL_HTON64(((uint64_t)1)<<24))\r
-#define IB_PIR_COMPMASK_VLCAP            (CL_HTON64(((uint64_t)1)<<25))\r
-#define IB_PIR_COMPMASK_INITTYPE         (CL_HTON64(((uint64_t)1)<<26))\r
-#define IB_PIR_COMPMASK_VLHIGHLIMIT      (CL_HTON64(((uint64_t)1)<<27))\r
-#define IB_PIR_COMPMASK_VLARBHIGHCAP     (CL_HTON64(((uint64_t)1)<<28))\r
-#define IB_PIR_COMPMASK_VLARBLOWCAP      (CL_HTON64(((uint64_t)1)<<29))\r
-#define IB_PIR_COMPMASK_INITTYPEREPLY    (CL_HTON64(((uint64_t)1)<<30))\r
-#define IB_PIR_COMPMASK_MTUCAP           (CL_HTON64(((uint64_t)1)<<31))\r
-#define IB_PIR_COMPMASK_VLSTALLCNT       (CL_HTON64(((uint64_t)1)<<32))\r
-#define IB_PIR_COMPMASK_HOQLIFE          (CL_HTON64(((uint64_t)1)<<33))\r
-#define IB_PIR_COMPMASK_OPVLS            (CL_HTON64(((uint64_t)1)<<34))\r
-#define IB_PIR_COMPMASK_PARENFIN         (CL_HTON64(((uint64_t)1)<<35))\r
-#define IB_PIR_COMPMASK_PARENFOUT        (CL_HTON64(((uint64_t)1)<<36))\r
-#define IB_PIR_COMPMASK_FILTERRAWIN      (CL_HTON64(((uint64_t)1)<<37))\r
-#define IB_PIR_COMPMASK_FILTERRAWOUT     (CL_HTON64(((uint64_t)1)<<38))\r
-#define IB_PIR_COMPMASK_MKEYVIO          (CL_HTON64(((uint64_t)1)<<39))\r
-#define IB_PIR_COMPMASK_PKEYVIO          (CL_HTON64(((uint64_t)1)<<40))\r
-#define IB_PIR_COMPMASK_QKEYVIO          (CL_HTON64(((uint64_t)1)<<41))\r
-#define IB_PIR_COMPMASK_GUIDCAP          (CL_HTON64(((uint64_t)1)<<42))\r
-#define IB_PIR_COMPMASK_RESV3            (CL_HTON64(((uint64_t)1)<<43))\r
-#define IB_PIR_COMPMASK_SUBNTO           (CL_HTON64(((uint64_t)1)<<44))\r
-#define IB_PIR_COMPMASK_RESV4            (CL_HTON64(((uint64_t)1)<<45))\r
-#define IB_PIR_COMPMASK_RESPTIME         (CL_HTON64(((uint64_t)1)<<46))\r
-#define IB_PIR_COMPMASK_LOCALPHYERR      (CL_HTON64(((uint64_t)1)<<47))\r
-#define IB_PIR_COMPMASK_OVERRUNERR       (CL_HTON64(((uint64_t)1)<<48))\r
-\r
-/* Multicast Member Record Component Masks */\r
-#define IB_MCR_COMPMASK_GID         (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_MCR_COMPMASK_MGID        (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_MCR_COMPMASK_PORT_GID    (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_MCR_COMPMASK_QKEY        (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_MCR_COMPMASK_MLID        (CL_HTON64(((uint64_t)1)<<3))\r
-#define IB_MCR_COMPMASK_MTU_SEL     (CL_HTON64(((uint64_t)1)<<4))\r
-#define IB_MCR_COMPMASK_MTU         (CL_HTON64(((uint64_t)1)<<5))\r
-#define IB_MCR_COMPMASK_TCLASS      (CL_HTON64(((uint64_t)1)<<6))\r
-#define IB_MCR_COMPMASK_PKEY        (CL_HTON64(((uint64_t)1)<<7))\r
-#define IB_MCR_COMPMASK_RATE_SEL    (CL_HTON64(((uint64_t)1)<<8))\r
-#define IB_MCR_COMPMASK_RATE        (CL_HTON64(((uint64_t)1)<<9))\r
-#define IB_MCR_COMPMASK_LIFE_SEL    (CL_HTON64(((uint64_t)1)<<10))\r
-#define IB_MCR_COMPMASK_LIFE        (CL_HTON64(((uint64_t)1)<<11))\r
-#define IB_MCR_COMPMASK_SL          (CL_HTON64(((uint64_t)1)<<12))\r
-#define IB_MCR_COMPMASK_FLOW        (CL_HTON64(((uint64_t)1)<<13))\r
-#define IB_MCR_COMPMASK_HOP         (CL_HTON64(((uint64_t)1)<<14))\r
-#define IB_MCR_COMPMASK_SCOPE       (CL_HTON64(((uint64_t)1)<<15))\r
-#define IB_MCR_COMPMASK_JOIN_STATE  (CL_HTON64(((uint64_t)1)<<16))\r
-#define IB_MCR_COMPMASK_PROXY       (CL_HTON64(((uint64_t)1)<<17))\r
-\r
-/* GUID Info Record Component Masks */\r
-#define IB_GIR_COMPMASK_LID            (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_GIR_COMPMASK_BLOCKNUM       (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_GIR_COMPMASK_RESV1          (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_GIR_COMPMASK_RESV2          (CL_HTON64(((uint64_t)1)<<3))\r
-#define IB_GIR_COMPMASK_GID0           (CL_HTON64(((uint64_t)1)<<4))\r
-#define IB_GIR_COMPMASK_GID1           (CL_HTON64(((uint64_t)1)<<5))\r
-#define IB_GIR_COMPMASK_GID2           (CL_HTON64(((uint64_t)1)<<6))\r
-#define IB_GIR_COMPMASK_GID3           (CL_HTON64(((uint64_t)1)<<7))\r
-#define IB_GIR_COMPMASK_GID4           (CL_HTON64(((uint64_t)1)<<8))\r
-#define IB_GIR_COMPMASK_GID5           (CL_HTON64(((uint64_t)1)<<9))\r
-#define IB_GIR_COMPMASK_GID6           (CL_HTON64(((uint64_t)1)<<10))\r
-#define IB_GIR_COMPMASK_GID7           (CL_HTON64(((uint64_t)1)<<11))\r
-\r
-/* MultiPath Record Component Masks */\r
-#define IB_MPR_COMPMASK_RAWTRAFFIC     (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_MPR_COMPMASK_RESV0          (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_MPR_COMPMASK_FLOWLABEL      (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_MPR_COMPMASK_HOPLIMIT       (CL_HTON64(((uint64_t)1)<<3))\r
-#define IB_MPR_COMPMASK_TCLASS         (CL_HTON64(((uint64_t)1)<<4))\r
-#define IB_MPR_COMPMASK_REVERSIBLE     (CL_HTON64(((uint64_t)1)<<5))\r
-#define IB_MPR_COMPMASK_NUMBPATH       (CL_HTON64(((uint64_t)1)<<6))\r
-#define IB_MPR_COMPMASK_PKEY           (CL_HTON64(((uint64_t)1)<<7))\r
-#define IB_MPR_COMPMASK_QOS_CLASS      (CL_HTON64(((uint64_t)1)<<8))\r
-#define IB_MPR_COMPMASK_SL             (CL_HTON64(((uint64_t)1)<<9))\r
-#define IB_MPR_COMPMASK_MTUSELEC       (CL_HTON64(((uint64_t)1)<<10))\r
-#define IB_MPR_COMPMASK_MTU            (CL_HTON64(((uint64_t)1)<<11))\r
-#define IB_MPR_COMPMASK_RATESELEC      (CL_HTON64(((uint64_t)1)<<12))\r
-#define IB_MPR_COMPMASK_RATE           (CL_HTON64(((uint64_t)1)<<13))\r
-#define IB_MPR_COMPMASK_PKTLIFETIMESELEC (CL_HTON64(((uint64_t)1)<<14))\r
-#define IB_MPR_COMPMASK_PKTLIFETIME    (CL_HTON64(((uint64_t)1)<<15))\r
-#define IB_MPR_COMPMASK_SERVICEID_MSB  (CL_HTON64(((uint64_t)1)<<16))\r
-#define IB_MPR_COMPMASK_INDEPSELEC     (CL_HTON64(((uint64_t)1)<<17))\r
-#define IB_MPR_COMPMASK_RESV3          (CL_HTON64(((uint64_t)1)<<18))\r
-#define IB_MPR_COMPMASK_SGIDCOUNT      (CL_HTON64(((uint64_t)1)<<19))\r
-#define IB_MPR_COMPMASK_DGIDCOUNT      (CL_HTON64(((uint64_t)1)<<20))\r
-#define IB_MPR_COMPMASK_SERVICEID_LSB  (CL_HTON64(((uint64_t)1)<<21))\r
-\r
-/* SMInfo Record Component Masks */\r
-#define IB_SMIR_COMPMASK_LID           (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_SMIR_COMPMASK_RESV0         (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_SMIR_COMPMASK_GUID          (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_SMIR_COMPMASK_SMKEY         (CL_HTON64(((uint64_t)1)<<3))\r
-#define IB_SMIR_COMPMASK_ACTCOUNT      (CL_HTON64(((uint64_t)1)<<4))\r
-#define IB_SMIR_COMPMASK_PRIORITY      (CL_HTON64(((uint64_t)1)<<5))\r
-#define IB_SMIR_COMPMASK_SMSTATE       (CL_HTON64(((uint64_t)1)<<6))\r
-\r
-/* InformInfo Record Component Masks */\r
-#define IB_IIR_COMPMASK_SUBSCRIBERGID  (CL_HTON64(((uint64_t)1)<<0))\r
-#define IB_IIR_COMPMASK_ENUM           (CL_HTON64(((uint64_t)1)<<1))\r
-#define IB_IIR_COMPMASK_RESV0          (CL_HTON64(((uint64_t)1)<<2))\r
-#define IB_IIR_COMPMASK_GID            (CL_HTON64(((uint64_t)1)<<3))\r
-#define IB_IIR_COMPMASK_LIDRANGEBEGIN  (CL_HTON64(((uint64_t)1)<<4))\r
-#define IB_IIR_COMPMASK_LIDRANGEEND    (CL_HTON64(((uint64_t)1)<<5))\r
-#define IB_IIR_COMPMASK_RESV1          (CL_HTON64(((uint64_t)1)<<6))\r
-#define IB_IIR_COMPMASK_ISGENERIC      (CL_HTON64(((uint64_t)1)<<7))\r
-#define IB_IIR_COMPMASK_SUBSCRIBE      (CL_HTON64(((uint64_t)1)<<8))\r
-#define IB_IIR_COMPMASK_TYPE           (CL_HTON64(((uint64_t)1)<<9))\r
-#define IB_IIR_COMPMASK_TRAPNUMB       (CL_HTON64(((uint64_t)1)<<10))\r
-#define IB_IIR_COMPMASK_DEVICEID       (CL_HTON64(((uint64_t)1)<<10))\r
-#define IB_IIR_COMPMASK_QPN            (CL_HTON64(((uint64_t)1)<<11))\r
-#define IB_IIR_COMPMASK_RESV2          (CL_HTON64(((uint64_t)1)<<12))\r
-#define IB_IIR_COMPMASK_RESPTIME       (CL_HTON64(((uint64_t)1)<<13))\r
-#define IB_IIR_COMPMASK_RESV3          (CL_HTON64(((uint64_t)1)<<14))\r
-#define IB_IIR_COMPMASK_PRODTYPE       (CL_HTON64(((uint64_t)1)<<15))\r
-#define IB_IIR_COMPMASK_VENDID         (CL_HTON64(((uint64_t)1)<<15))\r
-\r
-/****f* IBA Base: Types/ib_path_rec_init_local\r
-* NAME\r
-*      ib_path_rec_init_local\r
-*\r
-* DESCRIPTION\r
-*      Initializes a subnet local path record.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_path_rec_init_local(IN ib_path_rec_t * const p_rec,\r
-                      IN ib_gid_t * const p_dgid,\r
-                      IN ib_gid_t * const p_sgid,\r
-                      IN ib_net16_t dlid,\r
-                      IN ib_net16_t slid,\r
-                      IN uint8_t num_path,\r
-                      IN ib_net16_t pkey,\r
-                      IN uint8_t sl,\r
-                      IN uint16_t qos_class,\r
-                      IN uint8_t mtu_selector,\r
-                      IN uint8_t mtu,\r
-                      IN uint8_t rate_selector,\r
-                      IN uint8_t rate,\r
-                      IN uint8_t pkt_life_selector,\r
-                      IN uint8_t pkt_life, IN uint8_t preference)\r
-{\r
-       p_rec->dgid = *p_dgid;\r
-       p_rec->sgid = *p_sgid;\r
-       p_rec->dlid = dlid;\r
-       p_rec->slid = slid;\r
-       p_rec->num_path = num_path;\r
-       p_rec->pkey = pkey;\r
-       p_rec->qos_class_sl = cl_hton16((sl & IB_PATH_REC_SL_MASK) |\r
-                                       (qos_class << 4));\r
-       p_rec->mtu = (uint8_t) ((mtu & IB_PATH_REC_BASE_MASK) |\r
-                               (uint8_t) (mtu_selector << 6));\r
-       p_rec->rate = (uint8_t) ((rate & IB_PATH_REC_BASE_MASK) |\r
-                                (uint8_t) (rate_selector << 6));\r
-       p_rec->pkt_life = (uint8_t) ((pkt_life & IB_PATH_REC_BASE_MASK) |\r
-                                    (uint8_t) (pkt_life_selector << 6));\r
-       p_rec->preference = preference;\r
-\r
-       /* Clear global routing fields for local path records */\r
-       p_rec->hop_flow_raw = 0;\r
-       p_rec->tclass = 0;\r
-       p_rec->service_id = 0;\r
-\r
-       memset(p_rec->resv2, 0, sizeof(p_rec->resv2));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-*      dgid\r
-*              [in] GID of destination port.\r
-*\r
-*      sgid\r
-*              [in] GID of source port.\r
-*\r
-*      dlid\r
-*              [in] LID of destination port.\r
-*\r
-*      slid\r
-*              [in] LID of source port.\r
-*\r
-*      num_path\r
-*     [in] Reversible path - 1 bit to say if path is reversible.\r
-*              num_path [6:0] In queries, maximum number of paths to return.\r
-*              In responses, undefined.\r
-*\r
-*      pkey\r
-*              [in] Partition key (P_Key) to use on this path.\r
-*\r
-*      qos_class\r
-*              [in] QoS class to use on this path.  Lower 12-bits are valid.\r
-*\r
-*      sl\r
-*              [in] Service level to use on this path.  Lower 4-bits are valid.\r
-*\r
-*      mtu_selector\r
-*              [in] Encoded MTU selector value to use on this path\r
-*\r
-*      mtu\r
-*              [in] Encoded MTU to use on this path\r
-*\r
-*      rate_selector\r
-*              [in] Encoded rate selector value to use on this path.\r
-*\r
-*      rate\r
-*              [in] Encoded rate to use on this path.\r
-*\r
-*      pkt_life_selector\r
-*              [in] Encoded Packet selector value lifetime for this path.\r
-*\r
-*      pkt_life\r
-*              [in] Encoded Packet lifetime for this path.\r
-*\r
-*      preference\r
-*              [in] Indicates the relative merit of this path versus other path\r
-*              records returned from the SA.  Lower numbers are better.\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_gid_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_num_path\r
-* NAME\r
-*      ib_path_rec_num_path\r
-*\r
-* DESCRIPTION\r
-*      Get max number of paths to return.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_rec_num_path(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return (p_rec->num_path & 0x7F);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      Maximum number of paths to return for each unique SGID_DGID combination.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_set_sl\r
-* NAME\r
-*      ib_path_rec_set_sl\r
-*\r
-* DESCRIPTION\r
-*      Set path service level.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_path_rec_set_sl(IN ib_path_rec_t * const p_rec, IN const uint8_t sl)\r
-{\r
-       p_rec->qos_class_sl =\r
-           (p_rec->qos_class_sl & CL_HTON16(IB_PATH_REC_QOS_CLASS_MASK)) |\r
-           cl_hton16(sl & IB_PATH_REC_SL_MASK);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-*      sl\r
-*              [in] Service level to set.\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_sl\r
-* NAME\r
-*      ib_path_rec_sl\r
-*\r
-* DESCRIPTION\r
-*      Get path service level.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_rec_sl(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return (uint8_t)(cl_ntoh16(p_rec->qos_class_sl) & IB_PATH_REC_SL_MASK);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      SL.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_set_qos_class\r
-* NAME\r
-*      ib_path_rec_set_qos_class\r
-*\r
-* DESCRIPTION\r
-*      Set path QoS class.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_path_rec_set_qos_class(IN ib_path_rec_t * const p_rec,\r
-                         IN const uint16_t qos_class)\r
-{\r
-       p_rec->qos_class_sl =\r
-           (p_rec->qos_class_sl & CL_HTON16(IB_PATH_REC_SL_MASK)) |\r
-           cl_hton16(qos_class << 4);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-*      qos_class\r
-*              [in] QoS class to set.\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_qos_class\r
-* NAME\r
-*      ib_path_rec_qos_class\r
-*\r
-* DESCRIPTION\r
-*      Get QoS class.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint16_t OSM_API\r
-ib_path_rec_qos_class(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return (cl_ntoh16(p_rec->qos_class_sl) >> 4);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      QoS class of the path record.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_mtu\r
-* NAME\r
-*      ib_path_rec_mtu\r
-*\r
-* DESCRIPTION\r
-*      Get encoded path MTU.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_rec_mtu(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) (p_rec->mtu & IB_PATH_REC_BASE_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      Encoded path MTU.\r
-*              1: 256\r
-*              2: 512\r
-*              3: 1024\r
-*              4: 2048\r
-*              5: 4096\r
-*              others: reserved\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_mtu_sel\r
-* NAME\r
-*      ib_path_rec_mtu_sel\r
-*\r
-* DESCRIPTION\r
-*      Get encoded path MTU selector.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_rec_mtu_sel(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) ((p_rec->mtu & IB_PATH_REC_SELECTOR_MASK) >> 6));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      Encoded path MTU selector value (for queries).\r
-*              0: greater than MTU specified\r
-*              1: less than MTU specified\r
-*              2: exactly the MTU specified\r
-*              3: largest MTU available\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_rate\r
-* NAME\r
-*      ib_path_rec_rate\r
-*\r
-* DESCRIPTION\r
-*      Get encoded path rate.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_rec_rate(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) (p_rec->rate & IB_PATH_REC_BASE_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      Encoded path rate.\r
-*              2: 2.5 Gb/sec.\r
-*              3: 10 Gb/sec.\r
-*              4: 30 Gb/sec.\r
-*              5: 5 Gb/sec.\r
-*              6: 20 Gb/sec.\r
-*              7: 40 Gb/sec.\r
-*              8: 60 Gb/sec.\r
-*              9: 80 Gb/sec.\r
-*              10: 120 Gb/sec.\r
-*              others: reserved\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_rate_sel\r
-* NAME\r
-*      ib_path_rec_rate_sel\r
-*\r
-* DESCRIPTION\r
-*      Get encoded path rate selector.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_rec_rate_sel(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) ((p_rec->rate & IB_PATH_REC_SELECTOR_MASK) >> 6));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      Encoded path rate selector value (for queries).\r
-*              0: greater than rate specified\r
-*              1: less than rate specified\r
-*              2: exactly the rate specified\r
-*              3: largest rate available\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_pkt_life\r
-* NAME\r
-*      ib_path_rec_pkt_life\r
-*\r
-* DESCRIPTION\r
-*      Get encoded path pkt_life.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_rec_pkt_life(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) (p_rec->pkt_life & IB_PATH_REC_BASE_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      Encoded path pkt_life = 4.096 usec * 2 ** PacketLifeTime.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_pkt_life_sel\r
-* NAME\r
-*      ib_path_rec_pkt_life_sel\r
-*\r
-* DESCRIPTION\r
-*      Get encoded path pkt_lifetime selector.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_rec_pkt_life_sel(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) ((p_rec->pkt_life & IB_PATH_REC_SELECTOR_MASK) >> 6));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      Encoded path pkt_lifetime selector value (for queries).\r
-*              0: greater than rate specified\r
-*              1: less than rate specified\r
-*              2: exactly the rate specified\r
-*              3: smallest packet lifetime available\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_flow_lbl\r
-* NAME\r
-*      ib_path_rec_flow_lbl\r
-*\r
-* DESCRIPTION\r
-*      Get flow label.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint32_t OSM_API\r
-ib_path_rec_flow_lbl(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return (((cl_ntoh32(p_rec->hop_flow_raw) >> 8) & 0x000FFFFF));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      Flow label of the path record.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_rec_hop_limit\r
-* NAME\r
-*      ib_path_rec_hop_limit\r
-*\r
-* DESCRIPTION\r
-*      Get hop limit.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_rec_hop_limit(IN const ib_path_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) (cl_ntoh32(p_rec->hop_flow_raw) & 0x000000FF));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the path record object.\r
-*\r
-* RETURN VALUES\r
-*      Hop limit of the path record.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_path_rec_t\r
-*********/\r
-\r
-/****s* IBA Base: Constants/IB_CLASS_CAP_TRAP\r
-* NAME\r
-*      IB_CLASS_CAP_TRAP\r
-*\r
-* DESCRIPTION\r
-*      ClassPortInfo CapabilityMask bits.  This bit will be set\r
-*      if the class supports Trap() MADs (13.4.8.1).\r
-*\r
-* SEE ALSO\r
-*      ib_class_port_info_t, IB_CLASS_CAP_GETSET\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_CLASS_CAP_TRAP                                      0x0001\r
-/*********/\r
-\r
-/****s* IBA Base: Constants/IB_CLASS_CAP_GETSET\r
-* NAME\r
-*      IB_CLASS_CAP_GETSET\r
-*\r
-* DESCRIPTION\r
-*      ClassPortInfo CapabilityMask bits.  This bit will be set\r
-*      if the class supports Get(Notice) and Set(Notice) MADs (13.4.8.1).\r
-*\r
-* SEE ALSO\r
-*      ib_class_port_info_t, IB_CLASS_CAP_TRAP\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_CLASS_CAP_GETSET                                    0x0002\r
-/*********/\r
-\r
-/****s* IBA Base: Constants/IB_CLASS_RESP_TIME_MASK\r
-* NAME\r
-*      IB_CLASS_RESP_TIME_MASK\r
-*\r
-* DESCRIPTION\r
-*      Mask bits to extract the reponse time value from the\r
-*      resp_time_val field of ib_class_port_info_t.\r
-*\r
-* SEE ALSO\r
-*      ib_class_port_info_t\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_CLASS_RESP_TIME_MASK                                0x1F\r
-/*********/\r
-\r
-/****s* IBA Base: Types/ib_class_port_info_t\r
-* NAME\r
-*      ib_class_port_info_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined ClassPortInfo attribute (13.4.8.1)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_class_port_info {\r
-       uint8_t base_ver;\r
-       uint8_t class_ver;\r
-       ib_net16_t cap_mask;\r
-       ib_net32_t cap_mask2_resp_time;\r
-       ib_gid_t redir_gid;\r
-       ib_net32_t redir_tc_sl_fl;\r
-       ib_net16_t redir_lid;\r
-       ib_net16_t redir_pkey;\r
-       ib_net32_t redir_qp;\r
-       ib_net32_t redir_qkey;\r
-       ib_gid_t trap_gid;\r
-       ib_net32_t trap_tc_sl_fl;\r
-       ib_net16_t trap_lid;\r
-       ib_net16_t trap_pkey;\r
-       ib_net32_t trap_hop_qp;\r
-       ib_net32_t trap_qkey;\r
-} PACK_SUFFIX ib_class_port_info_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      base_ver\r
-*              Maximum supported MAD Base Version.\r
-*\r
-*      class_ver\r
-*              Maximum supported management class version.\r
-*\r
-*      cap_mask\r
-*              Supported capabilities of this management class.\r
-*\r
-*      cap_mask2_resp_time\r
-*              Maximum expected response time and additional\r
-*              supported capabilities of this management class.\r
-*\r
-*      redir_gid\r
-*              GID to use for redirection, or zero\r
-*\r
-*      redir_tc_sl_fl\r
-*              Traffic class, service level and flow label the requester\r
-*              should use if the service is redirected.\r
-*\r
-*      redir_lid\r
-*              LID used for redirection, or zero\r
-*\r
-*      redir_pkey\r
-*              P_Key used for redirection\r
-*\r
-*      redir_qp\r
-*              QP number used for redirection\r
-*\r
-*      redir_qkey\r
-*              Q_Key associated with the redirected QP.  This shall be the\r
-*              well known Q_Key value.\r
-*\r
-*      trap_gid\r
-*              GID value used for trap messages from this service.\r
-*\r
-*      trap_tc_sl_fl\r
-*              Traffic class, service level and flow label used for\r
-*              trap messages originated by this service.\r
-*\r
-*      trap_lid\r
-*              LID used for trap messages, or zero\r
-*\r
-*      trap_pkey\r
-*              P_Key used for trap messages\r
-*\r
-*      trap_hop_qp\r
-*              Hop limit (upper 8 bits) and QP number used for trap messages\r
-*\r
-*      trap_qkey\r
-*              Q_Key associated with the trap messages QP.\r
-*\r
-* SEE ALSO\r
-*      IB_CLASS_CAP_GETSET, IB_CLASS_CAP_TRAP\r
-*\r
-*********/\r
-\r
-#define IB_PM_ALL_PORT_SELECT                  (CL_HTON16(((uint16_t)1)<<8))\r
-#define IB_PM_EXT_WIDTH_SUPPORTED              (CL_HTON16(((uint16_t)1)<<9))\r
-#define IB_PM_EXT_WIDTH_NOIETF_SUP             (CL_HTON16(((uint16_t)1)<<10))\r
-\r
-/****f* IBA Base: Types/ib_class_set_resp_time_val\r
-* NAME\r
-*      ib_class_set_resp_time_val\r
-*\r
-* DESCRIPTION\r
-*      Set maximum expected response time.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_class_set_resp_time_val(IN ib_class_port_info_t * const p_cpi,\r
-                          IN const uint8_t val)\r
-{\r
-       p_cpi->cap_mask2_resp_time =\r
-           (p_cpi->cap_mask2_resp_time & CL_HTON32(~IB_CLASS_RESP_TIME_MASK)) |\r
-           cl_hton32(val & IB_CLASS_RESP_TIME_MASK);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_cpi\r
-*              [in] Pointer to the class port info object.\r
-*\r
-*      val\r
-*              [in] Response time value to set.\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_class_port_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_class_resp_time_val\r
-* NAME\r
-*      ib_class_resp_time_val\r
-*\r
-* DESCRIPTION\r
-*      Get response time value.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_class_resp_time_val(IN ib_class_port_info_t * const p_cpi)\r
-{\r
-       return (uint8_t)(cl_ntoh32(p_cpi->cap_mask2_resp_time) &\r
-                        IB_CLASS_RESP_TIME_MASK);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_cpi\r
-*              [in] Pointer to the class port info object.\r
-*\r
-* RETURN VALUES\r
-*      Response time value.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_class_port_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_class_set_cap_mask2\r
-* NAME\r
-*      ib_class_set_cap_mask2\r
-*\r
-* DESCRIPTION\r
-*      Set ClassPortInfo:CapabilityMask2.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_class_set_cap_mask2(IN ib_class_port_info_t * const p_cpi,\r
-                      IN const uint32_t cap_mask2)\r
-{\r
-       p_cpi->cap_mask2_resp_time = (p_cpi->cap_mask2_resp_time &\r
-               CL_HTON32(IB_CLASS_RESP_TIME_MASK)) |\r
-               cl_hton32(cap_mask2 << 5);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_cpi\r
-*              [in] Pointer to the class port info object.\r
-*\r
-*      cap_mask2\r
-*              [in] CapabilityMask2 value to set.\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_class_port_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_class_cap_mask2\r
-* NAME\r
-*      ib_class_cap_mask2\r
-*\r
-* DESCRIPTION\r
-*      Get ClassPortInfo:CapabilityMask2.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint32_t OSM_API\r
-ib_class_cap_mask2(IN const ib_class_port_info_t * const p_cpi)\r
-{\r
-       return (cl_ntoh32(p_cpi->cap_mask2_resp_time) >> 5);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_cpi\r
-*              [in] Pointer to the class port info object.\r
-*\r
-* RETURN VALUES\r
-*      CapabilityMask2 of the ClassPortInfo.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_class_port_info_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_sm_info_t\r
-* NAME\r
-*      ib_sm_info_t\r
-*\r
-* DESCRIPTION\r
-*      SMInfo structure (14.2.5.13).\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_sm_info {\r
-       ib_net64_t guid;\r
-       ib_net64_t sm_key;\r
-       ib_net32_t act_count;\r
-       uint8_t pri_state;\r
-} PACK_SUFFIX ib_sm_info_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      guid\r
-*              Port GUID for this SM.\r
-*\r
-*      sm_key\r
-*              SM_Key of this SM.\r
-*\r
-*      act_count\r
-*              Activity counter used as a heartbeat.\r
-*\r
-*      pri_state\r
-*              Priority and State information\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_sminfo_get_priority\r
-* NAME\r
-*      ib_sminfo_get_priority\r
-*\r
-* DESCRIPTION\r
-*      Returns the priority value.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_sminfo_get_priority(IN const ib_sm_info_t * const p_smi)\r
-{\r
-       return ((uint8_t) ((p_smi->pri_state & 0xF0) >> 4));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_smi\r
-*              [in] Pointer to the SMInfo Attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the priority value.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_sminfo_get_state\r
-* NAME\r
-*      ib_sminfo_get_state\r
-*\r
-* DESCRIPTION\r
-*      Returns the state value.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_sminfo_get_state(IN const ib_sm_info_t * const p_smi)\r
-{\r
-       return ((uint8_t) (p_smi->pri_state & 0x0F));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_smi\r
-*              [in] Pointer to the SMInfo Attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the state value.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_mad_t\r
-* NAME\r
-*      ib_mad_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined MAD header (13.4.3)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_mad {\r
-       uint8_t base_ver;\r
-       uint8_t mgmt_class;\r
-       uint8_t class_ver;\r
-       uint8_t method;\r
-       ib_net16_t status;\r
-       ib_net16_t class_spec;\r
-       ib_net64_t trans_id;\r
-       ib_net16_t attr_id;\r
-       ib_net16_t resv;\r
-       ib_net32_t attr_mod;\r
-} PACK_SUFFIX ib_mad_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      base_ver\r
-*              MAD base format.\r
-*\r
-*      mgmt_class\r
-*              Class of operation.\r
-*\r
-*      class_ver\r
-*              Version of MAD class-specific format.\r
-*\r
-*      method\r
-*              Method to perform, including 'R' bit.\r
-*\r
-*      status\r
-*              Status of operation.\r
-*\r
-*      class_spec\r
-*              Reserved for subnet management.\r
-*\r
-*      trans_id\r
-*              Transaction ID.\r
-*\r
-*      attr_id\r
-*              Attribute ID.\r
-*\r
-*      resv\r
-*              Reserved field.\r
-*\r
-*      attr_mod\r
-*              Attribute modifier.\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_rmpp_mad_t\r
-* NAME\r
-*      ib_rmpp_mad_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined MAD RMPP header (13.6.2.1)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_rmpp_mad {\r
-       ib_mad_t common_hdr;\r
-       uint8_t rmpp_version;\r
-       uint8_t rmpp_type;\r
-       uint8_t rmpp_flags;\r
-       uint8_t rmpp_status;\r
-       ib_net32_t seg_num;\r
-       ib_net32_t paylen_newwin;\r
-} PACK_SUFFIX ib_rmpp_mad_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* SEE ALSO\r
-*      ib_mad_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_mad_init_new\r
-* NAME\r
-*      ib_mad_init_new\r
-*\r
-* DESCRIPTION\r
-*      Initializes a MAD common header.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_mad_init_new(IN ib_mad_t * const p_mad,\r
-               IN const uint8_t mgmt_class,\r
-               IN const uint8_t class_ver,\r
-               IN const uint8_t method,\r
-               IN const ib_net64_t trans_id,\r
-               IN const ib_net16_t attr_id, IN const ib_net32_t attr_mod)\r
-{\r
-       CL_ASSERT(p_mad);\r
-       p_mad->base_ver = 1;\r
-       p_mad->mgmt_class = mgmt_class;\r
-       p_mad->class_ver = class_ver;\r
-       p_mad->method = method;\r
-       p_mad->status = 0;\r
-       p_mad->class_spec = 0;\r
-       p_mad->trans_id = trans_id;\r
-       p_mad->attr_id = attr_id;\r
-       p_mad->resv = 0;\r
-       p_mad->attr_mod = attr_mod;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_mad\r
-*              [in] Pointer to the MAD common header.\r
-*\r
-*      mgmt_class\r
-*              [in] Class of operation.\r
-*\r
-*      class_ver\r
-*              [in] Version of MAD class-specific format.\r
-*\r
-*      method\r
-*              [in] Method to perform, including 'R' bit.\r
-*\r
-*      trans_Id\r
-*              [in] Transaction ID.\r
-*\r
-*      attr_id\r
-*              [in] Attribute ID.\r
-*\r
-*      attr_mod\r
-*              [in] Attribute modifier.\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_mad_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_mad_init_response\r
-* NAME\r
-*      ib_mad_init_response\r
-*\r
-* DESCRIPTION\r
-*      Initializes a MAD common header as a response.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_mad_init_response(IN const ib_mad_t * const p_req_mad,\r
-                    IN ib_mad_t * const p_mad, IN const ib_net16_t status)\r
-{\r
-       CL_ASSERT(p_req_mad);\r
-       CL_ASSERT(p_mad);\r
-       *p_mad = *p_req_mad;\r
-       p_mad->status = status;\r
-       if (p_mad->method == IB_MAD_METHOD_SET)\r
-               p_mad->method = IB_MAD_METHOD_GET;\r
-       p_mad->method |= IB_MAD_METHOD_RESP_MASK;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_req_mad\r
-*              [in] Pointer to the MAD common header in the original request MAD.\r
-*\r
-*      p_mad\r
-*              [in] Pointer to the MAD common header to initialize.\r
-*\r
-*      status\r
-*              [in] MAD Status value to return;\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*      p_req_mad and p_mad may point to the same MAD.\r
-*\r
-* SEE ALSO\r
-*      ib_mad_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_mad_is_response\r
-* NAME\r
-*      ib_mad_is_response\r
-*\r
-* DESCRIPTION\r
-*      Returns TRUE if the MAD is a response ('R' bit set)\r
-*      or if the MAD is a TRAP REPRESS,\r
-*      FALSE otherwise.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_mad_is_response(IN const ib_mad_t * const p_mad)\r
-{\r
-       CL_ASSERT(p_mad);\r
-       return (p_mad->method & IB_MAD_METHOD_RESP_MASK ||\r
-               p_mad->method == IB_MAD_METHOD_TRAP_REPRESS);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_mad\r
-*              [in] Pointer to the MAD.\r
-*\r
-* RETURN VALUES\r
-*      Returns TRUE if the MAD is a response ('R' bit set),\r
-*      FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_mad_t\r
-*********/\r
-\r
-#define IB_RMPP_TYPE_DATA              1\r
-#define IB_RMPP_TYPE_ACK               2\r
-#define IB_RMPP_TYPE_STOP              3\r
-#define IB_RMPP_TYPE_ABORT             4\r
-\r
-#define IB_RMPP_NO_RESP_TIME           0x1F\r
-#define IB_RMPP_FLAG_ACTIVE            0x01\r
-#define IB_RMPP_FLAG_FIRST             0x02\r
-#define IB_RMPP_FLAG_LAST              0x04\r
-\r
-#define IB_RMPP_STATUS_SUCCESS         0\r
-#define IB_RMPP_STATUS_RESX            1       /* resources exhausted */\r
-#define IB_RMPP_STATUS_T2L             118     /* time too long */\r
-#define IB_RMPP_STATUS_BAD_LEN         119     /* incon. last and payload len */\r
-#define IB_RMPP_STATUS_BAD_SEG         120     /* incon. first and segment no */\r
-#define IB_RMPP_STATUS_BADT            121     /* bad rmpp type */\r
-#define IB_RMPP_STATUS_W2S             122     /* newwindowlast too small */\r
-#define IB_RMPP_STATUS_S2B             123     /* segment no too big */\r
-#define IB_RMPP_STATUS_BAD_STATUS      124     /* illegal status */\r
-#define IB_RMPP_STATUS_UNV             125     /* unsupported version */\r
-#define IB_RMPP_STATUS_TMR             126     /* too many retries */\r
-#define IB_RMPP_STATUS_UNSPEC          127     /* unspecified */\r
-\r
-/****f* IBA Base: Types/ib_rmpp_is_flag_set\r
-* NAME\r
-*      ib_rmpp_is_flag_set\r
-*\r
-* DESCRIPTION\r
-*      Returns TRUE if the MAD has the given RMPP flag set.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_rmpp_is_flag_set(IN const ib_rmpp_mad_t * const p_rmpp_mad,\r
-                   IN const uint8_t flag)\r
-{\r
-       CL_ASSERT(p_rmpp_mad);\r
-       return ((p_rmpp_mad->rmpp_flags & flag) == flag);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      ib_rmpp_mad_t\r
-*              [in] Pointer to a MAD with an RMPP header.\r
-*\r
-*      flag\r
-*              [in] The RMPP flag being examined.\r
-*\r
-* RETURN VALUES\r
-*      Returns TRUE if the MAD has the given RMPP flag set.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_mad_t, ib_rmpp_mad_t\r
-*********/\r
-\r
-static inline void OSM_API\r
-ib_rmpp_set_resp_time(IN ib_rmpp_mad_t * const p_rmpp_mad,\r
-                     IN const uint8_t resp_time)\r
-{\r
-       CL_ASSERT(p_rmpp_mad);\r
-       p_rmpp_mad->rmpp_flags |= (resp_time << 3);\r
-}\r
-\r
-static inline uint8_t OSM_API\r
-ib_rmpp_get_resp_time(IN const ib_rmpp_mad_t * const p_rmpp_mad)\r
-{\r
-       CL_ASSERT(p_rmpp_mad);\r
-       return ((uint8_t) (p_rmpp_mad->rmpp_flags >> 3));\r
-}\r
-\r
-/****d* IBA Base: Constants/IB_SMP_DIRECTION\r
-* NAME\r
-*      IB_SMP_DIRECTION\r
-*\r
-* DESCRIPTION\r
-*      The Direction bit for directed route SMPs.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMP_DIRECTION_HO            0x8000\r
-#define IB_SMP_DIRECTION               (CL_HTON16(IB_SMP_DIRECTION_HO))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMP_STATUS_MASK\r
-* NAME\r
-*      IB_SMP_STATUS_MASK\r
-*\r
-* DESCRIPTION\r
-*      Mask value for extracting status from a directed route SMP.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMP_STATUS_MASK_HO          0x7FFF\r
-#define IB_SMP_STATUS_MASK             (CL_HTON16(IB_SMP_STATUS_MASK_HO))\r
-/**********/\r
-\r
-/****s* IBA Base: Types/ib_smp_t\r
-* NAME\r
-*      ib_smp_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined SMP. (14.2.1.2)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#define IB_SMP_DATA_SIZE 64\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_smp {\r
-       uint8_t base_ver;\r
-       uint8_t mgmt_class;\r
-       uint8_t class_ver;\r
-       uint8_t method;\r
-       ib_net16_t status;\r
-       uint8_t hop_ptr;\r
-       uint8_t hop_count;\r
-       ib_net64_t trans_id;\r
-       ib_net16_t attr_id;\r
-       ib_net16_t resv;\r
-       ib_net32_t attr_mod;\r
-       ib_net64_t m_key;\r
-       ib_net16_t dr_slid;\r
-       ib_net16_t dr_dlid;\r
-       uint32_t resv1[7];\r
-       uint8_t data[IB_SMP_DATA_SIZE];\r
-       uint8_t initial_path[IB_SUBNET_PATH_HOPS_MAX];\r
-       uint8_t return_path[IB_SUBNET_PATH_HOPS_MAX];\r
-} PACK_SUFFIX ib_smp_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      base_ver\r
-*              MAD base format.\r
-*\r
-*      mgmt_class\r
-*              Class of operation.\r
-*\r
-*      class_ver\r
-*              Version of MAD class-specific format.\r
-*\r
-*      method\r
-*              Method to perform, including 'R' bit.\r
-*\r
-*      status\r
-*              Status of operation.\r
-*\r
-*      hop_ptr\r
-*              Hop pointer for directed route MADs.\r
-*\r
-*      hop_count\r
-*              Hop count for directed route MADs.\r
-*\r
-*      trans_Id\r
-*              Transaction ID.\r
-*\r
-*      attr_id\r
-*              Attribute ID.\r
-*\r
-*      resv\r
-*              Reserved field.\r
-*\r
-*      attr_mod\r
-*              Attribute modifier.\r
-*\r
-*      m_key\r
-*              Management key value.\r
-*\r
-*      dr_slid\r
-*              Directed route source LID.\r
-*\r
-*      dr_dlid\r
-*              Directed route destination LID.\r
-*\r
-*      resv0\r
-*              Reserved for 64 byte alignment.\r
-*\r
-*      data\r
-*              MAD data payload.\r
-*\r
-*      initial_path\r
-*              Outbound port list.\r
-*\r
-*      return_path\r
-*              Inbound port list.\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_smp_get_status\r
-* NAME\r
-*      ib_smp_get_status\r
-*\r
-* DESCRIPTION\r
-*      Returns the SMP status value in network order.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net16_t OSM_API\r
-ib_smp_get_status(IN const ib_smp_t * const p_smp)\r
-{\r
-       return ((ib_net16_t) (p_smp->status & IB_SMP_STATUS_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_smp\r
-*              [in] Pointer to the SMP packet.\r
-*\r
-* RETURN VALUES\r
-*      Returns the SMP status value in network order.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_smp_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_smp_is_response\r
-* NAME\r
-*      ib_smp_is_response\r
-*\r
-* DESCRIPTION\r
-*      Returns TRUE if the SMP is a response MAD, FALSE otherwise.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_smp_is_response(IN const ib_smp_t * const p_smp)\r
-{\r
-       return (ib_mad_is_response((const ib_mad_t *)p_smp));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_smp\r
-*              [in] Pointer to the SMP packet.\r
-*\r
-* RETURN VALUES\r
-*      Returns TRUE if the SMP is a response MAD, FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_smp_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_smp_is_d\r
-* NAME\r
-*      ib_smp_is_d\r
-*\r
-* DESCRIPTION\r
-*      Returns TRUE if the SMP 'D' (direction) bit is set.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API ib_smp_is_d(IN const ib_smp_t * const p_smp)\r
-{\r
-       return ((p_smp->status & IB_SMP_DIRECTION) == IB_SMP_DIRECTION);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_smp\r
-*              [in] Pointer to the SMP packet.\r
-*\r
-* RETURN VALUES\r
-*      Returns TRUE if the SMP 'D' (direction) bit is set.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_smp_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_smp_init_new\r
-* NAME\r
-*      ib_smp_init_new\r
-*\r
-* DESCRIPTION\r
-*      Initializes a MAD common header.\r
-*\r
-* TODO\r
-*      This is too big for inlining, but leave it here for now\r
-*      since there is not yet another convenient spot.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_smp_init_new(IN ib_smp_t * const p_smp,\r
-               IN const uint8_t method,\r
-               IN const ib_net64_t trans_id,\r
-               IN const ib_net16_t attr_id,\r
-               IN const ib_net32_t attr_mod,\r
-               IN const uint8_t hop_count,\r
-               IN const ib_net64_t m_key,\r
-               IN const uint8_t * path_out,\r
-               IN const ib_net16_t dr_slid, IN const ib_net16_t dr_dlid)\r
-{\r
-       CL_ASSERT(p_smp);\r
-       CL_ASSERT(hop_count < IB_SUBNET_PATH_HOPS_MAX);\r
-       p_smp->base_ver = 1;\r
-       p_smp->mgmt_class = IB_MCLASS_SUBN_DIR;\r
-       p_smp->class_ver = 1;\r
-       p_smp->method = method;\r
-       p_smp->status = 0;\r
-       p_smp->hop_ptr = 0;\r
-       p_smp->hop_count = hop_count;\r
-       p_smp->trans_id = trans_id;\r
-       p_smp->attr_id = attr_id;\r
-       p_smp->resv = 0;\r
-       p_smp->attr_mod = attr_mod;\r
-       p_smp->m_key = m_key;\r
-       p_smp->dr_slid = dr_slid;\r
-       p_smp->dr_dlid = dr_dlid;\r
-\r
-       memset(p_smp->resv1, 0,\r
-              sizeof(p_smp->resv1) +\r
-              sizeof(p_smp->data) +\r
-              sizeof(p_smp->initial_path) + sizeof(p_smp->return_path));\r
-\r
-       /* copy the path */\r
-       memcpy(&p_smp->initial_path, path_out, sizeof(p_smp->initial_path));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_smp\r
-*              [in] Pointer to the SMP packet.\r
-*\r
-*      method\r
-*              [in] Method to perform, including 'R' bit.\r
-*\r
-*      trans_Id\r
-*              [in] Transaction ID.\r
-*\r
-*      attr_id\r
-*              [in] Attribute ID.\r
-*\r
-*      attr_mod\r
-*              [in] Attribute modifier.\r
-*\r
-*      hop_count\r
-*              [in] Number of hops in the path.\r
-*\r
-*      m_key\r
-*              [in] Management key for this SMP.\r
-*\r
-*      path_out\r
-*              [in] Port array for outbound path.\r
-*\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*      Payload area is initialized to zero.\r
-*\r
-*\r
-* SEE ALSO\r
-*      ib_mad_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_smp_get_payload_ptr\r
-* NAME\r
-*      ib_smp_get_payload_ptr\r
-*\r
-* DESCRIPTION\r
-*      Gets a pointer to the SMP payload area.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void *OSM_API\r
-ib_smp_get_payload_ptr(IN const ib_smp_t * const p_smp)\r
-{\r
-       return ((void *)p_smp->data);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_smp\r
-*              [in] Pointer to the SMP packet.\r
-*\r
-* RETURN VALUES\r
-*      Pointer to SMP payload area.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_mad_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_node_info_t\r
-* NAME\r
-*      ib_node_info_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined NodeInfo. (14.2.5.3)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_node_info {\r
-       uint8_t base_version;\r
-       uint8_t class_version;\r
-       uint8_t node_type;\r
-       uint8_t num_ports;\r
-       ib_net64_t sys_guid;\r
-       ib_net64_t node_guid;\r
-       ib_net64_t port_guid;\r
-       ib_net16_t partition_cap;\r
-       ib_net16_t device_id;\r
-       ib_net32_t revision;\r
-       ib_net32_t port_num_vendor_id;\r
-} PACK_SUFFIX ib_node_info_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-/****s* IBA Base: Types/ib_sa_mad_t\r
-* NAME\r
-*      ib_sa_mad_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined SA MAD format. (15.2.1)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#define IB_SA_DATA_SIZE 200\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_sa_mad {\r
-       uint8_t base_ver;\r
-       uint8_t mgmt_class;\r
-       uint8_t class_ver;\r
-       uint8_t method;\r
-       ib_net16_t status;\r
-       ib_net16_t resv;\r
-       ib_net64_t trans_id;\r
-       ib_net16_t attr_id;\r
-       ib_net16_t resv1;\r
-       ib_net32_t attr_mod;\r
-       uint8_t rmpp_version;\r
-       uint8_t rmpp_type;\r
-       uint8_t rmpp_flags;\r
-       uint8_t rmpp_status;\r
-       ib_net32_t seg_num;\r
-       ib_net32_t paylen_newwin;\r
-       ib_net64_t sm_key;\r
-       ib_net16_t attr_offset;\r
-       ib_net16_t resv3;\r
-       ib_net64_t comp_mask;\r
-       uint8_t data[IB_SA_DATA_SIZE];\r
-} PACK_SUFFIX ib_sa_mad_t;\r
-#include <complib/cl_packoff.h>\r
-/**********/\r
-#define IB_SA_MAD_HDR_SIZE (sizeof(ib_sa_mad_t) - IB_SA_DATA_SIZE)\r
-\r
-static inline uint32_t OSM_API ib_get_attr_size(IN const ib_net16_t attr_offset)\r
-{\r
-       return (((uint32_t) cl_ntoh16(attr_offset)) << 3);\r
-}\r
-\r
-static inline ib_net16_t OSM_API ib_get_attr_offset(IN const uint32_t attr_size)\r
-{\r
-       return (cl_hton16((uint16_t) (attr_size >> 3)));\r
-}\r
-\r
-/****f* IBA Base: Types/ib_sa_mad_get_payload_ptr\r
-* NAME\r
-*      ib_sa_mad_get_payload_ptr\r
-*\r
-* DESCRIPTION\r
-*      Gets a pointer to the SA MAD's payload area.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void *OSM_API\r
-ib_sa_mad_get_payload_ptr(IN const ib_sa_mad_t * const p_sa_mad)\r
-{\r
-       return ((void *)p_sa_mad->data);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_sa_mad\r
-*              [in] Pointer to the SA MAD packet.\r
-*\r
-* RETURN VALUES\r
-*      Pointer to SA MAD payload area.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_mad_t\r
-*********/\r
-\r
-#define IB_NODE_INFO_PORT_NUM_MASK             (CL_HTON32(0xFF000000))\r
-#define IB_NODE_INFO_VEND_ID_MASK              (CL_HTON32(0x00FFFFFF))\r
-#if CPU_LE\r
-#define IB_NODE_INFO_PORT_NUM_SHIFT 0\r
-#else\r
-#define IB_NODE_INFO_PORT_NUM_SHIFT 24\r
-#endif\r
-\r
-/****f* IBA Base: Types/ib_node_info_get_local_port_num\r
-* NAME\r
-*      ib_node_info_get_local_port_num\r
-*\r
-* DESCRIPTION\r
-*      Gets a the local port number from the NodeInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_node_info_get_local_port_num(IN const ib_node_info_t * const p_ni)\r
-{\r
-       return ((uint8_t) ((p_ni->port_num_vendor_id &\r
-                           IB_NODE_INFO_PORT_NUM_MASK)\r
-                          >> IB_NODE_INFO_PORT_NUM_SHIFT));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ni\r
-*              [in] Pointer to a NodeInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Local port number that returned the attribute.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_node_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_node_info_get_vendor_id\r
-* NAME\r
-*      ib_node_info_get_vendor_id\r
-*\r
-* DESCRIPTION\r
-*      Gets the VendorID from the NodeInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net32_t OSM_API\r
-ib_node_info_get_vendor_id(IN const ib_node_info_t * const p_ni)\r
-{\r
-       return ((ib_net32_t) (p_ni->port_num_vendor_id &\r
-                             IB_NODE_INFO_VEND_ID_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ni\r
-*              [in] Pointer to a NodeInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      VendorID that returned the attribute.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_node_info_t\r
-*********/\r
-\r
-#define IB_NODE_DESCRIPTION_SIZE 64\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_node_desc {\r
-       // Node String is an array of UTF-8 characters\r
-       // that describe the node in text format\r
-       // Note that this string is NOT NULL TERMINATED!\r
-       uint8_t description[IB_NODE_DESCRIPTION_SIZE];\r
-} PACK_SUFFIX ib_node_desc_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_node_record_t {\r
-       ib_net16_t lid;\r
-       ib_net16_t resv;\r
-       ib_node_info_t node_info;\r
-       ib_node_desc_t node_desc;\r
-       uint8_t pad[4];\r
-} PACK_SUFFIX ib_node_record_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****s* IBA Base: Types/ib_port_info_t\r
-* NAME\r
-*      ib_port_info_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined PortInfo. (14.2.5.6)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_port_info {\r
-       ib_net64_t m_key;\r
-       ib_net64_t subnet_prefix;\r
-       ib_net16_t base_lid;\r
-       ib_net16_t master_sm_base_lid;\r
-       ib_net32_t capability_mask;\r
-       ib_net16_t diag_code;\r
-       ib_net16_t m_key_lease_period;\r
-       uint8_t local_port_num;\r
-       uint8_t link_width_enabled;\r
-       uint8_t link_width_supported;\r
-       uint8_t link_width_active;\r
-       uint8_t state_info1;    /* LinkSpeedSupported and PortState */\r
-       uint8_t state_info2;    /* PortPhysState and LinkDownDefaultState */\r
-       uint8_t mkey_lmc;\r
-       uint8_t link_speed;     /* LinkSpeedEnabled and LinkSpeedActive */\r
-       uint8_t mtu_smsl;\r
-       uint8_t vl_cap;         /* VLCap and InitType */\r
-       uint8_t vl_high_limit;\r
-       uint8_t vl_arb_high_cap;\r
-       uint8_t vl_arb_low_cap;\r
-       uint8_t mtu_cap;\r
-       uint8_t vl_stall_life;\r
-       uint8_t vl_enforce;\r
-       ib_net16_t m_key_violations;\r
-       ib_net16_t p_key_violations;\r
-       ib_net16_t q_key_violations;\r
-       uint8_t guid_cap;\r
-       uint8_t subnet_timeout; /* cli_rereg(1b), mcast_pkey_trap_suppr(1b), resrv(1b), timeout(5b) */\r
-       uint8_t resp_time_value;\r
-       uint8_t error_threshold; /* local phy errors(4b), overrun errors(4b) */\r
-       ib_net16_t max_credit_hint;\r
-       ib_net32_t link_rt_latency; /* reserv(8b), link round trip lat(24b) */\r
-} PACK_SUFFIX ib_port_info_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-#define IB_PORT_STATE_MASK                     0x0F\r
-#define IB_PORT_LMC_MASK                       0x07\r
-#define IB_PORT_LMC_MAX                                0x07\r
-#define IB_PORT_MPB_MASK                       0xC0\r
-#define IB_PORT_MPB_SHIFT                      6\r
-#define IB_PORT_LINK_SPEED_SHIFT               4\r
-#define IB_PORT_LINK_SPEED_SUPPORTED_MASK      0xF0\r
-#define IB_PORT_LINK_SPEED_ACTIVE_MASK         0xF0\r
-#define IB_PORT_LINK_SPEED_ENABLED_MASK                0x0F\r
-#define IB_PORT_PHYS_STATE_MASK                        0xF0\r
-#define IB_PORT_PHYS_STATE_SHIFT               4\r
-#define IB_PORT_PHYS_STATE_NO_CHANGE           0\r
-#define IB_PORT_PHYS_STATE_SLEEP               1\r
-#define IB_PORT_PHYS_STATE_POLLING             2\r
-#define IB_PORT_PHYS_STATE_DISABLED            3\r
-#define IB_PORT_PHYS_STATE_PORTCONFTRAIN       4\r
-#define IB_PORT_PHYS_STATE_LINKUP              5\r
-#define IB_PORT_PHYS_STATE_LINKERRRECOVER      6\r
-#define IB_PORT_PHYS_STATE_PHYTEST             7\r
-#define IB_PORT_LNKDWNDFTSTATE_MASK            0x0F\r
-\r
-#define IB_PORT_CAP_RESV0         (CL_HTON32(0x00000001))\r
-#define IB_PORT_CAP_IS_SM         (CL_HTON32(0x00000002))\r
-#define IB_PORT_CAP_HAS_NOTICE    (CL_HTON32(0x00000004))\r
-#define IB_PORT_CAP_HAS_TRAP      (CL_HTON32(0x00000008))\r
-#define IB_PORT_CAP_HAS_IPD       (CL_HTON32(0x00000010))\r
-#define IB_PORT_CAP_HAS_AUTO_MIG  (CL_HTON32(0x00000020))\r
-#define IB_PORT_CAP_HAS_SL_MAP    (CL_HTON32(0x00000040))\r
-#define IB_PORT_CAP_HAS_NV_MKEY   (CL_HTON32(0x00000080))\r
-#define IB_PORT_CAP_HAS_NV_PKEY   (CL_HTON32(0x00000100))\r
-#define IB_PORT_CAP_HAS_LED_INFO  (CL_HTON32(0x00000200))\r
-#define IB_PORT_CAP_SM_DISAB      (CL_HTON32(0x00000400))\r
-#define IB_PORT_CAP_HAS_SYS_IMG_GUID  (CL_HTON32(0x00000800))\r
-#define IB_PORT_CAP_HAS_PKEY_SW_EXT_PORT_TRAP (CL_HTON32(0x00001000))\r
-#define IB_PORT_CAP_RESV13        (CL_HTON32(0x00002000))\r
-#define IB_PORT_CAP_RESV14        (CL_HTON32(0x00004000))\r
-#define IB_PORT_CAP_RESV15        (CL_HTON32(0x00008000))\r
-#define IB_PORT_CAP_HAS_COM_MGT   (CL_HTON32(0x00010000))\r
-#define IB_PORT_CAP_HAS_SNMP      (CL_HTON32(0x00020000))\r
-#define IB_PORT_CAP_REINIT        (CL_HTON32(0x00040000))\r
-#define IB_PORT_CAP_HAS_DEV_MGT   (CL_HTON32(0x00080000))\r
-#define IB_PORT_CAP_HAS_VEND_CLS  (CL_HTON32(0x00100000))\r
-#define IB_PORT_CAP_HAS_DR_NTC    (CL_HTON32(0x00200000))\r
-#define IB_PORT_CAP_HAS_CAP_NTC   (CL_HTON32(0x00400000))\r
-#define IB_PORT_CAP_HAS_BM        (CL_HTON32(0x00800000))\r
-#define IB_PORT_CAP_HAS_LINK_RT_LATENCY (CL_HTON32(0x01000000))\r
-#define IB_PORT_CAP_HAS_CLIENT_REREG (CL_HTON32(0x02000000))\r
-#define IB_PORT_CAP_HAS_OTHER_LOCAL_CHANGES_NTC (CL_HTON32(0x04000000))\r
-#define IB_PORT_CAP_HAS_LINK_SPEED_WIDTH_PAIRS_TBL (CL_HTON32(0x08000000))\r
-#define IB_PORT_CAP_HAS_VEND_MADS (CL_HTON32(0x10000000))\r
-#define IB_PORT_CAP_HAS_MCAST_PKEY_TRAP_SUPPRESS (CL_HTON32(0x20000000))\r
-#define IB_PORT_CAP_HAS_MCAST_FDB_TOP (CL_HTON32(0x40000000))\r
-#define IB_PORT_CAP_HAS_HIER_INFO (CL_HTON32(0x80000000))\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_port_state\r
-* NAME\r
-*      ib_port_info_get_port_state\r
-*\r
-* DESCRIPTION\r
-*      Returns the port state.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_port_state(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) (p_pi->state_info1 & IB_PORT_STATE_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Port state.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_port_state\r
-* NAME\r
-*      ib_port_info_set_port_state\r
-*\r
-* DESCRIPTION\r
-*      Sets the port state.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_port_state(IN ib_port_info_t * const p_pi,\r
-                           IN const uint8_t port_state)\r
-{\r
-       p_pi->state_info1 = (uint8_t) ((p_pi->state_info1 & 0xF0) | port_state);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      port_state\r
-*              [in] Port state value to set.\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_vl_cap\r
-* NAME\r
-*      ib_port_info_get_vl_cap\r
-*\r
-* DESCRIPTION\r
-*      Gets the VL Capability of a port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_vl_cap(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((p_pi->vl_cap >> 4) & 0x0F);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      VL_CAP field\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_init_type\r
-* NAME\r
-*      ib_port_info_get_init_type\r
-*\r
-* DESCRIPTION\r
-*      Gets the init type of a port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_init_type(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return (uint8_t) (p_pi->vl_cap & 0x0F);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      InitType field\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_op_vls\r
-* NAME\r
-*      ib_port_info_get_op_vls\r
-*\r
-* DESCRIPTION\r
-*      Gets the operational VLs on a port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_op_vls(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((p_pi->vl_enforce >> 4) & 0x0F);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      OP_VLS field\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_op_vls\r
-* NAME\r
-*      ib_port_info_set_op_vls\r
-*\r
-* DESCRIPTION\r
-*      Sets the operational VLs on a port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_op_vls(IN ib_port_info_t * const p_pi, IN const uint8_t op_vls)\r
-{\r
-       p_pi->vl_enforce =\r
-           (uint8_t) ((p_pi->vl_enforce & 0x0F) | (op_vls << 4));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      op_vls\r
-*              [in] Encoded operation VLs value.\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_state_no_change\r
-* NAME\r
-*      ib_port_info_set_state_no_change\r
-*\r
-* DESCRIPTION\r
-*      Sets the port state fields to the value for "no change".\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_state_no_change(IN ib_port_info_t * const p_pi)\r
-{\r
-       ib_port_info_set_port_state(p_pi, IB_LINK_NO_CHANGE);\r
-       p_pi->state_info2 = 0;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_link_speed_sup\r
-* NAME\r
-*      ib_port_info_get_link_speed_sup\r
-*\r
-* DESCRIPTION\r
-*      Returns the encoded value for the link speed supported.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_link_speed_sup(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) ((p_pi->state_info1 &\r
-                           IB_PORT_LINK_SPEED_SUPPORTED_MASK) >>\r
-                          IB_PORT_LINK_SPEED_SHIFT));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the encoded value for the link speed supported.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_link_speed_sup\r
-* NAME\r
-*      ib_port_info_set_link_speed_sup\r
-*\r
-* DESCRIPTION\r
-*      Given an integer of the supported link speed supported.\r
-*      Set the appropriate bits in state_info1\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_link_speed_sup(IN uint8_t const speed,\r
-                               IN ib_port_info_t * p_pi)\r
-{\r
-       p_pi->state_info1 =\r
-           (~IB_PORT_LINK_SPEED_SUPPORTED_MASK & p_pi->state_info1) |\r
-           (IB_PORT_LINK_SPEED_SUPPORTED_MASK &\r
-            (speed << IB_PORT_LINK_SPEED_SHIFT));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      speed\r
-*              [in] Supported Speeds Code.\r
-*\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      This function does not return a value.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_port_phys_state\r
-* NAME\r
-*      ib_port_info_get_port_phys_state\r
-*\r
-* DESCRIPTION\r
-*      Returns the encoded value for the port physical state.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_port_phys_state(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) ((p_pi->state_info2 &\r
-                           IB_PORT_PHYS_STATE_MASK) >>\r
-                          IB_PORT_PHYS_STATE_SHIFT));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the encoded value for the port physical state.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_port_phys_state\r
-* NAME\r
-*      ib_port_info_set_port_phys_state\r
-*\r
-* DESCRIPTION\r
-*      Given an integer of the port physical state,\r
-*      Set the appropriate bits in state_info2\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_port_phys_state(IN uint8_t const phys_state,\r
-                                IN ib_port_info_t * p_pi)\r
-{\r
-       p_pi->state_info2 =\r
-           (~IB_PORT_PHYS_STATE_MASK & p_pi->state_info2) |\r
-           (IB_PORT_PHYS_STATE_MASK &\r
-            (phys_state << IB_PORT_PHYS_STATE_SHIFT));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      phys_state\r
-*              [in] port physical state.\r
-*\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      This function does not return a value.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_link_down_def_state\r
-* NAME\r
-*      ib_port_info_get_link_down_def_state\r
-*\r
-* DESCRIPTION\r
-*      Returns the link down default state.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_link_down_def_state(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) (p_pi->state_info2 & IB_PORT_LNKDWNDFTSTATE_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      link down default state of the port.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_link_down_def_state\r
-* NAME\r
-*      ib_port_info_set_link_down_def_state\r
-*\r
-* DESCRIPTION\r
-*      Sets the link down default state of the port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_link_down_def_state(IN ib_port_info_t * const p_pi,\r
-                                    IN const uint8_t link_dwn_state)\r
-{\r
-       p_pi->state_info2 =\r
-           (uint8_t) ((p_pi->state_info2 & 0xF0) | link_dwn_state);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      link_dwn_state\r
-*              [in] Link down default state of the port.\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_link_speed_active\r
-* NAME\r
-*      ib_port_info_get_link_speed_active\r
-*\r
-* DESCRIPTION\r
-*      Returns the Link Speed Active value assigned to this port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_link_speed_active(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) ((p_pi->link_speed &\r
-                           IB_PORT_LINK_SPEED_ACTIVE_MASK) >>\r
-                          IB_PORT_LINK_SPEED_SHIFT));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the link speed active value assigned to this port.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-#define IB_LINK_WIDTH_ACTIVE_1X                        1\r
-#define IB_LINK_WIDTH_ACTIVE_4X                        2\r
-#define IB_LINK_WIDTH_ACTIVE_8X                        4\r
-#define IB_LINK_WIDTH_ACTIVE_12X               8\r
-#define IB_LINK_SPEED_ACTIVE_2_5               1\r
-#define IB_LINK_SPEED_ACTIVE_5                 2\r
-#define IB_LINK_SPEED_ACTIVE_10                        4\r
-\r
-/* following v1 ver1.2 p901 */\r
-#define IB_PATH_RECORD_RATE_2_5_GBS            2\r
-#define IB_PATH_RECORD_RATE_10_GBS             3\r
-#define IB_PATH_RECORD_RATE_30_GBS             4\r
-#define IB_PATH_RECORD_RATE_5_GBS              5\r
-#define IB_PATH_RECORD_RATE_20_GBS             6\r
-#define IB_PATH_RECORD_RATE_40_GBS             7\r
-#define IB_PATH_RECORD_RATE_60_GBS             8\r
-#define IB_PATH_RECORD_RATE_80_GBS             9\r
-#define IB_PATH_RECORD_RATE_120_GBS            10\r
-\r
-#define IB_MIN_RATE    IB_PATH_RECORD_RATE_2_5_GBS\r
-#define IB_MAX_RATE    IB_PATH_RECORD_RATE_120_GBS\r
-\r
-/****f* IBA Base: Types/ib_port_info_compute_rate\r
-* NAME\r
-*      ib_port_info_compute_rate\r
-*\r
-* DESCRIPTION\r
-*      Returns the encoded value for the path rate.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_compute_rate(IN const ib_port_info_t * const p_pi)\r
-{\r
-       uint8_t rate = 0;\r
-\r
-       switch (ib_port_info_get_link_speed_active(p_pi)) {\r
-       case IB_LINK_SPEED_ACTIVE_2_5:\r
-               switch (p_pi->link_width_active) {\r
-               case IB_LINK_WIDTH_ACTIVE_1X:\r
-                       rate = IB_PATH_RECORD_RATE_2_5_GBS;\r
-                       break;\r
-\r
-               case IB_LINK_WIDTH_ACTIVE_4X:\r
-                       rate = IB_PATH_RECORD_RATE_10_GBS;\r
-                       break;\r
-\r
-               case IB_LINK_WIDTH_ACTIVE_8X:\r
-                       rate = IB_PATH_RECORD_RATE_20_GBS;\r
-                       break;\r
-\r
-               case IB_LINK_WIDTH_ACTIVE_12X:\r
-                       rate = IB_PATH_RECORD_RATE_30_GBS;\r
-                       break;\r
-\r
-               default:\r
-                       rate = IB_PATH_RECORD_RATE_2_5_GBS;\r
-                       break;\r
-               }\r
-               break;\r
-       case IB_LINK_SPEED_ACTIVE_5:\r
-               switch (p_pi->link_width_active) {\r
-               case IB_LINK_WIDTH_ACTIVE_1X:\r
-                       rate = IB_PATH_RECORD_RATE_5_GBS;\r
-                       break;\r
-\r
-               case IB_LINK_WIDTH_ACTIVE_4X:\r
-                       rate = IB_PATH_RECORD_RATE_20_GBS;\r
-                       break;\r
-\r
-               case IB_LINK_WIDTH_ACTIVE_8X:\r
-                       rate = IB_PATH_RECORD_RATE_40_GBS;\r
-                       break;\r
-\r
-               case IB_LINK_WIDTH_ACTIVE_12X:\r
-                       rate = IB_PATH_RECORD_RATE_60_GBS;\r
-                       break;\r
-\r
-               default:\r
-                       rate = IB_PATH_RECORD_RATE_5_GBS;\r
-                       break;\r
-               }\r
-               break;\r
-       case IB_LINK_SPEED_ACTIVE_10:\r
-               switch (p_pi->link_width_active) {\r
-               case IB_LINK_WIDTH_ACTIVE_1X:\r
-                       rate = IB_PATH_RECORD_RATE_10_GBS;\r
-                       break;\r
-\r
-               case IB_LINK_WIDTH_ACTIVE_4X:\r
-                       rate = IB_PATH_RECORD_RATE_40_GBS;\r
-                       break;\r
-\r
-               case IB_LINK_WIDTH_ACTIVE_8X:\r
-                       rate = IB_PATH_RECORD_RATE_80_GBS;\r
-                       break;\r
-\r
-               case IB_LINK_WIDTH_ACTIVE_12X:\r
-                       rate = IB_PATH_RECORD_RATE_120_GBS;\r
-                       break;\r
-\r
-               default:\r
-                       rate = IB_PATH_RECORD_RATE_10_GBS;\r
-                       break;\r
-               }\r
-               break;\r
-       default:\r
-               rate = IB_PATH_RECORD_RATE_2_5_GBS;\r
-               break;\r
-       }\r
-\r
-       return rate;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the encoded value for the link speed supported.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_path_get_ipd\r
-* NAME\r
-*      ib_path_get_ipd\r
-*\r
-* DESCRIPTION\r
-*      Returns the encoded value for the inter packet delay.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_path_get_ipd(IN uint8_t local_link_width_supported, IN uint8_t path_rec_rate)\r
-{\r
-       uint8_t ipd = 0;\r
-\r
-       switch (local_link_width_supported) {\r
-               /* link_width_supported = 1: 1x */\r
-       case 1:\r
-               break;\r
-\r
-               /* link_width_supported = 3: 1x or 4x */\r
-       case 3:\r
-               switch (path_rec_rate & 0x3F) {\r
-               case IB_PATH_RECORD_RATE_2_5_GBS:\r
-                       ipd = 3;\r
-                       break;\r
-               default:\r
-                       break;\r
-               }\r
-               break;\r
-\r
-               /* link_width_supported = 11: 1x or 4x or 12x */\r
-       case 11:\r
-               switch (path_rec_rate & 0x3F) {\r
-               case IB_PATH_RECORD_RATE_2_5_GBS:\r
-                       ipd = 11;\r
-                       break;\r
-               case IB_PATH_RECORD_RATE_10_GBS:\r
-                       ipd = 2;\r
-                       break;\r
-               default:\r
-                       break;\r
-               }\r
-               break;\r
-\r
-       default:\r
-               break;\r
-       }\r
-\r
-       return ipd;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      local_link_width_supported\r
-*              [in] link with supported for this port\r
-*\r
-*      path_rec_rate\r
-*              [in] rate field of the path record\r
-*\r
-* RETURN VALUES\r
-*      Returns the ipd\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_mtu_cap\r
-* NAME\r
-*      ib_port_info_get_mtu_cap\r
-*\r
-* DESCRIPTION\r
-*      Returns the encoded value for the maximum MTU supported by this port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_mtu_cap(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) (p_pi->mtu_cap & 0x0F));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the encooded value for the maximum MTU supported by this port.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_neighbor_mtu\r
-* NAME\r
-*      ib_port_info_get_neighbor_mtu\r
-*\r
-* DESCRIPTION\r
-*      Returns the encoded value for the neighbor MTU supported by this port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_neighbor_mtu(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) ((p_pi->mtu_smsl & 0xF0) >> 4));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the encoded value for the neighbor MTU at this port.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_neighbor_mtu\r
-* NAME\r
-*      ib_port_info_set_neighbor_mtu\r
-*\r
-* DESCRIPTION\r
-*      Sets the Neighbor MTU value in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_neighbor_mtu(IN ib_port_info_t * const p_pi,\r
-                             IN const uint8_t mtu)\r
-{\r
-       CL_ASSERT(mtu <= 5);\r
-       CL_ASSERT(mtu != 0);\r
-       p_pi->mtu_smsl = (uint8_t) ((p_pi->mtu_smsl & 0x0F) | (mtu << 4));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      mtu\r
-*              [in] Encoded MTU value to set\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_master_smsl\r
-* NAME\r
-*      ib_port_info_get_master_smsl\r
-*\r
-* DESCRIPTION\r
-*      Returns the encoded value for the Master SMSL at this port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_master_smsl(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return (uint8_t) (p_pi->mtu_smsl & 0x0F);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the encoded value for the Master SMSL at this port.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_master_smsl\r
-* NAME\r
-*      ib_port_info_set_master_smsl\r
-*\r
-* DESCRIPTION\r
-*      Sets the Master SMSL value in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_master_smsl(IN ib_port_info_t * const p_pi,\r
-                            IN const uint8_t smsl)\r
-{\r
-       p_pi->mtu_smsl = (uint8_t) ((p_pi->mtu_smsl & 0xF0) | smsl);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      mtu\r
-*              [in] Encoded Master SMSL value to set\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_timeout\r
-* NAME\r
-*      ib_port_info_set_timeout\r
-*\r
-* DESCRIPTION\r
-*      Sets the encoded subnet timeout value in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_timeout(IN ib_port_info_t * const p_pi,\r
-                        IN const uint8_t timeout)\r
-{\r
-       CL_ASSERT(timeout <= 0x1F);\r
-       p_pi->subnet_timeout =\r
-           (uint8_t) ((p_pi->subnet_timeout & 0xE0) | (timeout & 0x1F));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      timeout\r
-*              [in] Encoded timeout value to set\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_client_rereg\r
-* NAME\r
-*      ib_port_info_set_client_rereg\r
-*\r
-* DESCRIPTION\r
-*      Sets the encoded client reregistration bit value in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_client_rereg(IN ib_port_info_t * const p_pi,\r
-                             IN const uint8_t client_rereg)\r
-{\r
-       CL_ASSERT(client_rereg <= 0x1);\r
-       p_pi->subnet_timeout =\r
-           (uint8_t) ((p_pi->subnet_timeout & 0x7F) | (client_rereg << 7));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      client_rereg\r
-*              [in] Client reregistration value to set (either 1 or 0).\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_mcast_pkey_trap_suppress\r
-* NAME\r
-*      ib_port_info_set_mcast_pkey_trap_suppress\r
-*\r
-* DESCRIPTION\r
-*      Sets the encoded multicast pkey trap suppresion enabled bit value\r
-*      in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_mcast_pkey_trap_suppress(IN ib_port_info_t * const p_pi,\r
-                                         IN const uint8_t trap_suppress)\r
-{\r
-       CL_ASSERT(trap_suppress <= 0x1);\r
-       p_pi->subnet_timeout =\r
-           (uint8_t) ((p_pi->subnet_timeout & 0xBF) | (trap_suppress << 6));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      trap_suppress\r
-*              [in] Multicast pkey trap suppresion enabled value to set\r
-*                   (either 1 or 0).\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_timeout\r
-* NAME\r
-*      ib_port_info_get_timeout\r
-*\r
-* DESCRIPTION\r
-*      Gets the encoded subnet timeout value in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_timeout(IN ib_port_info_t const *p_pi)\r
-{\r
-       return (p_pi->subnet_timeout & 0x1F);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      The encoded timeout value\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_client_rereg\r
-* NAME\r
-*      ib_port_info_get_client_rereg\r
-*\r
-* DESCRIPTION\r
-*      Gets the encoded client reregistration bit value in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_client_rereg(IN ib_port_info_t const *p_pi)\r
-{\r
-       return ((p_pi->subnet_timeout & 0x80) >> 7);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Client reregistration value (either 1 or 0).\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_mcast_pkey_trap_suppress\r
-* NAME\r
-*      ib_port_info_get_mcast_pkey_trap_suppress\r
-*\r
-* DESCRIPTION\r
-*      Gets the encoded multicast pkey trap suppresion enabled bit value\r
-*      in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_mcast_pkey_trap_suppress(IN ib_port_info_t const *p_pi)\r
-{\r
-       return ((p_pi->subnet_timeout & 0x40) >> 6);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Multicast PKey trap suppression enabled value (either 1 or 0).\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_hoq_lifetime\r
-* NAME\r
-*      ib_port_info_set_hoq_lifetime\r
-*\r
-* DESCRIPTION\r
-*      Sets the Head of Queue Lifetime for which a packet can live in the head\r
-*  of VL queue\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_hoq_lifetime(IN ib_port_info_t * const p_pi,\r
-                             IN const uint8_t hoq_life)\r
-{\r
-       p_pi->vl_stall_life = (uint8_t) ((hoq_life & 0x1f) |\r
-                                        (p_pi->vl_stall_life & 0xe0));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      hoq_life\r
-*              [in] Encoded lifetime value to set\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_hoq_lifetime\r
-* NAME\r
-*      ib_port_info_get_hoq_lifetime\r
-*\r
-* DESCRIPTION\r
-*      Gets the Head of Queue Lifetime for which a packet can live in the head\r
-*  of VL queue\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_hoq_lifetime(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) (p_pi->vl_stall_life & 0x1f));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*     Encoded lifetime value\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_vl_stall_count\r
-* NAME\r
-*      ib_port_info_set_vl_stall_count\r
-*\r
-* DESCRIPTION\r
-*      Sets the VL Stall Count which define the number of contiguous\r
-*  HLL (hoq) drops that will put the VL into stalled mode.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_vl_stall_count(IN ib_port_info_t * const p_pi,\r
-                               IN const uint8_t vl_stall_count)\r
-{\r
-       p_pi->vl_stall_life = (uint8_t) ((p_pi->vl_stall_life & 0x1f) |\r
-                                        ((vl_stall_count << 5) & 0xe0));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      vl_stall_count\r
-*              [in] value to set\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_vl_stall_count\r
-* NAME\r
-*      ib_port_info_get_vl_stall_count\r
-*\r
-* DESCRIPTION\r
-*      Gets the VL Stall Count which define the number of contiguous\r
-*  HLL (hoq) drops that will put the VL into stalled mode\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_vl_stall_count(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) (p_pi->vl_stall_life & 0xe0) >> 5);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*     vl stall count\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_lmc\r
-* NAME\r
-*      ib_port_info_get_lmc\r
-*\r
-* DESCRIPTION\r
-*      Returns the LMC value assigned to this port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_lmc(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) (p_pi->mkey_lmc & IB_PORT_LMC_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the LMC value assigned to this port.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_lmc\r
-* NAME\r
-*      ib_port_info_set_lmc\r
-*\r
-* DESCRIPTION\r
-*      Sets the LMC value in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_lmc(IN ib_port_info_t * const p_pi, IN const uint8_t lmc)\r
-{\r
-       CL_ASSERT(lmc <= IB_PORT_LMC_MAX);\r
-       p_pi->mkey_lmc = (uint8_t) ((p_pi->mkey_lmc & 0xF8) | lmc);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      lmc\r
-*              [in] LMC value to set, must be less than 7.\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_link_speed_enabled\r
-* NAME\r
-*      ib_port_info_get_link_speed_enabled\r
-*\r
-* DESCRIPTION\r
-*      Returns the link speed enabled value assigned to this port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_link_speed_enabled(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) (p_pi->link_speed & IB_PORT_LINK_SPEED_ENABLED_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Port state.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_link_speed_enabled\r
-* NAME\r
-*      ib_port_info_set_link_speed_enabled\r
-*\r
-* DESCRIPTION\r
-*      Sets the link speed enabled value in the PortInfo attribute.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_link_speed_enabled(IN ib_port_info_t * const p_pi,\r
-                                   IN const uint8_t link_speed_enabled)\r
-{\r
-       p_pi->link_speed =\r
-           (uint8_t) ((p_pi->link_speed & 0xF0) | link_speed_enabled);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      link_speed_enabled\r
-*              [in] link speed enabled value to set.\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_mpb\r
-* NAME\r
-*      ib_port_info_get_mpb\r
-*\r
-* DESCRIPTION\r
-*      Returns the M_Key protect bits assigned to this port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_mpb(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return ((uint8_t) ((p_pi->mkey_lmc & IB_PORT_MPB_MASK) >>\r
-                          IB_PORT_MPB_SHIFT));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ni\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the M_Key protect bits assigned to this port.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_mpb\r
-* NAME\r
-*      ib_port_info_set_mpb\r
-*\r
-* DESCRIPTION\r
-*      Set the M_Key protect bits of this port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_mpb(IN ib_port_info_t * p_pi, IN uint8_t mpb)\r
-{\r
-       p_pi->mkey_lmc =\r
-           (~IB_PORT_MPB_MASK & p_pi->mkey_lmc) |\r
-           (IB_PORT_MPB_MASK & (mpb << IB_PORT_MPB_SHIFT));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      mpb\r
-*              [in] M_Key protect bits\r
-*      p_ni\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_local_phy_err_thd\r
-* NAME\r
-*      ib_port_info_get_local_phy_err_thd\r
-*\r
-* DESCRIPTION\r
-*      Returns the Phy Link Threshold\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_local_phy_err_thd(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return (uint8_t) ((p_pi->error_threshold & 0xF0) >> 4);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the Phy Link error threshold assigned to this port.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_get_overrun_err_thd\r
-* NAME\r
-*      ib_port_info_get_local_overrun_err_thd\r
-*\r
-* DESCRIPTION\r
-*      Returns the Credits Overrun Errors Threshold\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_port_info_get_overrun_err_thd(IN const ib_port_info_t * const p_pi)\r
-{\r
-       return (uint8_t) (p_pi->error_threshold & 0x0F);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the Credits Overrun errors threshold assigned to this port.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_port_info_set_phy_and_overrun_err_thd\r
-* NAME\r
-*      ib_port_info_set_phy_and_overrun_err_thd\r
-*\r
-* DESCRIPTION\r
-*      Sets the Phy Link and Credits Overrun Errors Threshold\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_port_info_set_phy_and_overrun_err_thd(IN ib_port_info_t * const p_pi,\r
-                                        IN uint8_t phy_threshold,\r
-                                        IN uint8_t overrun_threshold)\r
-{\r
-       p_pi->error_threshold =\r
-           (uint8_t) (((phy_threshold & 0x0F) << 4) |\r
-                      (overrun_threshold & 0x0F));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_pi\r
-*              [in] Pointer to a PortInfo attribute.\r
-*\r
-*      phy_threshold\r
-*              [in] Physical Link Errors Threshold above which Trap 129 is generated\r
-*\r
-*  overrun_threshold\r
-*     [in] Credits overrun Errors Threshold above which Trap 129 is generated\r
-*\r
-* RETURN VALUES\r
-*      None.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-typedef uint8_t ib_svc_name_t[64];\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_service_record {\r
-       ib_net64_t service_id;\r
-       ib_gid_t service_gid;\r
-       ib_net16_t service_pkey;\r
-       ib_net16_t resv;\r
-       ib_net32_t service_lease;\r
-       uint8_t service_key[16];\r
-       ib_svc_name_t service_name;\r
-       uint8_t service_data8[16];\r
-       ib_net16_t service_data16[8];\r
-       ib_net32_t service_data32[4];\r
-       ib_net64_t service_data64[2];\r
-} PACK_SUFFIX ib_service_record_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_portinfo_record {\r
-       ib_net16_t lid;\r
-       uint8_t port_num;\r
-       uint8_t resv;\r
-       ib_port_info_t port_info;\r
-} PACK_SUFFIX ib_portinfo_record_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_link_record {\r
-       ib_net16_t from_lid;\r
-       uint8_t from_port_num;\r
-       uint8_t to_port_num;\r
-       ib_net16_t to_lid;\r
-       uint8_t pad[2];\r
-} PACK_SUFFIX ib_link_record_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_sminfo_record {\r
-       ib_net16_t lid;\r
-       uint16_t resv0;\r
-       ib_sm_info_t sm_info;\r
-       uint8_t pad[7];\r
-} PACK_SUFFIX ib_sminfo_record_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****s* IBA Base: Types/ib_lft_record_t\r
-* NAME\r
-*      ib_lft_record_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined LinearForwardingTableRecord (15.2.5.6)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_lft_record {\r
-       ib_net16_t lid;\r
-       ib_net16_t block_num;\r
-       uint32_t resv0;\r
-       uint8_t lft[64];\r
-} PACK_SUFFIX ib_lft_record_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-/****s* IBA Base: Types/ib_mft_record_t\r
-* NAME\r
-*      ib_mft_record_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined MulticastForwardingTableRecord (15.2.5.8)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_mft_record {\r
-       ib_net16_t lid;\r
-       ib_net16_t position_block_num;\r
-       uint32_t resv0;\r
-       ib_net16_t mft[IB_MCAST_BLOCK_SIZE];\r
-} PACK_SUFFIX ib_mft_record_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-/****s* IBA Base: Types/ib_switch_info_t\r
-* NAME\r
-*      ib_switch_info_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined SwitchInfo. (14.2.5.4)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_switch_info {\r
-       ib_net16_t lin_cap;\r
-       ib_net16_t rand_cap;\r
-       ib_net16_t mcast_cap;\r
-       ib_net16_t lin_top;\r
-       uint8_t def_port;\r
-       uint8_t def_mcast_pri_port;\r
-       uint8_t def_mcast_not_port;\r
-       uint8_t life_state;\r
-       ib_net16_t lids_per_port;\r
-       ib_net16_t enforce_cap;\r
-       uint8_t flags;\r
-       uint8_t resvd;\r
-       ib_net16_t mcast_top;\r
-} PACK_SUFFIX ib_switch_info_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_switch_info_record {\r
-       ib_net16_t lid;\r
-       uint16_t resv0;\r
-       ib_switch_info_t switch_info;\r
-} PACK_SUFFIX ib_switch_info_record_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-#define IB_SWITCH_PSC 0x04\r
-\r
-/****f* IBA Base: Types/ib_switch_info_get_state_change\r
-* NAME\r
-*      ib_switch_info_get_state_change\r
-*\r
-* DESCRIPTION\r
-*      Returns the value of the state change flag.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_switch_info_get_state_change(IN const ib_switch_info_t * const p_si)\r
-{\r
-       return ((p_si->life_state & IB_SWITCH_PSC) == IB_SWITCH_PSC);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_si\r
-*              [in] Pointer to a SwitchInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the value of the state change flag.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_switch_info_clear_state_change\r
-* NAME\r
-*      ib_switch_info_clear_state_change\r
-*\r
-* DESCRIPTION\r
-*      Clears the switch's state change bit.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_switch_info_clear_state_change(IN ib_switch_info_t * const p_si)\r
-{\r
-       p_si->life_state = (uint8_t) (p_si->life_state & 0xFB);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_si\r
-*              [in] Pointer to a SwitchInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_switch_info_get_opt_sl2vlmapping\r
-* NAME\r
-*      ib_switch_info_get_state_opt_sl2vlmapping\r
-*\r
-* DESCRIPTION\r
-*       Returns the value of the optimized SLtoVLMapping programming flag.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_switch_info_get_opt_sl2vlmapping(IN const ib_switch_info_t * const p_si)\r
-{\r
-        return ((p_si->life_state & 0x01) == 0x01);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_si\r
-*              [in] Pointer to a SwitchInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns the value of the optimized SLtoVLMapping programming flag.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_switch_info_is_enhanced_port0\r
-* NAME\r
-*      ib_switch_info_is_enhanced_port0\r
-*\r
-* DESCRIPTION\r
-*      Returns TRUE if the enhancedPort0 bit is on (meaning the switch\r
-*  port zero supports enhanced functions).\r
-*  Returns FALSE otherwise.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_switch_info_is_enhanced_port0(IN const ib_switch_info_t * const p_si)\r
-{\r
-       return ((p_si->flags & 0x08) == 0x08);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_si\r
-*              [in] Pointer to a SwitchInfo attribute.\r
-*\r
-* RETURN VALUES\r
-*      Returns TRUE if the switch supports enhanced port 0. FALSE otherwise.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_guid_info_t\r
-* NAME\r
-*      ib_guid_info_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined GuidInfo. (14.2.5.5)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#define        GUID_TABLE_MAX_ENTRIES          8\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_guid_info {\r
-       ib_net64_t guid[GUID_TABLE_MAX_ENTRIES];\r
-} PACK_SUFFIX ib_guid_info_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_guidinfo_record {\r
-       ib_net16_t lid;\r
-       uint8_t block_num;\r
-       uint8_t resv;\r
-       uint32_t reserved;\r
-       ib_guid_info_t guid_info;\r
-} PACK_SUFFIX ib_guidinfo_record_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-#define IB_MULTIPATH_MAX_GIDS 11       /* Support max that can fit into first MAD (for now) */\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_multipath_rec_t {\r
-       ib_net32_t hop_flow_raw;\r
-       uint8_t tclass;\r
-       uint8_t num_path;\r
-       ib_net16_t pkey;\r
-       ib_net16_t qos_class_sl;\r
-       uint8_t mtu;\r
-       uint8_t rate;\r
-       uint8_t pkt_life;\r
-       uint8_t service_id_8msb;\r
-       uint8_t independence;   /* formerly resv2 */\r
-       uint8_t sgid_count;\r
-       uint8_t dgid_count;\r
-       uint8_t service_id_56lsb[7];\r
-       ib_gid_t gids[IB_MULTIPATH_MAX_GIDS];\r
-} PACK_SUFFIX ib_multipath_rec_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*       hop_flow_raw\r
-*               Global routing parameters: hop count, flow label and raw bit.\r
-*\r
-*       tclass\r
-*               Another global routing parameter.\r
-*\r
-*       num_path\r
-*     Reversible path - 1 bit to say if path is reversible.\r
-*               num_path [6:0] In queries, maximum number of paths to return.\r
-*               In responses, undefined.\r
-*\r
-*       pkey\r
-*               Partition key (P_Key) to use on this path.\r
-*\r
-*       qos_class_sl\r
-*               QoS class and service level to use on this path.\r
-*\r
-*       mtu\r
-*               MTU and MTU selector fields to use on this path\r
-*       rate\r
-*               Rate and rate selector fields to use on this path.\r
-*\r
-*       pkt_life\r
-*               Packet lifetime\r
-*\r
-*      service_id_8msb\r
-*              8 most significant bits of Service ID\r
-*\r
-*      service_id_56lsb\r
-*              56 least significant bits of Service ID\r
-*\r
-*       preference\r
-*               Indicates the relative merit of this path versus other path\r
-*               records returned from the SA.  Lower numbers are better.\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_num_path\r
-* NAME\r
-*       ib_multipath_rec_num_path\r
-*\r
-* DESCRIPTION\r
-*       Get max number of paths to return.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_multipath_rec_num_path(IN const ib_multipath_rec_t * const p_rec)\r
-{\r
-       return (p_rec->num_path & 0x7F);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*       p_rec\r
-*               [in] Pointer to the multipath record object.\r
-*\r
-* RETURN VALUES\r
-*       Maximum number of paths to return for each unique SGID_DGID combination.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*       ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_set_sl\r
-* NAME\r
-*      ib_multipath_rec_set_sl\r
-*\r
-* DESCRIPTION\r
-*      Set path service level.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_multipath_rec_set_sl(\r
-       IN ib_multipath_rec_t* const p_rec,\r
-       IN const uint8_t sl )\r
-{\r
-       p_rec->qos_class_sl =\r
-               (p_rec->qos_class_sl & CL_HTON16(IB_MULTIPATH_REC_QOS_CLASS_MASK)) |\r
-                       cl_hton16(sl & IB_MULTIPATH_REC_SL_MASK);\r
-}\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the MultiPath record object.\r
-*\r
-*      sl\r
-*              [in] Service level to set.\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_sl\r
-* NAME\r
-*       ib_multipath_rec_sl\r
-*\r
-* DESCRIPTION\r
-*       Get multipath service level.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_multipath_rec_sl(IN const ib_multipath_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) ((cl_ntoh16(p_rec->qos_class_sl)) & IB_MULTIPATH_REC_SL_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*       p_rec\r
-*               [in] Pointer to the multipath record object.\r
-*\r
-* RETURN VALUES\r
-*      SL.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*       ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_set_qos_class\r
-* NAME\r
-*      ib_multipath_rec_set_qos_class\r
-*\r
-* DESCRIPTION\r
-*      Set path QoS class.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void     OSM_API\r
-ib_multipath_rec_set_qos_class(\r
-       IN ib_multipath_rec_t* const p_rec,\r
-       IN const uint16_t qos_class )\r
-{\r
-       p_rec->qos_class_sl =\r
-               (p_rec->qos_class_sl & CL_HTON16(IB_MULTIPATH_REC_SL_MASK)) |\r
-                       cl_hton16(qos_class << 4);\r
-}\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the MultiPath record object.\r
-*\r
-*      qos_class\r
-*              [in] QoS class to set.\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_qos_class\r
-* NAME\r
-*      ib_multipath_rec_qos_class\r
-*\r
-* DESCRIPTION\r
-*      Get QoS class.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint16_t OSM_API\r
-ib_multipath_rec_qos_class(\r
-       IN      const   ib_multipath_rec_t* const       p_rec )\r
-{\r
-       return (cl_ntoh16( p_rec->qos_class_sl ) >> 4);\r
-}\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the MultiPath record object.\r
-*\r
-* RETURN VALUES\r
-*      QoS class of the MultiPath record.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_mtu\r
-* NAME\r
-*       ib_multipath_rec_mtu\r
-*\r
-* DESCRIPTION\r
-*       Get encoded path MTU.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_multipath_rec_mtu(IN const ib_multipath_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) (p_rec->mtu & IB_MULTIPATH_REC_BASE_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*       p_rec\r
-*               [in] Pointer to the multipath record object.\r
-*\r
-* RETURN VALUES\r
-*       Encoded path MTU.\r
-*               1: 256\r
-*               2: 512\r
-*               3: 1024\r
-*               4: 2048\r
-*               5: 4096\r
-*               others: reserved\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*       ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_mtu_sel\r
-* NAME\r
-*       ib_multipath_rec_mtu_sel\r
-*\r
-* DESCRIPTION\r
-*       Get encoded multipath MTU selector.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_multipath_rec_mtu_sel(IN const ib_multipath_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) ((p_rec->mtu & IB_MULTIPATH_REC_SELECTOR_MASK) >> 6));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*       p_rec\r
-*               [in] Pointer to the multipath record object.\r
-*\r
-* RETURN VALUES\r
-*       Encoded path MTU selector value (for queries).\r
-*               0: greater than MTU specified\r
-*               1: less than MTU specified\r
-*               2: exactly the MTU specified\r
-*               3: largest MTU available\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*       ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_rate\r
-* NAME\r
-*       ib_multipath_rec_rate\r
-*\r
-* DESCRIPTION\r
-*       Get encoded multipath rate.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_multipath_rec_rate(IN const ib_multipath_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) (p_rec->rate & IB_MULTIPATH_REC_BASE_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*       p_rec\r
-*               [in] Pointer to the multipath record object.\r
-*\r
-* RETURN VALUES\r
-*       Encoded multipath rate.\r
-*               2: 2.5 Gb/sec.\r
-*               3: 10 Gb/sec.\r
-*               4: 30 Gb/sec.\r
-*               others: reserved\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*       ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_rate_sel\r
-* NAME\r
-*       ib_multipath_rec_rate_sel\r
-*\r
-* DESCRIPTION\r
-*       Get encoded multipath rate selector.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_multipath_rec_rate_sel(IN const ib_multipath_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t)\r
-               ((p_rec->rate & IB_MULTIPATH_REC_SELECTOR_MASK) >> 6));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*       p_rec\r
-*               [in] Pointer to the multipath record object.\r
-*\r
-* RETURN VALUES\r
-*       Encoded path rate selector value (for queries).\r
-*               0: greater than rate specified\r
-*               1: less than rate specified\r
-*               2: exactly the rate specified\r
-*               3: largest rate available\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*       ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_pkt_life\r
-* NAME\r
-*       ib_multipath_rec_pkt_life\r
-*\r
-* DESCRIPTION\r
-*       Get encoded multipath pkt_life.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_multipath_rec_pkt_life(IN const ib_multipath_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t) (p_rec->pkt_life & IB_MULTIPATH_REC_BASE_MASK));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*       p_rec\r
-*               [in] Pointer to the multipath record object.\r
-*\r
-* RETURN VALUES\r
-*       Encoded multipath pkt_life = 4.096 usec * 2 ** PacketLifeTime.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*       ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_pkt_life_sel\r
-* NAME\r
-*       ib_multipath_rec_pkt_life_sel\r
-*\r
-* DESCRIPTION\r
-*       Get encoded multipath pkt_lifetime selector.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_multipath_rec_pkt_life_sel(IN const ib_multipath_rec_t * const p_rec)\r
-{\r
-       return ((uint8_t)\r
-               ((p_rec->pkt_life & IB_MULTIPATH_REC_SELECTOR_MASK) >> 6));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*       p_rec\r
-*               [in] Pointer to the multipath record object.\r
-*\r
-* RETURN VALUES\r
-*       Encoded path pkt_lifetime selector value (for queries).\r
-*               0: greater than rate specified\r
-*               1: less than rate specified\r
-*               2: exactly the rate specified\r
-*               3: smallest packet lifetime available\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*       ib_multipath_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_multipath_rec_service_id\r
-* NAME\r
-*      ib_multipath_rec_service_id\r
-*\r
-* DESCRIPTION\r
-*      Get multipath service id.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net64_t OSM_API\r
-ib_multipath_rec_service_id(IN const ib_multipath_rec_t * const p_rec)\r
-{\r
-       union {\r
-               ib_net64_t sid;\r
-               uint8_t sid_arr[8];\r
-       } sid_union;\r
-       sid_union.sid_arr[0] = p_rec->service_id_8msb;\r
-       memcpy(&sid_union.sid_arr[1], p_rec->service_id_56lsb, 7);\r
-       return sid_union.sid;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_rec\r
-*              [in] Pointer to the multipath record object.\r
-*\r
-* RETURN VALUES\r
-*      Service ID\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_multipath_rec_t\r
-*********/\r
-\r
-#define IB_NUM_PKEY_ELEMENTS_IN_BLOCK          32\r
-/****s* IBA Base: Types/ib_pkey_table_t\r
-* NAME\r
-*      ib_pkey_table_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined PKey table. (14.2.5.7)\r
-*\r
-* SYNOPSIS\r
-*/\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_pkey_table {\r
-       ib_net16_t pkey_entry[IB_NUM_PKEY_ELEMENTS_IN_BLOCK];\r
-} PACK_SUFFIX ib_pkey_table_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-/****s* IBA Base: Types/ib_pkey_table_record_t\r
-* NAME\r
-*      ib_pkey_table_record_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined P_Key Table Record for SA Query. (15.2.5.11)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_pkey_table_record {\r
-       ib_net16_t lid;         // for CA: lid of port, for switch lid of port 0\r
-       uint16_t block_num;\r
-       uint8_t port_num;       // for switch: port number, for CA: reserved\r
-       uint8_t reserved1;\r
-       uint16_t reserved2;\r
-       ib_pkey_table_t pkey_tbl;\r
-} PACK_SUFFIX ib_pkey_table_record_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-#define IB_DROP_VL 15\r
-#define IB_MAX_NUM_VLS 16\r
-/****s* IBA Base: Types/ib_slvl_table_t\r
-* NAME\r
-*      ib_slvl_table_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined SL2VL Mapping Table Attribute. (14.2.5.8)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_slvl_table {\r
-       uint8_t raw_vl_by_sl[IB_MAX_NUM_VLS / 2];\r
-} PACK_SUFFIX ib_slvl_table_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-/****s* IBA Base: Types/ib_slvl_table_record_t\r
-* NAME\r
-*      ib_slvl_table_record_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined SL to VL Mapping Table Record for SA Query. (15.2.5.4)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_slvl_table_record {\r
-       ib_net16_t lid;         // for CA: lid of port, for switch lid of port 0\r
-       uint8_t in_port_num;    // reserved for CAs\r
-       uint8_t out_port_num;   // reserved for CAs\r
-       uint32_t resv;\r
-       ib_slvl_table_t slvl_tbl;\r
-} PACK_SUFFIX ib_slvl_table_record_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-/****f* IBA Base: Types/ib_slvl_table_set\r
-* NAME\r
-*      ib_slvl_table_set\r
-*\r
-* DESCRIPTION\r
-*      Set slvl table entry.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_slvl_table_set(IN ib_slvl_table_t * p_slvl_tbl,\r
-                 IN uint8_t sl_index, IN uint8_t vl)\r
-{\r
-       uint8_t idx = sl_index / 2;\r
-       CL_ASSERT(vl <= 15);\r
-       CL_ASSERT(sl_index <= 15);\r
-\r
-       if (sl_index % 2)\r
-               /* this is an odd sl. Need to update the ls bits */\r
-               p_slvl_tbl->raw_vl_by_sl[idx] =\r
-                   (p_slvl_tbl->raw_vl_by_sl[idx] & 0xF0) | vl;\r
-       else\r
-               /* this is an even sl. Need to update the ms bits */\r
-               p_slvl_tbl->raw_vl_by_sl[idx] =\r
-                   (vl << 4) | (p_slvl_tbl->raw_vl_by_sl[idx] & 0x0F);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_slvl_tbl\r
-*              [in] pointer to ib_slvl_table_t object.\r
-*\r
-*      sl_index\r
-*              [in] the sl index in the table to be updated.\r
-*\r
-*      vl\r
-*              [in] the vl value to update for that sl.\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_slvl_table_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_slvl_table_get\r
-* NAME\r
-*      ib_slvl_table_get\r
-*\r
-* DESCRIPTION\r
-*      Get slvl table entry.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_slvl_table_get(IN const ib_slvl_table_t * p_slvl_tbl, IN uint8_t sl_index)\r
-{\r
-       uint8_t idx = sl_index / 2;\r
-       CL_ASSERT(sl_index <= 15);\r
-\r
-       if (sl_index % 2)\r
-               /* this is an odd sl. Need to return the ls bits. */\r
-               return (p_slvl_tbl->raw_vl_by_sl[idx] & 0x0F);\r
-       else\r
-               /* this is an even sl. Need to return the ms bits. */\r
-               return ((p_slvl_tbl->raw_vl_by_sl[idx] & 0xF0) >> 4);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_slvl_tbl\r
-*              [in] pointer to ib_slvl_table_t object.\r
-*\r
-*      sl_index\r
-*              [in] the sl index in the table whose value should be returned.\r
-*\r
-* RETURN VALUES\r
-*      vl for the requested sl_index.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_slvl_table_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_vl_arb_element_t\r
-* NAME\r
-*      ib_vl_arb_element_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined VL Arbitration Table Element. (14.2.5.9)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_vl_arb_element {\r
-       uint8_t vl;\r
-       uint8_t weight;\r
-} PACK_SUFFIX ib_vl_arb_element_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-#define IB_NUM_VL_ARB_ELEMENTS_IN_BLOCK 32\r
-\r
-/****s* IBA Base: Types/ib_vl_arb_table_t\r
-* NAME\r
-*      ib_vl_arb_table_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined VL Arbitration Table. (14.2.5.9)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_vl_arb_table {\r
-       ib_vl_arb_element_t vl_entry[IB_NUM_VL_ARB_ELEMENTS_IN_BLOCK];\r
-} PACK_SUFFIX ib_vl_arb_table_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-/****s* IBA Base: Types/ib_vl_arb_table_record_t\r
-* NAME\r
-*      ib_vl_arb_table_record_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined VL Arbitration Table Record for SA Query. (15.2.5.9)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_vl_arb_table_record {\r
-       ib_net16_t lid;         // for CA: lid of port, for switch lid of port 0\r
-       uint8_t port_num;\r
-       uint8_t block_num;\r
-       uint32_t reserved;\r
-       ib_vl_arb_table_t vl_arb_tbl;\r
-} PACK_SUFFIX ib_vl_arb_table_record_t;\r
-#include <complib/cl_packoff.h>\r
-/************/\r
-\r
-/*\r
- *     Global route header information received with unreliable datagram messages\r
- */\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_grh {\r
-       ib_net32_t ver_class_flow;\r
-       ib_net16_t resv1;\r
-       uint8_t resv2;\r
-       uint8_t hop_limit;\r
-       ib_gid_t src_gid;\r
-       ib_gid_t dest_gid;\r
-} PACK_SUFFIX ib_grh_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****f* IBA Base: Types/ib_grh_get_ver_class_flow\r
-* NAME\r
-*      ib_grh_get_ver_class_flow\r
-*\r
-* DESCRIPTION\r
-*      Get encoded version, traffic class and flow label in grh\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_grh_get_ver_class_flow(IN const ib_net32_t ver_class_flow,\r
-                         OUT uint8_t * const p_ver,\r
-                         OUT uint8_t * const p_tclass,\r
-                         OUT uint32_t * const p_flow_lbl)\r
-{\r
-       ib_net32_t tmp_ver_class_flow;\r
-\r
-       if (p_ver)\r
-               *p_ver = (uint8_t) (ver_class_flow & 0x0f);\r
-\r
-       tmp_ver_class_flow = ver_class_flow >> 4;\r
-\r
-       if (p_tclass)\r
-               *p_tclass = (uint8_t) (tmp_ver_class_flow & 0xff);\r
-\r
-       tmp_ver_class_flow = tmp_ver_class_flow >> 8;\r
-\r
-       if (p_flow_lbl)\r
-               *p_flow_lbl = tmp_ver_class_flow & 0xfffff;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      ver_class_flow\r
-*              [in] the version, traffic class and flow label info.\r
-*\r
-* RETURN VALUES\r
-*      p_ver\r
-*              [out] pointer to the version info.\r
-*\r
-*      p_tclass\r
-*              [out] pointer to the traffic class info.\r
-*\r
-*      p_flow_lbl\r
-*              [out] pointer to the flow label info\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_grh_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_grh_set_ver_class_flow\r
-* NAME\r
-*      ib_grh_set_ver_class_flow\r
-*\r
-* DESCRIPTION\r
-*      Set encoded version, traffic class and flow label in grh\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net32_t OSM_API\r
-ib_grh_set_ver_class_flow(IN const uint8_t ver,\r
-                         IN const uint8_t tclass, IN const uint32_t flow_lbl)\r
-{\r
-       ib_net32_t ver_class_flow;\r
-\r
-       ver_class_flow = flow_lbl;\r
-       ver_class_flow = ver_class_flow << 8;\r
-       ver_class_flow = ver_class_flow | tclass;\r
-       ver_class_flow = ver_class_flow << 4;\r
-       ver_class_flow = ver_class_flow | ver;\r
-       return (ver_class_flow);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      ver\r
-*              [in] the version info.\r
-*\r
-*      tclass\r
-*              [in] the traffic class info.\r
-*\r
-*      flow_lbl\r
-*              [in] the flow label info\r
-*\r
-* RETURN VALUES\r
-*      ver_class_flow\r
-*              [out] the version, traffic class and flow label info.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_grh_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_member_rec_t\r
-* NAME\r
-*      ib_member_rec_t\r
-*\r
-* DESCRIPTION\r
-*      Multicast member record, used to create, join, and leave multicast\r
-*      groups.\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_member_rec {\r
-       ib_gid_t mgid;\r
-       ib_gid_t port_gid;\r
-       ib_net32_t qkey;\r
-       ib_net16_t mlid;\r
-       uint8_t mtu;\r
-       uint8_t tclass;\r
-       ib_net16_t pkey;\r
-       uint8_t rate;\r
-       uint8_t pkt_life;\r
-       ib_net32_t sl_flow_hop;\r
-       uint8_t scope_state;\r
-       uint8_t proxy_join:1;\r
-       uint8_t reserved[2];\r
-       uint8_t pad[4];\r
-} PACK_SUFFIX ib_member_rec_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      mgid\r
-*              Multicast GID address for this multicast group.\r
-*\r
-*      port_gid\r
-*              Valid GID of the endpoint joining this multicast group.\r
-*\r
-*      qkey\r
-*              Q_Key to be sued by this multicast group.\r
-*\r
-*      mlid\r
-*              Multicast LID for this multicast group.\r
-*\r
-*      mtu\r
-*              MTU and MTU selector fields to use on this path\r
-*\r
-*      tclass\r
-*              Another global routing parameter.\r
-*\r
-*      pkey\r
-*              Partition key (P_Key) to use for this member.\r
-*\r
-*      rate\r
-*              Rate and rate selector fields to use on this path.\r
-*\r
-*      pkt_life\r
-*              Packet lifetime\r
-*\r
-*      sl_flow_hop\r
-*              Global routing parameters: service level, hop count, and flow label.\r
-*\r
-*      scope_state\r
-*              MGID scope and JoinState of multicast request.\r
-*\r
-*      proxy_join\r
-*              Enables others in the Partition to proxy add/remove from the group\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_member_get_sl_flow_hop\r
-* NAME\r
-*      ib_member_get_sl_flow_hop\r
-*\r
-* DESCRIPTION\r
-*      Get encoded sl, flow label, and hop limit\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_member_get_sl_flow_hop(IN const ib_net32_t sl_flow_hop,\r
-                         OUT uint8_t * const p_sl,\r
-                         OUT uint32_t * const p_flow_lbl,\r
-                         OUT uint8_t * const p_hop)\r
-{\r
-       uint32_t tmp;\r
-\r
-       tmp = cl_ntoh32(sl_flow_hop);\r
-       if (p_hop)\r
-               *p_hop = (uint8_t) tmp;\r
-       tmp >>= 8;\r
-\r
-       if (p_flow_lbl)\r
-               *p_flow_lbl = (uint32_t) (tmp & 0xfffff);\r
-       tmp >>= 20;\r
-\r
-       if (p_sl)\r
-               *p_sl = (uint8_t) tmp;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      sl_flow_hop\r
-*              [in] the sl, flow label, and hop limit of MC Group\r
-*\r
-* RETURN VALUES\r
-*      p_sl\r
-*              [out] pointer to the service level\r
-*\r
-*      p_flow_lbl\r
-*              [out] pointer to the flow label info\r
-*\r
-*      p_hop\r
-*              [out] pointer to the hop count limit.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_member_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_member_set_sl_flow_hop\r
-* NAME\r
-*      ib_member_set_sl_flow_hop\r
-*\r
-* DESCRIPTION\r
-*      Set encoded sl, flow label, and hop limit\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net32_t OSM_API\r
-ib_member_set_sl_flow_hop(IN const uint8_t sl,\r
-                         IN const uint32_t flow_label,\r
-                         IN const uint8_t hop_limit)\r
-{\r
-       uint32_t tmp;\r
-\r
-       tmp = (sl << 28) | ((flow_label & 0xfffff) << 8) | hop_limit;\r
-       return cl_hton32(tmp);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      sl\r
-*              [in] the service level.\r
-*\r
-*      flow_lbl\r
-*              [in] the flow label info\r
-*\r
-*      hop_limit\r
-*              [in] the hop limit.\r
-*\r
-* RETURN VALUES\r
-*      sl_flow_hop\r
-*              [out] the encoded sl, flow label, and hop limit\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_member_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_member_get_scope_state\r
-* NAME\r
-*      ib_member_get_scope_state\r
-*\r
-* DESCRIPTION\r
-*      Get encoded MGID scope and JoinState\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_member_get_scope_state(IN const uint8_t scope_state,\r
-                         OUT uint8_t * const p_scope,\r
-                         OUT uint8_t * const p_state)\r
-{\r
-       uint8_t tmp_scope_state;\r
-\r
-       if (p_state)\r
-               *p_state = (uint8_t) (scope_state & 0x0f);\r
-\r
-       tmp_scope_state = scope_state >> 4;\r
-\r
-       if (p_scope)\r
-               *p_scope = (uint8_t) (tmp_scope_state & 0x0f);\r
-\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      scope_state\r
-*              [in] the scope and state\r
-*\r
-* RETURN VALUES\r
-*      p_scope\r
-*              [out] pointer to the MGID scope\r
-*\r
-*      p_state\r
-*              [out] pointer to the join state\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_member_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_member_set_scope_state\r
-* NAME\r
-*      ib_member_set_scope_state\r
-*\r
-* DESCRIPTION\r
-*      Set encoded version, MGID scope and JoinState\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_member_set_scope_state(IN const uint8_t scope, IN const uint8_t state)\r
-{\r
-       uint8_t scope_state;\r
-\r
-       scope_state = scope;\r
-       scope_state = scope_state << 4;\r
-       scope_state = scope_state | state;\r
-       return (scope_state);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      scope\r
-*              [in] the MGID scope\r
-*\r
-*      state\r
-*              [in] the JoinState\r
-*\r
-* RETURN VALUES\r
-*      scope_state\r
-*              [out] the encoded one\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_member_rec_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_member_set_join_state\r
-* NAME\r
-*      ib_member_set_join_state\r
-*\r
-* DESCRIPTION\r
-*      Set JoinState\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_member_set_join_state(IN OUT ib_member_rec_t * p_mc_rec,\r
-                        IN const uint8_t state)\r
-{\r
-       /* keep the scope as it is */\r
-       p_mc_rec->scope_state = (p_mc_rec->scope_state & 0xF0) | (0x0f & state);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_mc_rec\r
-*              [in] pointer to the member record\r
-*\r
-*      state\r
-*              [in] the JoinState\r
-*\r
-* RETURN VALUES\r
-*      NONE\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_member_rec_t\r
-*********/\r
-\r
-/*\r
- * Join State Codes:\r
- */\r
-#define IB_MC_REC_STATE_FULL_MEMBER 0x01\r
-#define IB_MC_REC_STATE_NON_MEMBER 0x02\r
-#define IB_MC_REC_STATE_SEND_ONLY_NON_MEMBER 0x04\r
-\r
-/*\r
- *     Generic MAD notice types\r
- */\r
-#define IB_NOTICE_TYPE_FATAL                           0x00\r
-#define IB_NOTICE_TYPE_URGENT                          0x01\r
-#define IB_NOTICE_TYPE_SECURITY                                0x02\r
-#define IB_NOTICE_TYPE_SUBN_MGMT                       0x03\r
-#define IB_NOTICE_TYPE_INFO                            0x04\r
-#define IB_NOTICE_TYPE_EMPTY                           0x7F\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_mad_notice_attr     // Total Size calc  Accumulated\r
-{\r
-       uint8_t generic_type;   // 1                1\r
-       union _notice_g_or_v {\r
-               struct _notice_generic  // 5                6\r
-               {\r
-                       uint8_t prod_type_msb;\r
-                       ib_net16_t prod_type_lsb;\r
-                       ib_net16_t trap_num;\r
-               } PACK_SUFFIX generic;\r
-               struct _notice_vend {\r
-                       uint8_t vend_id_msb;\r
-                       ib_net16_t vend_id_lsb;\r
-                       ib_net16_t dev_id;\r
-               } PACK_SUFFIX vend;\r
-       } g_or_v;\r
-       ib_net16_t issuer_lid;  // 2                 8\r
-       ib_net16_t toggle_count;        // 2                 10\r
-       union _data_details     // 54                64\r
-       {\r
-               struct _raw_data {\r
-                       uint8_t details[54];\r
-               } PACK_SUFFIX raw_data;\r
-               struct _ntc_64_67 {\r
-                       uint8_t res[6];\r
-                       ib_gid_t gid;   // the Node or Multicast Group that came in/out\r
-               } PACK_SUFFIX ntc_64_67;\r
-               struct _ntc_128 {\r
-                       ib_net16_t sw_lid;      // the sw lid of which link state changed\r
-               } PACK_SUFFIX ntc_128;\r
-               struct _ntc_129_131 {\r
-                       ib_net16_t pad;\r
-                       ib_net16_t lid; // lid and port number of the violation\r
-                       uint8_t port_num;\r
-               } PACK_SUFFIX ntc_129_131;\r
-               struct _ntc_144 {\r
-                       ib_net16_t pad1;\r
-                       ib_net16_t lid;             // lid where change occured\r
-                       uint8_t    pad2;            // reserved\r
-                       uint8_t    local_changes;   // 7b reserved 1b local changes\r
-                       ib_net32_t new_cap_mask;    // new capability mask\r
-                       ib_net16_t change_flgs;     // 13b reserved 3b change flags\r
-               } PACK_SUFFIX ntc_144;\r
-               struct _ntc_145 {\r
-                       ib_net16_t pad1;\r
-                       ib_net16_t lid; // lid where sys guid changed\r
-                       ib_net16_t pad2;\r
-                       ib_net64_t new_sys_guid;        // new system image guid\r
-               } PACK_SUFFIX ntc_145;\r
-               struct _ntc_256 {       // total: 54\r
-                       ib_net16_t pad1;        // 2\r
-                       ib_net16_t lid; // 2\r
-                       ib_net16_t dr_slid;     // 2\r
-                       uint8_t method; // 1\r
-                       uint8_t pad2;   // 1\r
-                       ib_net16_t attr_id;     // 2\r
-                       ib_net32_t attr_mod;    // 4\r
-                       ib_net64_t mkey;        // 8\r
-                       uint8_t pad3;   // 1\r
-                       uint8_t dr_trunc_hop;   // 1\r
-                       uint8_t dr_rtn_path[30];        // 30\r
-               } PACK_SUFFIX ntc_256;\r
-               struct _ntc_257_258     // violation of p/q_key // 49\r
-               {\r
-                       ib_net16_t pad1;        // 2\r
-                       ib_net16_t lid1;        // 2\r
-                       ib_net16_t lid2;        // 2\r
-                       ib_net32_t key; // 4\r
-                       ib_net32_t qp1; // 4b sl, 4b pad, 24b qp1\r
-                       ib_net32_t qp2; // 8b pad, 24b qp2\r
-                       ib_gid_t gid1;  // 16\r
-                       ib_gid_t gid2;  // 16\r
-               } PACK_SUFFIX ntc_257_258;\r
-               struct _ntc_259 // pkey violation from switch 51\r
-               {\r
-                       ib_net16_t data_valid;  // 2\r
-                       ib_net16_t lid1;        // 2\r
-                       ib_net16_t lid2;        // 2\r
-                       ib_net16_t pkey;        // 2\r
-                       ib_net32_t sl_qp1; // 4b sl, 4b pad, 24b qp1\r
-                       ib_net32_t qp2; // 8b pad, 24b qp2\r
-                       ib_gid_t gid1;  // 16\r
-                       ib_gid_t gid2;  // 16\r
-                       ib_net16_t sw_lid;      // 2\r
-                       uint8_t port_no;        // 1\r
-               } PACK_SUFFIX ntc_259;\r
-               struct _ntc_bkey_259    // bkey violation\r
-               {\r
-                       ib_net16_t lidaddr;\r
-                       uint8_t method;\r
-                       uint8_t reserved;\r
-                       ib_net16_t attribute_id;\r
-                       ib_net32_t attribute_modifier;\r
-                       ib_net32_t qp;          // qp is low 24 bits\r
-                       ib_net64_t bkey;\r
-                       ib_gid_t gid;\r
-               } PACK_SUFFIX ntc_bkey_259;\r
-       } data_details;\r
-       ib_gid_t issuer_gid;    // 16          80\r
-} PACK_SUFFIX ib_mad_notice_attr_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/**\r
- * Trap 259 masks\r
- */\r
-#define TRAP_259_MASK_SL (CL_HTON32(0xF0000000))\r
-#define TRAP_259_MASK_QP (CL_HTON32(0x00FFFFFF))\r
-\r
-/**\r
- * Trap 144 masks\r
- */\r
-#define TRAP_144_MASK_OTHER_LOCAL_CHANGES      0x01\r
-#define TRAP_144_MASK_SM_PRIORITY_CHANGE       (CL_HTON16(0x0008))\r
-#define TRAP_144_MASK_LINK_SPEED_ENABLE_CHANGE (CL_HTON16(0x0004))\r
-#define TRAP_144_MASK_LINK_WIDTH_ENABLE_CHANGE (CL_HTON16(0x0002))\r
-#define TRAP_144_MASK_NODE_DESCRIPTION_CHANGE  (CL_HTON16(0x0001))\r
-\r
-/****f* IBA Base: Types/ib_notice_is_generic\r
-* NAME\r
-*      ib_notice_is_generic\r
-*\r
-* DESCRIPTION\r
-*      Check if the notice is generic\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline boolean_t OSM_API\r
-ib_notice_is_generic(IN const ib_mad_notice_attr_t * p_ntc)\r
-{\r
-       return (p_ntc->generic_type & 0x80);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ntc\r
-*              [in] Pointer to  the notice MAD attribute\r
-*\r
-* RETURN VALUES\r
-*      TRUE if mad is generic\r
-*\r
-* SEE ALSO\r
-*      ib_mad_notice_attr_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_notice_get_type\r
-* NAME\r
-*      ib_notice_get_type\r
-*\r
-* DESCRIPTION\r
-*      Get the notice type\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_notice_get_type(IN const ib_mad_notice_attr_t * p_ntc)\r
-{\r
-       return p_ntc->generic_type & 0x7f;\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ntc\r
-*              [in] Pointer to  the notice MAD attribute\r
-*\r
-* RETURN VALUES\r
-*      TRUE if mad is generic\r
-*\r
-* SEE ALSO\r
-*      ib_mad_notice_attr_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_notice_get_prod_type\r
-* NAME\r
-*      ib_notice_get_prod_type\r
-*\r
-* DESCRIPTION\r
-*      Get the notice Producer Type of Generic Notice\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net32_t OSM_API\r
-ib_notice_get_prod_type(IN const ib_mad_notice_attr_t * p_ntc)\r
-{\r
-       uint32_t pt;\r
-\r
-       pt = cl_ntoh16(p_ntc->g_or_v.generic.prod_type_lsb) |\r
-           (p_ntc->g_or_v.generic.prod_type_msb << 16);\r
-       return cl_hton32(pt);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ntc\r
-*              [in] Pointer to the notice MAD attribute\r
-*\r
-* RETURN VALUES\r
-*      The producer type\r
-*\r
-* SEE ALSO\r
-*      ib_mad_notice_attr_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_notice_set_prod_type\r
-* NAME\r
-*      ib_notice_set_prod_type\r
-*\r
-* DESCRIPTION\r
-*      Set the notice Producer Type of Generic Notice\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_notice_set_prod_type(IN ib_mad_notice_attr_t * p_ntc,\r
-                       IN ib_net32_t prod_type_val)\r
-{\r
-       uint32_t ptv = cl_ntoh32(prod_type_val);\r
-       p_ntc->g_or_v.generic.prod_type_lsb =\r
-           cl_hton16((uint16_t) (ptv & 0x0000ffff));\r
-       p_ntc->g_or_v.generic.prod_type_msb =\r
-           (uint8_t) ((ptv & 0x00ff0000) >> 16);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ntc\r
-*              [in] Pointer to the notice MAD attribute\r
-*\r
-*  prod_type\r
-*     [in] The producer Type code\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* SEE ALSO\r
-*      ib_mad_notice_attr_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_notice_set_prod_type_ho\r
-* NAME\r
-*      ib_notice_set_prod_type_ho\r
-*\r
-* DESCRIPTION\r
-*      Set the notice Producer Type of Generic Notice given Host Order\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_notice_set_prod_type_ho(IN ib_mad_notice_attr_t * p_ntc,\r
-                          IN uint32_t prod_type_val_ho)\r
-{\r
-       p_ntc->g_or_v.generic.prod_type_lsb =\r
-           cl_hton16((uint16_t) (prod_type_val_ho & 0x0000ffff));\r
-       p_ntc->g_or_v.generic.prod_type_msb =\r
-           (uint8_t) ((prod_type_val_ho & 0x00ff0000) >> 16);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ntc\r
-*              [in] Pointer to the notice MAD attribute\r
-*\r
-*      prod_type\r
-*              [in] The producer Type code in host order\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* SEE ALSO\r
-*      ib_mad_notice_attr_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_notice_get_vend_id\r
-* NAME\r
-*      ib_notice_get_vend_id\r
-*\r
-* DESCRIPTION\r
-*      Get the Vendor Id of Vendor type Notice\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net32_t OSM_API\r
-ib_notice_get_vend_id(IN const ib_mad_notice_attr_t * p_ntc)\r
-{\r
-       uint32_t vi;\r
-\r
-       vi = cl_ntoh16(p_ntc->g_or_v.vend.vend_id_lsb) |\r
-           (p_ntc->g_or_v.vend.vend_id_msb << 16);\r
-       return cl_hton32(vi);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ntc\r
-*              [in] Pointer to the notice MAD attribute\r
-*\r
-* RETURN VALUES\r
-*      The Vendor Id of Vendor type Notice\r
-*\r
-* SEE ALSO\r
-*      ib_mad_notice_attr_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_notice_set_vend_id\r
-* NAME\r
-*      ib_notice_set_vend_id\r
-*\r
-* DESCRIPTION\r
-*      Set the notice Producer Type of Generic Notice\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_notice_set_vend_id(IN ib_mad_notice_attr_t * p_ntc, IN ib_net32_t vend_id)\r
-{\r
-       uint32_t vi = cl_ntoh32(vend_id);\r
-       p_ntc->g_or_v.vend.vend_id_lsb =\r
-           cl_hton16((uint16_t) (vi & 0x0000ffff));\r
-       p_ntc->g_or_v.vend.vend_id_msb = (uint8_t) ((vi & 0x00ff0000) >> 16);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ntc\r
-*              [in] Pointer to the notice MAD attribute\r
-*\r
-*      vend_id\r
-*              [in] The producer Type code\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* SEE ALSO\r
-*      ib_mad_notice_attr_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_notice_set_vend_id_ho\r
-* NAME\r
-*      ib_notice_set_vend_id_ho\r
-*\r
-* DESCRIPTION\r
-*      Set the notice Producer Type of Generic Notice given a host order value\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_notice_set_vend_id_ho(IN ib_mad_notice_attr_t * p_ntc,\r
-                        IN uint32_t vend_id_ho)\r
-{\r
-       p_ntc->g_or_v.vend.vend_id_lsb =\r
-           cl_hton16((uint16_t) (vend_id_ho & 0x0000ffff));\r
-       p_ntc->g_or_v.vend.vend_id_msb =\r
-           (uint8_t) ((vend_id_ho & 0x00ff0000) >> 16);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_ntc\r
-*              [in] Pointer to the notice MAD attribute\r
-*\r
-*      vend_id_ho\r
-*              [in] The producer Type code in host order\r
-*\r
-* RETURN VALUES\r
-*      None\r
-*\r
-* SEE ALSO\r
-*      ib_mad_notice_attr_t\r
-*********/\r
-\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_inform_info {\r
-       ib_gid_t gid;\r
-       ib_net16_t lid_range_begin;\r
-       ib_net16_t lid_range_end;\r
-       ib_net16_t reserved1;\r
-       uint8_t is_generic;\r
-       uint8_t subscribe;\r
-       ib_net16_t trap_type;\r
-       union _inform_g_or_v {\r
-               struct _inform_generic {\r
-                       ib_net16_t trap_num;\r
-                       ib_net32_t qpn_resp_time_val;\r
-                       uint8_t reserved2;\r
-                       uint8_t node_type_msb;\r
-                       ib_net16_t node_type_lsb;\r
-               } PACK_SUFFIX generic;\r
-               struct _inform_vend {\r
-                       ib_net16_t dev_id;\r
-                       ib_net32_t qpn_resp_time_val;\r
-                       uint8_t reserved2;\r
-                       uint8_t vendor_id_msb;\r
-                       ib_net16_t vendor_id_lsb;\r
-               } PACK_SUFFIX vend;\r
-       } PACK_SUFFIX g_or_v;\r
-} PACK_SUFFIX ib_inform_info_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****f* IBA Base: Types/ib_inform_info_get_qpn_resp_time\r
-* NAME\r
-*      ib_inform_info_get_qpn_resp_time\r
-*\r
-* DESCRIPTION\r
-*      Get QPN of the inform info\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_inform_info_get_qpn_resp_time(IN const ib_net32_t qpn_resp_time_val,\r
-                                OUT ib_net32_t * const p_qpn,\r
-                                OUT uint8_t * const p_resp_time_val)\r
-{\r
-       uint32_t tmp = cl_ntoh32(qpn_resp_time_val);\r
-\r
-       if (p_qpn)\r
-               *p_qpn = cl_hton32((tmp & 0xffffff00) >> 8);\r
-       if (p_resp_time_val)\r
-               *p_resp_time_val = (uint8_t) (tmp & 0x0000001f);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      qpn_resp_time_val\r
-*              [in] the  qpn and resp time val from the mad\r
-*\r
-* RETURN VALUES\r
-*      p_qpn\r
-*              [out] pointer to the qpn\r
-*\r
-*      p_state\r
-*              [out] pointer to the resp time val\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_inform_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_inform_info_set_qpn\r
-* NAME\r
-*      ib_inform_info_set_qpn\r
-*\r
-* DESCRIPTION\r
-*      Set the QPN of the inform info\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline void OSM_API\r
-ib_inform_info_set_qpn(IN ib_inform_info_t * p_ii, IN ib_net32_t const qpn)\r
-{\r
-       uint32_t tmp = cl_ntoh32(p_ii->g_or_v.generic.qpn_resp_time_val);\r
-\r
-       p_ii->g_or_v.generic.qpn_resp_time_val =\r
-           cl_hton32((tmp & 0x000000ff) | ((cl_ntoh32(qpn) << 8) & 0xffffff00)\r
-           );\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_inform_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_inform_info_get_prod_type\r
-* NAME\r
-*      ib_inform_info_get_prod_type\r
-*\r
-* DESCRIPTION\r
-*      Get Producer Type of the Inform Info\r
-*      13.4.8.3 InformInfo\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net32_t OSM_API\r
-ib_inform_info_get_prod_type(IN const ib_inform_info_t * p_inf)\r
-{\r
-       uint32_t nt;\r
-\r
-       nt = cl_ntoh16(p_inf->g_or_v.generic.node_type_lsb) |\r
-           (p_inf->g_or_v.generic.node_type_msb << 16);\r
-       return cl_hton32(nt);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_inf\r
-*              [in] pointer to an inform info\r
-*\r
-* RETURN VALUES\r
-*     The producer type\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_inform_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_inform_info_get_vend_id\r
-* NAME\r
-*      ib_inform_info_get_vend_id\r
-*\r
-* DESCRIPTION\r
-*      Get Node Type of the Inform Info\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline ib_net32_t OSM_API\r
-ib_inform_info_get_vend_id(IN const ib_inform_info_t * p_inf)\r
-{\r
-       uint32_t vi;\r
-\r
-       vi = cl_ntoh16(p_inf->g_or_v.vend.vendor_id_lsb) |\r
-           (p_inf->g_or_v.vend.vendor_id_msb << 16);\r
-       return cl_hton32(vi);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_inf\r
-*              [in] pointer to an inform info\r
-*\r
-* RETURN VALUES\r
-*     The node type\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_inform_info_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_inform_info_record_t\r
-* NAME\r
-*      ib_inform_info_record_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined InformInfo Record. (15.2.5.12)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_inform_info_record {\r
-       ib_gid_t subscriber_gid;\r
-       ib_net16_t subscriber_enum;\r
-       uint8_t reserved[6];\r
-       ib_inform_info_t inform_info;\r
-       uint8_t pad[4];\r
-} PACK_SUFFIX ib_inform_info_record_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****s* IBA Base: Types/ib_perfmgt_mad_t\r
-* NAME\r
-*      ib_perfmgt_mad_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined Perf Management MAD (16.3.1)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_perfmgt_mad {\r
-       ib_mad_t header;\r
-       uint8_t resv[40];\r
-#define        IB_PM_DATA_SIZE         192\r
-       uint8_t data[IB_PM_DATA_SIZE];\r
-} PACK_SUFFIX ib_perfmgt_mad_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      header\r
-*              Common MAD header.\r
-*\r
-*      resv\r
-*              Reserved.\r
-*\r
-*      data\r
-*              Performance Management payload.  The structure and content of this field\r
-*              depends upon the method, attr_id, and attr_mod fields in the header.\r
-*\r
-* SEE ALSO\r
-* ib_mad_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_port_counters\r
-* NAME\r
-*      ib_port_counters_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined PortCounters Attribute. (16.1.3.5)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_port_counters {\r
-       uint8_t reserved;\r
-       uint8_t port_select;\r
-       ib_net16_t counter_select;\r
-       ib_net16_t symbol_err_cnt;\r
-       uint8_t link_err_recover;\r
-       uint8_t link_downed;\r
-       ib_net16_t rcv_err;\r
-       ib_net16_t rcv_rem_phys_err;\r
-       ib_net16_t rcv_switch_relay_err;\r
-       ib_net16_t xmit_discards;\r
-       uint8_t xmit_constraint_err;\r
-       uint8_t rcv_constraint_err;\r
-       uint8_t counter_select2;\r
-       uint8_t link_int_buffer_overrun;\r
-       ib_net16_t resv;\r
-       ib_net16_t vl15_dropped;\r
-       ib_net32_t xmit_data;\r
-       ib_net32_t rcv_data;\r
-       ib_net32_t xmit_pkts;\r
-       ib_net32_t rcv_pkts;\r
-       ib_net32_t xmit_wait;\r
-} PACK_SUFFIX ib_port_counters_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-#define PC_LINK_INT(integ_buf_over) ((integ_buf_over & 0xF0) >> 4)\r
-#define PC_BUF_OVERRUN(integ_buf_over) (integ_buf_over & 0x0F)\r
-\r
-/****s* IBA Base: Types/ib_port_counters_ext\r
-* NAME\r
-*      ib_port_counters_ext_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined PortCounters Extended Attribute. (16.1.4.11)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_port_counters_ext {\r
-       uint8_t reserved;\r
-       uint8_t port_select;\r
-       ib_net16_t counter_select;\r
-       ib_net32_t reserved2;\r
-       ib_net64_t xmit_data;\r
-       ib_net64_t rcv_data;\r
-       ib_net64_t xmit_pkts;\r
-       ib_net64_t rcv_pkts;\r
-       ib_net64_t unicast_xmit_pkts;\r
-       ib_net64_t unicast_rcv_pkts;\r
-       ib_net64_t multicast_xmit_pkts;\r
-       ib_net64_t multicast_rcv_pkts;\r
-} PACK_SUFFIX ib_port_counters_ext_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****s* IBA Base: Types/ib_port_samples_control\r
-* NAME\r
-*      ib_port_samples_control_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined PortSamplesControl Attribute. (16.1.3.2)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_port_samples_control {\r
-       uint8_t op_code;\r
-       uint8_t port_select;\r
-       uint8_t tick;\r
-       uint8_t counter_width;  /* 5 bits res : 3bits counter_width */\r
-       ib_net32_t counter_mask;        /* 2 bits res : 3 bits counter_mask : 27 bits counter_masks_1to9 */\r
-       ib_net16_t counter_mask_10to14; /* 1 bits res : 15 bits counter_masks_10to14 */\r
-       uint8_t sample_mech;\r
-       uint8_t sample_status;  /* 6 bits res : 2 bits sample_status */\r
-       ib_net64_t option_mask;\r
-       ib_net64_t vendor_mask;\r
-       ib_net32_t sample_start;\r
-       ib_net32_t sample_interval;\r
-       ib_net16_t tag;\r
-       ib_net16_t counter_select0;\r
-       ib_net16_t counter_select1;\r
-       ib_net16_t counter_select2;\r
-       ib_net16_t counter_select3;\r
-       ib_net16_t counter_select4;\r
-       ib_net16_t counter_select5;\r
-       ib_net16_t counter_select6;\r
-       ib_net16_t counter_select7;\r
-       ib_net16_t counter_select8;\r
-       ib_net16_t counter_select9;\r
-       ib_net16_t counter_select10;\r
-       ib_net16_t counter_select11;\r
-       ib_net16_t counter_select12;\r
-       ib_net16_t counter_select13;\r
-       ib_net16_t counter_select14;\r
-} PACK_SUFFIX ib_port_samples_control_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****d* IBA Base: Types/CounterSelect values\r
-* NAME\r
-*       Counter select values\r
-*\r
-* DESCRIPTION\r
-*      Mandatory counter select values (16.1.3.3)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#define IB_CS_PORT_XMIT_DATA (CL_HTON16(0x0001))\r
-#define IB_CS_PORT_RCV_DATA  (CL_HTON16(0x0002))\r
-#define IB_CS_PORT_XMIT_PKTS (CL_HTON16(0x0003))\r
-#define IB_CS_PORT_RCV_PKTS  (CL_HTON16(0x0004))\r
-#define IB_CS_PORT_XMIT_WAIT (CL_HTON16(0x0005))\r
-\r
-/****s* IBA Base: Types/ib_port_samples_result\r
-* NAME\r
-*      ib_port_samples_result_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined PortSamplesControl Attribute. (16.1.3.2)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_port_samples_result {\r
-       ib_net16_t tag;\r
-       ib_net16_t sample_status;       /* 14 bits res : 2 bits sample_status */\r
-       ib_net32_t counter0;\r
-       ib_net32_t counter1;\r
-       ib_net32_t counter2;\r
-       ib_net32_t counter3;\r
-       ib_net32_t counter4;\r
-       ib_net32_t counter5;\r
-       ib_net32_t counter6;\r
-       ib_net32_t counter7;\r
-       ib_net32_t counter8;\r
-       ib_net32_t counter9;\r
-       ib_net32_t counter10;\r
-       ib_net32_t counter11;\r
-       ib_net32_t counter12;\r
-       ib_net32_t counter13;\r
-       ib_net32_t counter14;\r
-} PACK_SUFFIX ib_port_samples_result_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****s* IBA Base: Types/ib_port_xmit_data_sl\r
-* NAME\r
-*      ib_port_xmit_data_sl_t\r
-*\r
-* DESCRIPTION\r
-*       IBA defined PortXmitDataSL Attribute. (A13.6.4)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_port_xmit_data_sl {\r
-       uint8_t reserved;\r
-       uint8_t port_select;\r
-       ib_net16_t counter_select;\r
-       ib_net32_t port_xmit_data_sl[16];\r
-       uint8_t resv[124];\r
-} PACK_SUFFIX ib_port_xmit_data_sl_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****s* IBA Base: Types/ib_port_rcv_data_sl\r
-* NAME\r
-*      ib_port_rcv_data_sl_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined PortRcvDataSL Attribute. (A13.6.4)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_port_rcv_data_sl {\r
-       uint8_t reserved;\r
-       uint8_t port_select;\r
-       ib_net16_t counter_select;\r
-       ib_net32_t port_rcv_data_sl[16];\r
-       uint8_t resv[124];\r
-} PACK_SUFFIX ib_port_rcv_data_sl_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/****d* IBA Base: Types/DM_SVC_NAME\r
-* NAME\r
-*      DM_SVC_NAME\r
-*\r
-* DESCRIPTION\r
-*      IBA defined Device Management service name (16.3)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#define        DM_SVC_NAME                             "DeviceManager.IBTA"\r
-/*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_dm_mad_t\r
-* NAME\r
-*      ib_dm_mad_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined Device Management MAD (16.3.1)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_dm_mad {\r
-       ib_mad_t header;\r
-       uint8_t resv[40];\r
-#define        IB_DM_DATA_SIZE         192\r
-       uint8_t data[IB_DM_DATA_SIZE];\r
-} PACK_SUFFIX ib_dm_mad_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      header\r
-*              Common MAD header.\r
-*\r
-*      resv\r
-*              Reserved.\r
-*\r
-*      data\r
-*              Device Management payload.  The structure and content of this field\r
-*              depend upon the method, attr_id, and attr_mod fields in the header.\r
-*\r
-* SEE ALSO\r
-* ib_mad_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_iou_info_t\r
-* NAME\r
-*      ib_iou_info_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined IO Unit information structure (16.3.3.3)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_iou_info {\r
-       ib_net16_t change_id;\r
-       uint8_t max_controllers;\r
-       uint8_t diag_rom;\r
-#define        IB_DM_CTRL_LIST_SIZE    128\r
-       uint8_t controller_list[IB_DM_CTRL_LIST_SIZE];\r
-#define        IOC_NOT_INSTALLED               0x0\r
-#define        IOC_INSTALLED                   0x1\r
-//              Reserved values                         0x02-0xE\r
-#define        SLOT_DOES_NOT_EXIST             0xF\r
-} PACK_SUFFIX ib_iou_info_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      change_id\r
-*              Value incremented, with rollover, by any change to the controller_list.\r
-*\r
-*      max_controllers\r
-*              Number of slots in controller_list.\r
-*\r
-*      diag_rom\r
-*              A byte containing two fields: DiagDeviceID and OptionROM.\r
-*              These fields may be read using the ib_iou_info_diag_dev_id\r
-*              and ib_iou_info_option_rom functions.\r
-*\r
-*      controller_list\r
-*              A series of 4-bit nibbles, with each nibble representing a slot\r
-*              in the IO Unit.  Individual nibbles may be read using the\r
-*              ioc_at_slot function.\r
-*\r
-* SEE ALSO\r
-* ib_dm_mad_t, ib_iou_info_diag_dev_id, ib_iou_info_option_rom, ioc_at_slot\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_iou_info_diag_dev_id\r
-* NAME\r
-*      ib_iou_info_diag_dev_id\r
-*\r
-* DESCRIPTION\r
-*      Returns the DiagDeviceID.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_iou_info_diag_dev_id(IN const ib_iou_info_t * const p_iou_info)\r
-{\r
-       return ((uint8_t) (p_iou_info->diag_rom >> 6 & 1));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_iou_info\r
-*              [in] Pointer to the IO Unit information structure.\r
-*\r
-* RETURN VALUES\r
-*      DiagDeviceID field of the IO Unit information.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_iou_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ib_iou_info_option_rom\r
-* NAME\r
-*      ib_iou_info_option_rom\r
-*\r
-* DESCRIPTION\r
-*      Returns the OptionROM.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ib_iou_info_option_rom(IN const ib_iou_info_t * const p_iou_info)\r
-{\r
-       return ((uint8_t) (p_iou_info->diag_rom >> 7));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_iou_info\r
-*              [in] Pointer to the IO Unit information structure.\r
-*\r
-* RETURN VALUES\r
-*      OptionROM field of the IO Unit information.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_iou_info_t\r
-*********/\r
-\r
-/****f* IBA Base: Types/ioc_at_slot\r
-* NAME\r
-*      ioc_at_slot\r
-*\r
-* DESCRIPTION\r
-*      Returns the IOC value at the specified slot.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline uint8_t OSM_API\r
-ioc_at_slot(IN const ib_iou_info_t * const p_iou_info, IN uint8_t slot)\r
-{\r
-       if (slot >= IB_DM_CTRL_LIST_SIZE)\r
-               return SLOT_DOES_NOT_EXIST;\r
-       else\r
-               return (int8_t)\r
-                   ((slot % 2) ?\r
-                    ((p_iou_info->controller_list[slot / 2] & 0xf0) >> 4) :\r
-                    (p_iou_info->controller_list[slot / 2] & 0x0f));\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      p_iou_info\r
-*              [in] Pointer to the IO Unit information structure.\r
-*\r
-*      slot\r
-*              [in] Pointer to the IO Unit information structure.\r
-*\r
-* RETURN VALUES\r
-*      OptionROM field of the IO Unit information.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*      ib_iou_info_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_ioc_profile_t\r
-* NAME\r
-*      ib_ioc_profile_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined IO Controller profile structure (16.3.3.4)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_ioc_profile {\r
-       ib_net64_t ioc_guid;\r
-       ib_net32_t vend_id;\r
-       ib_net32_t dev_id;\r
-       ib_net16_t dev_ver;\r
-       ib_net16_t resv2;\r
-       ib_net32_t subsys_vend_id;\r
-       ib_net32_t subsys_id;\r
-       ib_net16_t io_class;\r
-       ib_net16_t io_subclass;\r
-       ib_net16_t protocol;\r
-       ib_net16_t protocol_ver;\r
-       ib_net32_t resv3;\r
-       ib_net16_t send_msg_depth;\r
-       uint8_t resv4;\r
-       uint8_t rdma_read_depth;\r
-       ib_net32_t send_msg_size;\r
-       ib_net32_t rdma_size;\r
-       uint8_t ctrl_ops_cap;\r
-#define        CTRL_OPS_CAP_ST         0x01\r
-#define        CTRL_OPS_CAP_SF         0x02\r
-#define        CTRL_OPS_CAP_RT         0x04\r
-#define        CTRL_OPS_CAP_RF         0x08\r
-#define        CTRL_OPS_CAP_WT         0x10\r
-#define        CTRL_OPS_CAP_WF         0x20\r
-#define        CTRL_OPS_CAP_AT         0x40\r
-#define        CTRL_OPS_CAP_AF         0x80\r
-       uint8_t resv5;\r
-       uint8_t num_svc_entries;\r
-#define        MAX_NUM_SVC_ENTRIES     0xff\r
-       uint8_t resv6[9];\r
-#define        CTRL_ID_STRING_LEN      64\r
-       char id_string[CTRL_ID_STRING_LEN];\r
-} PACK_SUFFIX ib_ioc_profile_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      ioc_guid\r
-*              An EUI-64 GUID used to uniquely identify the IO controller.\r
-*\r
-*      vend_id\r
-*              IO controller vendor ID, IEEE format.\r
-*\r
-*      dev_id\r
-*              A number assigned by the vendor to identify the type of controller.\r
-*\r
-*      dev_ver\r
-*              A number assigned by the vendor to identify the divice version.\r
-*\r
-*      subsys_vend_id\r
-*              ID of the vendor of the enclosure, if any, in which the IO controller\r
-*              resides in IEEE format; otherwise zero.\r
-*\r
-*      subsys_id\r
-*              A number identifying the subsystem where the controller resides.\r
-*\r
-*      io_class\r
-*              0x0000 - 0xfffe = reserved for IO classes encompased by InfiniBand\r
-*              Architecture.  0xffff = Vendor specific.\r
-*\r
-*      io_subclass\r
-*              0x0000 - 0xfffe = reserved for IO subclasses encompased by InfiniBand\r
-*              Architecture.  0xffff = Vendor specific.  This shall be set to 0xfff\r
-*              if the io_class component is 0xffff.\r
-*\r
-*      protocol\r
-*              0x0000 - 0xfffe = reserved for IO subclasses encompased by InfiniBand\r
-*              Architecture.  0xffff = Vendor specific.  This shall be set to 0xfff\r
-*              if the io_class component is 0xffff.\r
-*\r
-*      protocol_ver\r
-*              Protocol specific.\r
-*\r
-*      send_msg_depth\r
-*              Maximum depth of the send message queue.\r
-*\r
-*      rdma_read_depth\r
-*              Maximum depth of the per-channel RDMA read queue.\r
-*\r
-*      send_msg_size\r
-*              Maximum size of send messages.\r
-*\r
-*      ctrl_ops_cap\r
-*              Supported operation types of this IO controller.  A bit set to one\r
-*              for affirmation of supported capability.\r
-*\r
-*      num_svc_entries\r
-*              Number of entries in the service entries table.\r
-*\r
-*      id_string\r
-*              UTF-8 encoded string for identifying the controller to an operator.\r
-*\r
-* SEE ALSO\r
-* ib_dm_mad_t\r
-*********/\r
-\r
-static inline uint32_t OSM_API\r
-ib_ioc_profile_get_vend_id(IN const ib_ioc_profile_t * const p_ioc_profile)\r
-{\r
-       return (cl_ntoh32(p_ioc_profile->vend_id) >> 8);\r
-}\r
-\r
-static inline void OSM_API\r
-ib_ioc_profile_set_vend_id(IN ib_ioc_profile_t * const p_ioc_profile,\r
-                          IN const uint32_t vend_id)\r
-{\r
-       p_ioc_profile->vend_id = (cl_hton32(vend_id) << 8);\r
-}\r
-\r
-/****s* IBA Base: Types/ib_svc_entry_t\r
-* NAME\r
-*      ib_svc_entry_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined IO Controller service entry structure (16.3.3.5)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_svc_entry {\r
-#define        MAX_SVC_ENTRY_NAME_LEN          40\r
-       char name[MAX_SVC_ENTRY_NAME_LEN];\r
-       ib_net64_t id;\r
-} PACK_SUFFIX ib_svc_entry_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      name\r
-*              UTF-8 encoded, null-terminated name of the service.\r
-*\r
-*      id\r
-*              An identifier of the associated Service.\r
-*\r
-* SEE ALSO\r
-* ib_svc_entries_t\r
-*********/\r
-\r
-/****s* IBA Base: Types/ib_svc_entries_t\r
-* NAME\r
-*      ib_svc_entries_t\r
-*\r
-* DESCRIPTION\r
-*      IBA defined IO Controller service entry array (16.3.3.5)\r
-*\r
-* SYNOPSIS\r
-*/\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_svc_entries {\r
-#define        SVC_ENTRY_COUNT                 4\r
-       ib_svc_entry_t service_entry[SVC_ENTRY_COUNT];\r
-} PACK_SUFFIX ib_svc_entries_t;\r
-#include <complib/cl_packoff.h>\r
-/*\r
-* FIELDS\r
-*      service_entry\r
-*              An array of IO controller service entries.\r
-*\r
-* SEE ALSO\r
-* ib_dm_mad_t, ib_svc_entry_t\r
-*********/\r
-\r
-static inline void OSM_API\r
-ib_dm_get_slot_lo_hi(IN const ib_net32_t slot_lo_hi,\r
-                    OUT uint8_t * const p_slot,\r
-                    OUT uint8_t * const p_lo, OUT uint8_t * const p_hi)\r
-{\r
-       ib_net32_t tmp_slot_lo_hi = CL_NTOH32(slot_lo_hi);\r
-\r
-       if (p_slot)\r
-               *p_slot = (uint8_t) ((tmp_slot_lo_hi >> 16) & 0x0f);\r
-       if (p_hi)\r
-               *p_hi = (uint8_t) ((tmp_slot_lo_hi >> 8) & 0xff);\r
-       if (p_lo)\r
-               *p_lo = (uint8_t) ((tmp_slot_lo_hi >> 0) & 0xff);\r
-}\r
-\r
-/*\r
- *     IBA defined information describing an I/O controller\r
- */\r
-#include <complib/cl_packon.h>\r
-typedef struct _ib_ioc_info {\r
-       ib_net64_t module_guid;\r
-       ib_net64_t iou_guid;\r
-       ib_ioc_profile_t ioc_profile;\r
-       ib_net64_t access_key;\r
-       uint16_t initiators_conf;\r
-       uint8_t resv[38];\r
-} PACK_SUFFIX ib_ioc_info_t;\r
-#include <complib/cl_packoff.h>\r
-\r
-/*\r
- *     The following definitions are shared between the Access Layer and VPD\r
- */\r
-typedef struct _ib_ca *__ptr64 ib_ca_handle_t;\r
-typedef struct _ib_pd *__ptr64 ib_pd_handle_t;\r
-typedef struct _ib_rdd *__ptr64 ib_rdd_handle_t;\r
-typedef struct _ib_mr *__ptr64 ib_mr_handle_t;\r
-typedef struct _ib_mw *__ptr64 ib_mw_handle_t;\r
-typedef struct _ib_qp *__ptr64 ib_qp_handle_t;\r
-typedef struct _ib_eec *__ptr64 ib_eec_handle_t;\r
-typedef struct _ib_cq *__ptr64 ib_cq_handle_t;\r
-typedef struct _ib_av *__ptr64 ib_av_handle_t;\r
-typedef struct _ib_mcast *__ptr64 ib_mcast_handle_t;\r
-\r
-/* Currently for windows branch, use the extended version of ib special verbs struct\r
-       in order to be compliant with Infinicon ib_types; later we'll change it to support\r
-       OpenSM ib_types.h */\r
-\r
-#ifndef __WIN__\r
-/****d* Access Layer/ib_api_status_t\r
-* NAME\r
-*      ib_api_status_t\r
-*\r
-* DESCRIPTION\r
-*      Function return codes indicating the success or failure of an API call.\r
-*      Note that success is indicated by the return value IB_SUCCESS, which\r
-*      is always zero.\r
-*\r
-* NOTES\r
-*      IB_VERBS_PROCESSING_DONE is used by UVP library to terminate a verbs call\r
-*      in the pre-ioctl step itself.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_api_status_t {\r
-       IB_SUCCESS,\r
-       IB_INSUFFICIENT_RESOURCES,\r
-       IB_INSUFFICIENT_MEMORY,\r
-       IB_INVALID_PARAMETER,\r
-       IB_INVALID_SETTING,\r
-       IB_NOT_FOUND,\r
-       IB_TIMEOUT,\r
-       IB_CANCELED,\r
-       IB_INTERRUPTED,\r
-       IB_INVALID_PERMISSION,\r
-       IB_UNSUPPORTED,\r
-       IB_OVERFLOW,\r
-       IB_MAX_MCAST_QPS_REACHED,\r
-       IB_INVALID_QP_STATE,\r
-       IB_INVALID_EEC_STATE,\r
-       IB_INVALID_APM_STATE,\r
-       IB_INVALID_PORT_STATE,\r
-       IB_INVALID_STATE,\r
-       IB_RESOURCE_BUSY,\r
-       IB_INVALID_PKEY,\r
-       IB_INVALID_LKEY,\r
-       IB_INVALID_RKEY,\r
-       IB_INVALID_MAX_WRS,\r
-       IB_INVALID_MAX_SGE,\r
-       IB_INVALID_CQ_SIZE,\r
-       IB_INVALID_SERVICE_TYPE,\r
-       IB_INVALID_GID,\r
-       IB_INVALID_LID,\r
-       IB_INVALID_GUID,\r
-       IB_INVALID_CA_HANDLE,\r
-       IB_INVALID_AV_HANDLE,\r
-       IB_INVALID_CQ_HANDLE,\r
-       IB_INVALID_EEC_HANDLE,\r
-       IB_INVALID_QP_HANDLE,\r
-       IB_INVALID_PD_HANDLE,\r
-       IB_INVALID_MR_HANDLE,\r
-       IB_INVALID_MW_HANDLE,\r
-       IB_INVALID_RDD_HANDLE,\r
-       IB_INVALID_MCAST_HANDLE,\r
-       IB_INVALID_CALLBACK,\r
-       IB_INVALID_AL_HANDLE,   /* InfiniBand Access Layer */\r
-       IB_INVALID_HANDLE,      /* InfiniBand Access Layer */\r
-       IB_ERROR,               /* InfiniBand Access Layer */\r
-       IB_REMOTE_ERROR,        /* Infiniband Access Layer */\r
-       IB_VERBS_PROCESSING_DONE,       /* See Notes above         */\r
-       IB_INVALID_WR_TYPE,\r
-       IB_QP_IN_TIMEWAIT,\r
-       IB_EE_IN_TIMEWAIT,\r
-       IB_INVALID_PORT,\r
-       IB_NOT_DONE,\r
-       IB_UNKNOWN_ERROR        /* ALWAYS LAST ENUM VALUE! */\r
-} ib_api_status_t;\r
-/*****/\r
-\r
-OSM_EXPORT const char *ib_error_str[];\r
-\r
-/****f* IBA Base: Types/ib_get_err_str\r
-* NAME\r
-*      ib_get_err_str\r
-*\r
-* DESCRIPTION\r
-*      Returns a string for the specified status value.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline const char *OSM_API ib_get_err_str(IN ib_api_status_t status)\r
-{\r
-       if (status > IB_UNKNOWN_ERROR)\r
-               status = IB_UNKNOWN_ERROR;\r
-       return (ib_error_str[status]);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      status\r
-*              [in] status value\r
-*\r
-* RETURN VALUES\r
-*      Pointer to the status description string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****d* Verbs/ib_async_event_t\r
-* NAME\r
-*      ib_async_event_t -- Async event types\r
-*\r
-* DESCRIPTION\r
-*      This type indicates the reason the async callback was called.\r
-*      The context in the ib_event_rec_t indicates the resource context\r
-*      that associated with the callback.  For example, for IB_AE_CQ_ERROR\r
-*      the context provided during the ib_create_cq is returned in the event.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_async_event_t {\r
-       IB_AE_SQ_ERROR = 1,\r
-       IB_AE_SQ_DRAINED,\r
-       IB_AE_RQ_ERROR,\r
-       IB_AE_CQ_ERROR,\r
-       IB_AE_QP_FATAL,\r
-       IB_AE_QP_COMM,\r
-       IB_AE_QP_APM,\r
-       IB_AE_EEC_FATAL,\r
-       IB_AE_EEC_COMM,\r
-       IB_AE_EEC_APM,\r
-       IB_AE_LOCAL_FATAL,\r
-       IB_AE_PKEY_TRAP,\r
-       IB_AE_QKEY_TRAP,\r
-       IB_AE_MKEY_TRAP,\r
-       IB_AE_PORT_TRAP,\r
-       IB_AE_SYSIMG_GUID_TRAP,\r
-       IB_AE_BUF_OVERRUN,\r
-       IB_AE_LINK_INTEGRITY,\r
-       IB_AE_FLOW_CTRL_ERROR,\r
-       IB_AE_BKEY_TRAP,\r
-       IB_AE_QP_APM_ERROR,\r
-       IB_AE_EEC_APM_ERROR,\r
-       IB_AE_WQ_REQ_ERROR,\r
-       IB_AE_WQ_ACCESS_ERROR,\r
-       IB_AE_PORT_ACTIVE,\r
-       IB_AE_PORT_DOWN,\r
-       IB_AE_UNKNOWN           /* ALWAYS LAST ENUM VALUE */\r
-} ib_async_event_t;\r
-/*\r
-* VALUES\r
-*      IB_AE_SQ_ERROR\r
-*              An error occurred when accessing the send queue of the QP or EEC.\r
-*              This event is optional.\r
-*\r
-*      IB_AE_SQ_DRAINED\r
-*              The send queue of the specified QP has completed the outstanding\r
-*              messages in progress when the state change was requested and, if\r
-*              applicable, has received all acknowledgements for those messages.\r
-*\r
-*      IB_AE_RQ_ERROR\r
-*              An error occurred when accessing the receive queue of the QP or EEC.\r
-*              This event is optional.\r
-*\r
-*      IB_AE_CQ_ERROR\r
-*              An error occurred when writing an entry to the CQ.\r
-*\r
-*      IB_AE_QP_FATAL\r
-*              A catastrophic error occurred while accessing or processing the\r
-*              work queue that prevents reporting of completions.\r
-*\r
-*      IB_AE_QP_COMM\r
-*              The first packet has arrived for the receive work queue where the\r
-*              QP is still in the RTR state.\r
-*\r
-*      IB_AE_QP_APM\r
-*              If alternate path migration is supported, this event indicates that\r
-*              the QP connection has migrated to the alternate path.\r
-*\r
-*      IB_AE_EEC_FATAL\r
-*              If reliable datagram service is supported, this event indicates that\r
-*              a catastrophic error occurred while accessing or processing the EEC\r
-*              that prevents reporting of completions.\r
-*\r
-*      IB_AE_EEC_COMM\r
-*              If reliable datagram service is supported, this event indicates that\r
-*              the first packet has arrived for the receive work queue where the\r
-*              EEC is still in the RTR state.\r
-*\r
-*      IB_AE_EEC_APM\r
-*              If reliable datagram service and alternate path migration is supported,\r
-*              this event indicates that the EEC connection has migrated to the\r
-*              alternate path.\r
-*\r
-*      IB_AE_LOCAL_FATAL\r
-*              A catastrophic HCA error occurred which cannot be attributed to\r
-*              any resource; behavior is indeterminate.\r
-*\r
-*      IB_AE_PKEY_TRAP\r
-*              A PKEY violation was detected.  This event is optional.\r
-*\r
-*      IB_AE_QKEY_TRAP\r
-*              A QKEY violation was detected.  This event is optional.\r
-*\r
-*      IB_AE_MKEY_TRAP\r
-*              A MKEY violation was detected.  This event is optional.\r
-*\r
-*      IB_AE_PORT_TRAP\r
-*              A port capability change was detected.  This event is optional.\r
-*\r
-*      IB_AE_SYSIMG_GUID_TRAP\r
-*              If the system image GUID is supported, this event indicates that\r
-*              the system image GUID of this HCA has been changed.  This event\r
-*              is optional.\r
-*\r
-*      IB_AE_BUF_OVERRUN\r
-*              The number of consecutive flow control update periods with at least\r
-*              one overrun error in each period has exceeded the threshold specified\r
-*              in the port info attributes.  This event is optional.\r
-*\r
-*      IB_AE_LINK_INTEGRITY\r
-*              The detection of excessively frequent local physical errors has\r
-*              exceeded the threshold specified in the port info attributes.  This\r
-*              event is optional.\r
-*\r
-*      IB_AE_FLOW_CTRL_ERROR\r
-*              An HCA watchdog timer monitoring the arrival of flow control updates\r
-*              has expired without receiving an update.  This event is optional.\r
-*\r
-*      IB_AE_BKEY_TRAP\r
-*              An BKEY violation was detected.  This event is optional.\r
-*\r
-*      IB_AE_QP_APM_ERROR\r
-*              If alternate path migration is supported, this event indicates that\r
-*              an incoming path migration request to this QP was not accepted.\r
-*\r
-*      IB_AE_EEC_APM_ERROR\r
-*              If reliable datagram service and alternate path migration is supported,\r
-*              this event indicates that an incoming path migration request to this\r
-*              EEC was not accepted.\r
-*\r
-*      IB_AE_WQ_REQ_ERROR\r
-*              An OpCode violation was detected at the responder.\r
-*\r
-*      IB_AE_WQ_ACCESS_ERROR\r
-*              An access violation was detected at the responder.\r
-*\r
-*      IB_AE_PORT_ACTIVE\r
-*              If the port active event is supported, this event is generated\r
-*              when the link becomes active: IB_LINK_ACTIVE.\r
-*\r
-*      IB_AE_PORT_DOWN\r
-*              The link is declared unavailable: IB_LINK_INIT, IB_LINK_ARMED,\r
-*              IB_LINK_DOWN.\r
-*\r
-*      IB_AE_UNKNOWN\r
-*              An unknown error occurred which cannot be attributed to any\r
-*              resource; behavior is indeterminate.\r
-*\r
-*****/\r
-\r
-OSM_EXPORT const char *ib_async_event_str[];\r
-\r
-/****f* IBA Base: Types/ib_get_async_event_str\r
-* NAME\r
-*      ib_get_async_event_str\r
-*\r
-* DESCRIPTION\r
-*      Returns a string for the specified asynchronous event.\r
-*\r
-* SYNOPSIS\r
-*/\r
-static inline const char *OSM_API\r
-ib_get_async_event_str(IN ib_async_event_t event)\r
-{\r
-       if (event > IB_AE_UNKNOWN)\r
-               event = IB_AE_UNKNOWN;\r
-       return (ib_async_event_str[event]);\r
-}\r
-\r
-/*\r
-* PARAMETERS\r
-*      event\r
-*              [in] event value\r
-*\r
-* RETURN VALUES\r
-*      Pointer to the asynchronous event description string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****s* Verbs/ib_event_rec_t\r
-* NAME\r
-*      ib_event_rec_t -- Async event notification record\r
-*\r
-* DESCRIPTION\r
-*      When an async event callback is made, this structure is passed to indicate\r
-*      the type of event, the source of event that caused it, and the context\r
-*      associated with this event.\r
-*\r
-*      context -- Context of the resource that caused the event.\r
-*              -- ca_context if this is a port/adapter event.\r
-*              -- qp_context if the source is a QP event\r
-*              -- cq_context if the source is a CQ event.\r
-*              -- ee_context if the source is an EE event.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_event_rec {\r
-       void *context;\r
-       ib_async_event_t type;\r
-       /* HCA vendor specific event information. */\r
-       uint64_t vendor_specific;\r
-       /* The following structures are valid only for trap types. */\r
-       union _trap {\r
-               struct {\r
-                       uint16_t lid;\r
-                       ib_net64_t port_guid;\r
-                       uint8_t port_num;\r
-                       /*\r
-                        * The following structure is valid only for\r
-                        * P_KEY, Q_KEY, and M_KEY violation traps.\r
-                        */\r
-                       struct {\r
-                               uint8_t sl;\r
-                               uint16_t src_lid;\r
-                               uint16_t dest_lid;\r
-                               union _key {\r
-                                       uint16_t pkey;\r
-                                       uint32_t qkey;\r
-                                       uint64_t mkey;\r
-                               } key;\r
-                               uint32_t src_qp;\r
-                               uint32_t dest_qp;\r
-                               ib_gid_t src_gid;\r
-                               ib_gid_t dest_gid;\r
-                       } violation;\r
-               } info;\r
-               ib_net64_t sysimg_guid;\r
-       } trap;\r
-} ib_event_rec_t;\r
-/*******/\r
-\r
-/****d* Access Layer/ib_atomic_t\r
-* NAME\r
-*      ib_atomic_t\r
-*\r
-* DESCRIPTION\r
-*      Indicates atomicity levels supported by an adapter.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_atomic_t {\r
-       IB_ATOMIC_NONE,\r
-       IB_ATOMIC_LOCAL,\r
-       IB_ATOMIC_GLOBAL\r
-} ib_atomic_t;\r
-/*\r
-* VALUES\r
-*      IB_ATOMIC_NONE\r
-*              Atomic operations not supported.\r
-*\r
-*      IB_ATOMIC_LOCAL\r
-*              Atomic operations guaranteed between QPs of a single CA.\r
-*\r
-*      IB_ATOMIC_GLOBAL\r
-*              Atomic operations are guaranteed between CA and any other entity\r
-*              in the system.\r
-*****/\r
-\r
-/****s* Access Layer/ib_port_cap_t\r
-* NAME\r
-*      ib_port_cap_t\r
-*\r
-* DESCRIPTION\r
-*      Indicates which management agents are currently available on the specified\r
-*      port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_port_cap {\r
-       boolean_t cm;\r
-       boolean_t snmp;\r
-       boolean_t dev_mgmt;\r
-       boolean_t vend;\r
-       boolean_t sm;\r
-       boolean_t sm_disable;\r
-       boolean_t qkey_ctr;\r
-       boolean_t pkey_ctr;\r
-       boolean_t notice;\r
-       boolean_t trap;\r
-       boolean_t apm;\r
-       boolean_t slmap;\r
-       boolean_t pkey_nvram;\r
-       boolean_t mkey_nvram;\r
-       boolean_t sysguid;\r
-       boolean_t dr_notice;\r
-       boolean_t boot_mgmt;\r
-       boolean_t capm_notice;\r
-       boolean_t reinit;\r
-       boolean_t ledinfo;\r
-       boolean_t port_active;\r
-} ib_port_cap_t;\r
-/*****/\r
-\r
-/****d* Access Layer/ib_init_type_t\r
-* NAME\r
-*      ib_init_type_t\r
-*\r
-* DESCRIPTION\r
-*      If supported by the HCA, the type of initialization requested by\r
-*      this port before SM moves it to the active or armed state.  If the\r
-*      SM implements reinitialization, it shall set these bits to indicate\r
-*      the type of initialization performed prior to activating the port.\r
-*      Otherwise, these bits shall be set to 0.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint8_t ib_init_type_t;\r
-#define IB_INIT_TYPE_NO_LOAD                   0x01\r
-#define IB_INIT_TYPE_PRESERVE_CONTENT          0x02\r
-#define IB_INIT_TYPE_PRESERVE_PRESENCE         0x04\r
-#define IB_INIT_TYPE_DO_NOT_RESUSCITATE                0x08\r
-/*****/\r
-\r
-/****s* Access Layer/ib_port_attr_mod_t\r
-* NAME\r
-*      ib_port_attr_mod_t\r
-*\r
-* DESCRIPTION\r
-*      Port attributes that may be modified.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_port_attr_mod {\r
-       ib_port_cap_t cap;\r
-       uint16_t pkey_ctr;\r
-       uint16_t qkey_ctr;\r
-       ib_init_type_t init_type;\r
-       ib_net64_t system_image_guid;\r
-} ib_port_attr_mod_t;\r
-/*\r
-* SEE ALSO\r
-*      ib_port_cap_t\r
-*****/\r
-\r
-/****s* Access Layer/ib_port_attr_t\r
-* NAME\r
-*      ib_port_attr_t\r
-*\r
-* DESCRIPTION\r
-*      Information about a port on a given channel adapter.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_port_attr {\r
-       ib_net64_t port_guid;\r
-       uint8_t port_num;\r
-       uint8_t mtu;\r
-       uint64_t max_msg_size;\r
-       ib_net16_t lid;\r
-       uint8_t lmc;\r
-       /*\r
-        * LinkWidthSupported as defined in PortInfo.  Required to calculate\r
-        * inter-packet delay (a.k.a. static rate).\r
-        */\r
-       uint8_t link_width_supported;\r
-       uint16_t max_vls;\r
-       ib_net16_t sm_lid;\r
-       uint8_t sm_sl;\r
-       uint8_t link_state;\r
-       ib_init_type_t init_type_reply; /* Optional */\r
-       /*\r
-        * subnet_timeout:\r
-        * The maximum expected subnet propagation delay to reach any port on\r
-        * the subnet.  This value also determines the rate at which traps can\r
-        * be generated from this node.\r
-        *\r
-        * timeout = 4.096 microseconds * 2^subnet_timeout\r
-        */\r
-       uint8_t subnet_timeout;\r
-       ib_port_cap_t cap;\r
-       uint16_t pkey_ctr;\r
-       uint16_t qkey_ctr;\r
-       uint16_t num_gids;\r
-       uint16_t num_pkeys;\r
-       /*\r
-        * Pointers at the end of the structure to allow doing a simple\r
-        * memory comparison of contents up to the first pointer.\r
-        */\r
-       ib_gid_t *p_gid_table;\r
-       ib_net16_t *p_pkey_table;\r
-\r
-       enum rdma_transport_type        transport;\r
-\r
-} ib_port_attr_t;\r
-\r
-/*\r
-* SEE ALSO\r
-*      uint8_t, ib_port_cap_t, ib_link_states_t\r
-*****/\r
-\r
-/****s* Access Layer/ib_ca_attr_t\r
-* NAME\r
-*      ib_ca_attr_t\r
-*\r
-* DESCRIPTION\r
-*      Information about a channel adapter.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_ca_attr {\r
-       ib_net64_t ca_guid;\r
-       uint32_t vend_id;\r
-       uint16_t dev_id;\r
-       uint16_t revision;\r
-       uint64_t fw_ver;\r
-       /*\r
-        * Total size of the ca attributes in bytes\r
-        */\r
-       uint32_t size;\r
-       uint32_t max_qps;\r
-       uint32_t max_wrs;\r
-       uint32_t max_sges;\r
-       uint32_t max_rd_sges;\r
-       uint32_t max_cqs;\r
-       uint32_t max_cqes;\r
-       uint32_t max_pds;\r
-       uint32_t init_regions;\r
-       uint64_t init_region_size;\r
-       uint32_t init_windows;\r
-       uint32_t max_addr_handles;\r
-       uint32_t max_partitions;\r
-       ib_atomic_t atomicity;\r
-       uint8_t max_qp_resp_res;\r
-       uint8_t max_eec_resp_res;\r
-       uint8_t max_resp_res;\r
-       uint8_t max_qp_init_depth;\r
-       uint8_t max_eec_init_depth;\r
-       uint32_t max_eecs;\r
-       uint32_t max_rdds;\r
-       uint32_t max_ipv6_qps;\r
-       uint32_t max_ether_qps;\r
-       uint32_t max_mcast_grps;\r
-       uint32_t max_mcast_qps;\r
-       uint32_t max_qps_per_mcast_grp;\r
-       uint32_t max_fmr;\r
-       uint32_t max_map_per_fmr;\r
-       /*\r
-        * local_ack_delay:\r
-        * Specifies the maximum time interval between the local CA receiving\r
-        * a message and the transmission of the associated ACK or NAK.\r
-        *\r
-        * timeout = 4.096 microseconds * 2^local_ack_delay\r
-        */\r
-       uint8_t local_ack_delay;\r
-       boolean_t bad_pkey_ctr_support;\r
-       boolean_t bad_qkey_ctr_support;\r
-       boolean_t raw_mcast_support;\r
-       boolean_t apm_support;\r
-       boolean_t av_port_check;\r
-       boolean_t change_primary_port;\r
-       boolean_t modify_wr_depth;\r
-       boolean_t current_qp_state_support;\r
-       boolean_t shutdown_port_capability;\r
-       boolean_t init_type_support;\r
-       boolean_t port_active_event_support;\r
-       boolean_t system_image_guid_support;\r
-       boolean_t hw_agents;\r
-       ib_net64_t system_image_guid;\r
-       uint32_t num_page_sizes;\r
-       uint8_t num_ports;\r
-       uint32_t *p_page_size;\r
-       ib_port_attr_t *p_port_attr;\r
-} ib_ca_attr_t;\r
-/*\r
-* FIELDS\r
-*      ca_guid\r
-*              GUID for this adapter.\r
-*\r
-*      vend_id\r
-*              IEEE vendor ID for this adapter\r
-*\r
-*      dev_id\r
-*              Device ID of this adapter. (typically from PCI device ID)\r
-*\r
-*      revision\r
-*              Revision ID of this adapter\r
-*\r
-*      fw_ver\r
-*              Device Firmware version.\r
-*\r
-*      size\r
-*              Total size in bytes for the HCA attributes.  This size includes total\r
-*              size required for all the variable members of the structure.  If a\r
-*              vendor requires to pass vendor specific fields beyond this structure,\r
-*              the HCA vendor can choose to report a larger size.  If a vendor is\r
-*              reporting extended vendor specific features, they should also provide\r
-*              appropriate access functions to aid with the required interpretation.\r
-*\r
-*      max_qps\r
-*              Maximum number of QP's supported by this HCA.\r
-*\r
-*      max_wrs\r
-*              Maximum number of work requests supported by this HCA.\r
-*\r
-*      max_sges\r
-*              Maximum number of scatter gather elements supported per work request.\r
-*\r
-*      max_rd_sges\r
-*              Maximum number of scatter gather elements supported for READ work\r
-*              requests for a Reliable Datagram QP.  This value must be zero if RD\r
-*              service is not supported.\r
-*\r
-*      max_cqs\r
-*              Maximum number of Completion Queues supported.\r
-*\r
-*      max_cqes\r
-*              Maximum number of CQ elements supported per CQ.\r
-*\r
-*      max_pds\r
-*              Maximum number of protection domains supported.\r
-*\r
-*      init_regions\r
-*              Initial number of memory regions supported.  These are only informative\r
-*              values.  HCA vendors can extended and grow these limits on demand.\r
-*\r
-*      init_region_size\r
-*              Initial limit on the size of the registered memory region.\r
-*\r
-*      init_windows\r
-*              Initial number of window entries supported.\r
-*\r
-*      max_addr_handles\r
-*              Maximum number of address handles supported.\r
-*\r
-*      max_partitions\r
-*              Maximum number of partitions supported.\r
-*\r
-*      atomicity\r
-*              Indicates level of atomic operations supported by this HCA.\r
-*\r
-*      max_qp_resp_res\r
-*      max_eec_resp_res\r
-*              Maximum limit on number of responder resources for incoming RDMA\r
-*              operations, on QPs and EEC's respectively.\r
-*\r
-*      max_resp_res\r
-*              Maximum number of responder resources per HCA, with this HCA used as\r
-*              the target.\r
-*\r
-*      max_qp_init_depth\r
-*      max_eec_init_depth\r
-*              Maximimum initiator depth per QP or EEC for initiating RDMA reads and\r
-*              atomic operations.\r
-*\r
-*      max_eecs\r
-*              Maximimum number of EEC's supported by the HCA.\r
-*\r
-*      max_rdds\r
-*              Maximum number of Reliable datagram domains supported.\r
-*\r
-*      max_ipv6_qps\r
-*      max_ether_qps\r
-*              Maximum number of IPV6 and raw ether QP's supported by this HCA.\r
-*\r
-*      max_mcast_grps\r
-*              Maximum number of multicast groups supported.\r
-*\r
-*      max_mcast_qps\r
-*              Maximum number of QP's that can support multicast operations.\r
-*\r
-*      max_qps_per_mcast_grp\r
-*              Maximum number of multicast QP's per multicast group.\r
-*\r
-*      local_ack_delay\r
-*              Specifies the maximum time interval between the local CA receiving\r
-*              a message and the transmission of the associated ACK or NAK.\r
-*              timeout = 4.096 microseconds * 2^local_ack_delay\r
-*\r
-*      bad_pkey_ctr_support\r
-*      bad_qkey_ctr_support\r
-*              Indicates support for the bad pkey and qkey counters.\r
-*\r
-*      raw_mcast_support\r
-*              Indicates support for raw packet multicast.\r
-*\r
-*      apm_support\r
-*              Indicates support for Automatic Path Migration.\r
-*\r
-*      av_port_check\r
-*              Indicates ability to check port number in address handles.\r
-*\r
-*      change_primary_port\r
-*              Indicates ability to change primary port for a QP or EEC during a\r
-*              SQD->RTS transition.\r
-*\r
-*      modify_wr_depth\r
-*              Indicates ability to modify QP depth during a modify QP operation.\r
-*              Check the verb specification for permitted states.\r
-*\r
-*      current_qp_state_support\r
-*              Indicates ability of the HCA to support the current QP state modifier\r
-*              during a modify QP operation.\r
-*\r
-*      shutdown_port_capability\r
-*              Shutdown port capability support indicator.\r
-*\r
-*      init_type_support\r
-*              Indicates init_type_reply and ability to set init_type is supported.\r
-*\r
-*      port_active_event_support\r
-*              Port active event support indicator.\r
-*\r
-*      system_image_guid_support\r
-*              System image GUID support indicator.\r
-*\r
-*      hw_agents\r
-*              Indicates SMA is implemented in HW.\r
-*\r
-*      system_image_guid\r
-*              Optional system image GUID.  This field is valid only if the\r
-*              system_image_guid_support flag is set.\r
-*\r
-*      num_page_sizes\r
-*              Indicates support for different page sizes supported by the HCA.\r
-*              The variable size array can be obtained from p_page_size.\r
-*\r
-*      num_ports\r
-*              Number of physical ports supported on this HCA.\r
-*\r
-*      p_page_size\r
-*              Array holding different page size supported.\r
-*\r
-*      p_port_attr\r
-*              Array holding port attributes.\r
-*\r
-* NOTES\r
-*      This structure contains the attributes of a channel adapter.  Users must\r
-*      call ib_copy_ca_attr to copy the contents of this structure to a new\r
-*      memory region.\r
-*\r
-* SEE ALSO\r
-*      ib_port_attr_t, ib_atomic_t, ib_copy_ca_attr\r
-*****/\r
-\r
-/****f* Access layer/ib_copy_ca_attr\r
-* NAME\r
-*      ib_copy_ca_attr\r
-*\r
-* DESCRIPTION\r
-*      Copies CA attributes.\r
-*\r
-* SYNOPSIS\r
-*/\r
-ib_ca_attr_t *ib_copy_ca_attr(IN ib_ca_attr_t * const p_dest,\r
-                             IN const ib_ca_attr_t * const p_src);\r
-/*\r
-* PARAMETERS\r
-*      p_dest\r
-*              Pointer to the buffer that is the destination of the copy.\r
-*\r
-*      p_src\r
-*              Pointer to the CA attributes to copy.\r
-*\r
-* RETURN VALUE\r
-*      Pointer to the copied CA attributes.\r
-*\r
-* NOTES\r
-*      The buffer pointed to by the p_dest parameter must be at least the size\r
-*      specified in the size field of the buffer pointed to by p_src.\r
-*\r
-* SEE ALSO\r
-*      ib_ca_attr_t, ib_dup_ca_attr, ib_free_ca_attr\r
-*****/\r
-\r
-/****s* Access Layer/ib_av_attr_t\r
-* NAME\r
-*      ib_av_attr_t\r
-*\r
-* DESCRIPTION\r
-*      IBA address vector.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_av_attr {\r
-       uint8_t port_num;\r
-       uint8_t sl;\r
-       ib_net16_t dlid;\r
-       boolean_t grh_valid;\r
-       ib_grh_t grh;\r
-       uint8_t static_rate;\r
-       uint8_t path_bits;\r
-       struct _av_conn {\r
-               uint8_t path_mtu;\r
-               uint8_t local_ack_timeout;\r
-               uint8_t seq_err_retry_cnt;\r
-               uint8_t rnr_retry_cnt;\r
-       } conn;\r
-} ib_av_attr_t;\r
-/*\r
-* SEE ALSO\r
-*      ib_gid_t\r
-*****/\r
-\r
-/****d* Access Layer/ib_qp_type_t\r
-* NAME\r
-*      ib_qp_type_t\r
-*\r
-* DESCRIPTION\r
-*      Indicates the type of queue pair being created.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_qp_type {\r
-       IB_QPT_RELIABLE_CONN = 0,       /* Matches CM REQ transport type */\r
-       IB_QPT_UNRELIABLE_CONN = 1,     /* Matches CM REQ transport type */\r
-       IB_QPT_RELIABLE_DGRM = 2,       /* Matches CM REQ transport type */\r
-       IB_QPT_UNRELIABLE_DGRM,\r
-       IB_QPT_QP0,\r
-       IB_QPT_QP1,\r
-       IB_QPT_RAW_IPV6,\r
-       IB_QPT_RAW_ETHER,\r
-       IB_QPT_MAD,             /* InfiniBand Access Layer */\r
-       IB_QPT_QP0_ALIAS,       /* InfiniBand Access Layer */\r
-       IB_QPT_QP1_ALIAS        /* InfiniBand Access Layer */\r
-} ib_qp_type_t;\r
-/*\r
-* VALUES\r
-*      IB_QPT_RELIABLE_CONN\r
-*              Reliable, connected queue pair.\r
-*\r
-*      IB_QPT_UNRELIABLE_CONN\r
-*              Unreliable, connected queue pair.\r
-*\r
-*      IB_QPT_RELIABLE_DGRM\r
-*              Reliable, datagram queue pair.\r
-*\r
-*      IB_QPT_UNRELIABLE_DGRM\r
-*              Unreliable, datagram queue pair.\r
-*\r
-*      IB_QPT_QP0\r
-*              Queue pair 0.\r
-*\r
-*      IB_QPT_QP1\r
-*              Queue pair 1.\r
-*\r
-*      IB_QPT_RAW_DGRM\r
-*              Raw datagram queue pair.\r
-*\r
-*      IB_QPT_RAW_IPV6\r
-*              Raw IP version 6 queue pair.\r
-*\r
-*      IB_QPT_RAW_ETHER\r
-*              Raw Ethernet queue pair.\r
-*\r
-*      IB_QPT_MAD\r
-*              Unreliable, datagram queue pair that will send and receive management\r
-*              datagrams with assistance from the access layer.\r
-*\r
-*      IB_QPT_QP0_ALIAS\r
-*              Alias to queue pair 0.  Aliased QPs can only be created on an aliased\r
-*              protection domain.\r
-*\r
-*      IB_QPT_QP1_ALIAS\r
-*              Alias to queue pair 1.  Aliased QPs can only be created on an aliased\r
-*              protection domain.\r
-*****/\r
-\r
-/****d* Access Layer/ib_access_t\r
-* NAME\r
-*      ib_access_t\r
-*\r
-* DESCRIPTION\r
-*      Indicates the type of access is permitted on resources such as QPs,\r
-*      memory regions and memory windows.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint32_t ib_access_t;\r
-#define IB_AC_RDMA_READ                                0x00000001\r
-#define IB_AC_RDMA_WRITE                       0x00000002\r
-#define IB_AC_ATOMIC                           0x00000004\r
-#define IB_AC_LOCAL_WRITE                      0x00000008\r
-#define IB_AC_MW_BIND                          0x00000010\r
-/*\r
-* NOTES\r
-*      Users may combine access rights using a bit-wise or operation to specify\r
-*      additional access.  For example: IB_AC_RDMA_READ | IB_AC_RDMA_WRITE grants\r
-*      RDMA read and write access.\r
-*****/\r
-\r
-/****d* Access Layer/ib_qp_state_t\r
-* NAME\r
-*      ib_qp_state_t\r
-*\r
-* DESCRIPTION\r
-*      Indicates or sets the state of a queue pair.  The current state of a queue\r
-*      pair is returned through the ib_qp_query call and set via the\r
-*      ib_qp_modify call.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint32_t ib_qp_state_t;\r
-#define IB_QPS_RESET                           0x00000001\r
-#define IB_QPS_INIT         &n