[ofa-general] [PATCH] opensm/include/iba/ib_types.h: Definition of Congestion Control MADs

Yevgeny Kliteynik kliteyn at dev.mellanox.co.il
Sun Jun 29 23:53:52 PDT 2008


Hi Sasha,

Adding definition of all the Congestion Control
(CC) MADs to ib_types.h (IB Spec, Annex 10).

Signed-off-by: Yevgeny Kliteynik <kliteyn at dev.mellanox.co.il>
---
 opensm/include/iba/ib_types.h |  786 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 786 insertions(+), 0 deletions(-)

diff --git a/opensm/include/iba/ib_types.h b/opensm/include/iba/ib_types.h
index 09ec257..81d16d3 100644
--- a/opensm/include/iba/ib_types.h
+++ b/opensm/include/iba/ib_types.h
@@ -443,6 +443,17 @@ BEGIN_C_DECLS
 */
 #define IB_MCLASS_PERF						0x04
 /**********/
+/****d* IBA Base: Constants/IB_MCLASS_CC
+* NAME
+*	IB_MCLASS_CC
+*
+* DESCRIPTION
+*	Management Class, Congestion Control (A10.4.1)
+*
+* SOURCE
+*/
+#define IB_MCLASS_CC						0x21
+/**********/
 /****d* IBA Base: Constants/IB_MCLASS_BM
 * NAME
 *	IB_MCLASS_BM
@@ -1005,6 +1016,18 @@ static inline boolean_t OSM_API ib_class_is_rmpp(IN const uint8_t class_code)
 #define IB_MAD_ATTR_PORT_SMPL_RSLT			(CL_HTON16(0x0011))
 /**********/

+/****d* IBA Base: Constants/IB_MAD_ATTR_CONG_INFO
+* NAME
+*	IB_MAD_ATTR_CONG_INFO
+*
+* DESCRIPTION
+*	CongestionInfo attribute (A10.4.3)
+*
+* SOURCE
+*/
+#define IB_MAD_ATTR_CONG_INFO				(CL_HTON16(0x0011))
+/**********/
+
 /****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO
 * NAME
 *	IB_MAD_ATTR_SWITCH_INFO
@@ -1029,6 +1052,30 @@ static inline boolean_t OSM_API ib_class_is_rmpp(IN const uint8_t class_code)
 #define IB_MAD_ATTR_PORT_CNTRS				(CL_HTON16(0x0012))
 /**********/

+/****d* IBA Base: Constants/IB_MAD_ATTR_CONG_KEY_INFO
+* NAME
+*	IB_MAD_ATTR_CONG_KEY_INFO
+*
+* DESCRIPTION
+*	CongestionKeyInfo attribute (A10.4.3)
+*
+* SOURCE
+*/
+#define IB_MAD_ATTR_CONG_KEY_INFO			(CL_HTON16(0x0012))
+/**********/
+
+/****d* IBA Base: Constants/IB_MAD_ATTR_CONG_LOG
+* NAME
+*	IB_MAD_ATTR_CONG_LOG
+*
+* DESCRIPTION
+*	CongestionLog attribute (A10.4.3)
+*
+* SOURCE
+*/
+#define IB_MAD_ATTR_CONG_LOG				(CL_HTON16(0x0013))
+/**********/
+
 /****d* IBA Base: Constants/IB_MAD_ATTR_GUID_INFO
 * NAME
 *	IB_MAD_ATTR_GUID_INFO
@@ -1041,6 +1088,18 @@ static inline boolean_t OSM_API ib_class_is_rmpp(IN const uint8_t class_code)
 #define IB_MAD_ATTR_GUID_INFO				(CL_HTON16(0x0014))
 /**********/

+/****d* IBA Base: Constants/IB_MAD_ATTR_SW_CONG_SETTING
+* NAME
+*	IB_MAD_ATTR_SW_CONG_SETTING
+*
+* DESCRIPTION
+*	SwitchCongestionSetting attribute (A10.4.3)
+*
+* SOURCE
+*/
+#define IB_MAD_ATTR_SW_CONG_SETTING			(CL_HTON16(0x0014))
+/**********/
+
 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_INFO
 * NAME
 *	IB_MAD_ATTR_PORT_INFO
