DM Attributes

General

Table 37-3 on page 1121 lists the DM class attributes. Also see Table 37-4 on page 1125.

Table 37-3. Device Management Attributes
AttributeIDAttribute ModifierDescription
ClassPortInfo0001h00000000hSee Table 28-7 on page 794. There are no class-specific CapabilityMask bits defined.
Notice0002h00000000h–FFFFFFFFDM-related event notifications are logged in the Notice attribute and, if traps have been enabled by the DM, an event notification is automatically sent to the DM when a DM-related event occurs within the IOU. The event is delivered to the DM in a DevMgtTrap(Notice). See Table 28-9 on page 798 and “Notice Attribute” on page 1125.
IOUnitInfo0010h00000000hRead-only. List of all IOCs present in a given IOU. Each IOU may support up to FFh (255) controllers. See “IOUnitInfo Attribute” on page 1126.
IOControllerProfile0011h00000001h–000000FFhRead-only. IOC Profile Information (see “IOControllerProfile Attribute” on page 1127). AttributeModifier identifies the IOC.
DiagCode0024h00000001h–FFFFFFFFhVendor-specific diagnostic information for device (IOC) specified by AttributeModifier (same author's note as in description of PrepareToTest in this table). Results are reported in a format consistent with the 16-bit PortInfo.DiagCode. For a detailed description, refer to “VendorDiag and PortInfo.DiagCode Attributes” on page 843.
PrepareToTest0021h00000001h–FFFFFFFFhWhen written to, instructs device (IOC) specified by AttributeModifier to prepare for diagnostic test. When read, returns Response Status:
  • 0000h = Ready for diagnostic test.

  • 0100h = Invalid Attribute Modifier.

  • 0200h = Device not ready.

  • 0400h = Device not responding.

  • 0800h = Diagnostics not supported.

  • 1000h - 8000h = Reserved.

This attribute has no attribute elements.

Author's note: The specification states that the AttributeModifier selects the “device” to test and it shows valid values as those in the previous column. It is the author's opinion that “device” means IOC and the valid values would therefore be 00000001h through 000000FFh (not FFFFFFh).

The time required to complete this step is not predictable, as it may involve flushing data from cache memory, reinitializing SCSI ports, etc. The device indicates its readiness for test by signaling the IOU's DMA to send an Informational Trap to the DM.
DiagnosticTimeout0020h00000001h–FFFFFFFFhRead-only. Indicates maximum time (in ms) for completion of diagnostic test. Target device (i.e., IOC) is identified by the AttributeModifier. Tests not completing within this period may indicate a device failure.
TestDeviceOnce0022h00000001h–FFFFFFFFhWhen written to, instructs the device (IOC) specified by AttributeModifier (same author's note as in description of PrepareToTest in this table) to initiate a single diagnostic test and run it once. Vendor-unique attribute values may be defined to supply specific test instructions. A single test run is initiated by writing a non-zero value to the TestDeviceOnce attribute, with msb = 0. Once initiated, this vendor-defined test runs to completion. The time to completion is unpredictable. The DiagnosticTimeout attribute may be read in advance of test initiation, which indicates the maximum allowable period for completion. Results of the completed diagnostic test are obtained by reading the DiagCode attribute.
ServiceEntries0012h00010000h–00FFFFFFhRead-only. List of the supported services and their associated ServiceIDs. Each IOC has a table with at most 256 ServiceEntries. AttributeModifier is structured as follows:
  • Upper 16 bits identify the IOC.

  • Lower 16 bits specify range of up to 4 ServiceEntries to be retrieved:

    - Lower 8 bits specifies range start.

    - Upper 8 bits specifies range end.

Refer to “ServiceEntries Attribute” on page 1130.
Reserved0013h-001Fh00000000h–FFFFFFFFhReserved
Reserved0025h-FEFFh00000000h–FFFFFFFFhReserved.
Vendor-SpecificFF00h-FFFFh00000000h–FFFFFFFFhVendor-unique attribute values may be defined to supply specific test instructions.
TestDeviceLoop0023h00000000h–FFFFFFFFhWhen written to, instructs the device (IOC) specified by AttributeModifier (same author's note as in description of PrepareToTest in this table) to initiate a single diagnostic test and run it continuously in a loop. Vendor-unique attribute values may be defined to supply specific test instructions. This test mode can assist in detecting transient problems, and can be used to initiate endurance-related tests. The test is initiated by writing a non-zero value to the TestDevice attribute, with msb = 1. Results of the last completed diagnostic test are obtained by reading the DiagCode attribute.

Table 37-4. Method/Attribute Implementation Map
Method ==>DevMgtGet()DevMgtSet()DevMgtTrap()
Attribute
ClassPortInfoxx 
Noticexxx
IOUnitInfox  
IOControllerProfilex  
ServiceEntriesx  
DiagnosticTimeoutx  
PrepareToTestxx 
TestDeviceOnce x 
TestDeviceLoop x 
DiagCodex  

Notice Attribute

The Notice attribute is used to report DM-related events to the DM. The DM can either use the DevMgtGet(Notice) and DevMgtSet(Notice) operations to access the DMA's Notices or can enable the automatic generation of DM-related traps wherein the notice is delivered to the DM in a DevMgtTrap(Notice) MAD.

The Notice attribute has the format shown in Table 28-9 on page 798. Assuming that traps have been enabled by the DM, there is one optional generic DM trap defined. It is trap number 514 and takes the form:

  • Name: ReadyToTest.

  • Trap Type: Informational Trap.

  • Trap number: 514.

  • Device <DEVICE> readiness is <STATUS>, where status is the same as would have been returned by a DevMgtGet(PrepareToTest) with the device number (IOC) as the AttributeModifier.

DM Traps use the following layout for the Notice.DataDetails attribute element:

  • Status field. 16-bits. Readiness status.

  • Device field. 32-bits. Device number.

  • Padding field. 384-bits. Ignored on read. Content unspecified.

See “Traps” on page 790 for a detailed discussion of traps.

IOUnitInfo Attribute

An IOU has one IOUnitInfo attribute that describes its characteristics (see Table 37-5 on this page). By reading this attribute, the DM can determine:

  • Whether any IOCs have been added or removed from the IOU since the last time the attribute was read.

  • The number of slots in the IOU into which IOCs can be installed.

  • Whether or not the IOU incorporates an Option (aka Device) ROM.

  • A list of which IOC slots are currently occupied.

Table 37-5. IOUnitInfo Attribute Structure
ElementAccessLength (in bits)Description
Change_IDRO16This counter is Incremented whenever any change is made to the IOUnitInfo.ControllerList. When the DM sees that the value has been incremented since the last time it was read, this indicates that one or more IOCs have been removed and/or added since the last time this counter was read.
Max ControllersRO8Number of slots in ControllerList.
ReservedRO7Reserved for future use.
Option ROMRO1Indicates the presence (or absence) of an Option ROM.
  • 1 = Present.

  • 0 = Absent.

ControllerListRO1024A series of 256 fields, each four bits wide and representing an IOU slot into which an IOC can be installed. The possible values for each field are:
  • 0h = IOC not installed.

  • 1h = IOC present.

  • 2h–Eh = Reserved.

  • Fh = Slot does not exist.

The bit field/slot relationship is as follows:
  • Bits 7:4 of first byte represent slot 1.

  • Bits 3:0 represent slot 2.

  • Bits 7:4 of 2nd byte represent slot 3.

  • Bits 3:0 represent slot 4.

  • etc.


IOControllerProfile Attribute

The DM can tell how many IOCs are currently installed in an IOU and which IOC slots are currently occupied by reading the IOUnitInfo attribute (refer to the previous section). The IOControllerProfile for each installed IOC is accessible by performing a DevMgtGet(IOControllerProfile) and setting the AttributeModifier to the IOC slot number (1 of 256). The IOControllerProfile attribute has the format shown in Table 37-6 on this page.

Table 37-6. IOControllerProfile Attribute Structure
Element Access Length (in bits)Description
GUIDRO64An EUI-64 GUID used to uniquely identify the IOC. This could be the same one as the device (i.e., the IOU) or the Port GUID if there is only one IOC.
VendorIDRO24IO controller vendor ID (the upper 24 bits of the GUID is the vendor ID assigned by IEEE).
ReservedRO8Reserved for proper alignment.
DeviceIDRO32The device ID assigned by the vendor to identify the type of IOC. Can be used by an OS to select a device driver.
Device VersionRO16A number assigned by the vendor to identify the device version.
ReservedRO16Reserved for proper alignment.
Subsystem VendorIDRO24Vendor ID of the IOU enclosure in which the IOC resides (IEEE-assigned). If none, it is zero.
ReservedRO8Reserved for proper alignment.
SubsystemIDRO32A number identifying the subsystem where the IOC resides.
IO ClassRO16
  • 0000h–FFFEh = Reserved pending I/O class specification approval.

  • FFFFh = Vendor-specific.

IO SubclassRO16
  • 0000h–FFFEh = Reserved pending I/O subclass specification approval.

  • FFFFh = Vendor-specific.

Must be set to FFFFh if the IO Class attribute element is set to FFFFh.
ProtocolRO16
  • 0000h–FFFEh = Reserved pending I/O protocol specification approval.

  • FFFFh = Vendor-specific.

Must be set to FFFFh if the IO Class attribute element is set to FFFFh.
Protocol VersionRO16Protocol-specific.
Service ConnectionsRO16Number of service connections (i.e., QP communications channels to clients) that the controller can support.
Initiators SupportedRO16Number of initiators that this IOC can support. The author is not clear on what is meant by initiators in this context.
Send Message DepthRO16Maximum Depth of the Send Message Queue.
RDMA Read DepthRO16Maximum Depth of the per-channel RDMA Read Queue.
Send Message SizeRO32Maximum size of Send Messages in bytes.
RDMA Transfer SizeRO32Maximum size of outbound RDMA transfers initiated by the IOC in bytes.
Controller Operations Capability MaskRO8IOC's supported operation types. Bit = 1 indicates operation supported.
BitNameDescription
0STMessages can be sent to IOC.
1SFMessages can be sent from IOC.
2RTRDMA Reads can be sent to IOC.
3RFRDMA Reads can be sent from IOC.
4WTRDMA Writes can be sent to IOC.
5WFRDMA Writes can be sent from IOC.
6ATAtomic Operations can be sent to IOC.
7AFAtomic Operations can be sent from IOC.
Controller Services Capability MaskRO8IOC's supported service types. Bit = 1 indicates operation supported.
BitNameDescription
0CSConsole Services.
1SBWPStorage Boot Wire Protocol.
2NBWPNetwork Boot Wire Protocol.
[7:3] Reserved for future services.
Service EntriesRO8Number of entries in this IOC's ServiceEntries table (see “ServiceEntries Attribute” on this page).
ReservedRO72Reserved for future use.
ID StringRO512UTF-8 encoded string for identifying the controller to operator.

ServiceEntries Attribute

Each of the IOC's in an IOU provides a list of services it offers. The IOControllerProfile.ServiceEntries attribute element (see “IOControllerProfile Attribute” on page 1127) defines the number of entries in the IOC's list. Each ServiceEntry is comprised of:

  • A 40-byte text ServiceName field.

  • The 64-bit ServiceID that identifies the service provided.

Each entry is therefore 48 bytes in length, and the DM MAD data area is 192 bytes in size, thereby permitting a group of four service entries to be read from the IOC's service entries list in one DevMgtGet(ServiceEntries) operation.

When performing the DevMgtGet(ServiceEntries) operation, the 32-bit AttributeModifier is used as follows:

  • The upper 16 bits identify the IOC (valid values are 0001h through 00FFh).

  • The lower 16 bits specify a range of up to four ServiceEntries to be retrieved:

    - Lower 8 bits specifies the entry number of the first entry to be read.

    - Upper 8 bits specifies the entry number of the last entry to be read.

    - Note that the range may not encompass more than four entries.

Table 37-7 on this page shows the format of the up to four entries returned in the DevMgtGetResp(ServiceEntries) MAD's 192-byte data area.

Table 37-7. ServiceEntries Attribute Structure
ElementAccessLength (in bits)Description
ServiceName_1 ServiceID_1RO RO320 64Service name in UTF-8 format. Identifier of the associated Service.
ServiceName_2 ServiceID_2RO RO320 64Service name in UTF-8 format. Identifier of the associated Service.
ServiceName_3 ServiceID_3RO RO320 64Service name in UTF-8 format. Identifier of the associated Service.
ServiceName_4 ServiceID_4RO RO320 64Service name in UTF-8 format. Identifier of the associated Service.

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

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