[ofw] RE: [PATCH] OpenSM 3.3.2 required items added to ib_types.h

Smith, Stan stan.smith at intel.com
Mon Oct 26 08:48:01 PDT 2009


Leonid Keller wrote:
> Why opensm contains complib header and c-files ?
> What are they different with from IBAL complib ?

Branches\opensm_3\user\
  include\complib
  complib\

Folders are present for the sole purpose of detecting, via diff, if the OFED developers have changed anything and what.
The lone exception is the Vendor layer needs complib\cl_event_wheel.c & complib\cl_dispatcher.c.

The preference, as setup by include paths, is to use trunk\inc\* 1st.

The overall plan was to make the Windows openSM src match as much as possible (within reason) the OFED management/opensm/* src. The idea being to leverage all the OFED OpenSM work now and into the future. The downside of the approach is we carry some extra file baggage in the src tree in order to easily detect changes in the OFED code base.

S.

>
>> -----Original Message-----
>> From: Smith, Stan [mailto:stan.smith at intel.com]
>> Sent: Saturday, October 24, 2009 4:15 AM
>> To: Leonid Keller
>> Cc: ofw at lists.openfabrics.org
>> Subject: [PATCH] OpenSM 3.3.2 required items added to ib_types.h
>>
>>
>> In order to build openSM 3.3.2 using only trunk\inc\* items
>> were added to ib_types.h.
>>  trunk\inc\iba\ib_types.h is now very close to matching
>> management/opensm/include/iba/ib_types.h.
>> Whitespace is the prime offender.
>>
>> These mods have been tested by building & installing the
>> entire tree on ia64/x86/x64 Svr2008/3 Using both the existing
>> trunk\ulp\opensm and the newer 3.3.2 version; both successful.
>>
>>
>> Signed-off-by: stan smith <stan.smith at intel.com>
>>
>> Revision: 2498
>> Author: stansmith
>> Date: 5:32:28 PM, Friday, October 23, 2009
>> Message:
>> [INC] add defines and inline functions from OFED management
>> ib_types.h in order to build OpenSM 3.3.2 using only
>> trunk\inc\*. Tested by building & installing WinOF releases
>> x86,x64) using current openSM and newer openSM; no observed
>> differences. ----
>> Modified : /gen1/trunk/inc/iba/ib_types.h
>>
>>
>> --- a/trunk/inc/iba/ib_types.h  Fri Oct 23 16:21:30 2009
>> +++ b/trunk/inc/iba/ib_types.h  Fri Oct 23 14:48:44 2009 @@ -270,6
>>  +270,32 @@ #define IB_SUBNET_PATH_HOPS_MAX
>> 64  /*********/
>>
>> +/****d* IBA Base: Constants/IB_HOPLIMIT_MAX
>> +* NAME
>> +*      IB_HOPLIMIT_MAX
>> +*
>> +* DESCRIPTION
>> +*       Maximum number of router hops allowed.
>> +*
>> +* SOURCE
>> +*/
>> +#define IB_HOPLIMIT_MAX                                        255
>> +/*********/ +
>> +/*********/
>> +/****d* IBA Base: Constants/IB_MC_SCOPE_*
>> +* NAME
>> +*      IB_MC_SCOPE_*
>> +*
>> +* DESCRIPTION
>> +*      Scope component definitions from IBA 1.2.1 (Table 3 p. 148)
>> +*/ +#define IB_MC_SCOPE_LINK_LOCAL         0x2
>> +#define IB_MC_SCOPE_SITE_LOCAL         0x5
>> +#define IB_MC_SCOPE_ORG_LOCAL          0x8
>> +#define IB_MC_SCOPE_GLOBAL             0xE
>> +/*********/
>> +
>>  /****d* IBA Base: Constants/IB_PKEY_MAX_BLOCKS
>>  * NAME
>>  *      IB_PKEY_MAX_BLOCKS
>> @@ -1577,6 +1603,18 @@
>>  #define IB_NOTICE_NODE_TYPE_ROUTER
>> (CL_NTOH32(0x000003))
>>  /**********/
>>
>> +/****d* IBA Base: Constants/IB_NOTICE_PRODUCER_TYPE_CLASS_MGR +*
>> NAME +*      IB_NOTICE_PRODUCER_TYPE_CLASS_MGR
>> +*
>> +* DESCRIPTION
>> +*      Encoded generic producer type used in Notice
>> attribute (13.4.8.2)
>> +*
>> +* SOURCE
>> +*/
>> +#define IB_NOTICE_PRODUCER_TYPE_CLASS_MGR
>> (CL_HTON32(0x000004)) +/**********/ +
>>  /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SUBN_MGMT
>>  * NAME
>>  *      IB_NOTICE_NODE_TYPE_SUBN_MGMT
>> @@ -1695,6 +1733,17 @@
>>  */
>>  #define IB_PATH_REC_SL_MASK                            0x000F
>>
>> +/****d* IBA Base: Constants/IB_MULTIPATH_REC_SL_MASK +* NAME
>> +*      IB_MILTIPATH_REC_SL_MASK
>> +*
>> +* DESCRIPTION
>> +*      Mask for the sl field for MultiPath record
>> +*
>> +* SOURCE
>> +*/
>> +#define IB_MULTIPATH_REC_SL_MASK                       0x000F +
>>  /****d* IBA Base: Constants/IB_PATH_REC_QOS_CLASS_MASK
>>  * NAME
>>  *      IB_PATH_REC_QOS_CLASS_MASK
>> @@ -1706,6 +1755,17 @@
>>  */
>>  #define IB_PATH_REC_QOS_CLASS_MASK                     0xFFF0
>>
>> +/****d* IBA Base: Constants/IB_MULTIPATH_REC_QOS_CLASS_MASK +* NAME
>> +*      IB_MULTIPATH_REC_QOS_CLASS_MASK
>> +*
>> +* DESCRIPTION
>> +*      Mask for the QoS class field for MultiPath record +*
>> +* SOURCE
>> +*/
>> +#define IB_MULTIPATH_REC_QOS_CLASS_MASK
>>  0xFFF0 + /****d* IBA Base: Constants/IB_PATH_REC_SELECTOR_MASK
>>  * NAME
>>  *      IB_PATH_REC_SELECTOR_MASK
>> @@ -1870,6 +1930,48 @@
>>  * ib_node_info_t
>>  *********/
>>
>> +static const char *const __ib_producer_type_str[] = { +
>> "UNKNOWN", +       "Channel Adapter",
>> +       "Switch",
>> +       "Router",
>> +       "Class Manager"
>> +};
>> +
>> +/****f* IBA Base: Types/ib_get_producer_type_str
>> +* NAME
>> +*      ib_get_producer_type_str
>> +*
>> +* DESCRIPTION
>> +*      Returns a string for the specified producer type +*
>> 13.4.8.2 Notice +*      13.4.8.3 InformInfo
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline const char *AL_API
>> +ib_get_producer_type_str(IN ib_net32_t producer_type) {
>> +       if (cl_ntoh32(producer_type) >
>> +           CL_NTOH32(IB_NOTICE_PRODUCER_TYPE_CLASS_MGR))
>> +               producer_type = 0;
>> +       return (__ib_producer_type_str[cl_ntoh32(producer_type)]); +}
>> +
>> +/*
>> +* PARAMETERS
>> +*      producer_type
>> +*              [in] Encoded producer type from the Notice attribute
>> + +* RETURN VALUES
>> +*      Pointer to the producer type string.
>> +*
>> +* NOTES
>> +*
>> +* SEE ALSO
>> +* ib_notice_get_prod_type
>> +*********/
>> +
>>  static const char* const __ib_port_state_str[] =  {
>>         "No State Change (NOP)",
>> @@ -2643,12 +2745,12 @@
>>  #define IB_MPR_COMPMASK_RATE
>>  (CL_HTON64(((uint64_t)1)<<13)) #define
>> IB_MPR_COMPMASK_PKTLIFETIMESELEC (CL_HTON64(((uint64_t)1)<<14))
>>  #define IB_MPR_COMPMASK_PKTLIFETIME
>> (CL_HTON64(((uint64_t)1)<<15)) -#define IB_MPR_COMPMASK_RESV2
>> (CL_HTON64(((uint64_t)1)<<16)) +#define
>>  IB_MPR_COMPMASK_SERVICEID_MSB  (CL_HTON64(((uint64_t)1)<<16))
>>  #define IB_MPR_COMPMASK_INDEPSELEC
>>  (CL_HTON64(((uint64_t)1)<<17)) #define IB_MPR_COMPMASK_RESV3
>>  (CL_HTON64(((uint64_t)1)<<18)) #define IB_MPR_COMPMASK_SGIDCOUNT
>> (CL_HTON64(((uint64_t)1)<<19)) #define IB_MPR_COMPMASK_DGIDCOUNT
>> (CL_HTON64(((uint64_t)1)<<20)) -#define IB_MPR_COMPMASK_RESV4
>> (CL_HTON64(((uint64_t)1)<<21)) +#define
>> IB_MPR_COMPMASK_SERVICEID_LSB  (CL_HTON64(((uint64_t)1)<<21))
>>
>>  /* SMInfo Record Component Masks */
>>  #define IB_SMIR_COMPMASK_LID
>>         (CL_HTON64(((uint64_t)1)<<0)) @@ -4472,10 +4574,11 @@
>>         ib_net16_t                      p_key_violations; ib_net16_t
>>         q_key_violations; uint8_t                         guid_cap;
>> -       uint8_t                         subnet_timeout; /*
>> cli_rereg(1b), resrv(
>> -2b), timeout(5b) */
>> +       uint8_t                         subnet_timeout; /*
>> cli_rereg(1b), mcast_pkey_trap_suppr(1b), resrv(1b), timeout(5b) */
>>         uint8_t                         resp_time_value;
>>         uint8_t                         error_threshold;
>> +       ib_net16_t                      max_credit_hint;
>> +       ib_net32_t                      link_rt_latency; /*
>> reserv(8b), link round trip lat(24b) */
>>
>>  }      PACK_SUFFIX ib_port_info_t;
>>  #include <complib/cl_packoff.h>
>> @@ -4528,12 +4631,12 @@
>>  #define IB_PORT_CAP_HAS_BM
>> (CL_NTOH32(0x00800000))
>>  #define IB_PORT_CAP_HAS_LINK_RT_LATENCY
>> (CL_NTOH32(0x01000000))  #define IB_PORT_CAP_HAS_CLIENT_REREG
>> (CL_NTOH32(0x02000000)) -#define IB_PORT_CAP_RESV26
>> (CL_NTOH32(0x04000000))
>> -#define IB_PORT_CAP_RESV27
>> (CL_NTOH32(0x08000000))
>> -#define IB_PORT_CAP_RESV28
>> (CL_NTOH32(0x10000000))
>> -#define IB_PORT_CAP_RESV29
>> (CL_NTOH32(0x20000000))
>> -#define IB_PORT_CAP_RESV30
>> (CL_NTOH32(0x40000000))
>> -#define IB_PORT_CAP_RESV31
>> (CL_NTOH32(0x80000000))
>> +#define IB_PORT_CAP_HAS_OTHER_LOCAL_CHANGES_NTC
>> (CL_HTON32(0x04000000))
>> +#define IB_PORT_CAP_HAS_LINK_SPEED_WIDTH_PAIRS_TBL
>> (CL_HTON32(0x08000000)) +#define IB_PORT_CAP_HAS_VEND_MADS
>> (CL_HTON32(0x10000000)) +#define
>> IB_PORT_CAP_HAS_MCAST_PKEY_TRAP_SUPPRESS +(CL_HTON32(0x20000000))
>> #define
>> IB_PORT_CAP_HAS_MCAST_FDB_TOP (CL_HTON32(0x40000000))
>> +#define IB_PORT_CAP_HAS_HIER_INFO      (CL_HTON32(0x80000000))
>>
>>  /****f* IBA Base: Types/ib_port_info_get_port_state  * NAME
>> @@ -4964,6 +5067,7 @@
>>
>>  #define IB_LINK_WIDTH_ACTIVE_1X                        1
>>  #define IB_LINK_WIDTH_ACTIVE_4X                        2
>> +#define IB_LINK_WIDTH_ACTIVE_8X                        4
>>  #define IB_LINK_WIDTH_ACTIVE_12X               8
>>  #define IB_LINK_SPEED_ACTIVE_2_5               1
>>  #define IB_LINK_SPEED_ACTIVE_5                 2
>> @@ -5241,6 +5345,66 @@
>>  * SEE ALSO
>>  *********/
>>
>> +/****f* IBA Base: Types/ib_port_info_get_master_smsl +* NAME
>> +*      ib_port_info_get_master_smsl
>> +*
>> +* DESCRIPTION
>> +*      Returns the encoded value for the Master SMSL at this port.
>> +* +* SYNOPSIS
>> +*/
>> +static inline uint8_t AL_API
>> +ib_port_info_get_master_smsl(IN const ib_port_info_t * const p_pi) {
>> +       return (uint8_t) (p_pi->mtu_smsl & 0x0F); } +
>> +/*
>> +* PARAMETERS
>> +*      p_pi
>> +*              [in] Pointer to a PortInfo attribute. +*
>> +* RETURN VALUES
>> +*      Returns the encoded value for the Master SMSL at this port.
>> +* +* NOTES
>> +*
>> +* SEE ALSO
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_port_info_set_master_smsl +* NAME
>> +*      ib_port_info_set_master_smsl
>> +*
>> +* DESCRIPTION
>> +*      Sets the Master SMSL value in the PortInfo attribute. +*
>> +* SYNOPSIS
>> +*/
>> +static inline void AL_API
>> +ib_port_info_set_master_smsl(IN ib_port_info_t * const p_pi,
>> +                            IN const uint8_t smsl) {
>> +       p_pi->mtu_smsl = (uint8_t) ((p_pi->mtu_smsl & 0xF0) | smsl);
>> } + +/*
>> +* PARAMETERS
>> +*      p_pi
>> +*              [in] Pointer to a PortInfo attribute. +*
>> +*      mtu
>> +*              [in] Encoded Master SMSL value to set +*
>> +* RETURN VALUES
>> +*      None.
>> +*
>> +* NOTES
>> +*
>> +* SEE ALSO
>> +*********/
>> +
>>
>>  /****f* IBA Base: Types/ib_port_info_get_sm_sl
>>  * NAME
>> @@ -5319,8 +5483,7 @@
>>  {
>>         CL_ASSERT( timeout <= 0x1F );
>>         p_pi->subnet_timeout =
>> -     (uint8_t)(
>> -       (p_pi->subnet_timeout & 0x80) | (timeout & 0x1F));
>> +     (uint8_t) ((p_pi->subnet_timeout & 0xE0) | (timeout & 0x1F));
>>  } /*
>>  * PARAMETERS
>> @@ -5354,8 +5517,7 @@
>>  {
>>         CL_ASSERT( client_rereg <= 0x1 );
>>         p_pi->subnet_timeout =
>> -     (uint8_t)(
>> -       (p_pi->subnet_timeout & 0x1F) | ((client_rereg << 7) &
>> 0x80)); +               (uint8_t) ((p_pi->subnet_timeout & 0x7F) |
>> (client_rereg + << 7));
>>  }
>>  /*
>>  * PARAMETERS
>> @@ -5373,6 +5535,71 @@
>>  * SEE ALSO
>>  *********/
>>
>> +/****f* IBA Base: Types/ib_port_info_get_mcast_pkey_trap_suppress
>> +* NAME +*      ib_port_info_get_mcast_pkey_trap_suppress
>> +*
>> +* DESCRIPTION
>> +*      Gets the encoded multicast pkey trap suppresion
>> enabled bit value
>> +*      in the PortInfo attribute.
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline uint8_t AL_API
>> +ib_port_info_get_mcast_pkey_trap_suppress(IN ib_port_info_t const
>> +*p_pi) { +       return ((p_pi->subnet_timeout & 0x40) >> 6); } +
>> +/*
>> +* PARAMETERS
>> +*      p_pi
>> +*              [in] Pointer to a PortInfo attribute. +*
>> +* RETURN VALUES
>> +*      Multicast PKey trap suppression enabled value (either 1 or
>> 0). +* +* NOTES
>> +*
>> +* SEE ALSO
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_port_info_set_mcast_pkey_trap_suppress
>> +* NAME +*      ib_port_info_set_mcast_pkey_trap_suppress
>> +*
>> +* DESCRIPTION
>> +*      Sets the encoded multicast pkey trap suppresion
>> enabled bit value
>> +*      in the PortInfo attribute.
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline void AL_API
>> +ib_port_info_set_mcast_pkey_trap_suppress(IN ib_port_info_t * const
>> p_pi, +                                         IN const uint8_t
>> +trap_suppress) { +       CL_ASSERT(trap_suppress <= 0x1);
>> +       p_pi->subnet_timeout =
>> +           (uint8_t) ((p_pi->subnet_timeout & 0xBF) |
>> (trap_suppress << +6)); }
>> +
>> +/*
>> +* PARAMETERS
>> +*      p_pi
>> +*              [in] Pointer to a PortInfo attribute. +*
>> +*      trap_suppress
>> +*              [in] Multicast pkey trap suppresion enabled
>> value to set
>> +*                   (either 1 or 0).
>> +*
>> +* RETURN VALUES
>> +*      None.
>> +*
>> +* NOTES
>> +*
>> +* SEE ALSO
>> +*********/
>> +
>>  /****f* IBA Base: Types/ib_port_info_get_timeout
>>  * NAME
>>  *      ib_port_info_get_timeout
>> @@ -5950,6 +6177,8 @@
>>         ib_net16_t                      lids_per_port;
>>         ib_net16_t                      enforce_cap;
>>         uint8_t                         flags;
>> +       uint8_t                         resvd;
>> +       ib_net16_t                      mcast_top;
>>
>>  }      PACK_SUFFIX ib_switch_info_t;
>>  #include <complib/cl_packoff.h>
>> @@ -6094,16 +6323,15 @@
>>         uint8_t                 tclass;
>>         uint8_t                 num_path;
>>         ib_net16_t              pkey;
>> -       uint8_t                 resv0;
>> -       uint8_t                 sl;
>> +       ib_net16_t              qos_class_sl;
>>         uint8_t                 mtu;
>>         uint8_t                 rate;
>>         uint8_t                 pkt_life;
>> -       uint8_t                 resv1;
>> +       uint8_t                 service_id_8msb;
>>         uint8_t                 independence;   /* formerly resv2 */
>>         uint8_t                 sgid_count;
>>         uint8_t                 dgid_count;
>> -       uint8_t                 resv3[7];
>> +       uint8_t                 service_id_56lsb[7];
>>         ib_gid_t                gids[IB_MULTIPATH_MAX_GIDS];
>>  }      PACK_SUFFIX ib_multipath_rec_t;
>>  #include <complib/cl_packoff.h>
>> @@ -6170,6 +6398,41 @@
>>  *       ib_multipath_rec_t
>>  *********/
>>
>> +/****f* IBA Base: Types/ib_multipath_rec_set_sl
>> +* NAME
>> +*      ib_multipath_rec_set_sl
>> +*
>> +* DESCRIPTION
>> +*      Set path service level.
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline void AL_API
>> +ib_multipath_rec_set_sl(
>> +       IN ib_multipath_rec_t* const p_rec,
>> +       IN const uint8_t sl )
>> +{
>> +       p_rec->qos_class_sl =
>> +               (p_rec->qos_class_sl &
>> CL_HTON16(IB_MULTIPATH_REC_QOS_CLASS_MASK)) |
>> +                       cl_hton16(sl & IB_MULTIPATH_REC_SL_MASK); }
>> +/* +* PARAMETERS
>> +*      p_rec
>> +*              [in] Pointer to the MultiPath record object. +*
>> +*      sl
>> +*              [in] Service level to set.
>> +*
>> +* RETURN VALUES
>> +*      None
>> +*
>> +* NOTES
>> +*
>> +* SEE ALSO
>> +*      ib_multipath_rec_t
>> +*********/
>> +
>>  /****f* IBA Base: Types/ib_multipath_rec_sl
>>  * NAME
>>  *       ib_multipath_rec_sl
>> @@ -6183,7 +6446,7 @@
>>  ib_multipath_rec_sl(
>>         IN      const   ib_multipath_rec_t* const       p_rec )  {
>> -        return( (uint8_t)((cl_ntoh16( p_rec->sl )) & 0xF) );
>> +       return ((uint8_t) ((cl_ntoh16(p_rec->qos_class_sl)) & +
>>  IB_MULTIPATH_REC_SL_MASK)); }
>>  /*
>>  * PARAMETERS
>> @@ -6199,6 +6462,70 @@
>>  *       ib_multipath_rec_t
>>  *********/
>>
>> +/****f* IBA Base: Types/ib_multipath_rec_set_qos_class +* NAME
>> +*      ib_multipath_rec_set_qos_class
>> +*
>> +* DESCRIPTION
>> +*      Set path QoS class.
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline void     AL_API
>> +ib_multipath_rec_set_qos_class(
>> +       IN ib_multipath_rec_t* const p_rec,
>> +       IN const uint16_t qos_class )
>> +{
>> +       p_rec->qos_class_sl =
>> +               (p_rec->qos_class_sl &
>> CL_HTON16(IB_MULTIPATH_REC_SL_MASK)) |
>> +                       cl_hton16(qos_class << 4); } +/*
>> +* PARAMETERS
>> +*      p_rec
>> +*              [in] Pointer to the MultiPath record object. +*
>> +*      qos_class
>> +*              [in] QoS class to set.
>> +*
>> +* RETURN VALUES
>> +*      None
>> +*
>> +* NOTES
>> +*
>> +* SEE ALSO
>> +*      ib_multipath_rec_t
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_multipath_rec_qos_class +* NAME
>> +*      ib_multipath_rec_qos_class
>> +*
>> +* DESCRIPTION
>> +*      Get QoS class.
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline uint16_t AL_API
>> +ib_multipath_rec_qos_class(
>> +       IN      const   ib_multipath_rec_t* const       p_rec ) +{
>> +       return (cl_ntoh16( p_rec->qos_class_sl ) >> 4); } +/*
>> +* PARAMETERS
>> +*      p_rec
>> +*              [in] Pointer to the MultiPath record object. +*
>> +* RETURN VALUES
>> +*      QoS class of the MultiPath record.
>> +*
>> +* NOTES
>> +*
>> +* SEE ALSO
>> +*      ib_multipath_rec_t
>> +*********/
>> +
>>  /****f* IBA Base: Types/ib_multipath_rec_mtu
>>  * NAME
>>  *       ib_multipath_rec_mtu
>> @@ -6395,6 +6722,41 @@
>>  *       ib_multipath_rec_t
>>  *********/
>>
>> +/****f* IBA Base: Types/ib_multipath_rec_service_id +* NAME
>> +*      ib_multipath_rec_service_id
>> +*
>> +* DESCRIPTION
>> +*      Get multipath service id.
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline ib_net64_t AL_API
>> +ib_multipath_rec_service_id(IN const ib_multipath_rec_t *
>> const p_rec)
>> +{
>> +       union {
>> +               ib_net64_t sid;
>> +               uint8_t sid_arr[8];
>> +       } sid_union;
>> +       sid_union.sid_arr[0] = p_rec->service_id_8msb;
>> +       memcpy(&sid_union.sid_arr[1], p_rec->service_id_56lsb, 7); +
>> return sid_union.sid; +}
>> +
>> +/*
>> +* PARAMETERS
>> +*      p_rec
>> +*              [in] Pointer to the multipath record object. +*
>> +* RETURN VALUES
>> +*      Service ID
>> +*
>> +* NOTES
>> +*
>> +* SEE ALSO
>> +*      ib_multipath_rec_t
>> +*********/
>> +
>>  #define IB_NUM_PKEY_ELEMENTS_IN_BLOCK          32
>>  /****s* IBA Base: Types/ib_pkey_table_t
>>  * NAME
>> @@ -6452,7 +6814,7 @@
>>  #include <complib/cl_packon.h>
>>  typedef struct _ib_slvl_table
>>  {
>> -       uint8_t         vl_table[IB_MAX_NUM_VLS/2];
>> +       uint8_t         raw_vl_by_sl[IB_MAX_NUM_VLS/2];
>>
>>  }      PACK_SUFFIX ib_slvl_table_t;
>>  #include <complib/cl_packoff.h>
>> @@ -6499,15 +6861,17 @@
>>         CL_ASSERT(vl <= 15);
>>         CL_ASSERT(sl_index <= 15);
>>
>> -       if (sl_index%2)
>> +       if (sl_index % 2)
>>         {
>>         /* this is an odd sl. Need to update the ls bits */
>> -               p_slvl_tbl->vl_table[idx] = (
>> p_slvl_tbl->vl_table[idx] & 0xF0 ) | vl ;
>> +               p_slvl_tbl->raw_vl_by_sl[idx] =
>> +                       ( p_slvl_tbl->raw_vl_by_sl[idx] & 0xF0 ) |
>>         vl ; }
>>         else
>>         {
>>         /* this is an even sl. Need to update the ms bits */
>> -               p_slvl_tbl->vl_table[idx] = ( vl << 4 ) | (
>> p_slvl_tbl->vl_table[idx] & 0x0F );
>> +               p_slvl_tbl->raw_vl_by_sl[idx] =
>> +                       ( vl << 4 ) | (
>> p_slvl_tbl->raw_vl_by_sl[idx] &
>> + 0x0F );
>>         }
>>  }
>>  /*
>> @@ -6547,15 +6911,15 @@
>>         uint8_t idx = sl_index/2;
>>         CL_ASSERT(sl_index <= 15);
>>
>> -       if (sl_index%2)
>> +       if (sl_index % 2)
>>         {
>>                 /* this is an odd sl. Need to return the ls bits. */
>> -               return ( p_slvl_tbl->vl_table[idx] & 0x0F );
>> +               return ( p_slvl_tbl->raw_vl_by_sl[idx] & 0x0F );
>>         } else
>>         {
>>                 /* this is an even sl. Need to return the ms bits. */
>> -               return ( (p_slvl_tbl->vl_table[idx] & 0xF0) >> 4 );
>> +               return ( (p_slvl_tbl->raw_vl_by_sl[idx] & 0xF0) >> 4
>>         ); }
>>  }
>>  /*
>> @@ -7314,22 +7678,32 @@
>>                  ib_gid_t      gid2;                   // 16
>>           } PACK_SUFFIX ntc_257_258;
>>
>> -         struct _ntc_259 // p/q_key violation with sw info 53
>> +         struct _ntc_259 // p/q_key violation from switch 51
>>                  { ib_net16_t    data_valid;   // 2
>>                  ib_net16_t    lid1;         // 2
>>                  ib_net16_t    lid2;         // 2
>> -                ib_net32_t    key;          // 4
>> -                uint8_t       sl;           // 1
>> -                ib_net32_t    qp1;          // 4
>> -                uint8_t       qp2_msb;      // 1
>> -                ib_net16_t    qp2_lsb;      // 2
>> +                ib_net16_t    pkey;         // 2
>> +                ib_net32_t    sl_qp1;       // 4b sl, 4b pad, 24b
>> qp1 +                ib_net32_t    qp2;          // 8b pad, 24b qp2
>>                  ib_gid_t      gid1;         // 16
>>                  ib_gid_t      gid2;         // 16
>>                  ib_net16_t    sw_lid;       // 2
>>                  uint8_t       port_no;      // 1
>>           } PACK_SUFFIX ntc_259;
>>
>> +         struct _ntc_bkey_259  // bkey violation
>> +         {
>> +                ib_net16_t lidaddr;
>> +                uint8_t method;
>> +                uint8_t reserved;
>> +                ib_net16_t attribute_id;
>> +                ib_net32_t attribute_modifier;
>> +                ib_net32_t qp;         // qp is low 24 bits
>> +                ib_net64_t bkey;
>> +                ib_gid_t gid;
>> +         } PACK_SUFFIX ntc_bkey_259;
>> +
>>         } data_details;
>>
>>    ib_gid_t                     issuer_gid;    // 16          80 @@
>>  -7352,6 +7726,258 @@ #define TRAP_144_MASK_LINK_WIDTH_ENABLE_CHANGE
>> (CL_HTON16(0x0002))  #define
>> TRAP_144_MASK_NODE_DESCRIPTION_CHANGE  (CL_HTON16(0x0001))
>>
>> +/****f* IBA Base: Types/ib_notice_is_generic
>> +* NAME
>> +*      ib_notice_is_generic
>> +*
>> +* DESCRIPTION
>> +*      Check if the notice is generic
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline boolean_t AL_API
>> +ib_notice_is_generic(IN const ib_mad_notice_attr_t * p_ntc) {
>> +       return (p_ntc->generic_type & 0x80); }
>> +
>> +/*
>> +* PARAMETERS
>> +*      p_ntc
>> +*              [in] Pointer to  the notice MAD attribute +*
>> +* RETURN VALUES
>> +*      TRUE if mad is generic
>> +*
>> +* SEE ALSO
>> +*      ib_mad_notice_attr_t
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_notice_get_type
>> +* NAME
>> +*      ib_notice_get_type
>> +*
>> +* DESCRIPTION
>> +*      Get the notice type
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline uint8_t AL_API
>> +ib_notice_get_type(IN const ib_mad_notice_attr_t * p_ntc) {
>> +       return p_ntc->generic_type & 0x7f; }
>> +
>> +/*
>> +* PARAMETERS
>> +*      p_ntc
>> +*              [in] Pointer to  the notice MAD attribute +*
>> +* RETURN VALUES
>> +*      TRUE if mad is generic
>> +*
>> +* SEE ALSO
>> +*      ib_mad_notice_attr_t
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_notice_get_prod_type
>> +* NAME
>> +*      ib_notice_get_prod_type
>> +*
>> +* DESCRIPTION
>> +*      Get the notice Producer Type of Generic Notice +*
>> +* SYNOPSIS
>> +*/
>> +static inline ib_net32_t AL_API
>> +ib_notice_get_prod_type(IN const ib_mad_notice_attr_t * p_ntc) { +
>> uint32_t pt; +
>> +       pt = cl_ntoh16(p_ntc->g_or_v.generic.prod_type_lsb) |
>> +           (p_ntc->g_or_v.generic.prod_type_msb << 16); +
>> return cl_hton32(pt); +}
>> +
>> +/*
>> +* PARAMETERS
>> +*      p_ntc
>> +*              [in] Pointer to the notice MAD attribute +*
>> +* RETURN VALUES
>> +*      The producer type
>> +*
>> +* SEE ALSO
>> +*      ib_mad_notice_attr_t
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_notice_set_prod_type
>> +* NAME
>> +*      ib_notice_set_prod_type
>> +*
>> +* DESCRIPTION
>> +*      Set the notice Producer Type of Generic Notice +*
>> +* SYNOPSIS
>> +*/
>> +static inline void AL_API
>> +ib_notice_set_prod_type(IN ib_mad_notice_attr_t * p_ntc,
>> +                       IN ib_net32_t prod_type_val) {
>> +       uint32_t ptv = cl_ntoh32(prod_type_val);
>> +       p_ntc->g_or_v.generic.prod_type_lsb =
>> +           cl_hton16((uint16_t) (ptv & 0x0000ffff));
>> +       p_ntc->g_or_v.generic.prod_type_msb =
>> +           (uint8_t) ((ptv & 0x00ff0000) >> 16); } +
>> +/*
>> +* PARAMETERS
>> +*      p_ntc
>> +*              [in] Pointer to the notice MAD attribute +*
>> +*  prod_type
>> +*     [in] The producer Type code
>> +*
>> +* RETURN VALUES
>> +*      None
>> +*
>> +* SEE ALSO
>> +*      ib_mad_notice_attr_t
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_notice_set_prod_type_ho +* NAME
>> +*      ib_notice_set_prod_type_ho
>> +*
>> +* DESCRIPTION
>> +*      Set the notice Producer Type of Generic Notice given
>> Host Order
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline void AL_API
>> +ib_notice_set_prod_type_ho(IN ib_mad_notice_attr_t * p_ntc,
>> +                          IN uint32_t prod_type_val_ho) {
>> +       p_ntc->g_or_v.generic.prod_type_lsb =
>> +           cl_hton16((uint16_t) (prod_type_val_ho & 0x0000ffff));
>> +       p_ntc->g_or_v.generic.prod_type_msb =
>> +           (uint8_t) ((prod_type_val_ho & 0x00ff0000) >> 16); } +
>> +/*
>> +* PARAMETERS
>> +*      p_ntc
>> +*              [in] Pointer to the notice MAD attribute +*
>> +*      prod_type
>> +*              [in] The producer Type code in host order +*
>> +* RETURN VALUES
>> +*      None
>> +*
>> +* SEE ALSO
>> +*      ib_mad_notice_attr_t
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_notice_get_vend_id
>> +* NAME
>> +*      ib_notice_get_vend_id
>> +*
>> +* DESCRIPTION
>> +*      Get the Vendor Id of Vendor type Notice
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline ib_net32_t AL_API
>> +ib_notice_get_vend_id(IN const ib_mad_notice_attr_t * p_ntc) { +
>> uint32_t vi; +
>> +       vi = cl_ntoh16(p_ntc->g_or_v.vend.vend_id_lsb) |
>> +           (p_ntc->g_or_v.vend.vend_id_msb << 16); +       return
>> cl_hton32(vi); +}
>> +
>> +/*
>> +* PARAMETERS
>> +*      p_ntc
>> +*              [in] Pointer to the notice MAD attribute +*
>> +* RETURN VALUES
>> +*      The Vendor Id of Vendor type Notice
>> +*
>> +* SEE ALSO
>> +*      ib_mad_notice_attr_t
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_notice_set_vend_id
>> +* NAME
>> +*      ib_notice_set_vend_id
>> +*
>> +* DESCRIPTION
>> +*      Set the notice Producer Type of Generic Notice +*
>> +* SYNOPSIS
>> +*/
>> +static inline void AL_API
>> +ib_notice_set_vend_id(IN ib_mad_notice_attr_t * p_ntc, IN
>> ib_net32_t +vend_id) { +       uint32_t vi = cl_ntoh32(vend_id);
>> +       p_ntc->g_or_v.vend.vend_id_lsb =
>> +           cl_hton16((uint16_t) (vi & 0x0000ffff));
>> +       p_ntc->g_or_v.vend.vend_id_msb = (uint8_t) ((vi &
>> 0x00ff0000) >> +16); }
>> +
>> +/*
>> +* PARAMETERS
>> +*      p_ntc
>> +*              [in] Pointer to the notice MAD attribute +*
>> +*      vend_id
>> +*              [in] The producer Type code
>> +*
>> +* RETURN VALUES
>> +*      None
>> +*
>> +* SEE ALSO
>> +*      ib_mad_notice_attr_t
>> +*********/
>> +
>> +/****f* IBA Base: Types/ib_notice_set_vend_id_ho
>> +* NAME
>> +*      ib_notice_set_vend_id_ho
>> +*
>> +* DESCRIPTION
>> +*      Set the notice Producer Type of Generic Notice given
>> a host order value
>> +*
>> +* SYNOPSIS
>> +*/
>> +static inline void AL_API
>> +ib_notice_set_vend_id_ho(IN ib_mad_notice_attr_t * p_ntc,
>> +                        IN uint32_t vend_id_ho) {
>> +       p_ntc->g_or_v.vend.vend_id_lsb =
>> +           cl_hton16((uint16_t) (vend_id_ho & 0x0000ffff));
>> +       p_ntc->g_or_v.vend.vend_id_msb =
>> +           (uint8_t) ((vend_id_ho & 0x00ff0000) >> 16); } +
>> +/*
>> +* PARAMETERS
>> +*      p_ntc
>> +*              [in] Pointer to the notice MAD attribute +*
>> +*      vend_id_ho
>> +*              [in] The producer Type code in host order +*
>> +* RETURN VALUES
>> +*      None
>> +*
>> +* SEE ALSO
>> +*      ib_mad_notice_attr_t
>> +*********/
>> +
>>  #include <complib/cl_packon.h>
>>  typedef struct _ib_inform_info
>>  {
>> @@ -7537,6 +8163,40 @@
>>  }      PACK_SUFFIX ib_inform_info_record_t;
>>  #include <complib/cl_packoff.h>
>>  /********/
>> +
>> +/****s* IBA Base: Types/ib_perfmgt_mad_t
>> +* NAME
>> +*      ib_perfmgt_mad_t
>> +*
>> +* DESCRIPTION
>> +*      IBA defined Perf Management MAD (16.3.1)
>> +*
>> +* SYNOPSIS
>> +*/
>> +#include <complib/cl_packon.h>
>> +typedef struct _ib_perfmgt_mad {
>> +       ib_mad_t header;
>> +       uint8_t resv[40];
>> +#define        IB_PM_DATA_SIZE         192
>> +       uint8_t data[IB_PM_DATA_SIZE];
>> +} PACK_SUFFIX ib_perfmgt_mad_t;
>> +#include <complib/cl_packoff.h>
>> +/*
>> +* FIELDS
>> +*      header
>> +*              Common MAD header.
>> +*
>> +*      resv
>> +*              Reserved.
>> +*
>> +*      data
>> +*              Performance Management payload.  The
>> structure and content of this field
>> +*              depends upon the method, attr_id, and
>> attr_mod fields in the header.
>> +*
>> +* SEE ALSO
>> +* ib_mad_t
>> +*********/
>> +
>>  /****d* IBA Base: Types/DM_SVC_NAME
>>  * NAME
>>  *      DM_SVC_NAME




More information about the ofw mailing list