Table 29-1 on this page defines all of the device attributes that are managed/accessed by the SM through a device's SMA.
Name | Attribute ID | Modifier | Description and Implementation Requirement |
---|---|---|---|
Notice | 0002h | 00000000h |
|
NodeDescription | 0010h | 00000000h | |
NodeInfo | 0011h | 00000000h |
|
SwitchInfo | 0012h | 00000000h |
|
GUIDInfo | 0014h | Table block selector |
|
VLArbitration | 0018h | High/Low table half selector. For a switch, the port selector. |
|
PortInfo | 0015h | Port selector (see Description) |
|
P_KeyTable | 0016h | Table block selector and, for a switch, port selector. |
|
SLtoVLMappingTable | 0017h |
|
|
LinearForwardingTable | 0019h | LID block selector |
|
RandomForwardingTable | 001Ah | LID block selector |
|
MulticastForwardingTable | 001Bh | LID block selector |
|
VendorDiag | 0030h | 00000000h –0000FFFFh |
|
LEDInfo | 0031h | 00000000h |
|
SMInfo | 0020h | Control packet type: 00000001h-00000005h |
|
FF00h–FFFFh | 00000000h–0000FFFFh | Range reserved for Vendor-specific SM attributes. |
Name | Length (in Bits) | Description |
---|---|---|
LedMask | 1 | Read/Write. Set to 1 for LED on, and 0 for LED off. The response packet indicates the actual LED state. |
Reserved | 31 | Reserved. |
The read-only NodeInfo can be read from each port of a CA or router, and from the switch management port. Table 29-3 on this page describes the elements of the NodeInfo attribute. The Master SM accesses the NodetInfo attribute by sending a SubnGet(NodeInfo) SMP MAD to any port on a CA or router, or to the switch management port. The MAD contains the following (refer to Table 28-5 on page 788):
The contents of the attribute are returned in the response MAD's data field.
Element | Length (in Bits) | Description |
---|---|---|
BaseVersion | 8 | Indicates that this node supports up to and including this version of the base MAD header (see Table 28-1 on page 783). Must = 1. This value must be identical no matter which port of the device the NodeInfo attribute is read from. |
ClassVersion | 8 | Indicates that this node supports up to and including this SMP version. Must = 1. This value must be identical no matter which port of the device the NodeInfo attribute is read from. |
NodeType | 8 | Device type:
|
NumPorts | 8 | Number of physical ports on the device. This value must be identical no matter which port of the device the NodeInfo attribute is read from. |
Reserved | 64 | Reserved and must return zero when read. |
NodeGUID | 64 | GUID of the device itself (as opposed to the GUID of a port). This value must be identical no matter which port of the device the NodeInfo attribute is read from. |
PortGUID | 64 | Hardwired, read-only GUID of the receiving port. One port on a device can return the same GUID as the NodeGUID as its PortGUID if the port is an integral part of the device and cannot be removed and replaced. The value returned must be different for each port on a CA or router, but the same GUID is returned for all ports of a switch. |
PartitionCap | 16 | Indicates the size of the P_KeyTable attribute for CA and router ports, and for the switch management port. On a switch, this element does not indicate the size of the optional P_KeyTable attribute element implemented on each of the switch's external ports. If those tables are implemented (as indicated by a non-zero value in SwitchInfo.PartitionEnforcementCap), their size is indicated by the SwitchInfo.PartitionEnforcementCap attribute element. The minimum size is one for all ports on CAs and routers and for the switch management port. This value must be identical no matter which port of the device the NodeInfo attribute is read from. |
DeviceID | 16 | Device ID assigned by the device manufacturer. This value must be identical no matter which port of the device the NodeInfo attribute is read from. |
Revision | 32 | Device revision assigned by the manufacturer. This value must be identical no matter which port of the device the NodeInfo attribute is read from. |
LocalPortNum | 8 | The number of the device port that received this SMP. |
VendorID | 24 | The Vendor ID assigned by IEEE (the upper 24 bits of the hardwired, read-only GUID—see “Port's Default GUID Is Hardwired” on page 156). This value must be identical no matter which port of the device the NodeInfo attribute is read from. |
The SwitchInfo attribute is only implemented on the switch management port. Table 29-4 on page 819 provides a description of each element of the SwitchInfo attribute. The Master SM accesses the SwitchInfo attribute by sending a SubnGet(SwitchInfo) or a SubnSet(SwitchInfo) SMP MAD to the switch management port. The MAD contains the following (refer to Table 28-5 on page 788):
Class = Subn.
Method = Get or Set.
AttributeID = SwitchInfo.
On a write, the data field contains the data to be written to the attribute. On a read, the data field's contents are not used in the request MAD.
On a read, the contents of the attribute are returned in the response MAD's data field.
Element | Length (in bits) | Description |
---|---|---|
LinearFDBCap | 16 | Read-only. Indicates the size of the Linear Forwarding Table (starting at LID address 0000h and going up). Zero indicates that the table is not implemented. Note that a switch must implement either the Linear or the Random Forwarding Table (not both) to handle the forwarding of packets with unicast DLID addresses. FDB stands for Forwarding Database. It should be noted that LID address 0000h is reserved and is not a unicast LID address. |
RandomFDBCap | 16 | Read-only. Indicates the size of the Random Forwarding Table. Zero indicates that the table is not implemented. Note that a switch must implement either the Linear or the Random Forwarding Table (not both) to handle the forwarding of packets with unicast DLID addresses. FDB stands for Forwarding Database. |
MulticastFDBCap | 16 | Read-only. Indicates the size of the optional Multicast Forwarding Table (starting at multicast LID address C000h and going up—but not past FFFEh). Zero indicates that the table is not implemented. |
LinearFDBTop | 16 | Read-Write. Indicates the top of the Linear Forwarding Table. Packets received with unicast DLIDs greater than this value are discarded by the switch. This component applies only to switches that implement a Linear Forwarding Table and is ignored by switches that implement a Random Forwarding Table. |
DefaultPort | 8 | Read-Write. All packets that arrive on a switch port other than the default port with a DLID address that doesn't match any of the entries in the Random Forwarding Table, nor is it the PLID address (FFFFh), are forwarded through this port. If the default port does not exist, the packet is silently discarded. If a packet arrives on the default port and its DLID address doesn't match any of the entries in the Random Forwarding Table, nor is it the PLID address, it is silently discarded. |
DefaultMulticastPrimaryPort | 8 | Read-Write. All packets with a multicast DLID received on ports other than this port are forwarded through this port if any of the following are true:
All multicast packets received on this port are forwarded through the DefaultMulticastNotPrimaryPort if any of the following are true:
|
DefaultMulticastNotPrimaryPort | 8 | Read-Write. See the description of the DefaultMulticast PrimaryPort in this table. |
PortStateChange | 1 | Read-Write. Set to one whenever PortInfo.PortState of any switch port transitions from Down to Initialize, Initialize to Down, Armed to Down, or Active to Down. SMP changes to Portstate do not affect this bit. This bit is cleared by writing one to it, while writing zero to it is ignored. |
LifeTimeValue | 5 | Read-Write. Sets the time a packet can live in the switch. Transmitter's packet discard is based on, among other things, two time values:
HL = PortInfo.HOQLife attribute element and HLL is calculated as follows:
A packet with any of the these conditions is discarded:
If a switch design cannot guarantee that any packet entering it will be transmitted within 2.5ms (measured first-bit-in to first-bit-out and assuming Flow Control credit is continuously available), it discards any packet that has not begun transmission within SLL measured from the time that the first bit received. If a switch implementation can guarantee that any packet entering it will be transmitted within 2.5ms, it may discard any packet that has not begun transmission within SLL measured from the time that the first bit is received. |
Reserved | 2 | Reserved. Must return zero when read. |
LIDsPerPort | 16 | Read-only. See “Minimalist Approach” on page 672. |
PartitionEnforcementCap | 16 | Read-only. A switch may optionally perform partition checking on packets being forwarded through the switch by implementing a P_KeyTable at each of its external ports:
|
InboundEnforcementCap | 1 | Read-only. If the PartitionEnforcementCap attribute element is non-zero, each switch external port implements a P_KeyTable of the size specified. In this case, the InboundEnforcementCap attribute element has the following meaning:
|
OutboundEnforcementCap | 1 | Read-only. If the PartitionEnforcementCap attribute element is non-zero, each switch external port implements a P_KeyTable of the size specified. In this case, the OutboundEnforcementCap attribute element has the following meaning:
|
FilterRawPacket InboundCap | 1 | Read-only. Indicates switch is capable of raw packet filtering on received packets.
|
FilterRawPacketOutboundCap | 1 | Read-only. Indicates switch is capable of raw enforcement filtering of outbound packets.
|
This attribute must be implemented on all CA ports, thereby permitting the SM to assign additional GID addresses to the CA port. For additional information on this attribute, refer to “Port's GUID(s) Assignment” on page 156 and “Multiple GUID Assignment Permits Router Multipathing” on page 157 (i.e., the EUI-64). The GUIDInfo attribute is treated as a table. Entry 0 contains a copy of the hardwired, read-only NodeInfo.PortGUID assigned by the manufacturer. The GUIDs stored in entries 1 through n are assigned by the SM and must be locally scoped (i.e., the Universal/Local bit must be in the Local state; see “Port's Default GUID Is Hardwired” on page 156).
The GUIDInfo attribute is a table whose length is defined by the PortInfo.GUIDCap attribute element. The SM programs the table as a series of blocks of eight entries each, using a SubnSet(GUIDInfo) with the attribute modifier specifying the target table block (a value between 0 and 31d) and the SMP MAD's data field containing eight 64-bit GUIDs (a total of 64 bytes) to be written to that block.
The PortInfo attribute must be implemented on all ports of CAs, routers, and switches (external ports as well as the management port). The Master SM accesses the PortInfo attribute by sending a SubnGet(P_KeyTable) or SubnSet(P_KeyTable) SMP MAD to the port. The MAD contains the following information (Refer to Table 28-5 on page 788):
Class = Subn.
Method = Get or Set.
AttributeID = PortInfo.
On a write, the Data field contains the updated information to be written to the attribute. On a read, the contents of the attribute is returned in the response MAD's Data field.
AttributeModifier. The 32-bit Attribute Modifier selects which device port's PortInfo attribute is to be accessed:
- On a CA and a router:
- If the modifier = 0, the PortInfo attribute of the receiving port is accessed (and it can either be read or written).
- If the modifier = the port number of the receiving port, the PortInfo attribute of the receiving port is accessed (and it can either be read or written).
- If the modifier = a port number other than that of the receiving port, the PortInfo attribute of the port identified by the modifier is accessed. However, the attribute can only be read, not written. In addition, before permitting the access, the packet's M_Key is first checked against the PortInfo.M_Key of both the receiving port and the target port.
- On a switch:
- If the modifier = 0, the PortInfo attribute of the switch management port is accessed.
- If the modifier ≠ 0, the PortInfo attribute of the external switch port indicated by the modifier value is accessed.
Table 29-5 on page 825 provides a description of each element of the PortInfo attribute.
Element | Length (in bits) | Description and Implementation Requirement |
---|---|---|
M_Key | 64 |
|
GidPrefix | 64 | |
LID | 16 |
|
MasterSMLID | 16 | |
CapabilityMask | 32 |
|
DiagCode | 16 |
|
M_KeyLeasePeriod | 16 |
|
LocalPortNum | 8 | Read-Only. The number of the device port that received this SMP. |
LinkWidthEnabled | 8 | Read/Write. Enabled link width, indicated as follows:
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
LinkWidthSupported | 8 | Read-only. Indicates the number of link lanes this port implements:
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
LinkWidthActive | 8 | Read-only. Currently active link width, indicated as follows:
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
LinkSpeedSupported | 4 | Read-only. Supported link speed, indicated as follows:
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
PortState | 4 | Read/Write. On a read, indicates the current state of the port's Link Layer. A write to this element changes the Link Layer's state:
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
PortPhysicalState | 4 | Read/Write. On a read, returns the current state of the port's Physical Layer Link Training state machine. On a write, changes the state of the state machine:
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
LinkDownDefaultState | 4 | Read/Write. 0: No state change
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
M_KeyProtectBits | 2 | Read/Write. See “Management Key (M_Key)” on page 324.
Requirement: must be implemented on all CA and router ports and the switch management port. |
Reserved | 3 | Reserved, must be zero. |
LMC | 3 | Read/Write. LID Mask Control. Used to assign a LID address range to the port (starting at its assigned base LID address). For more information, see “Assigning LID Address Range to Port” on page 137.
Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports. |
LinkSpeedActive | 4 | Read-only. Currently active link speed, indicated as follows:
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
LinkSpeedEnabled | 4 | Read/Write. Used by the SM to select the link's transmission speed (can also be read):
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
Neighbor MTU | 4 | Read/Write. On a write, sets the PMTU size (see “Maximum Data Payload Size” on page 42, used by this port's transmit buffers. Any packet with a data payload size larger than the selected value is discarded:
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
MasterSMSL | 4 | Read/Write. This SL must be inserted in the LRH:SL field of all SMP packets transmitted to the Master SM by this port [e.g., Trap(Notice) packets.]
Requirement: must be implemented on all CA and router ports and the switch management port. |
VLCap | 4 | Read-only. Indicates the number of data VLs supported in this port's Link Layer:
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
Reserved | 4 | Reserved. Returns zeros when read. |
VLHighLimit | 8 | Read/Write. Used to set the total amount of packet data that can be transmitted from the high-priority data VLs before the Link Layer's data VL logic must switch to servicing the next entry in the Low-Priority VL Arbitration Table. See “Detailed Description of VL Arbitration” on page 628 for more information.
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
VLArbitrationHighCap | 8 | Read-only. Indicates the actual size of the data VL High-Priority arbitration table.
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
VLArbitrationLowCap | 8 | Read-only. Indicates the actual size of the data VL Low-Priority arbitration table.
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
Reserved | 4 | Reserved, shall be zero. |
MTUCap | 4 | Read-only. Maximum MTU supported by this port.
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
VLStallCount | 3 | Read/Write. Specifies the number of sequential packets that, when dropped, causes the port to enter the VLStalled state. For more information, refer to the description of the SwitchInfo.LifeTimeValue in Table 29-4 on page 819.
Requirement: Must be implemented on all external switch ports and not on the switch management port. |
HOQLife | 5 | Read/Write. Sets the time a packet can live at the head of a VL transmit buffer. For more information, refer to the description of the SwitchInfo.LifeTimeValue in Table 29-4 on page 819.
Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports. |
OperationalVLs | 4 | Read/Write. Used to set the number of data VLs the port's Link Layer is permitted to use (so it matches the number of data VLs supported by its neighbor port at the other end of the link):
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
PartitionEnforcementInbound | 1 | Read/Write.
Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports. |
PartitionEnforcementOutbound | 1 | Read/Write.
Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports. |
FilterRawPacketInbound | 1 | Read/Write. See the description of SwitchInfo.FilterRawPacketInboundCap in Table 29-4 on page 819.
Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports. |
FilterRawPacketOutbound | 1 | Read/Write. See the description of SwitchInfo.FilterRawPacketOutboundCap in Table 29-4 on page 819.
Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports. |
M_KeyViolations | 16 | Read/Write. Counts the number of SMP packets received at this port since power-on or reset that have had an invalid M_Key.
Requirement: must be implemented on all CA and router ports and the switch management port. |
LocalPhyErrors | 4 | Read/Write. Threshold value. When the count of soft link errors exceeds this threshold, a local link integrity error is reported as described in “Physical Layer Error Handling” on page 752.
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
P_KeyViolations | 16 | Read/Write. Counts the number of packets that have been received at this port since power-on or reset that have had invalid P_Keys.
Requirement: must be implemented on all CA and router ports and the switch management port. |
Q_KeyViolations | 16 | Read/Write. Counts the number of UD and RD packets that have been received at this port since power-on or reset that have had invalid Q_Keys.
Requirement: must be implemented on all CA and router ports and the switch management port. |
GUIDCap | 8 | Read-only. Indicates the size of (i.e., the number of entries in) the GUIDInfo attribute. See “GUIDInfo Attribute” on page 823 for more information.
Requirement: must be implemented on all CA and router ports and the switch management port. |
Reserved | 3 | Reserved, shall be zero. |
SubnetTimeOut | 5 | Read/Write. Specifies the SM's expectation of the maximum expected delay (depending on the configuration of the switches) for a packet to reach any other port in the subnet. Used to determine the maximum rate at which SubnTrap(Notice)
SMP MADs can be sent from this port. The time is calculated as
See “Determining Whether a GSA Is Implemented” on page 172 and “Software Times Return of MAD Response” on page 781 for more information. Requirement: must be implemented on all CA and router ports and the switch management port. |
Reserved | 3 | Reserved, shall be zero. |
RespTimeValue | 5 | Read-only. Specifies the expected maximum time between the port reception of an SMP and the transmission of the associated response. The time is calculated as
See “Determining Whether a GSA Is Implemented” on page 172 and “Software Times Return of MAD Response” on page 781 for more information. Requirement: must be implemented on all CA and router ports and the switch management port. |
OverrunErrors | 4 | Read/Write. Threshold value. When the count of Link Layer data VL buffer overruns over consecutive Flow Control update periods exceeds this threshold, an excessive buffer overrun error is detected.
Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port). |
A complete description of partitions can be found in “Partition Key (P_Key)” on page 319. This section describes:
How the PortInfo.P_KeyTable attribute is programmed.
Inbound and outbound P_Key checking on switches and routers
Refer to Figure 29-1 on page 838. The maximum possible size of each port's P_KeyTable attribute is 32K entries. The actual size of the P_KeyTable attribute implemented for each port on a CA or router and for the switch management port is found in the NodeInfo.PartitionCap attribute element. If a switch implements the optional table at each external port, the table size is found in the SwitchInfo.PartitionEnforcementCap attribute element. When programming the table, it is treated as if it is divided into 1024 blocks of 32 entries each (i.e., one 16-bit P_Key per entry).
The Master SM programs the P_KeyTable attribute by sending a SubnSet(P_KeyTable) SMP MAD to the port whose P_Keys are to be assigned. The MAD contains the following (Refer to Table 28-5 on page 788):
Class = Subn.
Method = Set.
AttributeID = P_KeyTable.
Data Field is 64 bytes in size and contains 32, 16-bit P_Keys to be written to the table block selected by the Attribute Modifier.
AttributeModifier. The 32-bit attribute modifier is formatted as follows:
For a CA or router, the upper 16 bits are ignored and the operation is performed on the port that received the SMP.
A switch always implements a P_KeyTable attribute for checking the P_Key in inbound GMPs. Optionally, the switch designer may also choose to implement a P_KeyTable attribute at each external port as well.
The following five attribute elements are involved in this optional feature:
SwitchInfo.PartitionEnforcementCap. 16-bit read-only value indicates the size of the P_KeyTable attribute implemented at each of the switch's external ports:
- 0000h: The table is not implemented at each external port and P_Key checking is therefore not done as a packet passes through the switch.
- 0001h–FFFFh: A P_KeyTable attribute is implemented for each external switch port and this value specifies the size of each external port's table. The same table is checked for inbound and outbound packets passing through the external port.
It should be noted that, at a switch external port, the same P_KeyTable is checked for packets received by, and to be transmitted by, the port.
- Assuming that inbound checking is supported and enabled, when a packet is received, its BTH:P_Key is checked against all of the entries in the receiving port's table. If it matches any of them, the packet is accepted, a forwarding table lookup is performed using the packet's LRH:DLID, and the packet is passed to the selected exit port's Link Layer for transmission. If the packet's key doesn't match any in the table, the packet is silently dropped and the PortInfo.P_KeyViolations counter is incremented.
- Assuming that outbound checking is supported and enabled, when a packet is internally forwarded to the selected exit port's Link Layer, its BTH:P_Key is checked against all of the entries in the exit port's table. If it matches any of them, the packet is accepted for transmission. If the packet's key doesn't match any in the table, the packet is silently dropped.
This attribute must be implemented on all ports of CAs, routers, and switches that implement more than one data VL. Refer to “Detailed Description of VL Arbitration” on page 628 and “One SLtoVLMappingTable Per Port” on page 667 for a detailed description of how the SLtoVLMappingTable attribute is used.
The Master SM programs (or reads) a port's SLtoVLMappingTable attribute (see Table 25-2 on page 623) by sending an SMP to the port with following characteristics (see Table 28-5 on page 788):
Class = Subn.
Method = Set or Get.
AttributeID = SLtoVLMappingTable.
On a write, the data field contains the data to be written to the attribute. On a read, the data field is not used.
AttributeModifier:
- If the recipient is a CA or a router port, the modifier is ignored and the destination port's table is accessed.
- For a switch, the 32-bit attribute specifies the table associated with a specific input port/output port combination:
- Bits 15:8 specify the input port (0 through N, where N selects the physical port or 0 to indicate that the input port is the management port).
- Bits 7:0 specify the output port (1 through N, where N selects the physical port).
- Bits 31:16 must be zero.
On a read, the attribute contents are returned in the data field of the resulting response packet.
The VLArbitration attribute must be implemented on all ports of CAs, routers, and switches that implement more than one data VL. Refer to “Detailed Description of VL Arbitration” on page 628 for a detailed description of how it is used.
The Master SM programs (or reads) a port's VLArbitration attribute (see Figure 25-7 on page 631 and Figure 25-8 on page 632) by sending an SMP to the port (if the destination device is a switch, the packet is sent to its management port) with the following characteristics (see Table 28-5 on page 788):
Class = Subn.
Method = Set or Get.
AttributeID = VLArbitration.
Data field. On a write, the data field contains the data to be written to the selected portion of the attribute (upper- or lower-half of the High- or Low-Priority Table). On a read, the data field is not used.
AttributeModifier. The modifier is divided in two halves.
- Bits 31:16 specify the target table (High or Low) and which half of the table:
- 0000h = Reserved.
- 0001h = lower 32 entries of the Low-Priority VL Arbitration Table.
- 0002h = upper 32 entries of the Low-Priority VL Arbitration Table.
- 0003h = lower 32 entries of the High-Priority VL Arbitration Table.
- 0004h = upper 32 entries of the High-Priority VL Arbitration Table.
- 0005h–FFFFh = Reserved.
- Bits 15:0 are treated as follows:
- If the destination device is a CA or router port, the destination port's attribute is accessed and bits 15:0 of the modifier are ignored.
- If the destination device is a switch management port, modifier bits 7:0 identify the target external port and bits 15:8 are reserved and must be set to 0.
On a read, the contents of the attribute is returned in the data field of the resulting response packet.
This attribute (see Table 29-6 on this page) is only implemented on a port with a SM residing behind it. See the description in Table 29-1 on page 810. Additional detail can be found in “Multiple SMs” on page 851.
The Master SM accesses the SMInfo attribute by sending a SubnGet(SMInfo) or a SubnSet(SMInfo) SMP MAD to the destination CA or router port, or a switch management port. The MAD contains the following (Refer to Table 28-5 on page 788):
Class = Subn.
Method = Get or Set.
AttributeID = SMInfo.
On a write, the data field contains the data to be written to the attribute. On a read, the data field's contents is not used.
AttributeModifier. The modifier is not used on a read. On a write, this is a Control Packet sent by one SM to another SM and the modifier identifies the type of control packet:
- 1 = HANDOVER: Used to initiate the process of handing over Mastership to a higher-priority Standby or Master SM.
- 2 = ACKNOWLEDGE: Used to acknowledge the handover.
- 3 = DISABLE: Used to change a Standby SM to the NotActive state.
- 4 = STANDBY: Used to return a NotActive SM to the Standby state.
- 5 = DISCOVER: Causes a Standby SM to go to the Discovering state.
On a read, the contents of the attribute are returned in the response MAD's data field.
Element | Length (in bits) | Description |
---|---|---|
GUID | 64 | Read-only. PortGUID (see PortGUID in Table 29-3 on page 816) of the port where the SM resides. |
SM_Key | 64 | Read-only. Key of this SM. On a read, returns zero unless the requesting SM is proven to be the master, or the requester is otherwise authenticated. |
ActCount | 32 | Read-only. Counter that increments each time the SM issues an SMP or performs other management activities. Used as a “heartbeat” indicator by standby SMs. |
Priority | 4 | Read-only. Indicates the priority of this SM.
|
SMState | 4 | Read-only. Indicating the current state of the SM:
|
The read-only PortInfo.DiagCode attribute element (see Figure 29-2 on page 844) must be implemented on all ports of a CA and router, and on the switch management port. The SM reads it by issuing an SMP with the characteristics described in “PortInfo Attribute” on page 824. The contents of the port's PortInfo attribute are returned in the resulting response MAD's data field.
If DiagCode is zero, the port is fully operational. If it returns a non-zero value, it is interpreted as follows:
Bits 3:0 of the DiagCode attribute element represents a universal error code applicable to all ports.
If bits 3:0 are non-zero, it is interpreted as follows:
- 1h = Port is still performing its self-test.
- 2h = Port is initializing. The specification doesn't explain this, but it is the author's opinion that the port is not yet fully operational (i.e., it is still undergoing link training).
- 3h = Port had a soft error but is still operational. In this case, additional vendor-specific error information may be provided.
- 4h = Port experienced a hard failure and is inoperative. In this case, additional vendor-specific error information may be provided.
If universal error code 3h or 4h is returned in bits 3:0, there may be additional vendor-specific error information available:
- If bit 15 = 0, a vendor-specific error code is provided in bits 14:4.
- If bit 15 = 1, this indicates that additional vendor-specific error information is available by reading the device's VendorDiag attribute (see Figure 29-3 on page 845). To obtain the additional information, the following actions are taken:
- The SM performs a SubnGet(VendorDiag) from the same port, setting the AttributeModifier = the value in bits 14:4 returned in the PortInfo.DiagCode.
- The port returns up to 62 bytes of vendor-specific error information in the VendorDiag.DiagData element.
- If the VendorDiag.NextIndex element is non-zero, the SM performs another read of the port's VendorDiag attribute supplying the NextIndex value as the modifier. This returns an additional 62 bytes of vendor-specific error information.
- The SM continues reading from the VendorDiag attribute until it returns a NextIndex value of zero, indicating that this is the final 62-byte block of error information.