SM Attributes

General

Table 29-1 on this page defines all of the device attributes that are managed/accessed by the SM through a device's SMA.

Table 29-1. SM Attributes
NameAttribute IDModifierDescription and Implementation Requirement
Notice0002h00000000h
  • Information regarding the associated event. See Table 28-9 on page 798 for a description of its content.

  • Requirement: SM must support either:

    - Receipt of Trap,s or

    - SubnGet(Notice) & SubnSet(Notice).

NodeDescription 0010h00000000h
  • 512 bits. Read-only. UTF-8 encoded text string describing device.

  • Requirement: All ports on a CA or router must implement and must return same device description. Switch port 0 also must support it.

NodeInfo0011h00000000h
  • Read-only. General information about the device. See “NodeInfo Attribute” on page 816 for a description of its content.

  • Requirement: Must be implemented by all ports on a CA or router and on switch port 0.

Also see Table 29-3 on page 816.
SwitchInfo0012h00000000h
  • Information about the Switch. See “SwitchInfo Attribute” on page 818 for a description of its content.

  • Requirement: Only required on switch port 0.

GUIDInfo0014hTable block selector
VLArbitration0018hHigh/Low table half selector. For a switch, the port selector.
  • SM programs this table to prioritize a port's data VL transmit buffers. See “Detailed Description of VL Arbitration” on page 628 for usage and “VLArbitration Attribute” on page 841 for programming.

  • Requirement: Must be implemented on all ports of CAs, routers, and switches that implement more than one data VL.

PortInfo0015hPort selector (see Description)
  • Information about the port. See “PortInfo Attribute” on page 824 for a description of its content.

  • Requirement: All ports on CAs, routers, and switches must support it.

  • Modifier usage for CAs and routers:

    - 0 = operation is performed on the port that received the SMP.

    - Otherwise, if ≠ 0 and ≠ port number where the SMP is received, the PortInfo attribute is read-only and the M_Key is checked for both the port where the SMP was received and the port selected by the Modifier.

  • Modifier usage for for switches:

    - 0 selects the management port.

    - Otherwise, if ≠ 0, a physical port is selected.

P_KeyTable0016hTable block selector and, for a switch, port selector.
  • Holds the partition keys associated with a port. See “Partition Key (P_Key)” on page 319 for a description of its usage and “P_KeyTable Attribute” on page 837 for programming and inbound and outbound P_Key checking on switches and routers.

  • Requirement: All ports on a CA or router and Switch port 0 must support it. In addition to switch port 0, a switch may optionally implement a P_KeyTable attribute for each port other than port 0.

SLtoVLMappingTable0017h
  • NA for CA or router.

  • For switch usage, see description.

  • Service Level to Virtual Lane mapping table. See “QoS within the Subnet: SL and VLs” on page 617 for a description of its usage and “SLtoVLMapping Attribute” on page 840 for programming.

  • Requirement: Must be implemented on all ports of CAs, routers, and switches that implement more than one data VL.

  • For a switch, Modifier selects the input port/output port combination this table applies to:

    - Modifier bits [15:8] specify input port (1 to n), where n selects port or 0 indicates input port is the management port.

    - Modifier bits [7:0] specify output port (1 to n), where n selects n port.

    - Modifier bits [31:16] must be zero.

LinearForwardingTable0019hLID block selector
  • Switch implements the LinearForwardingTable or RandomForwardingTable attribute (one or the other, not both) to handle forwarding of packets with unicast DLID addresses. See “Linear Forwarding Table (LFT)” on page 669 for usage and programming.

  • Requirement: Described in the previous paragraph.

RandomForwardingTable001AhLID block selector
  • Switch must implement either the LinearForwardingTable or RandomForwardingTable attribute (one or the other, not both) to handle forwarding of packets with unicast DLID addresses. See “Random Forwarding Table (RFT)” on page 671 for usage and programming.

  • Requirement: Described in the previous paragraph.

MulticastForwardingTable001BhLID block selector
  • Switch may optionally implement this attribute to handle the forwarding of packets with multicast DLID addresses. See “Switch Multicast Packet Forwarding” on page 675 for usage and programming.

  • Requirement: Described in the previous paragraph.

