#define IB_MCLASS_BIS 0x12\r
/**********/\r
\r
+/****d* IBA Base: Constants/IB_MCLASS_CC\r
+* NAME\r
+* IB_MCLASS_CC\r
+*\r
+* DESCRIPTION\r
+* Management Class, Congestion Control (A10.4.1)\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_MCLASS_CC 0x21\r
+/**********/\r
+\r
/****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MIN\r
* NAME\r
* IB_MCLASS_VENDOR_HIGH_RANGE_MIN\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_MAD_ATTR_MULTIPATH_RECORD (CL_NTOH16(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_NTOH16(0x003B))\r
-/**********/\r
-\r
/****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO_RECORD\r
* NAME\r
* IB_MAD_ATTR_INFORM_INFO_RECORD\r
#define IB_MAD_ATTR_DIAG_CODE (CL_NTOH16(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_MAD_ATTR_CONG_INFO\r
+* NAME\r
+* IB_MAD_ATTR_CONG_INFO\r
+*\r
+* DESCRIPTION\r
+* CongestionInfo attribute (A10.4.3)\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_MAD_ATTR_CONG_INFO (CL_HTON16(0x0011))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_MAD_ATTR_CONG_KEY_INFO\r
+* NAME\r
+* IB_MAD_ATTR_CONG_KEY_INFO\r
+*\r
+* DESCRIPTION\r
+* CongestionKeyInfo attribute (A10.4.3)\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_MAD_ATTR_CONG_KEY_INFO (CL_HTON16(0x0012))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_MAD_ATTR_CONG_LOG\r
+* NAME\r
+* IB_MAD_ATTR_CONG_LOG\r
+*\r
+* DESCRIPTION\r
+* CongestionLog attribute (A10.4.3)\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_MAD_ATTR_CONG_LOG (CL_HTON16(0x0013))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_MAD_ATTR_SW_CONG_SETTING\r
+* NAME\r
+* IB_MAD_ATTR_SW_CONG_SETTING\r
+*\r
+* DESCRIPTION\r
+* SwitchCongestionSetting attribute (A10.4.3)\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_MAD_ATTR_SW_CONG_SETTING (CL_HTON16(0x0014))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_MAD_ATTR_SW_PORT_CONG_SETTING\r
+* NAME\r
+* IB_MAD_ATTR_SW_PORT_CONG_SETTING\r
+*\r
+* DESCRIPTION\r
+* SwitchPortCongestionSetting attribute (A10.4.3)\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_MAD_ATTR_SW_PORT_CONG_SETTING (CL_HTON16(0x0015))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_MAD_ATTR_CA_CONG_SETTING\r
+* NAME\r
+* IB_MAD_ATTR_CA_CONG_SETTING\r
+*\r
+* DESCRIPTION\r
+* CACongestionSetting attribute (A10.4.3)\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_MAD_ATTR_CA_CONG_SETTING (CL_HTON16(0x0016))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_MAD_ATTR_CC_TBL\r
+* NAME\r
+* IB_MAD_ATTR_CC_TBL\r
+*\r
+* DESCRIPTION\r
+* CongestionControlTable attribute (A10.4.3)\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_MAD_ATTR_CC_TBL (CL_HTON16(0x0017))\r
+/**********/\r
+\r
+/****d* IBA Base: Constants/IB_MAD_ATTR_TIME_STAMP\r
+* NAME\r
+* IB_MAD_ATTR_TIME_STAMP\r
+*\r
+* DESCRIPTION\r
+* TimeStamp attribute (A10.4.3)\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_MAD_ATTR_TIME_STAMP (CL_HTON16(0x0018))\r
+/**********/\r
+\r
/****d* IBA Base: Constants/IB_NODE_TYPE_CA\r
* NAME\r
* IB_NODE_TYPE_CA\r
#define IB_NODE_TYPE_ROUTER 0x03\r
/**********/\r
\r
-/****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_CA\r
+/****d* IBA Base: Constants/IB_NOTICE_PRODUCER_TYPE_CA\r
* NAME\r
-* IB_NOTICE_NODE_TYPE_CA\r
+* IB_NOTICE_PRODUCER_TYPE_CA\r
*\r
* DESCRIPTION\r
-* Encoded generic node type used in MAD attributes (13.4.8.2)\r
+* Encoded generic producer type used in Notice attribute (13.4.8.2)\r
*\r
* SOURCE\r
*/\r
-#define IB_NOTICE_NODE_TYPE_CA (CL_NTOH32(0x000001))\r
+#define IB_NOTICE_PRODUCER_TYPE_CA (CL_HTON32(0x000001))\r
/**********/\r
\r
-/****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SWITCH\r
+/****d* IBA Base: Constants/IB_NOTICE_PRODUCER_TYPE_SWITCH\r
* NAME\r
-* IB_NOTICE_NODE_TYPE_SWITCH\r
+* IB_NOTICE_PRODUCER_TYPE_SWITCH\r
*\r
* DESCRIPTION\r
-* Encoded generic node type used in MAD attributes (13.4.8.2)\r
+* Encoded generic producer type used in Notice attribute (13.4.8.2)\r
*\r
* SOURCE\r
*/\r
-#define IB_NOTICE_NODE_TYPE_SWITCH (CL_NTOH32(0x000002))\r
+#define IB_NOTICE_PRODUCER_TYPE_SWITCH (CL_HTON32(0x000002))\r
/**********/\r
\r
-/****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_ROUTER\r
+/****d* IBA Base: Constants/IB_NOTICE_PRODUCER_TYPE_ROUTER\r
* NAME\r
-* IB_NOTICE_NODE_TYPE_ROUTER\r
+* IB_NOTICE_PRODUCER_TYPE_ROUTER\r
*\r
* DESCRIPTION\r
-* Encoded generic node type used in MAD attributes (13.4.8.2)\r
+* Encoded generic producer type used in Notice attribute (13.4.8.2)\r
*\r
* SOURCE\r
*/\r
-#define IB_NOTICE_NODE_TYPE_ROUTER (CL_NTOH32(0x000003))\r
+#define IB_NOTICE_PRODUCER_TYPE_ROUTER (CL_HTON32(0x000003))\r
/**********/\r
\r
/****d* IBA Base: Constants/IB_NOTICE_PRODUCER_TYPE_CLASS_MGR\r
ib_gid_is_link_local(\r
IN const ib_gid_t* const p_gid )\r
{\r
- return( ib_gid_get_subnet_prefix( p_gid ) == IB_DEFAULT_SUBNET_PREFIX );\r
+ return ((ib_gid_get_subnet_prefix(p_gid) &\r
+ CL_HTON64(0xFFC0000000000000ULL)) == IB_DEFAULT_SUBNET_PREFIX);\r
}\r
/*\r
* PARAMETERS\r
#define IB_CLASS_CAP_GETSET 0x0002\r
/*********/\r
\r
+/****s* IBA Base: Constants/IB_CLASS_ENH_PORT0_CC_MASK\r
+* NAME\r
+* IB_CLASS_ENH_PORT0_CC_MASK\r
+*\r
+* DESCRIPTION\r
+* ClassPortInfo CapabilityMask bits.\r
+* Switch only: This bit will be set if the EnhacedPort0\r
+* supports CA Congestion Control (A10.4.3.1).\r
+*\r
+* SEE ALSO\r
+* ib_class_port_info_t\r
+*\r
+* SOURCE\r
+*/\r
+#define IB_CLASS_ENH_PORT0_CC_MASK 0x0100\r
+/*********/\r
+\r
/****s* IBA Base: Constants/IB_CLASS_RESP_TIME_MASK\r
* NAME\r
* IB_CLASS_RESP_TIME_MASK\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
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
case IB_LINK_WIDTH_ACTIVE_12X:\r
rate = IB_PATH_RECORD_RATE_30_GBS;\r
break;\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 AL_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
ib_gid_t gid;\r
} PACK_SUFFIX ntc_bkey_259;\r
\r
+ struct _ntc_cckey_0 // CC key violation\r
+ {\r
+ ib_net16_t slid; // source LID from offending packet LRH\r
+ uint8_t method; // method, from common MAD header\r
+ uint8_t resv0;\r
+ ib_net16_t attribute_id; // Attribute ID, from common MAD header\r
+ ib_net16_t resv1;\r
+ ib_net32_t attribute_modifier;// Attribute Modif, from common MAD header\r
+ ib_net32_t qp; // 8b pad, 24b dest QP from BTH\r
+ ib_net64_t cc_key; // CC key of the offending packet\r
+ ib_gid_t source_gid; // GID from GRH of the offending packet\r
+ uint8_t padding[14]; // Padding - ignored on read\r
+ } PACK_SUFFIX ntc_cckey_0;\r
+\r
} data_details;\r
\r
ib_gid_t issuer_gid; // 16 80\r
{\r
ib_gid_t subscriber_gid;\r
net16_t subscriber_enum;\r
- uint16_t reserved[3];\r
+ uint8_t reserved[6];\r
ib_inform_info_t inform_info;\r
uint8_t pad[4];\r
\r
* ib_mad_t\r
*********/\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
* on the structure command field or the usage context.\r
*****/\r
\r
+/****s* IBA Base: Types/ib_cc_mad_t\r
+* NAME\r
+* ib_cc_mad_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined Congestion Control MAD format. (A10.4.1)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#define IB_CC_LOG_DATA_SIZE 32\r
+#define IB_CC_MGT_DATA_SIZE 192\r
+#define IB_CC_MAD_HDR_SIZE (sizeof(ib_sa_mad_t) - IB_CC_LOG_DATA_SIZE \\r
+ - IB_CC_MGT_DATA_SIZE)\r
+\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_cc_mad {\r
+ ib_mad_t header;\r
+ ib_net64_t cc_key;\r
+ uint8_t log_data[IB_CC_LOG_DATA_SIZE];\r
+ uint8_t mgt_data[IB_CC_MGT_DATA_SIZE];\r
+} PACK_SUFFIX ib_cc_mad_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+* header\r
+* Common MAD header.\r
+*\r
+* cc_key\r
+* CC_Key of the Congestion Control MAD.\r
+*\r
+* log_data\r
+* Congestion Control log data of the CC MAD.\r
+*\r
+* mgt_data\r
+* Congestion Control management data of the CC MAD.\r
+*\r
+* SEE ALSO\r
+* ib_mad_t\r
+*********/\r
+\r
+/****f* IBA Base: Types/ib_cc_mad_get_cc_key\r
+* NAME\r
+* ib_cc_mad_get_cc_key\r
+*\r
+* DESCRIPTION\r
+* Gets a CC_Key of the CC MAD.\r
+*\r
+* SYNOPSIS\r
+*/\r
+static inline ib_net64_t AL_API\r
+ib_cc_mad_get_cc_key(IN const ib_cc_mad_t * const p_cc_mad)\r
+{\r
+ return p_cc_mad->cc_key;\r
+}\r
+/*\r
+* PARAMETERS\r
+* p_cc_mad\r
+* [in] Pointer to the CC MAD packet.\r
+*\r
+* RETURN VALUES\r
+* CC_Key of the provided CC MAD packet.\r
+*\r
+* NOTES\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****f* IBA Base: Types/ib_cc_mad_get_log_data_ptr\r
+* NAME\r
+* ib_cc_mad_get_mgt_data_ptr\r
+*\r
+* DESCRIPTION\r
+* Gets a pointer to the CC MAD's log data area.\r
+*\r
+* SYNOPSIS\r
+*/\r
+static inline void * AL_API\r
+ib_cc_mad_get_log_data_ptr(IN const ib_cc_mad_t * const p_cc_mad)\r
+{\r
+ return ((void *)p_cc_mad->log_data);\r
+}\r
+/*\r
+* PARAMETERS\r
+* p_cc_mad\r
+* [in] Pointer to the CC MAD packet.\r
+*\r
+* RETURN VALUES\r
+* Pointer to CC MAD log data area.\r
+*\r
+* NOTES\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****f* IBA Base: Types/ib_cc_mad_get_mgt_data_ptr\r
+* NAME\r
+* ib_cc_mad_get_mgt_data_ptr\r
+*\r
+* DESCRIPTION\r
+* Gets a pointer to the CC MAD's management data area.\r
+*\r
+* SYNOPSIS\r
+*/\r
+static inline void * AL_API\r
+ib_cc_mad_get_mgt_data_ptr(IN const ib_cc_mad_t * const p_cc_mad)\r
+{\r
+ return ((void *)p_cc_mad->mgt_data);\r
+}\r
+/*\r
+* PARAMETERS\r
+* p_cc_mad\r
+* [in] Pointer to the CC MAD packet.\r
+*\r
+* RETURN VALUES\r
+* Pointer to CC MAD management data area.\r
+*\r
+* NOTES\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_cong_info_t\r
+* NAME\r
+* ib_cong_info_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined CongestionInfo attribute (A10.4.3.3)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_cong_info {\r
+ uint8_t cong_info;\r
+ uint8_t resv;\r
+ uint8_t ctrl_table_cap;\r
+} PACK_SUFFIX ib_cong_info_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+* cong_info\r
+* Congestion control capabilities of the node.\r
+*\r
+* ctrl_table_cap\r
+* Number of 64 entry blocks in the CongestionControlTable.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_cong_key_info_t\r
+* NAME\r
+* ib_cong_key_info_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined CongestionKeyInfo attribute (A10.4.3.4)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_cong_key_info {\r
+ ib_net64_t cc_key;\r
+ ib_net16_t protect_bit;\r
+ ib_net16_t lease_period;\r
+ ib_net16_t violations;\r
+} PACK_SUFFIX ib_cong_key_info_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+* cc_key\r
+* 8-byte CC Key.\r
+*\r
+* protect_bit\r
+* Bit 0 is a CC Key Protect Bit, other 15 bits are reserved.\r
+*\r
+* lease_period\r
+* How long the CC Key protect bit is to remain non-zero.\r
+*\r
+* violations\r
+* Number of received MADs that violated CC Key.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_cong_log_event_sw_t\r
+* NAME\r
+* ib_cong_log_event_sw_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined CongestionLogEvent (SW) entry (A10.4.3.5)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_cong_log_event_sw {\r
+ ib_net16_t slid;\r
+ ib_net16_t dlid;\r
+ ib_net32_t sl;\r
+ ib_net32_t time_stamp;\r
+} PACK_SUFFIX ib_cong_log_event_sw_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+* slid\r
+* Source LID of congestion event.\r
+*\r
+* dlid\r
+* Destination LID of congestion event.\r
+*\r
+* sl\r
+* 4 bits - SL of congestion event.\r
+* rest of the bits are reserved.\r
+*\r
+* time_stamp\r
+* Timestamp of congestion event.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t, ib_cong_log_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_cong_log_event_ca_t\r
+* NAME\r
+* ib_cong_log_event_ca_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined CongestionLogEvent (CA) entry (A10.4.3.5)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_cong_log_event_ca {\r
+ ib_net32_t local_qp_resv0;\r
+ ib_net32_t remote_qp_sl_service_type;\r
+ ib_net16_t remote_lid;\r
+ ib_net16_t resv1;\r
+ ib_net32_t time_stamp;\r
+} PACK_SUFFIX ib_cong_log_event_ca_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+* resv0_local_qp\r
+* bits [31:8] local QP that reached CN threshold.\r
+* bits [7:0] reserved.\r
+*\r
+* remote_qp_sl_service_type\r
+* bits [31:8] remote QP that is connected to local QP.\r
+* bits [7:4] SL of the local QP.\r
+* bits [3:0] Service Type of the local QP.\r
+*\r
+* remote_lid\r
+* LID of the remote port that is connected to local QP.\r
+*\r
+* time_stamp\r
+* Timestamp when threshold reached.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t, ib_cong_log_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_cong_log_t\r
+* NAME\r
+* ib_cong_log_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined CongestionLog attribute (A10.4.3.5)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_cong_log {\r
+ uint8_t log_type;\r
+ union _log_details\r
+ {\r
+ struct _log_sw {\r
+ uint8_t cong_flags;\r
+ ib_net16_t event_counter;\r
+ ib_net32_t time_stamp;\r
+ uint8_t port_map[32];\r
+ ib_cong_log_event_sw_t entry_list[15];\r
+ } PACK_SUFFIX log_sw;\r
+\r
+ struct _log_ca {\r
+ uint8_t cong_flags;\r
+ ib_net16_t event_counter;\r
+ ib_net16_t event_map;\r
+ ib_net16_t resv;\r
+ ib_net32_t time_stamp;\r
+ ib_cong_log_event_ca_t log_event[13];\r
+ } PACK_SUFFIX log_ca;\r
+\r
+ } log_details;\r
+} PACK_SUFFIX ib_cong_log_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+*\r
+* log_{sw,ca}.log_type\r
+* Log type: 0x1 is for Switch, 0x2 is for CA\r
+*\r
+* log_{sw,ca}.cong_flags\r
+* Congestion Flags.\r
+*\r
+* log_{sw,ca}.event_counter\r
+* Number of events since log last sent.\r
+*\r
+* log_{sw,ca}.time_stamp\r
+* Timestamp when log sent.\r
+*\r
+* log_sw.port_map\r
+* If a bit set to 1, then the corresponding port\r
+* has marked packets with a FECN.\r
+* bits 0 and 255 - reserved\r
+* bits [254..1] - ports [254..1].\r
+*\r
+* log_sw.entry_list\r
+* Array of 13 most recent congestion log events.\r
+*\r
+* log_ca.event_map\r
+* array 16 bits, one for each SL.\r
+*\r
+* log_ca.log_event\r
+* Array of 13 most recent congestion log events.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t, ib_cong_log_event_sw_t, ib_cong_log_event_ca_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_sw_cong_setting_t\r
+* NAME\r
+* ib_sw_cong_setting_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined SwitchCongestionSetting attribute (A10.4.3.6)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_sw_cong_setting {\r
+ ib_net32_t control_map;\r
+ uint8_t victim_mask[32];\r
+ uint8_t credit_mask[32];\r
+ uint8_t threshold_resv;\r
+ uint8_t packet_size;\r
+ ib_net16_t cs_threshold_resv;\r
+ ib_net16_t cs_return_delay;\r
+ ib_net16_t marking_rate;\r
+} PACK_SUFFIX ib_sw_cong_setting_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+*\r
+* control_map\r
+* Indicates which components of this attribute are valid\r
+*\r
+* victim_mask\r
+* If the bit set to 1, then the port corresponding to\r
+* that bit shall mark packets that encounter congestion\r
+* with a FECN, whether they are the source or victim\r
+* of congestion. (See A10.2.1.1.1)\r
+* bit 0: port 0 (enhanced port 0 only)\r
+* bits [254..1]: ports [254..1]\r
+* bit 255: reserved\r
+*\r
+* credit_mask\r
+* If the bit set to 1, then the port corresponding\r
+* to that bit shall apply Credit Starvation.\r
+* bit 0: port 0 (enhanced port 0 only)\r
+* bits [254..1]: ports [254..1]\r
+* bit 255: reserved\r
+*\r
+* threshold\r
+* bits [15..12] Indicates how agressive cong. marking should be\r
+* bits [11..0] Reserved\r
+*\r
+* packet_size\r
+* Any packet less than this size won't be marked with FECN\r
+*\r
+* cs_threshold\r
+* bits [7..4] How agressive Credit Starvation should be\r
+* bits [3..0] Reserved\r
+*\r
+* cs_return_delay\r
+* Value that controls credit return rate.\r
+*\r
+* marking_rate\r
+* The value that provides the mean number of packets\r
+* between marking eligible packets with FECN.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_sw_port_cong_setting_element_t\r
+* NAME\r
+* ib_sw_port_cong_setting_element_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined SwitchPortCongestionSettingElement (A10.4.3.7)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_sw_port_cong_setting_element {\r
+ uint8_t valid_ctrl_type_res_threshold;\r
+ uint8_t packet_size;\r
+ ib_net16_t cong_param;\r
+} PACK_SUFFIX ib_sw_port_cong_setting_element_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+*\r
+* valid_ctrl_type_res_threshold\r
+* bit 7: "Valid"\r
+* when set to 1, indicates this switch\r
+* port congestion setting element is valid.\r
+* bit 6: "Control Type"\r
+* Indicates which type of attribute is being set:\r
+* 0b = Congestion Control parameters are being set.\r
+* 1b = Credit Starvation parameters are being set.\r
+* bits [5..4]: reserved\r
+* bits [3..0]: "Threshold"\r
+* When Control Type is 0, contains the congestion\r
+* threshold value (Threshold) for this port.\r
+* When Control Type is 1, contains the credit\r
+* starvation threshold (CS_Threshold) value for\r
+* this port.\r
+*\r
+* packet_size\r
+* When Control Type is 0, this field contains the minimum\r
+* size of packets that may be marked with a FECN.\r
+* When Control Type is 1, this field is reserved.\r
+*\r
+* cong_parm\r
+* When Control Type is 0, this field contains the port\r
+* marking_rate.\r
+* When Control Type is 1, this field is reserved.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t, ib_sw_port_cong_setting_t\r
+*********/\r
+\r
+/****d* IBA Base: Types/ib_sw_port_cong_setting_block_t\r
+* NAME\r
+* ib_sw_port_cong_setting_block_t\r
+*\r
+* DESCRIPTION\r
+* Defines the SwitchPortCongestionSetting Block (A10.4.3.7).\r
+*\r
+* SOURCE\r
+*/\r
+typedef ib_sw_port_cong_setting_element_t ib_sw_port_cong_setting_block_t[32];\r
+/**********/\r
+\r
+/****s* IBA Base: Types/ib_sw_port_cong_setting_t\r
+* NAME\r
+* ib_sw_port_cong_setting_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined SwitchPortCongestionSetting attribute (A10.4.3.7)\r
+*\r
+* SYNOPSIS\r
+*/\r
+\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_sw_port_cong_setting {\r
+ ib_sw_port_cong_setting_block_t block;\r
+} PACK_SUFFIX ib_sw_port_cong_setting_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+*\r
+* block\r
+* SwitchPortCongestionSetting block.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t, ib_sw_port_cong_setting_element_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_ca_cong_entry_t\r
+* NAME\r
+* ib_ca_cong_entry_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined CACongestionEntry (A10.4.3.8)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_ca_cong_entry {\r
+ ib_net16_t ccti_timer;\r
+ uint8_t ccti_increase;\r
+ uint8_t trigger_threshold;\r
+ uint8_t ccti_min;\r
+ uint8_t resv0;\r
+ ib_net16_t resv1;\r
+} PACK_SUFFIX ib_ca_cong_entry_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+*\r
+* ccti_timer\r
+* When the timer expires it will be reset to its specified\r
+* value, and 1 will be decremented from the CCTI.\r
+*\r
+* ccti_increase\r
+* The number to be added to the table Index (CCTI)\r
+* on the receipt of a BECN.\r
+*\r
+* trigger_threshold\r
+* When the CCTI is equal to this value, an event\r
+* is logged in the CAs cyclic event log.\r
+*\r
+* ccti_min\r
+* The minimum value permitted for the CCTI.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_ca_cong_setting_t\r
+* NAME\r
+* ib_ca_cong_setting_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined CACongestionSetting attribute (A10.4.3.8)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_ca_cong_setting {\r
+ ib_net16_t port_control;\r
+ ib_net16_t control_map;\r
+ ib_ca_cong_entry_t entry_list[16];\r
+} PACK_SUFFIX ib_ca_cong_setting_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+*\r
+* port_control\r
+* Congestion attributes for this port:\r
+* bit0 = 0: QP based CC\r
+* bit0 = 1: SL/Port based CC\r
+* All other bits are reserved\r
+*\r
+* control_map\r
+* An array of sixteen bits, one for each SL. Each bit indicates\r
+* whether or not the corresponding entry is to be modified.\r
+*\r
+* entry_list\r
+* List of 16 CACongestionEntries, one per SL.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_cc_tbl_entry_t\r
+* NAME\r
+* ib_cc_tbl_entry_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined CongestionControlTableEntry (A10.4.3.9)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_cc_tbl_entry {\r
+ ib_net16_t shift_multiplier;\r
+} PACK_SUFFIX ib_cc_tbl_entry_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+*\r
+* shift_multiplier\r
+* bits [15..14] - CCT Shift\r
+* used when calculating the injection rate delay\r
+* bits [13..0] - CCT Multiplier\r
+* used when calculating the injection rate delay\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_cc_tbl_t\r
+* NAME\r
+* ib_cc_tbl_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined CongestionControlTable attribute (A10.4.3.9)\r
+*\r
+* SYNOPSIS\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_cc_tbl {\r
+ ib_net16_t ccti_limit;\r
+ ib_net16_t resv;\r
+ ib_cc_tbl_entry_t entry_list[64];\r
+} PACK_SUFFIX ib_cc_tbl_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+*\r
+* ccti_limit\r
+* Maximum valid CCTI for this table.\r
+*\r
+* entry_list\r
+* List of up to 64 CongestionControlTableEntries.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
+\r
+/****s* IBA Base: Types/ib_time_stamp_t\r
+* NAME\r
+* ib_time_stamp_t\r
+*\r
+* DESCRIPTION\r
+* IBA defined TimeStamp attribute (A10.4.3.10)\r
+*\r
+* SOURCE\r
+*/\r
+#include <complib/cl_packon.h>\r
+typedef struct _ib_time_stamp {\r
+ ib_net32_t value;\r
+} PACK_SUFFIX ib_time_stamp_t;\r
+#include <complib/cl_packoff.h>\r
+/*\r
+* FIELDS\r
+*\r
+* value\r
+* Free running clock that provides relative time info\r
+* for a device. Time is kept in 1.024 usec units.\r
+*\r
+* SEE ALSO\r
+* ib_cc_mad_t\r
+*********/\r
\r
#define IB_REQ_CM_RDMA_SID_PREFIX 0x0000000001000000\r
#define IB_REQ_CM_RDMA_PDATA_SIZE 56\r