@@ -1053,6 +1112,18 @@ static inline boolean_t OSM_API ib_class_is_rmpp(IN const uint8_t class_code)
 #define IB_MAD_ATTR_PORT_INFO				(CL_HTON16(0x0015))
 /**********/

+/****d* IBA Base: Constants/IB_MAD_ATTR_SW_PORT_CONG_SETTING
+* NAME
+*	IB_MAD_ATTR_SW_PORT_CONG_SETTING
+*
+* DESCRIPTION
+*	SwitchPortCongestionSetting attribute (A10.4.3)
+*
+* SOURCE
+*/
+#define IB_MAD_ATTR_SW_PORT_CONG_SETTING		(CL_HTON16(0x0015))
+/**********/
+
 /****d* IBA Base: Constants/IB_MAD_ATTR_P_KEY_TABLE
 * NAME
 *	IB_MAD_ATTR_P_KEY_TABLE
@@ -1065,6 +1136,18 @@ static inline boolean_t OSM_API ib_class_is_rmpp(IN const uint8_t class_code)
 #define IB_MAD_ATTR_P_KEY_TABLE				(CL_HTON16(0x0016))
 /**********/

+/****d* IBA Base: Constants/IB_MAD_ATTR_CA_CONG_SETTING
+* NAME
+*	IB_MAD_ATTR_CA_CONG_SETTING
+*
+* DESCRIPTION
+*	CACongestionSetting attribute (A10.4.3)
+*
+* SOURCE
+*/
+#define IB_MAD_ATTR_CA_CONG_SETTING			(CL_HTON16(0x0016))
+/**********/
+
 /****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_TABLE
 * NAME
 *	IB_MAD_ATTR_SLVL_TABLE
@@ -1077,6 +1160,18 @@ static inline boolean_t OSM_API ib_class_is_rmpp(IN const uint8_t class_code)
 #define IB_MAD_ATTR_SLVL_TABLE				(CL_HTON16(0x0017))
 /**********/

+/****d* IBA Base: Constants/IB_MAD_ATTR_CC_TBL
+* NAME
+*	IB_MAD_ATTR_CC_TBL
+*
+* DESCRIPTION
+*	CongestionControlTable attribute (A10.4.3)
+*
+* SOURCE
+*/
+#define IB_MAD_ATTR_CC_TBL				(CL_HTON16(0x0017))
+/**********/
+
 /****d* IBA Base: Constants/IB_MAD_ATTR_VL_ARBITRATION
 * NAME
 *	IB_MAD_ATTR_VL_ARBITRATION
@@ -1089,6 +1184,18 @@ static inline boolean_t OSM_API ib_class_is_rmpp(IN const uint8_t class_code)
 #define IB_MAD_ATTR_VL_ARBITRATION			(CL_HTON16(0x0018))
 /**********/

+/****d* IBA Base: Constants/IB_MAD_ATTR_TIME_STAMP
+* NAME
+*	IB_MAD_ATTR_TIME_STAMP
+*
+* DESCRIPTION
+*	TimeStamp attribute (A10.4.3)
+*
+* SOURCE
+*/
+#define IB_MAD_ATTR_TIME_STAMP				(CL_HTON16(0x0018))
+/**********/
+
 /****d* IBA Base: Constants/IB_MAD_ATTR_LIN_FWD_TBL
 * NAME
 *	IB_MAD_ATTR_LIN_FWD_TBL
@@ -3246,6 +3353,23 @@ ib_path_rec_hop_limit(IN const ib_path_rec_t * const p_rec)
 #define IB_CLASS_RESP_TIME_MASK				0x1F
 /*********/