VendorDiag0030h00000000h –0000FFFFh
  • Read-only. Vendor-Specific Diagnostic attribute. Used in conjunction with a port's PortInfo.DiagCode attribute element. For a detailed description of its usage, refer to “VendorDiag and PortInfo.DiagCode Attributes” on page 843.

  • Requirement: It must be implemented on all ports of CAs and routers, and on the switch management port.

LEDInfo0031h00000000h
  • Provides ability to turn an optional, vendor-specific LED on or off, or to obtain the LED's current state.

  • Requirement: only implemented on a port if the corresponding bit is set in the port's PortInfo.CababilityMask attribute element.

See Table 29-2 on page 815.
SMInfo0020hControl packet type: 00000001h-00000005h
  • On a read, returns SM's port GUID, SM_Key, ActCount, Priority, and SMState.

  • On a write by another SM, the modifier value indicates the Control Packet type:

    - 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.

  • Requirement: Only implemented on a port with a SM residing behind it. This could be any port on a CA or router, or the switch management port.

For more information, refer to “Multiple SMs” on page 851 and “SMInfo Attribute” on page 842.
 FF00h–FFFFh00000000h–0000FFFFhRange reserved for Vendor-specific SM attributes.

Table 29-2. LEDInfo Attribute Elements
NameLength (in Bits)Description
LedMask1Read/Write. Set to 1 for LED on, and 0 for LED off. The response packet indicates the actual LED state.
Reserved31Reserved.

NodeInfo Attribute

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):

  • Class = Subn.

  • Method = Get.

  • AttributeID = NodeInfo.

  • AttributeModifier. Must contain all zeros.

The contents of the attribute are returned in the response MAD's data field.

Table 29-3. NodeInfo Attribute Elements (Read-Only)
ElementLength (in Bits)Description
BaseVersion8Indicates 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.
ClassVersion8Indicates 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.
NodeType8Device type:
  • 0 = Reserved.

  • 1 = CA.

  • 2 = Switch.

  • 3 = Router.

  • 4 through 255 = Reserved.

This value must be identical no matter which port of the device the NodeInfo attribute is read from.
NumPorts8Number of physical ports on the device. This value must be identical no matter which port of the device the NodeInfo attribute is read from.
Reserved64Reserved and must return zero when read.
NodeGUID64GUID 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.
PortGUID64Hardwired, 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.
PartitionCap16Indicates 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.
DeviceID16Device ID assigned by the device manufacturer. This value must be identical no matter which port of the device the NodeInfo attribute is read from.
Revision32Device revision assigned by the manufacturer. This value must be identical no matter which port of the device the NodeInfo attribute is read from.
LocalPortNum8The number of the device port that received this SMP.
VendorID24The 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.

SwitchInfo Attribute

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.

  • AttributeModifier. Must contain all zeros.

On a read, the contents of the attribute are returned in the response MAD's data field.

Table 29-4. SwitchInfo Attribute
ElementLength (in bits)Description
LinearFDBCap16Read-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.
RandomFDBCap16Read-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.
MulticastFDBCap16Read-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.
LinearFDBTop16Read-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.
DefaultPort8Read-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.
DefaultMulticastPrimaryPort8Read-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:
  • The switch does not implement the Multicast Forwarding Table.

  • The switch implements the Multicast Forwarding Table, but the packet's multicast DLID is outside the range of the table.

  • The switch implements the Multicast Forwarding Table, but the entry selected by the DLID address contains zero.

All multicast packets received on this port are forwarded through the DefaultMulticastNotPrimaryPort if any of the following are true:

  • The switch does not implement the Multicast Forwarding Table.

  • The switch implements the Multicast Forwarding Table, but the packet's multicast DLID is outside the range of the table.

  • The switch implements the Multicast Forwarding Table, but the entry selected by the packet's DLID contains zero.

