UNH InterOperability Lab Serial Attached SCSI (SAS) Clause 9 Improving Networks Worldwide. Improving Networks Worldwide. SAS Clause 9 Clause 8 • Port Layer – Links SAS Link Layer state machines with SSP, SMP, and STP state machines • Operation of the Port Layer is transparent • No major testable items are be found in Clause 8 3 SAS Clause 9 Presentation Topics • Transport Layer Protocols – SSP • Frame Types • Sequencing • Command Mapping • Sample Traces – SMP – STP 4 SAS Clause 9 SSP Connections • First, an SSP Connection is opened between two link partners – One must be an SSP Initiator – The other must be an SSP Target – Determined by bits asserted in the Identify Address Frames 5 SAS Clause 9 SSP Open Frame • Frame Type – 1 Byte value 0x01, 0x05, 0x06, 0x07, 0x16 – 0xF0 through 0xFF are vendor specific – All others are reserved and invalid 6 SAS Clause 9 SSP Open Frame • Hashed Destination and Source Addresses – 4 byte address calculated from the WWNs of the source and destination – Details on Hash Algorithm and collision likelihood found in Annex H of the SAS 2.0 Standard 7 SAS Clause 9 SSP Open Frame • TLR Control – Valid for only Command Frames • Reserved for all other frame types – Used to communicate support for Transport Layer Retries by initiators – See Section 9.2.1 of SAS 2.0 Standard for more details 8 SAS Clause 9 SSP Open Frame • Retry Data Frames – Valid only for XFER_RDY Frames • Reserved for all other frame types – Set to 1 indicates to initiator to disable Transport Layer Retries for write DATA frames associated with this XFER_RDY 9 SAS Clause 9 SSP Open Frame • Retransmit – Valid for TASK, RESPONSE, and XFER_RDY Frames • Reserved for all other frame types – Set to one indicates the frame is a retransmission • Circumstances described in 9.2.4 of SAS 2.0 Standard 10 SAS Clause 9 SSP Open Frame • Changing Data Pointer – Valid for Retransmitted DATA Frame • Reserved for all other frame types – Set to one indicates that DATA OFFSET field may not be sequentially increased – More details in section 9.2.4.5 of SAS 2.0 Standard 11 SAS Clause 9 SSP Open Frame • Number of Fill Bytes – Valid for DATA and RESPONSE Frames • Reserved for all other frame types – Specifies the number of bytes between the Information Unit and the CRC in the frame added to make the size of the frame divisible by 4 – Needed for the CRC calculation to work correctly 12 SAS Clause 9 SSP Open Frame • Initiator Port Transfer Tag – AKA “Tag” – Used for establishing context for Commands and Tasks – Assigned by Initiators 13 SAS Clause 9 SSP Open Frame • Target Port Transfer Tag – – – – AKA “TPTT” Used for establishing context for DATA Writes Assigned by a target Optionally implemented by targets 14 SAS Clause 9 SSP Open Frame • Data Offset – Used to discribe where the data is placed relative to series of data commands – Valid for only DATA frames • Ignored in all other frames 15 SAS Clause 9 SSP Open Frame • Information Unit – Non-general information unit • DATA, XFER_RDY, COMMAND... – Varies by frame type – Contents covered further in this presentation (slide 20) 16 SAS Clause 9 SSP Open Frame • Fill Bytes – Added only if needed – Used to make frame size divisible by 4 for CRC calculations – Number in command specified by Number Of Fill Bytes Field 17 SAS Clause 9 SSP Open Frame • CRC – Cyclic Redundancy Check – CRC is used to detect bit errors inside of transmitted frames – Transmitter calculates CRC and attaches it to every frame – Receiver calculates CRC at receiption and if it doesn't match what is received, transmits NAK (CRC ERROR) to the transmitter 18 SAS Clause 9 SSP Open Frame • CRC – Cyclic Redundancy Check – Computed over the entire SSP Frame – See Annex G of SAS 2.0 Standard for more information on CRC 19 SAS Clause 9 SSP Connections • Once the SSP Connection (see Clause 7) is established, five types of frames can be transmitted inside that SSP connection – DATA – XFER_RDY – COMMAND – RESPONSE – TASK 20 SAS Clause 9 SSP Frame Types • DATA – Carries actual data to and from targets and initiators • XFER_RDY – Sent by targets giving initiators permission to transmit data • COMMAND – Contains CDBs for commands sent by initiators 21 SAS Clause 9 SSP Frame Types • RESPONSE – Sent at the completion of a command by targets to initiators. Contains information regarding current status and the command status • TASK – Sent by initiators to targets to manage outstanding commands and other noncommand related activities 22 SAS Clause 9 DATA Frames • Type: 0x01 • Information Unit: Data (Read or Write) • Originates: From a SSP Initiator or SSP Target • Information Unit Size: 1 to 1024 Bytes 23 SAS Clause 9 DATA Frames Information Unit • Only contains data 24 SAS Clause 9 XFER_RDY Frames • Type: 0x05 • Information Unit: Transfer Ready • Originates: SSP Targets Only • Information Unit Size: 12 bytes 25 SAS Clause 9 XFER_RDY Frames Information Unit • Requested Offset – Specifies an offset in the write data buffer of the application client which can be transmitted in the context of this XFER_RDY frame. 26 SAS Clause 9 XFER_RDY Frames Information Unit • Write Data Length – Specifies the number of bytes that may be transmitted within the context of this XFER_RDY frame. 27 SAS Clause 9 COMMAND Frames • Type: 0x06 • Information Unit: Command • Originates: SSP Initiator Only • Information Unit Size: 28 to 280 bytes 28 SAS Clause 9 COMMAND Frames Information Unit • Logical Unit Number – Refers to the LUN on the DUT this command will be routed too 29 SAS Clause 9 COMMAND Frames Information Unit • Enable First Burst – Set to 1 specifies that the SSP port shall expect first burst data for the command as defined by the FIRST BURST SIZE field in the Disconnect-Reconnect Mode Page 30 SAS Clause 9 COMMAND Frames Information Unit • Command Priority – Specifies the importance of the command relative to other commands with TASK ATTRIBUTE set to 0 31 SAS Clause 9 COMMAND Frames Information Unit • Task Attribute – Used to control the order of execution of received commands 32 SAS Clause 9 COMMAND Frames Information Unit • Task Attribute – Simple: 000b – Relies on COMMAND PRIORITY field for order of execution via rules defined in SAM-4 33 SAS Clause 9 COMMAND Frames Information Unit • Task Attribute – Simple: 000b – Relies on COMMAND PRIORITY field for order of execution via rules defined in SAM-4 34 SAS Clause 9 COMMAND Frames Information Unit • Task Attribute – Head of Queue: 001b – Specifies the Command is to be handled according to the HEAD OF QUEUE task attribute defined in SAM-4 35 SAS Clause 9 COMMAND Frames Information Unit • Task Attribute – Ordered: 010b – Specifies the command is to be handled according the ORDERED task attribute defined in SAM-4 36 SAS Clause 9 COMMAND Frames Information Unit • Task Attribute – ACA: 100b – Specifies the command is to be handled according the rules for an ACA task attribute defined in SAM-4 37 SAS Clause 9 COMMAND Frames Information Unit • Task Attribute – All other values (011b and 101b-111b) are reserved and shall be considered invalid 38 SAS Clause 9 COMMAND Frames Information Unit • Additional CDB Length – Length in Dwords (4 bytes) of the ADDITIONAL CDB field 39 SAS Clause 9 COMMAND Frames Information Unit • CDB and Additional CDB Bytes – Together contain the Command Descriptor/Date Block of the command – Commands are defined in SCSI Command Standards • SPC, SBC, SSC, etc... 40 SAS Clause 9 CDB Example • Sample CDB – READ (16) Command – Covered in more detail in the SCSI presentation 41 SAS Clause 9 TASK Frames • Type: 0x16 • Information Unit: Task Management Function • Originator: SSP Initiator only • Information Unit Size: 28 bytes 42 SAS Clause 9 TASK Frames Information Unit • Logical Unit Number – Refers to the LUN on the DUT this Task Management Function will be routed too 43 SAS Clause 9 TASK Frames Information Unit • Task Management Function – Specifies the type of task management function 44 SAS Clause 9 TASK Frames Information Unit • Task Management Function – 01h: ABORT TASK: Instructs the LUN to abort the task with the IPTT specified in the TASK Frame – 02: ABORT TASK SET: Instructions the LUN to abort the task set associated with the ITPT specified in the TASK Frame 45 SAS Clause 9 TASK Frames Information Unit • Task Management Function – 04h: CLEAR TASK SET: Instructs the LUN to clear the task set associated with the IPTT specified in the TASK Frame. – 08h: LOGICAL UNIT RESET: Instructs the LUN to perform a reset – 10h: I_T NEXUS RESET: Instructs the LUN to perform an I_T NEXUS RESET 46 SAS Clause 9 TASK Frames Information Unit • Task Management Function – 20h: Reserved – 40h: CLEAR ACA: Instructs the LUN to perform a Clear ACA function – 80h: QUERY TASK: Instructs the LUN to perform a QUERY TASK function on the command associated with the IPTT specified in the TASK Frame 47 SAS Clause 9 RESPONSE Frames • Type: 0x07 • Information Unit: Response Information Unit • Originator: SSP Target only • Information Unit Size: 24 to 1024 bytes 48 SAS Clause 9 RESPONSE Frames Information Unit • Status Qualifier & Status – Format Determined by DATAPRES Field 49 SAS Clause 9 RESPONSE Frames Information Unit • Datapres – Specifies if no data, response data, or sense data is contained in this frame 50 SAS Clause 9 REPSONSE Frames Information Unit • Sense Data Length – Length of any Sense Data contained within this frame 51 SAS Clause 9 REPSONSE Frames Information Unit • Response Data Length – Length of any Response Data contained within this frame 52 SAS Clause 9 REPSONSE Frames Information Unit • Response Data – # of bytes specified of Response Data • Sense Data – # of bytes specified of Sense Data 53 SAS Clause 9 Response Data Field • Additional Response Information – Contains information regarding certain Task Management Functions as defined in SAM-4 – Reserved otherwise 54 SAS Clause 9 Response Data Field 55 SAS Clause 9 Sequences of SSP Frames • Test Unit Ready and other Non-Data Commands 56 SAS Clause 9 Sequences of SSP Frames • Write Command Sequence 57 SAS Clause 9 Sequences of SSP Frames • Read Command Sequence 58 SAS Clause 9 Sequences of SSP Frames • Task management sequence 59 SAS Clause 9 SAS Mapping 60 SAS Clause 9 SAS Mapping • All SCSI Commands are located in the CDB and Additional CDB Bytes Field of a SSP Command Frame 61 SAS Clause 9 Sample Write Command Sequence • • • • Initiator sends command to target Target returns XFER_RDY Initiator send data to target Target returns response when data transmission is complete 62 SAS Clause 9 Sample Read Command Sequence • Initiator sends command to target • Target immediately begins transmitting data • Target transmits response frame when data transmission is complete 63 SAS Clause 9 Presentation Topics • Transport Layer Protocols – SSP • Frame Types • Sequencing • Command Mapping • Sample Traces – SMP – STP 64 SAS Clause 9 SMP Frames • SMP Frame Type – Specifies the frame type – 40h – SMP Request – SMP Initiators Only – 41h – SMP Response – SMP Targets Only 65 SAS Clause 9 Major SMP Functions • REPORT GENERAL – Returns general information • DISCOVER – Returns specific information about specified phy • REPORT ZONE PERMISSION TABLE – Returns zone permission descriptors requested (Current, Shadow, Saved, or Default) 66 SAS Clause 9 Major SMP Functions • CONFIGURE ZONE PERMISSION TABLE – Allows the configuration of the zone permission descriptors – ENABLE DISABLE ZONING – Turns zoning on or off on at the expander device – REPORT BROADCAST – Returns the Broadcast Descriptors specified 67 SAS Clause 9 Major SMP Functions • ZONED BROADCAST – Instructs the zoning device to broadcast the specified zones 68 SAS Clause 9 SMP Frames • Frame Dependent Bytes – Varies based on the Type of SMP Frame – Size always divisible by 4 bytes for CRC calculation • CRC for error detection 69 SAS Clause 9 Presentation Topics • Transport Layer Protocols – SSP • Frame Types • Sequencing • Command Mapping • Sample Traces – SMP – STP 70 SAS Clause 9 STP Connections • SATA Devices transmit an initial FIS upon a Link Reset – Expander Devices will not forward this FIS to STP Initiators – Create a Block of Shadow Registers to hold this information which is reported upon request from an SMP Initiator using the SMP REPORT PHY SATA function – All Communication between STP Initiators and SATA Devices is done via rules established in the SATA Standard – SATA BIST Requests shall not be forwarded to SATA Targets by Expander Devices 71