[IBAL] update ib_types.h from Linux . mainly white spaces and adding of function...
authorsleybo <sleybo@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Wed, 4 Apr 2007 14:19:19 +0000 (14:19 +0000)
committersleybo <sleybo@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Wed, 4 Apr 2007 14:19:19 +0000 (14:19 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@623 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

inc/iba/ib_types.h

index 37977ea..51ed640 100644 (file)
@@ -2064,7 +2064,16 @@ typedef union _ib_gid
 *\r
 * SEE ALSO\r
 *********/\r
-\r
+
+/****f* IBA Base: Types/ib_gid_is_multicast
+* NAME
+*      ib_gid_is_multicast
+*
+* DESCRIPTION
+*       Returns a boolean indicating whether a GID is a multicast GID.
+*
+* SYNOPSIS
+*/\r
 AL_INLINE boolean_t AL_API\r
 ib_gid_is_multicast(\r
        IN              const   ib_gid_t*                                       p_gid )\r
@@ -2072,6 +2081,40 @@ ib_gid_is_multicast(
        return( p_gid->raw[0] == 0xFF );\r
 }\r
 \r
+/****f* IBA Base: Types/ib_gid_get_scope
+* NAME
+*      ib_gid_get_scope
+*
+* DESCRIPTION
+*      Returns scope of (assumed) multicast GID.
+*
+* SYNOPSIS
+*/
+AL_INLINE uint8_t AL_API\r
+ib_mgid_get_scope(
+       IN      const   ib_gid_t*               p_gid )
+{
+       return( p_gid->raw[1] & 0x0F );
+}
+
+/****f* IBA Base: Types/ib_gid_set_scope
+* NAME
+*      ib_gid_set_scope
+*
+* DESCRIPTION
+*      Sets scope of (assumed) multicast GID.
+*
+* SYNOPSIS
+*/
+AL_INLINE void AL_API\r
+ib_mgid_set_scope(
+        IN             ib_gid_t* const         p_gid,
+       IN      const   uint8_t                 scope )
+{
+       p_gid->raw[1] &= 0xF0;
+       p_gid->raw[1] |= scope & 0x0F;
+}
+
 /****f* IBA Base: Types/ib_gid_set_default\r
 * NAME\r
 *      ib_gid_set_default\r
@@ -2345,28 +2388,27 @@ typedef __declspec(align(8)) struct _ib_path_rec
 * SEE ALSO\r
 *********/\r
 \r
-/* Port Record Component Masks */\r
-#define IB_PR_COMPMASK_LID                                     (CL_HTON64(1<<0))\r
-#define IB_PR_COMPMASK_DGID                                    (CL_HTON64(1<<2))\r
-#define IB_PR_COMPMASK_SGID                                    (CL_HTON64(1<<3))\r
-#define IB_PR_COMPMASK_DLID                                    (CL_HTON64(1<<4))\r
-#define IB_PR_COMPMASK_SLID                                    (CL_HTON64(1<<5))\r
-#define IB_PR_COMPMASK_RAWTRAFIC                       (CL_HTON64(1<<6))\r
-#define IB_PR_COMPMASK_RESV0                           (CL_HTON64(1<<7))\r
-#define IB_PR_COMPMASK_FLOWLABEL                       (CL_HTON64(1<<8))\r
-#define IB_PR_COMPMASK_HOPLIMIT                                (CL_HTON64(1<<9))\r
-#define IB_PR_COMPMASK_TCLASS                          (CL_HTON64(1<<10))\r
-#define IB_PR_COMPMASK_REVERSIBLE                      (CL_HTON64(1<<11))\r
-#define IB_PR_COMPMASK_NUM_PATH                                (CL_HTON64(1<<12))\r
-#define IB_PR_COMPMASK_PKEY                                    (CL_HTON64(1<<13))\r
-#define IB_PR_COMPMASK_RESV1                           (CL_HTON64(1<<14))\r
-#define IB_PR_COMPMASK_SL                                      (CL_HTON64(1<<15))\r
-#define IB_PR_COMPMASK_MTU_SEL                         (CL_HTON64(1<<16))\r
-#define IB_PR_COMPMASK_MTU                                     (CL_HTON64(1<<17))\r
-#define IB_PR_COMPMASK_RATE_SEL                                (CL_HTON64(1<<18))\r
-#define IB_PR_COMPMASK_RATE                                    (CL_HTON64(1<<19))\r
-#define IB_PR_COMPMASK_PKTLIFETIME_SEL         (CL_HTON64(1<<20))\r
-#define IB_PR_COMPMASK_PFTLIFETIME                     (CL_HTON64(1<<21))\r
+/* Path Record Component Masks */
+#define  IB_PR_COMPMASK_DGID              (CL_HTON64(((uint64_t)1)<<2))
+#define  IB_PR_COMPMASK_SGID              (CL_HTON64(((uint64_t)1)<<3))
+#define  IB_PR_COMPMASK_DLID              (CL_HTON64(((uint64_t)1)<<4))
+#define  IB_PR_COMPMASK_SLID              (CL_HTON64(((uint64_t)1)<<5))
+#define  IB_PR_COMPMASK_RAWTRAFFIC        (CL_HTON64(((uint64_t)1)<<6))
+#define  IB_PR_COMPMASK_RESV0             (CL_HTON64(((uint64_t)1)<<7))
+#define  IB_PR_COMPMASK_FLOWLABEL         (CL_HTON64(((uint64_t)1)<<8))
+#define  IB_PR_COMPMASK_HOPLIMIT          (CL_HTON64(((uint64_t)1)<<9))
+#define  IB_PR_COMPMASK_TCLASS            (CL_HTON64(((uint64_t)1)<<10))
+#define  IB_PR_COMPMASK_REVERSIBLE        (CL_HTON64(((uint64_t)1)<<11))
+#define  IB_PR_COMPMASK_NUM_PATH          (CL_HTON64(((uint64_t)1)<<12))\r
+#define  IB_PR_COMPMASK_PKEY              (CL_HTON64(((uint64_t)1)<<13))
+#define  IB_PR_COMPMASK_RESV1             (CL_HTON64(((uint64_t)1)<<14))
+#define  IB_PR_COMPMASK_SL                (CL_HTON64(((uint64_t)1)<<15))
+#define  IB_PR_COMPMASK_MTUSELEC          (CL_HTON64(((uint64_t)1)<<16))
+#define  IB_PR_COMPMASK_MTU               (CL_HTON64(((uint64_t)1)<<17))
+#define  IB_PR_COMPMASK_RATESELEC         (CL_HTON64(((uint64_t)1)<<18))
+#define  IB_PR_COMPMASK_RATE              (CL_HTON64(((uint64_t)1)<<19))
+#define  IB_PR_COMPMASK_PKTLIFETIMESELEC  (CL_HTON64(((uint64_t)1)<<20))
+#define  IB_PR_COMPMASK_PKTLIFETIME       (CL_HTON64(((uint64_t)1)<<21))
 \r
 /* Link Record Component Masks */\r
 #define IB_LR_COMPMASK_FROM_LID           (CL_HTON64(((uint64_t)1)<<0))\r
@@ -2461,54 +2503,56 @@ typedef __declspec(align(8)) struct _ib_path_rec
 #define IB_SR_COMPMASK_SDATA64_1                       (CL_HTON64(((uint64_t)1)<<36))\r
 
 /* Port Info Record Component Masks */\r
-#define IB_PIR_COMPMASK_LID                                    (CL_HTON64(1<<0))\r
-#define IB_PIR_COMPMASK_PORTNUM                                (CL_HTON64(1<<1))\r
-#define IB_PIR_COMPMASK_RESV1                          (CL_HTON64(1<<2))\r
-#define IB_PIR_COMPMASK_MKEY                           (CL_HTON64(1<<3))\r
-#define IB_PIR_COMPMASK_GIDPRE                         (CL_HTON64(1<<4))\r
-#define IB_PIR_COMPMASK_BASELID                                (CL_HTON64(1<<5))\r
-#define IB_PIR_COMPMASK_SMLID                          (CL_HTON64(1<<6))\r
-#define IB_PIR_COMPMASK_CAPMASK                                (CL_HTON64(1<<7))\r
-#define IB_PIR_COMPMASK_DIAGCODE                       (CL_HTON64(1<<8))\r
-#define IB_PIR_COMPMASK_MKEYLEASEPRD           (CL_HTON64(1<<9))\r
-#define IB_PIR_COMPMASK_LOCALPORTNUM           (CL_HTON64(1<<10))\r
-#define IB_PIR_COMPMASK_LNKWIDTHSUPPORT                (CL_HTON64(1<<11))\r
-#define IB_PIR_COMPMASK_LNKWIDTHACTIVE         (CL_HTON64(1<<12))\r
-#define IB_PIR_COMPMASK_LINKWIDTHENABLED       (CL_HTON64(1<<13))\r
-#define IB_PIR_COMPMASK_LNKSPEEDSUPPORT                (CL_HTON64(1<<14))\r
-#define IB_PIR_COMPMASK_PORTSTATE                      (CL_HTON64(1<<15))\r
-#define IB_PIR_COMPMASK_PORTPHYSTATE           (CL_HTON64(1<<16))\r
-#define IB_PIR_COMPMASK_LINKDWNDFLTSTATE       (CL_HTON64(1<<17))\r
-#define IB_PIR_COMPMASK_MKEYPROTBITS           (CL_HTON64(1<<18))\r
-#define IB_PIR_COMPMASK_LMC                                    (CL_HTON64(1<<19))\r
-#define IB_PIR_COMPMASK_LINKSPEEDACTIVE                (CL_HTON64(1<<20))\r
-#define IB_PIR_COMPMASK_LINKSPEEDENABLE                (CL_HTON64(1<<21))\r
-#define IB_PIR_COMPMASK_NEIGHBORMTU                    (CL_HTON64(1<<22))\r
-#define IB_PIR_COMPMASK_MASTERSMSL                     (CL_HTON64(1<<23))\r
-#define IB_PIR_COMPMASK_VLCAP                          (CL_HTON64(1<<24))\r
-#define IB_PIR_COMPMASK_INITTYPE                       (CL_HTON64(1<<25))\r
-#define IB_PIR_COMPMASK_VLHIGHLIMIT                    (CL_HTON64(1<<26))\r
-#define IB_PIR_COMPMASK_VLARBHIGHCAP           (CL_HTON64(1<<27))\r
-#define IB_PIR_COMPMASK_VLARBLOWCAP                    (CL_HTON64(1<<28))\r
-#define IB_PIR_COMPMASK_INITTYPEREPLY          (CL_HTON64(1<<29))\r
-#define IB_PIR_COMPMASK_MTUCAP                         (CL_HTON64(1<<30))\r
-#define IB_PIR_COMPMASK_VLSTALLCNT                     (CL_HTON64(1<<31))\r
-#define IB_PIR_COMPMASK_HOQLIFE                                (CL_HTON64(((uint64_t)1)<<32))\r
-#define IB_PIR_COMPMASK_OPVLS                          (CL_HTON64(((uint64_t)1)<<33))\r
-#define IB_PIR_COMPMASK_PARENFIN                       (CL_HTON64(((uint64_t)1)<<34))\r
-#define IB_PIR_COMPMASK_PARENFOUT                      (CL_HTON64(((uint64_t)1)<<35))\r
-#define IB_PIR_COMPMASK_FILTERRAWIN                    (CL_HTON64(((uint64_t)1)<<36))\r
-#define IB_PIR_COMPMASK_FILTERRAWOUT           (CL_HTON64(((uint64_t)1)<<37))\r
-#define IB_PIR_COMPMASK_MKEYVIO                                (CL_HTON64(((uint64_t)1)<<38))\r
-#define IB_PIR_COMPMASK_PKEYVIO                                (CL_HTON64(((uint64_t)1)<<39))\r
-#define IB_PIR_COMPMASK_QKEYVIO                                (CL_HTON64(((uint64_t)1)<<40))\r
-#define IB_PIR_COMPMASK_GUIDCAP                                (CL_HTON64(((uint64_t)1)<<41))\r
-#define IB_PIR_COMPMASK_RESV2                          (CL_HTON64(((uint64_t)1)<<42))\r
-#define IB_PIR_COMPMASK_SUBNTO                         (CL_HTON64(((uint64_t)1)<<43))\r
-#define IB_PIR_COMPMASK_RESV3                          (CL_HTON64(((uint64_t)1)<<44))\r
-#define IB_PIR_COMPMASK_RESPTIME                       (CL_HTON64(((uint64_t)1)<<45))\r
-#define IB_PIR_COMPMASK_LOCALPHYERR                    (CL_HTON64(((uint64_t)1)<<46))\r
-#define IB_PIR_COMPMASK_OVERRUNERR                     (CL_HTON64(((uint64_t)1)<<47))\r
+#define IB_PIR_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))
+#define IB_PIR_COMPMASK_PORTNUM          (CL_HTON64(((uint64_t)1)<<1))
+#define IB_PIR_COMPMASK_RESV1            (CL_HTON64(((uint64_t)1)<<2))
+#define IB_PIR_COMPMASK_MKEY             (CL_HTON64(((uint64_t)1)<<3))
+#define IB_PIR_COMPMASK_GIDPRE           (CL_HTON64(((uint64_t)1)<<4))
+#define IB_PIR_COMPMASK_BASELID          (CL_HTON64(((uint64_t)1)<<5))
+#define IB_PIR_COMPMASK_SMLID            (CL_HTON64(((uint64_t)1)<<6))
+#define IB_PIR_COMPMASK_CAPMASK          (CL_HTON64(((uint64_t)1)<<7))
+#define IB_PIR_COMPMASK_DIAGCODE         (CL_HTON64(((uint64_t)1)<<8))
+#define IB_PIR_COMPMASK_MKEYLEASEPRD     (CL_HTON64(((uint64_t)1)<<9))
+#define IB_PIR_COMPMASK_LOCALPORTNUM     (CL_HTON64(((uint64_t)1)<<10))
+#define IB_PIR_COMPMASK_LINKWIDTHENABLED (CL_HTON64(((uint64_t)1)<<11))
+#define IB_PIR_COMPMASK_LNKWIDTHSUPPORT  (CL_HTON64(((uint64_t)1)<<12))
+#define IB_PIR_COMPMASK_LNKWIDTHACTIVE   (CL_HTON64(((uint64_t)1)<<13))
+#define IB_PIR_COMPMASK_LNKSPEEDSUPPORT  (CL_HTON64(((uint64_t)1)<<14))
+#define IB_PIR_COMPMASK_PORTSTATE        (CL_HTON64(((uint64_t)1)<<15))
+#define IB_PIR_COMPMASK_PORTPHYSTATE     (CL_HTON64(((uint64_t)1)<<16))
+#define IB_PIR_COMPMASK_LINKDWNDFLTSTATE (CL_HTON64(((uint64_t)1)<<17))
+#define IB_PIR_COMPMASK_MKEYPROTBITS     (CL_HTON64(((uint64_t)1)<<18))
+#define IB_PIR_COMPMASK_RESV2            (CL_HTON64(((uint64_t)1)<<19))
+#define IB_PIR_COMPMASK_LMC              (CL_HTON64(((uint64_t)1)<<20))
+#define IB_PIR_COMPMASK_LINKSPEEDACTIVE  (CL_HTON64(((uint64_t)1)<<21))
+#define IB_PIR_COMPMASK_LINKSPEEDENABLE  (CL_HTON64(((uint64_t)1)<<22))
+#define IB_PIR_COMPMASK_NEIGHBORMTU      (CL_HTON64(((uint64_t)1)<<23))
+#define IB_PIR_COMPMASK_MASTERSMSL       (CL_HTON64(((uint64_t)1)<<24))
+#define IB_PIR_COMPMASK_VLCAP            (CL_HTON64(((uint64_t)1)<<25))
+#define IB_PIR_COMPMASK_INITTYPE         (CL_HTON64(((uint64_t)1)<<26))
+#define IB_PIR_COMPMASK_VLHIGHLIMIT      (CL_HTON64(((uint64_t)1)<<27))
+#define IB_PIR_COMPMASK_VLARBHIGHCAP     (CL_HTON64(((uint64_t)1)<<28))
+#define IB_PIR_COMPMASK_VLARBLOWCAP      (CL_HTON64(((uint64_t)1)<<29))
+#define IB_PIR_COMPMASK_INITTYPEREPLY    (CL_HTON64(((uint64_t)1)<<30))
+#define IB_PIR_COMPMASK_MTUCAP           (CL_HTON64(((uint64_t)1)<<31))
+#define IB_PIR_COMPMASK_VLSTALLCNT       (CL_HTON64(((uint64_t)1)<<32))
+#define IB_PIR_COMPMASK_HOQLIFE          (CL_HTON64(((uint64_t)1)<<33))
+#define IB_PIR_COMPMASK_OPVLS            (CL_HTON64(((uint64_t)1)<<34))
+#define IB_PIR_COMPMASK_PARENFIN         (CL_HTON64(((uint64_t)1)<<35))
+#define IB_PIR_COMPMASK_PARENFOUT        (CL_HTON64(((uint64_t)1)<<36))
+#define IB_PIR_COMPMASK_FILTERRAWIN      (CL_HTON64(((uint64_t)1)<<37))
+#define IB_PIR_COMPMASK_FILTERRAWOUT     (CL_HTON64(((uint64_t)1)<<38))
+#define IB_PIR_COMPMASK_MKEYVIO          (CL_HTON64(((uint64_t)1)<<39))
+#define IB_PIR_COMPMASK_PKEYVIO          (CL_HTON64(((uint64_t)1)<<40))
+#define IB_PIR_COMPMASK_QKEYVIO          (CL_HTON64(((uint64_t)1)<<41))
+#define IB_PIR_COMPMASK_GUIDCAP          (CL_HTON64(((uint64_t)1)<<42))
+#define IB_PIR_COMPMASK_RESV3            (CL_HTON64(((uint64_t)1)<<43))
+#define IB_PIR_COMPMASK_SUBNTO           (CL_HTON64(((uint64_t)1)<<44))
+#define IB_PIR_COMPMASK_RESV4            (CL_HTON64(((uint64_t)1)<<45))
+#define IB_PIR_COMPMASK_RESPTIME         (CL_HTON64(((uint64_t)1)<<46))
+#define IB_PIR_COMPMASK_LOCALPHYERR      (CL_HTON64(((uint64_t)1)<<47))
+#define IB_PIR_COMPMASK_OVERRUNERR       (CL_HTON64(((uint64_t)1)<<48))
+
 /* Multicast Member Record Component Masks */\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
@@ -4215,21 +4259,21 @@ typedef struct _ib_port_info
 #define IB_PORT_CAP_HAS_NV_PKEY                (CL_NTOH32(0x00000100))\r
 #define IB_PORT_CAP_HAS_LED_INFO       (CL_NTOH32(0x00000200))\r
 #define IB_PORT_CAP_SM_DISAB           (CL_NTOH32(0x00000400))\r
-#define IB_PORT_CAP_HAS_SYS_GUID       (CL_NTOH32(0x00000800))\r
+#define IB_PORT_CAP_HAS_SYS_IMG_GUID  (CL_NTOH32(0x00000800))
 #define IB_PORT_CAP_HAS_PKEY_SW_EXT_PORT_TRAP (CL_NTOH32(0x00001000))\r
 #define IB_PORT_CAP_RESV13                     (CL_NTOH32(0x00002000))\r
 #define IB_PORT_CAP_RESV14                     (CL_NTOH32(0x00004000))\r
 #define IB_PORT_CAP_RESV15                     (CL_NTOH32(0x00008000))\r
 #define IB_PORT_CAP_HAS_COM_MGT                (CL_NTOH32(0x00010000))\r
 #define IB_PORT_CAP_HAS_SNMP           (CL_NTOH32(0x00020000))\r
-#define IB_PORT_CAP_HAS_REINIT         (CL_NTOH32(0x00040000))\r
+#define IB_PORT_CAP_REINIT        (CL_NTOH32(0x00040000))
 #define IB_PORT_CAP_HAS_DEV_MGT                (CL_NTOH32(0x00080000))\r
 #define IB_PORT_CAP_HAS_VEND_CLS       (CL_NTOH32(0x00100000))\r
 #define IB_PORT_CAP_HAS_DR_NTC         (CL_NTOH32(0x00200000))\r
 #define IB_PORT_CAP_HAS_CAP_NTC                (CL_NTOH32(0x00400000))\r
 #define IB_PORT_CAP_HAS_BM                     (CL_NTOH32(0x00800000))\r
-#define IB_PORT_CAP_HAS_LINK_TRIP      (CL_NTOH32(0x01000000))\r
-#define IB_PORT_CAP_HAS_CLI_REREG      (CL_NTOH32(0x02000000))\r
+#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))\r
 #define IB_PORT_CAP_RESV27                     (CL_NTOH32(0x08000000))\r
 #define IB_PORT_CAP_RESV28                     (CL_NTOH32(0x10000000))\r
@@ -4647,8 +4691,9 @@ AL_INLINE uint8_t AL_API
 ib_port_info_get_link_speed_active(\r
        IN              const   ib_port_info_t* const           p_pi )\r
 {\r
-       return( (uint8_t)((p_pi->link_speed & IB_PORT_LINK_SPEED_ACTIVE_MASK) >>\r
-               IB_PORT_LINK_SPEED_SHIFT) );\r
+  return( (uint8_t)((p_pi->link_speed &
+                     IB_PORT_LINK_SPEED_ACTIVE_MASK) >>
+                                       IB_PORT_LINK_SPEED_SHIFT) );\r
 }\r
 /*\r
 * PARAMETERS\r
@@ -4697,36 +4742,76 @@ AL_INLINE uint8_t AL_API
 ib_port_info_compute_rate(\r
        IN              const   ib_port_info_t* const           p_pi )\r
 {\r
-       switch( p_pi->link_width_active * p_pi->link_width_active *\r
-               ib_port_info_get_link_speed_active( p_pi ) )\r
+  uint8_t rate = 0;
+
+  switch (ib_port_info_get_link_speed_active(p_pi))
        {\r
-       case 1:\r
-               return IB_PATH_RECORD_RATE_2_5_GBS;\r
-\r
-       case 2:\r
-               return IB_PATH_RECORD_RATE_5_GBS;\r
-\r
-       case 4:\r
-               return IB_PATH_RECORD_RATE_10_GBS;\r
-\r
-       case 8:\r
-               return IB_PATH_RECORD_RATE_20_GBS;\r
-\r
-       case 16:\r
-               return IB_PATH_RECORD_RATE_40_GBS;\r
-\r
-       case 64:\r
-               return IB_PATH_RECORD_RATE_30_GBS;\r
-\r
-       case 128:\r
-               return IB_PATH_RECORD_RATE_60_GBS;\r
-\r
-       case 256:\r
-               return IB_PATH_RECORD_RATE_120_GBS;\r
+  case IB_LINK_SPEED_ACTIVE_2_5:
+    switch (p_pi->link_width_active)
+    {
+    case IB_LINK_WIDTH_ACTIVE_1X:
+      rate = IB_PATH_RECORD_RATE_2_5_GBS;
+      break;
+      
+    case IB_LINK_WIDTH_ACTIVE_4X:
+      rate = IB_PATH_RECORD_RATE_10_GBS;
+      break;
+\r
+    case IB_LINK_WIDTH_ACTIVE_12X:
+      rate = IB_PATH_RECORD_RATE_30_GBS;
+      break;
+\r
+    default:
+      rate = IB_PATH_RECORD_RATE_2_5_GBS;
+      break;
+    }
+    break;
+  case IB_LINK_SPEED_ACTIVE_5:
+    switch (p_pi->link_width_active)
+    {
+    case IB_LINK_WIDTH_ACTIVE_1X:
+      rate = IB_PATH_RECORD_RATE_5_GBS;
+      break;
+\r
+    case IB_LINK_WIDTH_ACTIVE_4X:
+      rate = IB_PATH_RECORD_RATE_20_GBS;
+      break;
+\r
+    case IB_LINK_WIDTH_ACTIVE_12X:
+      rate = IB_PATH_RECORD_RATE_60_GBS;
+      break;
+\r
+    default:
+      rate = IB_PATH_RECORD_RATE_5_GBS;
+      break;
+    }
+    break;
+  case IB_LINK_SPEED_ACTIVE_10:
+    switch (p_pi->link_width_active)
+    {
+    case IB_LINK_WIDTH_ACTIVE_1X:
+      rate = IB_PATH_RECORD_RATE_10_GBS;
+      break;
+\r
+    case IB_LINK_WIDTH_ACTIVE_4X:
+      rate = IB_PATH_RECORD_RATE_40_GBS;
+      break;
+\r
+    case IB_LINK_WIDTH_ACTIVE_12X:
+      rate =IB_PATH_RECORD_RATE_120_GBS;
+      break;
 \r
        default:\r
-               return IB_PATH_RECORD_RATE_2_5_GBS;\r
+      rate = IB_PATH_RECORD_RATE_10_GBS;
+      break;
+    }
+    break;
+  default:
+    rate = IB_PATH_RECORD_RATE_2_5_GBS;
+    break;
        }\r
+
+  return rate;
 }\r
 /*\r
 * PARAMETERS\r
@@ -4979,7 +5064,9 @@ ib_port_info_set_timeout(
        IN              const   uint8_t                                         timeout )\r
 {\r
        CL_ASSERT( timeout <= 0x1F );\r
-       p_pi->subnet_timeout = (uint8_t)(timeout & 0x1F);\r
+       p_pi->subnet_timeout =
+     (uint8_t)(
+       (p_pi->subnet_timeout & 0x80) | (timeout & 0x1F));
 }\r
 /*\r
 * PARAMETERS\r
@@ -5733,6 +5820,326 @@ typedef struct _ib_guid_info
 #include <complib/cl_packoff.h>\r
 /************/\r
 \r
+#include <complib/cl_packon.h>
+typedef struct _ib_guidinfo_record
+{
+       ib_net16_t              lid;
+       uint8_t                 block_num;
+       uint8_t                 resv;
+       uint32_t                reserved;
+       ib_guid_info_t          guid_info;
+}      PACK_SUFFIX ib_guidinfo_record_t;
+#include <complib/cl_packoff.h>
+
+#define IB_MULTIPATH_MAX_GIDS 11       /* Support max that can fit into first MAD (for now) */
+
+#include <complib/cl_packon.h>
+typedef struct _ib_multipath_rec_t
+{
+       ib_net32_t              hop_flow_raw;
+       uint8_t                 tclass;
+       uint8_t                 num_path;
+       ib_net16_t              pkey;
+       uint8_t                 resv0;
+       uint8_t                 sl;
+       uint8_t                 mtu;
+       uint8_t                 rate;
+       uint8_t                 pkt_life;
+       uint8_t                 resv1;
+       uint8_t                 independence;   /* formerly resv2 */
+       uint8_t                 sgid_count;
+       uint8_t                 dgid_count;
+       uint8_t                 resv3[7];
+       ib_gid_t                gids[IB_MULTIPATH_MAX_GIDS];
+}      PACK_SUFFIX ib_multipath_rec_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*       hop_flow_raw
+*               Global routing parameters: hop count, flow label and raw bit.
+*
+*       tclass
+*               Another global routing parameter.
+*
+*       num_path
+*     Reversible path - 1 bit to say if path is reversible.
+*               num_path [6:0] In queries, maximum number of paths to return.
+*               In responses, undefined.
+*
+*       pkey
+*               Partition key (P_Key) to use on this path.
+*
+*       sl
+*               Service level to use on this path.
+*
+*       mtu
+*               MTU and MTU selector fields to use on this path
+*       rate
+*               Rate and rate selector fields to use on this path.
+*
+*       pkt_life
+*               Packet lifetime
+*
+*       preference
+*               Indicates the relative merit of this path versus other path
+*               records returned from the SA.  Lower numbers are better.
+*
+* SEE ALSO
+*********/
+
+/****f* IBA Base: Types/ib_multipath_rec_num_path
+* NAME
+*       ib_multipath_rec_num_path
+*
+* DESCRIPTION
+*       Get max number of paths to return.
+*
+* SYNOPSIS
+*/
+AL_INLINE uint8_t AL_API\r
+ib_multipath_rec_num_path(
+       IN      const   ib_multipath_rec_t* const       p_rec )
+{
+        return( p_rec->num_path &0x7F );
+}
+/*
+* PARAMETERS
+*       p_rec
+*               [in] Pointer to the multipath record object.
+*
+* RETURN VALUES
+*       Maximum number of paths to return for each unique SGID_DGID combination.
+*
+* NOTES
+*
+* SEE ALSO
+*       ib_multipath_rec_t
+*********/
+
+/****f* IBA Base: Types/ib_multipath_rec_sl
+* NAME
+*       ib_multipath_rec_sl
+*
+* DESCRIPTION
+*       Get multipath service level.
+*
+* SYNOPSIS
+*/
+AL_INLINE uint8_t AL_API\r
+ib_multipath_rec_sl(
+       IN      const   ib_multipath_rec_t* const       p_rec )
+{
+        return( (uint8_t)((cl_ntoh16( p_rec->sl )) & 0xF) );
+}
+/*
+* PARAMETERS
+*       p_rec
+*               [in] Pointer to the multipath record object.
+*
+* RETURN VALUES
+*      SL.
+*
+* NOTES
+*
+* SEE ALSO
+*       ib_multipath_rec_t
+*********/
+
+/****f* IBA Base: Types/ib_multipath_rec_mtu
+* NAME
+*       ib_multipath_rec_mtu
+*
+* DESCRIPTION
+*       Get encoded path MTU.
+*
+* SYNOPSIS
+*/
+AL_INLINE uint8_t AL_API\r
+ib_multipath_rec_mtu(
+       IN      const   ib_multipath_rec_t* const       p_rec )
+{
+        return( (uint8_t)(p_rec->mtu & IB_MULTIPATH_REC_BASE_MASK) );
+}
+/*
+* PARAMETERS
+*       p_rec
+*               [in] Pointer to the multipath record object.
+*
+* RETURN VALUES
+*       Encoded path MTU.
+*               1: 256
+*               2: 512
+*               3: 1024
+*               4: 2048
+*               5: 4096
+*               others: reserved
+*
+* NOTES
+*
+* SEE ALSO
+*       ib_multipath_rec_t
+*********/
+
+/****f* IBA Base: Types/ib_multipath_rec_mtu_sel
+* NAME
+*       ib_multipath_rec_mtu_sel
+*
+* DESCRIPTION
+*       Get encoded multipath MTU selector.
+*
+* SYNOPSIS
+*/
+AL_INLINE uint8_t AL_API\r
+ib_multipath_rec_mtu_sel(
+       IN      const   ib_multipath_rec_t* const       p_rec )
+{
+        return( (uint8_t)((p_rec->mtu & IB_MULTIPATH_REC_SELECTOR_MASK) >> 6) );
+}
+/*
+* PARAMETERS
+*       p_rec
+*               [in] Pointer to the multipath record object.
+*
+* RETURN VALUES
+*       Encoded path MTU selector value (for queries).
+*               0: greater than MTU specified
+*               1: less than MTU specified
+*               2: exactly the MTU specified
+*               3: largest MTU available
+*
+* NOTES
+*
+* SEE ALSO
+*       ib_multipath_rec_t
+*********/
+
+/****f* IBA Base: Types/ib_multipath_rec_rate
+* NAME
+*       ib_multipath_rec_rate
+*
+* DESCRIPTION
+*       Get encoded multipath rate.
+*
+* SYNOPSIS
+*/
+AL_INLINE uint8_t AL_API\r
+ib_multipath_rec_rate(
+       IN      const   ib_multipath_rec_t* const       p_rec )
+{
+        return( (uint8_t)(p_rec->rate & IB_MULTIPATH_REC_BASE_MASK) );
+}
+/*
+* PARAMETERS
+*       p_rec
+*               [in] Pointer to the multipath record object.
+*
+* RETURN VALUES
+*       Encoded multipath rate.
+*               2: 2.5 Gb/sec.
+*               3: 10 Gb/sec.
+*               4: 30 Gb/sec.
+*               others: reserved
+*
+* NOTES
+*
+* SEE ALSO
+*       ib_multipath_rec_t
+*********/
+
+/****f* IBA Base: Types/ib_multipath_rec_rate_sel
+* NAME
+*       ib_multipath_rec_rate_sel
+*
+* DESCRIPTION
+*       Get encoded multipath rate selector.
+*
+* SYNOPSIS
+*/
+AL_INLINE uint8_t AL_API\r
+ib_multipath_rec_rate_sel(
+       IN      const   ib_multipath_rec_t* const       p_rec )
+{
+        return( (uint8_t)((p_rec->rate & IB_MULTIPATH_REC_SELECTOR_MASK) >> 6) );
+}
+/*
+* PARAMETERS
+*       p_rec
+*               [in] Pointer to the multipath record object.
+*
+* RETURN VALUES
+*       Encoded path rate selector value (for queries).
+*               0: greater than rate specified
+*               1: less than rate specified
+*               2: exactly the rate specified
+*               3: largest rate available
+*
+* NOTES
+*
+* SEE ALSO
+*       ib_multipath_rec_t
+*********/
+
+/****f* IBA Base: Types/ib_multipath_rec_pkt_life
+* NAME
+*       ib_multipath_rec_pkt_life
+*
+* DESCRIPTION
+*       Get encoded multipath pkt_life.
+*
+* SYNOPSIS
+*/
+AL_INLINE uint8_t AL_API\r
+ib_multipath_rec_pkt_life(
+       IN      const   ib_multipath_rec_t* const       p_rec )
+{
+        return( (uint8_t)(p_rec->pkt_life & IB_MULTIPATH_REC_BASE_MASK) );
+}
+/*
+* PARAMETERS
+*       p_rec
+*               [in] Pointer to the multipath record object.
+*
+* RETURN VALUES
+*       Encoded multipath pkt_life = 4.096 ┬Ásec * 2 ** PacketLifeTime.
+*
+* NOTES
+*
+* SEE ALSO
+*       ib_multipath_rec_t
+*********/
+
+/****f* IBA Base: Types/ib_multipath_rec_pkt_life_sel
+* NAME
+*       ib_multipath_rec_pkt_life_sel
+*
+* DESCRIPTION
+*       Get encoded multipath pkt_lifetime selector.
+*
+* SYNOPSIS
+*/
+AL_INLINE uint8_t AL_API\r
+ib_multipath_rec_pkt_life_sel(
+       IN      const   ib_multipath_rec_t* const       p_rec )
+{
+        return( (uint8_t)((p_rec->pkt_life & IB_MULTIPATH_REC_SELECTOR_MASK) >> 6 ));
+}
+/*
+* PARAMETERS
+*       p_rec
+*               [in] Pointer to the multipath record object.
+*
+* RETURN VALUES
+*       Encoded path pkt_lifetime selector value (for queries).
+*               0: greater than rate specified
+*               1: less than rate specified
+*               2: exactly the rate specified
+*               3: smallest packet lifetime available
+*
+* NOTES
+*
+* SEE ALSO
+*       ib_multipath_rec_t
+*********/\r
 /****s* IBA Base: Types/ib_pkey_table_info_t\r
 * NAME\r
 *      ib_pkey_table_info_t\r
@@ -6198,7 +6605,7 @@ typedef struct _ib_member_rec
 *      ib_member_get_sl_flow_hop\r
 *\r
 * DESCRIPTION\r
-*      Get encoded sl flow label and hop limit\r
+*      Get encoded sl, flow label, and hop limit
 *\r
 * SYNOPSIS\r
 */\r
@@ -6227,7 +6634,7 @@ ib_member_get_sl_flow_hop(
 /*\r
 * PARAMETERS\r
 *      sl_flow_hop\r
-*              [in] the sl flow label and hop limit of MC Group\r
+*              [in] the sl, flow label, and hop limit of MC Group
 *\r
 * RETURN VALUES\r
 *      p_sl\r
@@ -6250,7 +6657,7 @@ ib_member_get_sl_flow_hop(
 *      ib_member_set_sl_flow_hop\r
 *\r
 * DESCRIPTION\r
-*      Set encoded version, sl flow and hop\r
+*      Set encoded sl, flow label, and hop limit
 *\r
 * SYNOPSIS\r
 */\r
@@ -6282,7 +6689,7 @@ ib_member_set_sl_flow_hop(
 *\r
 * RETURN VALUES\r
 *      sl_flow_hop\r
-*              [out] the sl flow label and hop limit\r
+*              [out] the encoded sl, flow label, and hop limit
 *\r
 * NOTES\r
 *\r
@@ -7463,7 +7870,6 @@ ib_inform_set_vend_id(
 *      ib_mad_inform_info_t, ib_inform_get_vend_id\r
 *********/\r
 \r
-\r
 /****s* IBA Base: Types/ib_inform_info_record_t\r
 * NAME\r
 *      ib_inform_info_record_t\r
@@ -7864,7 +8270,6 @@ typedef struct _ib_svc_entry
 * ib_svc_entries_t\r
 *********/\r
 \r
-\r
 /****s* IBA Base: Types/ib_svc_entries_t\r
 * NAME\r
 *      ib_svc_entries_t\r
@@ -7961,6 +8366,7 @@ typedef struct _ib_ioc_info
  * Defines known Communication management class versions\r
  */\r
 #define IB_MCLASS_CM_VER_2                                     2\r
+#define IB_MCLASS_CM_VER_1                             1
 \r
 /*\r
  *     Defines the size of user available data in communication management MADs\r
@@ -7980,7 +8386,6 @@ typedef struct _ib_ioc_info
 #define IB_ARI_SIZE                                                    72              // redefine\r
 #define IB_APR_INFO_SIZE                                       72\r
 \r
-\r
 /****d* Access Layer/ib_rej_status_t\r
 * NAME\r
 *      ib_rej_status_t\r
@@ -8029,8 +8434,9 @@ typedef   ib_net16_t                                                      ib_rej_status_t;
 #define IB_REJ_INVALID_CLASS_VER                       CL_HTON16(31)\r
 #define IB_REJ_INVALID_FLOW_LBL                                CL_HTON16(32)\r
 #define IB_REJ_INVALID_ALT_FLOW_LBL                    CL_HTON16(33)\r
-/******/\r
 \r
+#define IB_REJ_SERVICE_HANDOFF                         CL_HTON16(65535)
+/******/
 \r
 /****d* Access Layer/ib_apr_status_t\r
 * NAME\r
@@ -8086,7 +8492,6 @@ typedef uint8_t                                                           ib_apr_status_t;
 *\r
 *******/\r
 \r
-\r
 /*\r
  *     Service ID resolution status\r
  */\r
@@ -8312,7 +8717,6 @@ ib_get_err_str(
 * SEE ALSO\r
 *********/\r
 \r
-\r
 /****d* Verbs/ib_async_event_t\r
 * NAME\r
 *      ib_async_event_t -- Async event types\r
@@ -8359,7 +8763,7 @@ typedef enum _ib_async_event_t
 /*\r
 * VALUES\r
 *      IB_AE_SQ_ERROR\r
-*              An error occurred when accessing the send queue of the QP.\r
+*              An error occurred when accessing the send queue of the QP or EEC.
 *              This event is optional.\r
 *\r
 *      IB_AE_SQ_DRAINED\r
@@ -8368,7 +8772,7 @@ typedef enum _ib_async_event_t
 *              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.\r
+*              An error occurred when accessing the receive queue of the QP or EEC.
 *              This event is optional.\r
 *\r
 *      IB_AE_CQ_ERROR\r
@@ -8490,7 +8894,6 @@ ib_get_async_event_str(
 * SEE ALSO\r
 *********/\r
 \r
-\r
 /****s* Verbs/ib_event_rec_t\r
 * NAME\r
 *      ib_event_rec_t -- Async event notification record\r
@@ -8556,7 +8959,6 @@ typedef struct _ib_event_rec
 }      ib_event_rec_t;\r
 /*******/\r
 \r
-\r
 /****d* Access Layer/ib_atomic_t\r
 * NAME\r
 *      ib_atomic_t\r
@@ -8586,7 +8988,6 @@ typedef enum _ib_atomic_t
 *              in the system.\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_port_cap_t\r
 * NAME\r
 *      ib_port_cap_t\r
@@ -8629,7 +9030,6 @@ typedef struct _ib_port_cap
 }      ib_port_cap_t;\r
 /*****/\r
 \r
-\r
 /****d* Access Layer/ib_init_type_t\r
 * NAME\r
 *      ib_init_type_t\r
@@ -8650,7 +9050,6 @@ typedef uint8_t                                   ib_init_type_t;
 #define IB_INIT_TYPE_DO_NOT_RESUSCITATE                0x08\r
 /*****/\r
 \r
-\r
 /****s* Access Layer/ib_port_attr_mod_t\r
 * NAME\r
 *      ib_port_attr_mod_t\r
@@ -8675,7 +9074,6 @@ typedef struct _ib_port_attr_mod
 *      ib_port_cap_t\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_port_attr_t\r
 * NAME\r
 *      ib_port_attr_t\r
@@ -8737,7 +9135,6 @@ typedef struct _ib_port_attr
 *      uint8_t, ib_port_cap_t, ib_link_states_t\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_ca_attr_t\r
 * NAME\r
 *      ib_ca_attr_t\r
@@ -8957,7 +9354,7 @@ typedef struct _ib_ca_attr
 *              Indicates ability to check port number in address handles.\r
 *\r
 *      change_primary_port\r
-*              Indicates ability to change primary port for a QP during a\r
+*              Indicates ability to change primary port for a QP or EEC during a
 *              SQD->RTS transition.\r
 *\r
 *      modify_wr_depth\r
@@ -9115,7 +9512,6 @@ typedef struct _ib_av_attr
 *      ib_gid_t\r
 *****/\r
 \r
-\r
 /****d* Access Layer/ib_qp_type_t\r
 * NAME\r
 *      ib_qp_type_t\r
@@ -9129,7 +9525,8 @@ 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_UNRELIABLE_DGRM  = 3,            /* Purposefully skip RDD type. */\r
+       IB_QPT_RELIABLE_DGRM    = 2,    /* Matches CM REQ transport type */
+       IB_QPT_UNRELIABLE_DGRM,
        IB_QPT_QP0,\r
        IB_QPT_QP1,\r
        IB_QPT_RAW_IPV6,\r
@@ -9147,6 +9544,9 @@ typedef enum _ib_qp_type
 *      IB_QPT_UNRELIABLE_CONN\r
 *              Unreliable, connected queue pair.\r
 *\r
+*      IB_QPT_RELIABLE_DGRM
+*              Reliable, datagram queue pair.
+*
 *      IB_QPT_UNRELIABLE_DGRM\r
 *              Unreliable, datagram queue pair.\r
 *\r
@@ -9230,7 +9630,6 @@ typedef uint32_t                          ib_access_t;
 *      RDMA read and write access.\r
 *****/\r
 \r
-\r
 /****d* Access Layer/ib_qp_state_t\r
 * NAME\r
 *      ib_qp_state_t\r
@@ -9255,7 +9654,6 @@ typedef uint32_t                          ib_qp_state_t;
 #define IB_QPS_TIME_WAIT               0xDEAD0000      /* InfiniBand Access Layer */\r
 /*****/\r
 \r
-\r
 /****d* Access Layer/ib_apm_state_t\r
 * NAME\r
 *      ib_apm_state_t\r
@@ -9400,7 +9798,6 @@ typedef struct _ib_qp_create
 *      ib_qp_type_t, ib_qp_attr_t\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_qp_attr_t\r
 * NAME\r
 *      ib_qp_attr_t\r
@@ -9462,7 +9859,6 @@ typedef struct _ib_qp_attr
 *      ib_qp_type_t, ib_access_t, ib_qp_state_t, ib_av_attr_t, ib_apm_state_t\r
 *****/\r
 \r
-\r
 /****d* Access Layer/ib_qp_opts_t\r
 * NAME\r
 *      ib_qp_opts_t\r
@@ -9489,13 +9885,11 @@ typedef uint32_t                                ib_qp_opts_t;
 #define IB_MOD_QP_RETRY_CNT                    0x00002000\r
 #define IB_MOD_QP_LOCAL_ACK_TIMEOUT    0x00004000\r
 #define IB_MOD_QP_RNR_RETRY_CNT                0x00008000\r
-\r
 /*\r
 * SEE ALSO\r
 *      ib_qp_mod_t\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_qp_mod_t\r
 * NAME\r
 *      ib_qp_mod_t\r
@@ -9652,7 +10046,6 @@ typedef struct _ib_local_ds
 }      ib_local_ds_t;\r
 /*****/\r
 \r
-\r
 /****d* Access Layer/ib_send_opt_t\r
 * NAME\r
 *      ib_send_opt_t\r
@@ -9680,8 +10073,8 @@ typedef uint32_t                                 ib_send_opt_t;
 *              Send immediate data with the given request.\r
 *\r
 *      IB_SEND_OPT_FENCE\r
-*              The operation is fenced.  Complete all pending send operations before\r
-*              processing this request.\r
+*              The operation is fenced.  Complete all pending send operations
+*              before processing this request.
 *\r
 *      IB_SEND_OPT_SIGNALED\r
 *              If the queue pair is configured for signaled completion, then\r
@@ -9698,11 +10091,13 @@ typedef uint32_t                                       ib_send_opt_t;
 *              vendor specific restrictions on the size of send operation that may\r
 *              be performed as inline.\r
 *\r
+*
 *      IB_SEND_OPT_LOCAL\r
 *              Indicates that a sent MAD request should be given to the local VPD for\r
 *              processing.  MADs sent using this option are not placed on the wire.\r
 *              This send option is only valid for MAD send operations.\r
 *\r
+*
 *      IB_SEND_OPT_VEND_MASK\r
 *              This mask indicates bits reserved in the send options that may be used\r
 *              by the verbs provider to indicate vendor specific options.  Bits set\r
@@ -9711,7 +10106,6 @@ typedef uint32_t                                 ib_send_opt_t;
 *\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_send_wr_t\r
 * NAME\r
 *      ib_send_wr_t\r
@@ -9744,6 +10138,14 @@ typedef struct _ib_send_wr
 \r
                }       ud;\r
 \r
+               struct _send_rd
+               {
+                       ib_net32_t              remote_qp;
+                       ib_net32_t              remote_qkey;
+                       ib_net32_t              eecn;
+
+               }       rd;
+
                struct _send_raw_ether\r
                {\r
                        ib_net16_t              dest_lid;\r
@@ -9878,7 +10280,6 @@ typedef struct _ib_send_wr
 *      ib_wr_type_t, ib_local_ds_t, ib_send_opt_t\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_recv_wr_t\r
 * NAME\r
 *      ib_recv_wr_t\r
@@ -9919,7 +10320,6 @@ typedef struct _ib_recv_wr
 *      ib_local_ds_t\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_bind_wr_t\r
 * NAME\r
 *      ib_bind_wr_t\r
@@ -9967,7 +10367,6 @@ typedef struct _ib_bind_wr
 *      ib_send_opt_t, ib_access_t, ib_local_ds_t\r
 *****/\r
 \r
-\r
 /****d* Access Layer/ib_wc_status_t\r
 * NAME\r
 *      ib_wc_status_t\r
@@ -10107,7 +10506,6 @@ ib_get_wc_status_str(
 * SEE ALSO\r
 *********/\r
 \r
-\r
 /****d* Access Layer/ib_wc_type_t\r
 * NAME\r
 *      ib_wc_type_t\r
@@ -10192,7 +10590,6 @@ typedef uint32_t                                        ib_recv_opt_t;
 *              but may have specific meaning to the underlying VPD.\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_wc_t\r
 * NAME\r
 *      ib_wc_t\r
@@ -10233,6 +10630,16 @@ typedef struct _ib_wc
 \r
                }       ud;\r
 \r
+               struct _wc_rd
+               {
+                       ib_net32_t      remote_eecn;
+                       ib_net32_t      remote_qp;
+                       ib_net16_t      remote_lid;
+                       uint8_t         remote_sl;
+                       uint32_t        free_cnt;
+
+               }       rd;
+
                struct _wc_raw_ipv6\r
                {\r
                        ib_net16_t              remote_lid;\r
@@ -10268,6 +10675,7 @@ typedef struct _ib_wc
 *      wc_type\r
 *              Indicates the type of work completion.\r
 *\r
+*
 *      length\r
 *              The total length of the data sent or received with the work request.\r
 *\r
@@ -10299,8 +10707,8 @@ typedef struct _ib_wc
 *              Identifies the source queue pair of a received datagram.\r
 *\r
 *      recv.ud.pkey_index\r
-*              The pkey index of the source queue pair. This is valid only for\r
-*              IB_QPT_QP1 and IB_QPT_QP1_ALIAS QP types.\r
+*              The pkey index for the source queue pair. This is valid only for
+*              GSI type QP's.
 *\r
 *      recv.ud.remote_lid\r
 *              The source LID of the received datagram.\r
@@ -10311,6 +10719,23 @@ typedef struct _ib_wc
 *      recv.ud.path_bits\r
 *              path bits...\r
 *\r
+*      recv.rd.remote_eecn
+*              The remote end-to-end context number that sent the received message.
+*
+*      recv.rd.remote_qp
+*              Identifies the source queue pair of a received message.
+*
+*      recv.rd.remote_lid
+*              The source LID of the received message.
+*
+*      recv.rd.remote_sl
+*              The service level used by the source of the received message.
+*
+*      recv.rd.free_cnt
+*              The number of available entries in the completion queue.  Reliable
+*              datagrams may complete out of order, so this field may be used to
+*              determine the number of additional completions that may occur.
+*
 *      recv.raw_ipv6.remote_lid\r
 *              The source LID of the received message.\r
 *\r
@@ -10344,7 +10769,6 @@ typedef struct _ib_wc
 *      ib_wc_type_t, ib_qp_type_t, ib_wc_status_t, ib_recv_opt_t\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_mr_create_t\r
 * NAME\r
 *      ib_mr_create_t\r
@@ -10359,7 +10783,6 @@ typedef struct _ib_mr_create
        void* __ptr64                   vaddr;\r
        uint64_t                                length;\r
        ib_access_t                             access_ctrl;\r
-\r
 }      ib_mr_create_t;\r
 /*\r
 * FIELDS\r
@@ -10466,7 +10889,6 @@ typedef struct _ib_phys_create
        uint32_t                                        buf_offset;\r
        uint32_t                                        hca_page_size;\r
        ib_access_t                                     access_ctrl;\r
-\r
 }      ib_phys_create_t;\r
 /*\r
 * FIELDS\r
@@ -10494,7 +10916,6 @@ typedef struct _ib_phys_create
 *      ib_access_t\r
 *****/\r
 \r
-\r
 /****s* Access Layer/ib_mr_attr_t\r
 * NAME\r
 *      ib_mr_attr_t\r
@@ -10558,7 +10979,6 @@ typedef struct _ib_mr_attr
 *      ib_access_t\r
 *****/\r
 \r
-\r
 /****d* Access Layer/ib_ca_mod_t\r
 * NAME\r
 *      ib_ca_mod_t -- Modify port attributes and error counters\r
@@ -10604,26 +11024,28 @@ typedef uint32_t                                                      ib_ca_mod_t;
 *              Indicates if there is an SNMP agent accessible through the port.\r
 *\r
 *      IB_CA_MOD_IS_DEV_MGMT_SUPPORTED\r
-*              Indicates if there is a device management agent accessible through\r
-*              the port.\r
+*              Indicates if there is a device management agent accessible
+*              through the port.
 *\r
 *      IB_CA_MOD_IS_VEND_SUPPORTED\r
-*              Indicates if there is a vendor supported agent accessible through\r
-*              the port.\r
+*              Indicates if there is a vendor supported agent accessible
+*              through the port.
 *\r
 *      IB_CA_MOD_IS_SM\r
 *              Indicates if there is a subnet manager accessible through\r
 *              the port.\r
 *\r
 *      IB_CA_MOD_IS_SM_DISABLED\r
-*              Indicates if the port has been disabled for configuration by the subnet\r
-*              manager.\r
+*              Indicates if the port has been disabled for configuration by the
+*              subnet manager.
 *\r
 *      IB_CA_MOD_QKEY_CTR\r
-*              Used to reset the qkey violation counter associated with the port.\r
+*              Used to reset the qkey violation counter associated with the
+*              port.
 *\r
 *      IB_CA_MOD_PKEY_CTR\r
-*              Used to reset the pkey violation counter associated with the port.\r
+*              Used to reset the pkey violation counter associated with the
+*              port.
 *\r
 *      IB_CA_MOD_IS_NOTICE_SUPPORTED\r
 *              Indicates that this CA supports ability to generate Notices for\r
@@ -10634,7 +11056,8 @@ typedef uint32_t                                                        ib_ca_mod_t;
 *              trap messages. (only applicable to switches)\r
 *\r
 *      IB_CA_MOD_IS_APM_SUPPORTED\r
-*              Indicates that this port is capable of performing Automatic Migration.\r
+*              Indicates that this port is capable of performing Automatic
+*              Path Migration.
 *\r
 *      IB_CA_MOD_IS_SLMAP_SUPPORTED\r
 *              Indicates this port supports SLMAP capability.\r
@@ -10681,7 +11104,6 @@ typedef uint32_t                                                        ib_ca_mod_t;
 *              ib_modify_ca will return IB_INVALID_PARAMETER.\r
 *****/\r
 \r
-\r
 /****d* Access Layer/ib_mr_mod_t\r
 * NAME\r
 *      ib_mr_mod_t\r
@@ -10842,3 +11264,4 @@ typedef struct _ib_ci_op
 \r
 \r
 #endif /* __IB_TYPES_H__ */\r
+