If either the default primary or the default not primary port is set to a non-existent port, multicast packets that would otherwise be forwarded to the corresponding port are silently discarded.
DefaultMulticastNotPrimaryPort8Read-Write. See the description of the DefaultMulticast PrimaryPort in this table.
PortStateChange1Read-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.
LifeTimeValue5Read-Write. Sets the time a packet can live in the switch. Transmitter's packet discard is based on, among other things, two time values:
  • Switch Lifetime Limit (SLL) and

  • Head of Queue Lifetime Limit (HLL).

  • LV = SwitchInfo.LifeTimeValue attribute element and SLL is calculated as follows:

  • If LV is between 0 and 19, SLL = 4.096us X 2LV +5%/ –55%.

  • If LV > 19, then SLL is to be interpreted as infinite.

HL = PortInfo.HOQLife attribute element and HLL is calculated as follows:

  • If HL is between 0 and 19, HLL = 4.096us X 2HL +5%/ –55%.

  • If HL > 19, then HLL is to be interpreted as infinite.

A packet with any of the these conditions is discarded:

  • Packet at the head of VL (i.e., packet to be transmitted next) and has not begun transmission within HLL.

  • Packet queued to a VL in the VL stalled state. If PortInfo.VLStallCount sequential packets are discarded from a VL due to exceeding HLL requirement above, VL enters VL stalled state. VL leaves VL stalled state 8 X HLL after entering it.

  • Packet size (LRH:PktLen) exceeds MTU supported by neighbor device as indicated by PortInfo.NeighborMTU.

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.
Reserved2Reserved. Must return zero when read.
LIDsPerPort16Read-only. See “Minimalist Approach” on page 672.
PartitionEnforcementCap16Read-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:
  • 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. Also, see the next two entries in this table. The same table is checked for inbound and outbound packets passing through the external port.

InboundEnforcementCap1Read-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:
  • 0 = Switch isn't capable of partition enforcement on received packets.

  • 1 = Switch is capable of partition enforcement on received packets. In this case, inbound P_Key verification is enabled/disabled for each port individually via the PortInfo.PartitionEnforcementInbound bit.

OutboundEnforcementCap1Read-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:
  • 0 = Switch isn't capable of partition enforcement on outbound packets.

  • 1 = Switch is capable of partition enforcement on outbound packets. In this case, outbound P_Key verification is enabled/disabled for each port individually via the PortInfo.PartitionEnforcementOutbound bit.

FilterRawPacket InboundCap1Read-only. Indicates switch is capable of raw packet filtering on received packets.
  • 0 = The switch's external ports are not capable of discarding Raw IPv6 or Raw EtherType packets upon receipt.

  • 1 = The switch's external ports are capable of discarding Raw IPv6 or Raw EtherType packets upon receipt. In this case, the PortInfo.FilterRawPacketInbound bit can be used to enable/disable this capability.

FilterRawPacketOutboundCap1Read-only. Indicates switch is capable of raw enforcement filtering of outbound packets.
  • 0 = The switch's external ports are not capable of discarding Raw IPv6 or Raw EtherType packets before transmission by the outbound port.

  • 1 = The switch's external ports are capable of discarding Raw IPv6 or Raw EtherType packets before transmission by the outbound port. In this case, the PortInfo.FilterRawPacketOutbound bit can be used to enable/disable this capability.


GUIDInfo Attribute

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.

PortInfo Attribute

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.

Table 29-5. PortInfo Attribute Elements
ElementLength (in bits)Description and Implementation Requirement
M_Key64
  • Read/Write. The M_Key assigned to the port by the SM. For more information, refer to “Management Key (M_Key)” on page 324.

  • Requirement: must be implemented on all CA and router ports and the switch management port.

GidPrefix64
  • Read/Write. GID prefix (i.e., subnet ID). The Master SM assigns the same subnet ID to all ports in the subnet.

  • Requirement: must be implemented on all CA and router ports and the switch management port.

LID16
  • Read/Write. The base LID address assigned to the port by the SM. Also see the description of PortInfo.LMC in this table. For additional information, refer to “Assigning Port's Base LID Address” on page 137 and “Assigning LID Address Range to Port” on page 137.

  • Requirement: must be implemented on all CA and router ports and the switch management port.