+/****s* IBA Base: Constants/IB_CLASS_ENH_PORT0_CC_MASK
+* NAME
+*	IB_CLASS_ENH_PORT0_CC_MASK
+*
+* DESCRIPTION
+*	ClassPortInfo CapabilityMask bits.
+*	Switch only: This bit will be set if the EnhacedPort0
+*	supports CA Congestion Control (A10.4.3.1).
+*
+* SEE ALSO
+*	ib_class_port_info_t
+*
+* SOURCE
+*/
+#define IB_CLASS_ENH_PORT0_CC_MASK			0x0100
+/*********/
+
 /****s* IBA Base: Types/ib_class_port_info_t
 * NAME
 *	ib_class_port_info_t
@@ -7126,6 +7250,19 @@ typedef struct _ib_mad_notice_attr	// Total Size calc  Accumulated
 			uint8_t details[54];
 		} PACK_SUFFIX raw_data;

+		struct _ntc_0 {			// CC_Key violation [54 bytes]
+			ib_net16_t source_lid;	// Source LID from offending packet LRH
+			uint8_t method;		// Method, from common MAD header
+			uint8_t resv0;
+			ib_net16_t attr_id;	// Attribute ID, from common MAD header
+			ib_net16_t resv1;
+			ib_net32_t attr_mod;	// Attribute Modif, from common MAD header
+			ib_net32_t qp;		// 8b pad, 24b dest QP from BTH
+			ib_net64_t cc_key;	// CC key of the offending packet
+			ib_gid_t source_gid;	// GID from GRH of the offending packet
+			uint8_t padding[14];	// Padding - ignored on read
+		} PACK_SUFFIX ntc_0;
+
 		struct _ntc_64_67 {
 			uint8_t res[6];
 			ib_gid_t gid;	// the Node or Multicast Group that came in/out
@@ -7219,6 +7356,11 @@ typedef struct _ib_mad_notice_attr	// Total Size calc  Accumulated
 #define TRAP_144_MASK_LINK_WIDTH_ENABLE_CHANGE (CL_HTON16(0x0002))
 #define TRAP_144_MASK_NODE_DESCRIPTION_CHANGE  (CL_HTON16(0x0001))

+/**
+ * Trap 0 masks
+ */
+#define TRAP_0_MASK_QP (CL_HTON32(0x00FFFFFF))
+
 /****f* IBA Base: Types/ib_notice_is_generic
 * NAME
 *	ib_notice_is_generic
@@ -7843,6 +7985,650 @@ typedef struct _ib_port_samples_result {
 } PACK_SUFFIX ib_port_samples_result_t;
 #include <complib/cl_packoff.h>

+/****s* IBA Base: Types/ib_cc_mad_t
+* NAME
+*	ib_cc_mad_t
+*
+* DESCRIPTION
+*	IBA defined Congestion Control MAD format. (A10.4.1)
+*
+* SYNOPSIS
+*/
+#define IB_CC_LOG_DATA_SIZE 32
+#define IB_CC_MGT_DATA_SIZE 192
+#define IB_CC_MAD_HDR_SIZE (sizeof(ib_sa_mad_t) - IB_CC_LOG_DATA_SIZE \
+						- IB_CC_MGT_DATA_SIZE)
+
+#include <complib/cl_packon.h>
+typedef struct _ib_cc_mad {
+	ib_mad_t header;
+	ib_net64_t cc_key;
+	uint8_t log_data[IB_CC_LOG_DATA_SIZE];
+	uint8_t mgt_data[IB_CC_MGT_DATA_SIZE];
+} PACK_SUFFIX ib_cc_mad_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*	header
+*		Common MAD header.
+*
+*	cc_key
+*		CC_Key of the Congestion Control MAD.
+*
+*	log_data
+*		Congestion Control log data of the CC MAD.
+*
+*	mgt_data
+*		Congestion Control management data of the CC MAD.
+*
+* SEE ALSO
+* ib_mad_t
+*********/
+
+/****f* IBA Base: Types/ib_cc_mad_get_cc_key
+* NAME
+*	ib_cc_mad_get_cc_key
+*
+* DESCRIPTION
+*	Gets a CC_Key of the CC MAD.
+*
+* SYNOPSIS
+*/
+static inline ib_net64_t OSM_API
+ib_cc_mad_get_cc_key(IN const ib_cc_mad_t * const p_cc_mad)
+{
+	return p_cc_mad->cc_key;
+}
+/*
+* PARAMETERS
+*	p_cc_mad
+*		[in] Pointer to the CC MAD packet.
+*
+* RETURN VALUES
+*	CC_Key of the provided CC MAD packet.
+*
+* NOTES
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****f* IBA Base: Types/ib_cc_mad_get_log_data_ptr
+* NAME
+*	ib_cc_mad_get_mgt_data_ptr
+*
+* DESCRIPTION
+*	Gets a pointer to the CC MAD's log data area.
+*
+* SYNOPSIS
+*/
+static inline void * OSM_API
+ib_cc_mad_get_log_data_ptr(IN const ib_cc_mad_t * const p_cc_mad)
+{
+	return ((void *)p_cc_mad->log_data);
+}
+/*
+* PARAMETERS
+*	p_cc_mad
+*		[in] Pointer to the CC MAD packet.
+*
+* RETURN VALUES
+*	Pointer to CC MAD log data area.
+*
+* NOTES
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****f* IBA Base: Types/ib_cc_mad_get_mgt_data_ptr
+* NAME
+*	ib_cc_mad_get_mgt_data_ptr
+*
+* DESCRIPTION
+*	Gets a pointer to the CC MAD's management data area.
+*
+* SYNOPSIS
+*/
+static inline void * OSM_API
+ib_cc_mad_get_mgt_data_ptr(IN const ib_cc_mad_t * const p_cc_mad)
+{
+	return ((void *)p_cc_mad->mgt_data);
+}
+/*
+* PARAMETERS
+*	p_cc_mad
+*		[in] Pointer to the CC MAD packet.
+*
+* RETURN VALUES
+*	Pointer to CC MAD management data area.
+*
+* NOTES
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****s* IBA Base: Types/ib_cong_info_t
+* NAME
+*	ib_cong_info_t
+*
+* DESCRIPTION
+*	IBA defined CongestionInfo attribute (A10.4.3.3)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_cong_info {
+	uint8_t cong_info;
+	uint8_t resv;
+	uint8_t ctrl_table_cap;
+} PACK_SUFFIX ib_cong_info_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*	cong_info
+*		Congestion control capabilities of the node.
+*
+*	ctrl_table_cap
+*		Number of 64 entry blocks in the CongestionControlTable.
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****s* IBA Base: Types/ib_cong_key_info_t
+* NAME
+*	ib_cong_key_info_t
+*
+* DESCRIPTION
+*	IBA defined CongestionKeyInfo attribute (A10.4.3.4)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_cong_key_info {
+	ib_net64_t cc_key;
+	uint8_t protect_bit;
+	uint8_t resv;
+	ib_net16_t lease_period;
+	ib_net16_t violations;
+} PACK_SUFFIX ib_cong_key_info_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*	cc_key
+*		8-byte CC Key.
+*
+*	protect_bit
+*		LSB is a CC Key Protect Bit, other 7 bits are reserved.
+*
+*	lease_period
+*		How long the CC Key protect bit is to remain non-zero.
+*
+*	violations
+*		Number of received MADs that violated CC Key.
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****s* IBA Base: Types/ib_cong_log_event_sw_t
+* NAME
+*	ib_cong_log_event_sw_t
+*
+* DESCRIPTION
+*	IBA defined CongestionLogEvent (SW) entry (A10.4.3.5)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_cong_log_event_sw {
+	ib_net16_t slid;
+	ib_net16_t dlid;
+	uint8_t resv0_sl;
+	uint8_t resv1;
+	ib_net16_t resv2;
+	ib_net32_t time_stamp;
+} PACK_SUFFIX ib_cong_log_event_sw_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*	slid
+*		Source LID of congestion event.
+*
+*	slid
+*		Destination LID of congestion event.
+*
+*	sl
+*		bits [3:0] SL of congestion event.
+*		bits [7:4] reserved.
+*
+*	time_stamp
+*		Timestamp of congestion event.
+*
+* SEE ALSO
+*	ib_cc_mad_t, ib_cong_log_t
+*********/
+
+/****s* IBA Base: Types/ib_cong_log_event_ca_t
+* NAME
+*	ib_cong_log_event_ca_t
+*
+* DESCRIPTION
+*	IBA defined CongestionLogEvent (CA) entry (A10.4.3.5)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_cong_log_event_ca {
+	ib_net32_t resv0_local_qp;
+	ib_net32_t remote_qp_sl_service_type;
+	ib_net16_t remote_lid;
+	ib_net16_t resv1;
+	ib_net32_t time_stamp;
+} PACK_SUFFIX ib_cong_log_event_ca_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*	resv0_local_qp
+*		bits [23:0] local QP that reached CN threshold.
+*		bits [31:24] reserved.
+*
+*	remote_qp_sl_service_type
+*		bits [23:0] remote QP that is connected to local QP.
+*		bits [27:24] SL of the local QP.
+*		bits [31:28] Service Type of the local QP.
+*
+*	remote_lid
+*		LID of the remote port that is connected to local QP.
+*
+*	time_stamp
+*		Timestamp when threshold reached.
+*
+* SEE ALSO
+*	ib_cc_mad_t, ib_cong_log_t
+*********/
+
+/****s* IBA Base: Types/ib_cong_log_t
+* NAME
+*	ib_cong_log_t
+*
+* DESCRIPTION
+*	IBA defined CongestionLog attribute (A10.4.3.5)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_cong_log {
+	uint8_t log_type;
+	union _log_details
+	{
+		struct _log_sw {
+			uint8_t cong_flags;
+			ib_net16_t event_counter;
+			ib_net32_t time_stamp;
+			uint8_t port_map[32];
+			ib_cong_log_event_sw_t entry_list[15];
+		} PACK_SUFFIX log_sw;
+
+		struct _log_ca {
+			uint8_t cong_flags;
+			ib_net16_t event_counter;
+			ib_net16_t event_map;
+			ib_net16_t resv;
+			ib_net32_t time_stamp;
+			ib_cong_log_event_ca_t log_event[13];
+		} PACK_SUFFIX log_ca;
+
+	} log_details;
+} PACK_SUFFIX ib_cong_log_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*
+*	log_{sw,ca}.log_type
+*		Log type: 0x1 is for Switch, 0x2 is for CA
+*
+*	log_{sw,ca}.cong_flags
+*		Congestion Flags.
+*
+*	log_{sw,ca}.event_counter
+*		Number of events since log last sent.
+*
+*	log_{sw,ca}.time_stamp
+*		Timestamp when log sent.
+*
+*	log_sw.port_map
+*		If a bit set to 1, then the corresponding port
+*		has marked packets with a FECN.
+*		bits 0 and 255 - reserved
+*		bits [254..1] - ports [254..1].
+*
+*	log_sw.entry_list
+*		Array of 13 most recent congestion log events.
+*
+*	log_ca.event_map
+*		array 16 bits, one for each SL.
+*
+*	log_ca.log_event
+*		Array of 13 most recent congestion log events.
+*
+* SEE ALSO
+*	ib_cc_mad_t, ib_cong_log_event_sw_t, ib_cong_log_event_ca_t
+*********/
+
+/****s* IBA Base: Types/ib_sw_cong_setting_t
+* NAME
+*	ib_sw_cong_setting_t
+*
+* DESCRIPTION
+*	IBA defined SwitchCongestionSetting attribute (A10.4.3.6)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_sw_cong_setting {
+	ib_net32_t control_map;
+	uint8_t victim_mask[32];
+	uint8_t credit_mask[32];
+	uint8_t threshold;
+	uint8_t packet_size;
+	uint8_t cs_threshold;
+	uint8_t resv0;
+	ib_net16_t cs_return_delay;
+	ib_net16_t marking_rate;
+} PACK_SUFFIX ib_sw_cong_setting_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*
+*	control_map
+*		Indicates which components of this attribute are valid
+*
+*	victim_mask
+*		If the bit set to 1, then the port corresponding to
+*		that bit shall mark packets that encounter congestion
+*		with a FECN, whether they are the source or victim
+*		of congestion. (See A10.2.1.1.1)
+*		  bit 0: port 0 (enhanced port 0 only)
+*		  bits [254..1]: ports [254..1]
+*		  bit 255: reserved
+*
+*	credit_mask
+*		If the bit set to 1, then the port corresponding
+*		to that bit shall apply Credit Starvation.
+*		  bit 0: port 0 (enhanced port 0 only)
+*		  bits [254..1]: ports [254..1]
+*		  bit 255: reserved
+*
+*	threshold
+*		bits [3..0] Indicates how agressive cong. marking should be
+*		bits [7..4] Reserved
+*
+*	packet_size
+*		Any packet less than this size won't be marked with FECN
+*
+*	cs_threshold
+*		bits [3..0] How agressive Credit Starvation should be
+*		bits [7..4] Reserved
+*
+*	cs_return_delay
+*		Value that controls credit return rate.
+*
+*	marking_rate
+*		The value that provides the mean number of packets
+*		between marking eligible packets with FECN.
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****s* IBA Base: Types/ib_sw_port_cong_setting_element_t
+* NAME
+*	ib_sw_port_cong_setting_element_t
+*
+* DESCRIPTION
+*	IBA defined SwitchPortCongestionSettingElement (A10.4.3.7)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_sw_port_cong_setting_element {
+	uint8_t valid_ctrl_type_res_threshold;
+	uint8_t packet_size;
+	ib_net16_t cong_param;
+} PACK_SUFFIX ib_sw_port_cong_setting_element_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*
+*	valid_ctrl_type_res_threshold
+*		bit 0: "Valid"
+*			when set to 1, indicates this switch
+*			port congestion setting element is valid.
+*		bit 1: "Control Type"
+*			Indicates which type of attribute is being set:
+*			0b = Congestion Control parameters are being set.
+*			1b = Credit Starvation parameters are being set.
+*		bits [3..2]: reserved
+*		bits [7..4]: "Threshold"
+*			When Control Type is 0, contains the congestion
+*			threshold value (Threshold) for this port.
+*			When Control Type is 1, contains the credit
+*			starvation threshold (CS_Threshold) value for
+*			this port.
+*
+*	packet_size
+*		When Control Type is 0, this field contains the minimum
+*		size of packets that may be marked with a FECN.
+*		When Control Type is 1, this field is reserved.
+*
+*	cong_parm
+*		When Control Type is 0, this field contains the port
+*		marking_rate.
+*		When Control Type is 1, this field is reserved.
+*
+* SEE ALSO
+*	ib_cc_mad_t, ib_sw_port_cong_setting_t
+*********/
+
+/****d* IBA Base: Types/ib_sw_port_cong_setting_block_t
+* NAME
+*	ib_sw_port_cong_setting_block_t
+*
+* DESCRIPTION
+*	Defines the SwitchPortCongestionSetting Block (A10.4.3.7).
+*
+* SOURCE
+*/
+typedef ib_sw_port_cong_setting_element_t ib_sw_port_cong_setting_block_t[32];
+/**********/
+
+/****s* IBA Base: Types/ib_sw_port_cong_setting_t
+* NAME
+*	ib_sw_port_cong_setting_t
+*
+* DESCRIPTION
+*	IBA defined SwitchPortCongestionSetting attribute (A10.4.3.7)
+*
+* SYNOPSIS
+*/
+
+#include <complib/cl_packon.h>
+typedef struct _ib_sw_port_cong_setting {
+	ib_sw_port_cong_setting_block_t block;
+} PACK_SUFFIX ib_sw_port_cong_setting_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*
+*	block
+*		SwitchPortCongestionSetting block.
+*
+* SEE ALSO
+*	ib_cc_mad_t, ib_sw_port_cong_setting_element_t
+*********/
+
+/****s* IBA Base: Types/ib_ca_cong_entry_t
+* NAME
+*	ib_ca_cong_entry_t
+*
+* DESCRIPTION
+*	IBA defined CACongestionEntry (A10.4.3.8)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_ca_cong_entry {
+	ib_net16_t ccti_timer;
+	uint8_t ccti_increase;
+	uint8_t trigger_threshold;
+	uint8_t ccti_min;
+	uint8_t resv0;
+	ib_net16_t resv1;
+} PACK_SUFFIX ib_ca_cong_entry_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*
+*	ccti_timer
+*		When the timer expires it will be reset to its specified
+*		value, and 1 will be decremented from the CCTI.
+*
+*	ccti_increase
+*		The number to be added to the table Index (CCTI)
+*		on the receipt of a BECN.
+*
+*	trigger_threshold
+*		When the CCTI is equal to this value, an event
+*		is logged in the CAs cyclic event log.
+*
+*	ccti_min
+*		The minimum value permitted for the CCTI.
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****s* IBA Base: Types/ib_ca_cong_setting_t
+* NAME
+*	ib_ca_cong_setting_t
+*
+* DESCRIPTION
+*	IBA defined CACongestionSetting attribute (A10.4.3.8)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_ca_cong_setting {
+	uint8_t port_control;
+	uint8_t resv0;
+	ib_net16_t control_map;
+	ib_ca_cong_entry_t entry_list[16];
+} PACK_SUFFIX ib_ca_cong_setting_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*
+*	port_control
+*		Congestion attributes for this port:
+*		  LSB = 0: QP based CC
+*		  LSB = 1: SL/Port based CC
+*		All other bits are reserved
+*
+*	control_map
+*		An array of sixteen bits, one for each SL. Each bit indicates
+*		whether or not the corresponding entry is to be modified.
+*
+*	entry_list
+*		List of 16 CACongestionEntries, one per SL.
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****s* IBA Base: Types/ib_cc_tbl_entry_t
+* NAME
+*	ib_cc_tbl_entry_t
+*
+* DESCRIPTION
+*	IBA defined CongestionControlTableEntry (A10.4.3.9)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_cc_tbl_entry {
+	ib_net16_t shift_multiplier;
+} PACK_SUFFIX ib_cc_tbl_entry_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*
+*	shift_multiplier
+*		bits [1..0] - CCT Shift
+*		  used when calculating the injection rate delay
+*		bits [15..2] - CCT Multiplier
+*		  used when calculating the injection rate delay
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****s* IBA Base: Types/ib_cc_tbl_t
+* NAME
+*	ib_cc_tbl_t
+*
+* DESCRIPTION
+*	IBA defined CongestionControlTable attribute (A10.4.3.9)
+*
+* SYNOPSIS
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_cc_tbl {
+	ib_net16_t ccti_limit;
+	ib_net16_t resv;
+	ib_cc_tbl_entry_t entry_list[64];
+} PACK_SUFFIX ib_cc_tbl_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*
+*	ccti_limit
+*		Maximum valid CCTI for this table.
+*
+*	entry_list
+*		List of up to 64 CongestionControlTableEntries.
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
+/****s* IBA Base: Types/ib_time_stamp_t
+* NAME
+*	ib_time_stamp_t
+*
+* DESCRIPTION
+*	IBA defined TimeStamp attribute (A10.4.3.10)
+*
+* SOURCE
+*/
+#include <complib/cl_packon.h>
+typedef struct _ib_time_stamp {
+	ib_net32_t value;
+} PACK_SUFFIX ib_time_stamp_t;
+#include <complib/cl_packoff.h>
+/*
+* FIELDS
+*
+*	value
+*		Free running clock that provides relative time info
+*		for a device. Time is kept in 1.024 usec units.
+*
+* SEE ALSO
+*	ib_cc_mad_t
+*********/
+
 /****d* IBA Base: Types/DM_SVC_NAME
 * NAME
 *	DM_SVC_NAME
-- 
1.5.1.4




More information about the general mailing list