MasterSMLID16
  • Read/Write. The LID address of the port behind which the Master SM resides. Used by the port when the device's SMA must send an event notification SubnTrap(Notice) to the SM.

  • Requirement: must be implemented on all CA and router ports and the switch management port.

CapabilityMask32
  • Read-Only. Indicates the capabilities of this port. For a detailed explanation, refer to Table 28-8 on page 797.

  • Requirement: must be implemented on all CA and router ports and the switch management port.

DiagCode16
M_KeyLeasePeriod16
LocalPortNum8Read-Only. The number of the device port that received this SMP.
LinkWidthEnabled8Read/Write. Enabled link width, indicated as follows:
  • 0: No State Change (NOP)

  • 1: 1x

  • 2: 4x

  • 3: 1x or 4x

  • 4–7: Reserved.

  • 8: 12x

  • 9: 1x or 12x

  • 10: 4x or 12x

  • 11: 1x, 4x or 12x

  • 12–254: Reserved (Ignored).

  • 255: Set to LinkWidthSupported value.

Only legal transitions are valid when writing to this field. LinkWidthEnabled, LinkWidthSupported, and LinkWidthActive are all related as follows:
  • LinkWidthSupported indicates the number of link lanes this port implements.

  • LinkWidthEnabled indicates which link lanes the port has been enabled to use during link training with its neighbor port.

  • LinkWidthActive indicates which link lanes were successfully trained and are operational between the local and the remote ports.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

LinkWidthSupported8Read-only. Indicates the number of link lanes this port implements:
  • 0: Reserved.

  • 1: 1x.

  • 2: Reserved.

  • 3: 1x or 4x

  • 4–10: Reserved.

  • 11: 1x, 4x or 12x

  • 12–255: Reserved

Also see the description of LinkWidthEnabled in this table.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

LinkWidthActive8Read-only. Currently active link width, indicated as follows:
  • 0: Reserved.

  • 1: 1x

  • 2: 4x

  • 3–7: Reserved.

  • 8: 12x

  • 9–255: Reserved

Also see the description of LinkWidthEnabled in this table.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

LinkSpeedSupported4Read-only. Supported link speed, indicated as follows:
  • 0: Reserved.

  • 1: 2.5Gb/s is the only speed currently supported.

  • 2–15: Reserved

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

PortState4Read/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:
  • 0: No meaning when read; no effect when written.

  • 1: Down (includes failed links)

  • 2: Initialize

  • 3: Armed

  • 4: Active

  • 5–15: Reserved

When writing this field, only legal transitions are valid. For a detailed description, refer to “Link State Machine” on page 602.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

PortPhysicalState4Read/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:
  • 0: No meaning when read; no effect when written.

  • 1: Sleep

  • 2: Polling

  • 3: Disabled

  • 4: PortConfigurationTraining

  • 5: LinkUp

  • 6: LinkErrorRecovery

  • 7–15: Reserved

When writing this field, only legal transitions are valid. See “Link Training” on page 732.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

LinkDownDefaultState4Read/Write. 0: No state change
  • 1: Sleep

  • 2: Polling

  • 3–15: Reserved

When writing this field, only legal transitions are valid. See “SM Can Specify Default Link Down State” on page 735.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

M_KeyProtectBits2Read/Write. See “Management Key (M_Key)” on page 324.

Requirement: must be implemented on all CA and router ports and the switch management port.

Reserved3Reserved, must be zero.
LMC3Read/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.

LinkSpeedActive4Read-only. Currently active link speed, indicated as follows:
  • 0: Reserved

  • 1: 2.5Gb/s is the only link speed currently supported.

  • 2–15: Reserved

Also see the description of LinkSpeedSupported in this table.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

LinkSpeedEnabled4Read/Write. Used by the SM to select the link's transmission speed (can also be read):
  • 0: no meaning on a read; no effect on a write.

  • 1: 2.5 Gb/s is the only link speed currently supported.

  • 2–14: Reserved

  • 15: Set to LinkSpeedSupported value

When writing this field, only legal transitions are valid. Also see the description of LinkSpeedSupported in this table.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

Neighbor MTU4Read/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:
  • 0: Reserved

  • 1: 256

  • 2: 512

  • 3: 1024

  • 4: 2048

  • 5: 4096

  • 6–15: Reserved

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

MasterSMSL4Read/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.

VLCap4Read-only. Indicates the number of data VLs supported in this port's Link Layer:
  • 0: Reserved

  • 1: VL0

  • 2: VL0, VL1

  • 3: VL0–VL3

  • 4: VL0–VL7

  • 5: VL0–VL14

  • 6–15: Reserved

For more information, refer to “Port's Link Layer May Support Multiple Buffer Pairs” on page 619.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

Reserved4Reserved. Returns zeros when read.
VLHighLimit8Read/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).

VLArbitrationHighCap8Read-only. Indicates the actual size of the data VL High-Priority arbitration table.
  • Must indicate a size of 1 to 64 entries if more than one data VL is supported on this port.

  • Must be 0 if only data VL0 is supported.

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).

VLArbitrationLowCap8Read-only. Indicates the actual size of the data VL Low-Priority arbitration table.
  • Must indicate a size of 1 to 64 entries if more than one data VL is supported on this port.

  • Must be 0 if only data VL0 is supported.

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).

Reserved4Reserved, shall be zero.
MTUCap4Read-only. Maximum MTU supported by this port.
  • 0: Reserved

  • 1: 256

  • 2: 512

  • 3: 1024

  • 4: 2048

  • 5: 4096

  • 6–15: Reserved

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

VLStallCount3Read/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.

HOQLife5Read/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.

OperationalVLs4Read/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):
  • 0: No meaning on a read; no effect on a write.

  • 1: VL0

  • 2: VL0, VL1

  • 3: VL0–VL3

  • 4: VL0–VL7

  • 5: VL0–VL14

  • 6–15: Reserved

Also see the description of VLCap in this table.

Requirement: must be implemented on all CA and router ports and on all switch external ports (not on the switch management port).

PartitionEnforcementInbound1Read/Write.
  • 1 = Enable P_Key checking on packets received on this port.

  • 0 = Disable P_Key checking on packets received on this port.

Also see the description of the NodeInfo.PartitionCap element in Table 29-3 on page 816.

Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports.

PartitionEnforcementOutbound1Read/Write.
  • 1 = Enable P_Key checking on packets to be transmitted from this port.

  • 0 = Disable P_Key checking on packets to be transmitted from this port.

Also see the description of the NodeInfo.PartitionCap element in Table 29-3 on page 816.

Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports.

FilterRawPacketInbound1Read/Write. See the description of SwitchInfo.FilterRawPacketInboundCap in Table 29-4 on page 819.
  • 1 = Enable the discard of raw packets arriving on this port.

  • 0 = Disable the discard of raw packets arriving on this port.

Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports.

FilterRawPacketOutbound1Read/Write. See the description of SwitchInfo.FilterRawPacketOutboundCap in Table 29-4 on page 819.
  • 1 = Enable the discard of raw packets before transmitting them from this port.

  • 0 = Disable the discard of raw packets before transmitting them from this port.

Requirement: must be implemented on all CA and router ports. Must be 0 for all switch ports.

M_KeyViolations16Read/Write. Counts the number of SMP packets received at this port since power-on or reset that have had an invalid M_Key.
  • Count clamps at all ones.

  • Must be set back to zero to reenable incrementing.

  • Setting to any value other than zero results in undefined behavior; however, it is recommended that any attempt to set the counter to a non-zero value results in it being left unchanged.

Requirement: must be implemented on all CA and router ports and the switch management port.

LocalPhyErrors4Read/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_KeyViolations16Read/Write. Counts the number of packets that have been received at this port since power-on or reset that have had invalid P_Keys.
  • Clamps at all ones.

  • Must be set back to zero to reenable incrementing.

  • Setting to any value other than zero results in undefined behavior; however, it is recommended that any attempt to set the counter to a non-zero value results in it being left unchanged.

See “Partition Key (P_Key)” on page 319 and “P_KeyTable Attribute” on page 837 for more information on P_Key checking.

Requirement: must be implemented on all CA and router ports and the switch management port.

Q_KeyViolations16Read/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.
  • Clamps at all ones.

  • Must be set back to zero to reenable incrementing.

  • Setting to any value other than zero results in undefined behavior; however, it is recommended that any attempt to set the counter to a non-zero value results in it being left unchanged.

See “Q_Key Check at Destination QP” on page 532 and “Failures Resulting in Return of the Invalid RD Request Nak” on page 473 for more information on Q_Key checking.

Requirement: must be implemented on all CA and router ports and the switch management port.

GUIDCap8Read-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.

Reserved3Reserved, shall be zero.
SubnetTimeOut5Read/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

4.096us X 2SubnetTimeOut.

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.

Reserved3Reserved, shall be zero.
RespTimeValue5Read-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

4.096us X 2RespTimeValue.

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.

OverrunErrors4Read/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).


P_KeyTable Attribute

Introduction

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

Programming the P_KeyTable Attribute

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).

Figure 29-1. P_KeyTable Attribute Programming


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:

    - Lower 16 bits = block select. Valid values are 0 through 1023 (further limited by the actual size of the table). Any attempt to write to blocks beyond the end of the table has no effect and a read returns zeros.

    - Upper 16 bits = switch port select. Only applies to a switch. 1 through 255 select an external switch port and zero selects the switch management port.

For a CA or router, the upper 16 bits are ignored and the operation is performed on the port that received the SMP.

Inbound and Outbound P_Key Checking
Optional Feature

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:

  1. 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.

  2. SwitchInfo.InboundEnforcementCap. 1-bit, 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:

    - 0 = Switch isn't capable of partition enforcement on received packets.

    - 1 = Switch is capable of partition enforcement on received packets. In this case, inbound P_Key verification is enabled/disabled for each port individually via the PortInfo.PartitionEnforcementInbound bit.

  3. SwitchInfo.OutboundEnforcementCap. 1-bit, 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:

    - 0 = Switch partition enforcement on outbound packets is disabled.

    - 1 = Switch partition enforcement on outbound packets is enabled. In this case, outbound P_Key verification is enabled/disabled for each port individually via the PortInfo.PartitionEnforcementOutbound bit.

  4. PortInfo.PartitionEnforcementInbound. 1-bit, Read/Write.

    - 1 = Enable P_Key checking on packets received on this port.

    - 0 = Disable P_Key checking on packets received on this port.

  5. PortInfo.PartitionEnforcementInbound. 1-bit, Read/Write.

    - 1 = Enable P_Key checking on packets to be transmitted from this port.

    - 0 = Disable P_Key checking on packets to be transmitted from this port.

How P_Key Checking Is Performed

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.

SLtoVLMapping Attribute

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.

VLArbitration Attribute

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.

SMInfo Attribute

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.

Table 29-6. SMInfo Attribute Elements
ElementLength (in bits)Description
GUID64Read-only. PortGUID (see PortGUID in Table 29-3 on page 816) of the port where the SM resides.
SM_Key64Read-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.
ActCount32Read-only. Counter that increments each time the SM issues an SMP or performs other management activities. Used as a “heartbeat” indicator by standby SMs.
Priority4Read-only. Indicates the priority of this SM.
  • 0h = lowest priority.

  • Fh = highest priority.

Default value is zero. How the priority value is assigned to the SM is outside the scope of the specification. For more information, refer to “Subnet Manager Key (SM_Key)” on page 330 and “Multiple Master SMs” on page 856.
SMState4Read-only. Indicating the current state of the SM:
  • 0: Not Active

  • 1: Discovering

  • 2: Standby

  • 3: Master

  • 4–15: Reserved


VendorDiag and PortInfo.DiagCode Attributes

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.

Figure 29-2. PortInfo.DiagCode Attribute


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.

    Figure 29-3. VendorDiag Attribute

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset