SCSI WORKING DOCUMENT X3T9.2/91-013 R01 SCSI-3 PACKETIZED PROTOCOL __________________________ +-------------------------------------+-------------------------------------+ | GARY R. STEPHENS | ABSTRACT | +-------------------------------------+-------------------------------------+ | | | | | | | November 8, 1991 | | +-------------------------------------+-------------------------------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------------------------------------+-------------------------------------+ | | SCSI WORKING DOCUMENT | | | | | | | | | | | | | | | | | | | | | | | | | +-------------------------------------+-------------------------------------+ i SCSI WORKING DOCUMENT X3T9.2/91-013 R01 ii SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 NOVEMBER 8, 1991 TO : JOHN LOHMEYER, CHAIRMAN, X3T9.2 FROM : GARY R. STEPHENS IBM CORPORATION D67E/060-1 9000 S. RITA RD. TUCSON, AZ 85719 (602) 799-2246 Subject: SCSI-3 Packetized Protocol (SPP) This document is revision 1 of document 91-013 to incorporate into SCSI a protocol suitable for operation on a serial interface. This interface is called SCSI-3 Packetized Protocol (SPP). Extensions, corrections, and deletions have been made to provide the new capabilities for a serial inter- face. It is intended that the X3T9.3 Fibre Channel be the first serial implementa- tion of the SCSI-3 Packetized Protocol. This document assumes that all par- allel bus operations are a mapping of serial operations onto a parallel bus. This should result in minimal function in a converter device between Fiber Channel and parallel busses. An extensive set of deletions, changes, and additions have been made to the glossary in Section 3. Terminology is used consistently in all sections based on the new terms. All terms used beyond section 3 are defined in this glossary or at first use. Sections 4 through 7 contain the logical system description, the I/O process structure, the information packet structure, and I/O process control. Common commands are now described in the SCSI-3 Command Set standard. The physical interfaces which may be used are described in two other stand- ards: SCSI-3 Parallel Interface (SPI) and SCSI-3 Serial Interface (SSI). Gary R. Stephens i SCSI WORKING DOCUMENT X3T9.2/91-013 R01 ii SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 X3T9.2/90-013 Revision 01 DRAFT PROPOSED AMERICAN NATIONAL STANDARD FOR INFORMATION SYSTEMS - SCSI-3 PACKETIZED PROTOCOL SPP NOVEMBER 8, 1991 Secretariat Computer and Business Equipment Manufacturers Association Abstract: This standard defines functional requirements for the SCSI-3 Packetized Protocol (SPP). SPP permits computers to attach to each other and to intelligent devices. SPP simplifies connecting computers and intelligent device classes including rigid disks, flexible disks, magnetic tape devices, printers, optical disks, and scanners. SPP uses information packets to transfer commands, command parameter data, command response data, logical block data, messages, status, and autosense. SPP uses the Fibre Channel as its primary serial transport layer. Its use is defined in SCSI-3 Serial Interface (SSI). SPP uses the SCSI-3 Parallel Interface (SPI) as an alternative parallel transport layer. SPP establishes one logical level of interpretation for information packets independent of the physical transport layer. The parallel interface simu- lates changes made for the serial protocol and this simplifies parallel interface management. SPP streamlines processing, reduces choices, and adds new functions over SCSI-3 Interlocked Protocol (SIP). All information transfers in SPP are independent of the physical bus used. SPP defines a method for managing mul- tiple paths between computers and attached devices. See the SCSI-3 Command Set (SCS) standard for the common and device class specific commands used with SPP. This is a draft standard proposed American National Standard of Accredited Standards Committee X3. As such, this is not a complete standard. The X3T9 Technical Committee may modify this document as a result of comments received during the X3 approval process for standards. COPYRIGHT NOTICE: This draft proposed standard is based on ANSI X3.131-1990, a document copyrighted by the American National Standards Institute (ANSI). Under the usual ANSI policy for revising standards, this draft standard MAY BE REPRODUCED for review and comment only, without further permission, pro- vided this notice is included. All other rights are reserved. POINTS OF CONTACT: i SCSI WORKING DOCUMENT X3T9.2/91-013 R01 JOHN B. LOHMEYER (X3T9.2 CHAIR) I. DAL ALLAN (X3T9.2 VICE-CHAIR) NCR CORPORATION ENDL 3718 N. ROCK ROAD 14426 BLACK WALNUT COURT WICHITA, KS 67226 SARATOGA, CA 95070 (316) 636-8703 (408) 867-6630 ii SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 This is the second draft of the proposed standard. This document is the result of a project proposal to update SCSI for serial interface operation, called SCSI-3. This document has not been approved by the X3T9.2 committee and has not been reviewed by them as of November 8, 1991. The document structure of SCSI-3 standards is as follows: SCS (SCSI-3 COMMAND SETS) | | +------------------------------+------------------------------+ | | | | SIP (SCSI-3 INTERLOCKED PROTOCOL) SPP (SCSI-3 PACKETIZED PROTOCOL) | | | | | | SPI (SCSI-3 PARALLEL INTERFACE) | | APPENDIX B | | | | | +---------+---------+-------------------+-------------+ | | | TRANSPORT LAYER TRANSPORT LAYER TRANSPORT LAYER APPENDIX A APPENDIX C APPENDIX D INDEPENDENT FCS PHASE EMULATION IEEE P1394 SPP MAY USE ANY ONE OF FOUR TRANSPORT LAYERS. SIP AND SPI ARE THE FOLLOW-ON SCSI-2 STANDARDS. The current editorial assignments are: GARY R. STEPHENS (SPP TECHNICAL EDITOR) IBM CORPORATION 60L/040-1 9000 S. RITA RD TUCSON, AZ 85744 (602) 799-2246 iii SCSI WORKING DOCUMENT X3T9.2/91-013 R01 iv SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 TABLE OF CONTENTS _________________ ---------------------------------------------------------------------- PART 1. SPP INTRODUCTORY MATERIAL SECTION 1. SCOPE . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 SECTION 2. REFERENCED STANDARDS AND ORGANIZATIONS . . . . . . . . . . 2-1 2.1 Corequisite ANSI Standards . . . . . . . . . . . . . . . . . . . . 2-1 2.2 Reference ANSI Standards . . . . . . . . . . . . . . . . . . . . . 2-1 SECTION 3. GLOSSARY AND CONVENTIONS . . . . . . . . . . . . . . . . . 3-1 3.1 Glossary of Essential SPP Terms . . . . . . . . . . . . . . . . . 3-1 3.2 Editorial Conventions . . . . . . . . . . . . . . . . . . . . . 3-16 3.3 Relationship of Essential SPP Terms . . . . . . . . . . . . . . 3-16 ---------------------------------------------------------------------- PART 2. SPP PROTOCOL SECTION 4. SPP LOGICAL OPERATIONS . . . . . . . . . . . . . . . . . . 4-1 4.1 Logical System Description . . . . . . . . . . . . . . . . . . . . 4-1 4.2 Description of Logical Operations . . . . . . . . . . . . . . . . 4-2 4.3 Mandatory Requirements . . . . . . . . . . . . . . . . . . . . . . 4-5 4.4 Logical System Definition . . . . . . . . . . . . . . . . . . . . 4-6 4.5 I/O Processes . . . . . . . . . . . . . . . . . . . . . . . . . 4-11 4.5.1 I/O Process Parameter Requirements (Mandatory) . . . . . . . 4-11 4.5.2 I/O Process Sense Data (Mandatory) . . . . . . . . . . . . . 4-12 4.5.3 SPP Identification . . . . . . . . . . . . . . . . . . . . . 4-12 4.5.3.1 Initiating Controller Identification (Optional) . . . . 4-13 4.5.3.2 SPP Address for a Port (Mandatory) . . . . . . . . . . . 4-13 4.5.3.3 Logical Units (Mandatory) . . . . . . . . . . . . . . . 4-13 4.5.3.4 Target Routines (Optional) . . . . . . . . . . . . . . . 4-13 4.6 Queued I/O Processes (Mandatory) . . . . . . . . . . . . . . . . 4-14 4.6.1 Untagged I/O Processes (Mandatory) . . . . . . . . . . . . . 4-14 4.6.2 Tagged I/O Processes (Optional) . . . . . . . . . . . . . . 4-15 4.6.3 Concurrent I/O Processes Execution . . . . . . . . . . . . . 4-19 4.7 Programmable Operating Definition (Parallel) (Optional) . . . . 4-19 4.8 I/O Process Termination . . . . . . . . . . . . . . . . . . . . 4-20 4.8.1 Normal I/O Process Termination . . . . . . . . . . . . . . . 4-20 4.8.2 Abnormal I/O Process Termination . . . . . . . . . . . . . . 4-21 4.8.2.1 Initiating Controller Caused Termination . . . . . . . . 4-21 4.8.2.2 Target Controller Caused Termination . . . . . . . . . . 4-21 4.9 Logical Unit Reservation Termination (Mandatory) . . . . . . . . 4-21 4.10 Path Group Operations (Optional) . . . . . . . . . . . . . . . 4-21 4.10.1 Single Path Mode . . . . . . . . . . . . . . . . . . . . . 4-22 4.10.2 Multiple Path Mode . . . . . . . . . . . . . . . . . . . . 4-22 4.10.3 Single Path Status . . . . . . . . . . . . . . . . . . . . 4-22 4.10.4 Multiple Path Status . . . . . . . . . . . . . . . . . . . 4-22 4.11 Assignment Termination (Optional) . . . . . . . . . . . . . . . 4-22 TABLE OF CONTENTS v SCSI WORKING DOCUMENT X3T9.2/91-013 R01 4.12 Path Group Termination (Optional) . . . . . . . . . . . . . . . 4-22 SECTION 5. SPP I/O PROCESS STRUCTURE . . . . . . . . . . . . . . . . . 5-1 5.1 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 5.1.1 Command Set Implementation Requirements (Mandatory) . . . . . 5-2 5.1.2 Reserved (Mandatory) . . . . . . . . . . . . . . . . . . . . . 5-2 5.1.3 Command Descriptor Block . . . . . . . . . . . . . . . . . . . 5-3 5.1.4 Operation Code (Mandatory) . . . . . . . . . . . . . . . . . . 5-5 5.1.5 Logical Block Address . . . . . . . . . . . . . . . . . . . . 5-5 5.1.6 Transfer Length . . . . . . . . . . . . . . . . . . . . . . . 5-6 5.1.7 Command Parameter Data Length . . . . . . . . . . . . . . . . 5-7 5.1.8 Command Response Data Length . . . . . . . . . . . . . . . . . 5-7 5.1.9 Control Field (Mandatory) . . . . . . . . . . . . . . . . . . 5-8 5.1.9.1 Link Bit (Mandatory) . . . . . . . . . . . . . . . . . . . 5-8 5.1.9.2 Flag Bit (Mandatory) . . . . . . . . . . . . . . . . . . . 5-9 5.2 Status (Mandatory) . . . . . . . . . . . . . . . . . . . . . . . . 5-9 5.2.1 Status Codes (Mandatory) . . . . . . . . . . . . . . . . . . 5-11 5.2.2 Status Code Reporting Priority (Mandatory) . . . . . . . . . 5-13 5.3 Contingent Allegiance Condition (Mandatory) . . . . . . . . . . 5-14 5.4 Extended Contingent Allegiance Condition (Optional) . . . . . . 5-15 5.5 Asynchronous Event Notification (Mandatory) . . . . . . . . . . 5-16 SECTION 6. SPP INFORMATION PACKET STRUCTURE . . . . . . . . . . . . . 6-1 6.1 Information Packet Structure . . . . . . . . . . . . . . . . . . . 6-1 6.1.1 Interface Control Fields (Mandatory) . . . . . . . . . . . . . 6-2 6.1.2 Interface Logical Elements (Mandatory) . . . . . . . . . . . . 6-6 6.1.2.1 Message Interface Logical Element . . . . . . . . . . . . 6-8 6.1.2.2 Command Descriptor Block Interface Logical Element . . . . 6-8 6.1.2.3 Command Parameter Data Interface Logical Element . . . . . 6-8 6.1.2.4 Command Response Data Interface Logical Element . . . . . 6-8 6.1.2.5 Logical Block Data Interface Logical Element . . . . . . . 6-9 6.1.2.6 Status Interface Logical Element . . . . . . . . . . . . . 6-9 6.1.2.7 Autosense Interface Logical Element (Optional) . . . . . . 6-9 SECTION 7. SPP I/O PROCESS CONTROL . . . . . . . . . . . . . . . . . . 7-1 7.1 Messages (Mandatory) . . . . . . . . . . . . . . . . . . . . . . . 7-1 7.1.1 ABORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 7.1.2 ABORT I/O PROCESS . . . . . . . . . . . . . . . . . . . . . . 7-6 7.1.3 BUS DEVICE RESET . . . . . . . . . . . . . . . . . . . . . . . 7-7 7.1.4 CLEAR QUEUE . . . . . . . . . . . . . . . . . . . . . . . . . 7-7 7.1.5 I/O PROCESS COMPLETE . . . . . . . . . . . . . . . . . . . . . 7-7 7.1.6 EXTENDED MESSAGE REJECT . . . . . . . . . . . . . . . . . . . 7-8 7.1.7 INITIATE RECOVERY . . . . . . . . . . . . . . . . . . . . . . 7-9 7.1.8 INVALID BUS PHASE DETECTED (Parallel) . . . . . . . . . . . . 7-9 7.1.9 INVALID INFORMATION PACKET . . . . . . . . . . . . . . . . . 7-10 7.1.10 LINKED COMMAND COMPLETE . . . . . . . . . . . . . . . . . . 7-11 7.1.11 LINKED COMMAND COMPLETE (WITH FLAG) . . . . . . . . . . . . 7-12 7.1.12 MODIFY DATA POSITION . . . . . . . . . . . . . . . . . . . 7-12 7.1.13 PARITY ERROR (Parallel) . . . . . . . . . . . . . . . . . . 7-12 7.1.14 RELEASE RECOVERY . . . . . . . . . . . . . . . . . . . . . 7-13 7.1.15 RESEND PREVIOUS INFORMATION PACKET . . . . . . . . . . . . 7-13 7.1.16 SYNCHRONOUS DATA TRANSFER REQUEST (Parallel) . . . . . . . 7-14 7.1.17 SYNCHRONOUS PACKET TRANSFER REQUEST . . . . . . . . . . . . 7-16 7.1.18 TERMINATE I/O PROCESS . . . . . . . . . . . . . . . . . . . 7-18 vi SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 7.1.19 TRANSFER READY . . . . . . . . . . . . . . . . . . . . . . 7-20 7.2 Command Processing Considerations and Exception Conditions . . . 7-21 7.2.1 Unit Attention Condition . . . . . . . . . . . . . . . . . . 7-21 7.2.2 Incorrect Initiating Controller Connection . . . . . . . . . 7-23 7.2.3 I/O Processes for an Invalid LUN or TRN . . . . . . . . . . 7-23 7.2.4 Parameter Rounding . . . . . . . . . . . . . . . . . . . . . 7-24 7.2.5 Unsuccessful I/O Process Termination Condition . . . . . . . 7-24 7.2.6 Reset Condition (Mandatory) . . . . . . . . . . . . . . . . 7-25 7.2.7 Unsuccessful Information Packet Transfer Condition . . . . . 7-26 7.2.8 Unexpected Disconnect Condition . . . . . . . . . . . . . . 7-26 7.2.9 Attention Condition (Parallel) . . . . . . . . . . . . . . . 7-26 TABLE OF CONTENTS vii SCSI WORKING DOCUMENT X3T9.2/91-013 R01 viii SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 FIGURES _______ 3-1. Relationship of SPP Terms (Part 1 of 7) . . . . . . . . . . . 3-17 3-2. Relationship of SPP Terms (Part 2 of 7) . . . . . . . . . . . 3-18 3-3. Relationship of SPP Terms (Part 3 of 7) . . . . . . . . . . . 3-19 3-4. Relationship of SPP Terms (Part 4 of 7) . . . . . . . . . . . 3-20 3-5. Relationship of SPP Terms (Part 5 of 7) . . . . . . . . . . . 3-21 3-6. Relationship of SPP Terms (Part 6 of 7) . . . . . . . . . . . 3-22 3-7. Relationship of SPP Terms (Part 7 of 7) . . . . . . . . . . . 3-23 4-1. SPP High Level Protocol . . . . . . . . . . . . . . . . . . . . 4-2 4-2. Minimum Logical System Attributes . . . . . . . . . . . . . . 4-10 4-3. Simplified SPP System . . . . . . . . . . . . . . . . . . . . 4-11 4-4. Concurrent I/O Process Execution Rules . . . . . . . . . . . 4-20 5-1. Operation Code Types . . . . . . . . . . . . . . . . . . . . . 5-6 FIGURES ix SCSI WORKING DOCUMENT X3T9.2/91-013 R01 x SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 TABLES ______ 5-1. Typical Command Descriptor Block for Six-Byte Commands . . . . 5-3 5-2. Typical Command Descriptor Block for Ten-Byte Commands . . . . 5-4 5-3. Typical Command Descriptor Block for Twelve-Byte Commands . . . 5-4 5-4. Operation Code . . . . . . . . . . . . . . . . . . . . . . . . 5-5 5-5. Control Field . . . . . . . . . . . . . . . . . . . . . . . . . 5-8 5-6. Status Byte . . . . . . . . . . . . . . . . . . . . . . . . . 5-10 5-7. Status Byte Code . . . . . . . . . . . . . . . . . . . . . . 5-11 5-8. Status Byte Code Reporting Priority . . . . . . . . . . . . . 5-13 6-1. Information Packet Structure . . . . . . . . . . . . . . . . . 6-1 6-2. Interface Control Prefix Fields . . . . . . . . . . . . . . . . 6-2 6-3. Interface Control Suffix Fields . . . . . . . . . . . . . . . . 6-6 6-4. Interface Logical Element . . . . . . . . . . . . . . . . . . . 6-7 6-5. ILE Element Type Codes . . . . . . . . . . . . . . . . . . . . 6-7 7-1. Message Element Format Codes . . . . . . . . . . . . . . . . . 7-2 7-2. Message Codes . . . . . . . . . . . . . . . . . . . . . . . . . 7-2 7-3. Extended Message Element Format . . . . . . . . . . . . . . . . 7-4 7-4. Extended Message Codes . . . . . . . . . . . . . . . . . . . . 7-5 7-5. EXTENDED MESSAGE REJECT Message Format . . . . . . . . . . . . 7-8 7-6. INVALID BUS PHASE DETECTED Message Format . . . . . . . . . . 7-10 7-7. INVALID INFORMATION PACKET Message Format . . . . . . . . . . 7-11 7-8. MODIFY DATA POSITION Message Format . . . . . . . . . . . . . 7-12 7-9. PARITY ERROR Message Format . . . . . . . . . . . . . . . . . 7-12 7-10. RESEND PREVIOUS INFORMATION PACKET Message Format . . . . . . 7-14 7-11. SYNCHRONOUS DATA TRANSFER REQUEST Message Format . . . . . . 7-14 7-12. SYNCHRONOUS PACKET TRANSFER REQUEST Message Format . . . . . 7-17 TABLES xi SCSI WORKING DOCUMENT X3T9.2/91-013 R01 xii SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 PART 1. SPP INTRODUCTORY MATERIAL __________________________________ SECTION 1. SCOPE . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 SECTION 2. REFERENCED STANDARDS AND ORGANIZATIONS . . . . . . . . . . 2-1 2.1 Corequisite ANSI Standards . . . . . . . . . . . . . . . . . . . . 2-1 2.2 Reference ANSI Standards . . . . . . . . . . . . . . . . . . . . . 2-1 SECTION 3. GLOSSARY AND CONVENTIONS . . . . . . . . . . . . . . . . . 3-1 3.1 Glossary of Essential SPP Terms . . . . . . . . . . . . . . . . . 3-1 3.2 Editorial Conventions . . . . . . . . . . . . . . . . . . . . . 3-16 3.3 Relationship of Essential SPP Terms . . . . . . . . . . . . . . 3-16 Part 1. SPP Introductory Material SCSI WORKING DOCUMENT X3T9.2/91-013 R01 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 SECTION 1. SCOPE _________________ This American National Standard defines the protocol for communicating between interconnecting computers and peripheral devices using the SCSI-3 Packetized Protocol (SPP). Although primarily for use with the SCSI-3 Serial Interface (SSI), it has been mapped to the SCSI-3 Parallel Interface (SPI). SPP features transport layer independence and it uses a logical interpreta- tion of and response to information packets. SPP provides a protocol for the movement of commands, data, and responses between devices. The common commands in this standard and the SCSI-3 Device Command Sets (SDCS) standard provide logical commands and responses. SPP transfers information packet transfers on both the SSI and SPI. SPP supports only buffer-to-buffer transfers of information packets. Each information packet is self-identifying which permits correct routing of information packets for each I/O process within initiating controllers and target con- trollers. SPP includes references to the necessary standards and specifies options to allow inter-operability of devices meeting this standard. SPP assures inter- operability only between two SPP devices having compatible physical trans- mission layer characteristics. The primary objective of the standard is to provide computers with device type independence within a class of devices. SPP permits computer users to attach intelligent devices without requiring modifications to hardware or generic software. Generic software is software capable of handling the man- datory functions for a device class. SPP specifies mandatory function for each device class to make generic software easier to generate. SPP provides for adding special features and functions through vendor specific fields and codes. Such additions may require software changes to use those features and functions. SPP identifies reserved fields and code values for future stand- ardization. A second key objective of the standard is to provide a point of incompat- ibility with the SCSI-3 Interlocked Protocol (SIP). Serial interface oper- ations are, by definition, incompatible. On a parallel bus, properly conforming SIP devices reject all SPP protocol extensions. SPP devices on a parallel bus permit such rejections and allow SIP devices to continue inter- operation with each other without requiring use of the extensions. SPP and SIP devices can share the same parallel bus. SPP and SIP devices cannot operate with each other unless the SPP device changes its definition to SIP mode. SPP devices, both initiating controllers and target controllers, attached to parallel busses, have the option of reverting to the SIP oper- ating mode. A change in definition from a SPP operating mode to a SIP oper- ating mode means the SIP standard defines all subsequent operations. Refer to the SIP standard for the proper protocol. Section 1. Scope 1-1 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 A third key objective of SPP is to move device-dependent intelligence out to the devices. The command sets allow an attached SPP device to obtain initialization information from other attached SPP devices. Responses iden- tify the device class, device characteristics, and the changeable parameters. Further requests can determine the readiness of the device to operate, the types of media supported by the device, and other pertinent system informa- tion. SPP devices provide parameters required for operation, initialization, or system tuning. The device manages all other parameters. For storage devices, the device models use logical rather than physical addressing for all data blocks. For the direct-access device class, each logical unit can provide information about how many blocks it contains. A logical unit may coincide with all, or part of, a peripheral device, or it may span multiple peripheral devices. SPP provides for connecting multiple initiating controllers and multiple target controllers. SPP also provides control mechanisms to use multiple paths between two devices during an I/O process when there are two or more busses in a logical system. IF A CONFLICT ARISES BETWEEN TEXT, TABLES, AND FIGURES, THE ORDER OF PRECED- ENCE TO RESOLVE CONFLICTS IS TEXT, TABLES, AND LASTLY FIGURES. NOT ALL TABLES AND FIGURES ARE FULLY DESCRIBED IN TEXT. TABLES SHOW DATA FORMATS AND VALUES; FIGURES ARE ILLUSTRATIVE OF THE TEXT AND TABLES. NOTES AND IMPLEMEN- TATION NOTES HAVE BEEN KEPT TO A MINIMUM, BUT WHEN THEY OCCUR THEY DO NOT CONSTITUTE ANY REQUIREMENTS FOR IMPLEMENTORS. Section 2 provides a reference list of prerequisite and corequisite stand- ards. Section 3 provides a comprehensive glossary of terms used in SPP. Section 4 provides a description of logical operations and a a logical system description. Section 5 specifies the SPP command and status structure. Section 6 describes the method for encapsulating logical functions in infor- mation packets. Section 7 introduces messages and protocols for their use to support manda- tory and optional functions and the information packet structure. Section 8 describes the commands and responses common to all SPP devices. The commands in SPP and and SDCS classify commands as mandatory, optional, or vendor specific. SPP devices implement mandatory common commands in SPP and mandatory commands defined for the appropriate device class (from SDCS). SPP devices may implement optional commands and command functions as well. Within each command, there are mandatory functions which a SPP device imple- ments; there may be optional functions within some commands. For any command, a SPP device implements all functions identified as mandatory. 1-2 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 SPP devices implement commands and responses that simplify writing self- configuring software. Such software can "discover" necessary device attri- butes without prior knowledge of specific peripheral device characteristics (such as storage capacity). Many commands also implement a very large logical block address space (2**32 blocks). Some commands implement a smaller logical block address space (2**21 blocks). (Delete These? GRS) APPENDICES ARE NOT PART OF THIS STANDARD. APPENDICES PROVIDE EXTRA EXPLANA- TORY MATERIAL ABOUT SPP. IF A CONFLICT ARISES BETWEEN THE MAIN TEXT AND AN APPENDIX, THE MAIN TEXT TAKES PRECEDENCE. Appendix A contains examples of I/O process management by initiating control- lers and target controllers. (New. Extracted from various sections. GRS) Appendix B describes data integrity in command queuing environments. Appendix C describes normal procedures following a power-on condition. An index is found after the last appendix. Section 1. Scope 1-3 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 1-4 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 SECTION 2. REFERENCED STANDARDS AND ORGANIZATIONS __________________________________________________ 2.1 COREQUISITE ANSI STANDARDS _______________________________ ANSI X3.4-1977, American Standard Code for Information Interchange (ASCII), ANSI X3.xxx-199x, SDCS ANSI X3.xxx-199x, SPI ANSI X3.xxx-199x, SSI 2.2 REFERENCE ANSI STANDARDS _____________________________ ANSI X3.131-1991, SCSI-2 ANSI X3.xxx-199x, CAM Section 2. Referenced Standards and Organizations 2-1 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 2-2 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 SECTION 3. GLOSSARY AND CONVENTIONS ____________________________________ 3.1 GLOSSARY OF ESSENTIAL SPP TERMS ____________________________________ This section contains a glossary of special terms used in this standard. A segment of text for any glossary entry prefixed by "(Parallel Interfaces.)" or "(Serial Interfaces.)" applies only to implementations which use that par- ticular transport layer. A segment of text for any glossary entry prefixed by "(Initiating Controllers.)" or "(Target Controllers.)" applies only to SPP devices when operating in that mode. +---+ | A | +---+ ACCEPT. When related to I/O processes, the process in a target controller which determines that an I/O process may be executed for the sending initi- ating controller, and if permissible, determines that the I/O process log- ically correct based on order and content of each interface logical element. Contrast with receipt and execute. ACTIVE I/O PROCESS. Both an initiating controller and a target controller may have multiple active I/O processes. An active I/O process may be a current I/O process or it may be disconnected. (Initiating Controller.) An I/O process for which a connect has been made. An I/O process becomes active with the initial connection; the same I/O process may be in the queued I/O process queue of the target controller. (Target Controller.) An I/O process which is in execution (not in the queued I/O process queue). ACTIVE I/O PROCESS QUEUE. A queue in logical elements which contains active I/O processes from the perspective of that logical element. The queue may contain zero or more active I/O processes. The organization of the active I/O process queue is controlled by the logical element. AEN. Asynchronous event notification. AIOP. Active I/O process. AIOPQ. Active I/O process queue. ASCII BYTE. A byte whose value is interpreted for graphic presentation according to the ASCII collating sequence. ASSIGNED. An attribute of a target controller function which permits it to accept I/O processes only from certain path groups. ASYNCHRONOUS EVENT NOTIFICATION. A protocol used by target controllers to notify appropriate initiating controllers of a significant event occurring in the target controller which does not occur while the target controller is Section 3. Glossary and Conventions 3-1 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 executing an active I/O process (e.g., Unit Attention or medium removal). Detection of the event results in either contingent allegiance or extended contingent allegiance. AUTOMATICALLY PRESENTED SENSE DATA. When contingent allegiance or extended contingent allegiance is established, the target controller notifies the ini- tiating controller by sending a status ILE with a status byte code value of CHECK CONDITION or I/O PROCESS TERMINATED; the target controller prepares sense data appropriate for the error. The target controller may include the sense data as a command response data ILE immediately following the status ILE. If the sense data is transferred in this manner, it is called automat- ically presented sense data or autosense. If the sense data is not included following the status ILE, the target controller preserves the sense data until the initiating controller retrieves it or causes it to be deleted without transfer; this is called pending sense data. This term differen- tiates this data from CDBs, messages, command parameter data, command response data, status and logical block data. AUTOSENSE. Automatically presented sense data. +---+ | B | +---+ BIT. See xx bit. BLOCK. A logical block or physical block. BLOCK PERIPHERAL DEVICE. A peripheral device which is in one of the fol- lowing device classes: direct access, write once, CD-ROM, or optical memory. A peripheral device in a device class considered as block peripheral device can be a source or destination in a COPY, COMPARE, or COPY AND VERIFY command. See stream peripheral device and other peripheral device. BURST. A contiguous set of bytes associated with an I/O process which represents all or part of the logical block data, the command parameter data, or the command response data for a command. Bursts are variable length. A burst may be part of an information packet. A burst is not part of every information packet. BYTE. An 8-bit (octet) construct. BYTE STRING. A contiguous set of ASCII bytes. +---+ | C | +---+ CA. Contingent allegiance. CDB. Command descriptor block. 3-2 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 CIOP. Current I/O process. COMMAND. A command descriptor block, and associated command parameter data, sent from an initiating controller to a target controller to cause a logical unit or target routine to perform some action for the initiating controller. A command for an active I/O process with linked commands executes to com- pletion before beginning execution of any later command for the same active I/O process. That is, commands within a set of linked commands for an I/O process are not reordered for execution by the target controller function. s may be COMMAND DESCRIPTOR BLOCK. An organized collection of bytes used to communi- cate the fixed length portion of commands. This term differentiates this data from messages, command parameter data, command response data, status, autosense, and logical block data. COMMAND PARAMETER DATA. An organized collection of fields (0 or more in length) provided as an addendum to some command descriptor blocks. This term differentiates this data from messages, CDBs, command response data, status, autosense, and logical block data. COMMAND RESPONSE DATA. An organized collection of fields (0 or more in length) provided in response to some commands (e.g., sense data). This term differentiates this data from messages, CDBs, command parameter data, status, autosense, and logical block data. CONNECT. The initiating controller process which selects an initiator, a target and results in establishing a nexus and an I/O process in a target controller. The connection that results is an initial connection. A connect requires successful information packet transfer. The information packet may not be logically error free. CONNECTION. An initial connection or reconnection. A connection occurs between one initiator and one target on the same SPP bus. A connection begins when conditions exist between an initiator and a target for informa- tion transfer; a connection ends with the next disconnect. (Parallel Inter- faces.) At the end of a successful selection. (Serial Interfaces.) When sending or receiving an information packet. The connection for the sender may end before the connection starts for the receiver. CONTINGENT ALLEGIANCE. A condition in a target controller established when the error is detected and which results in either the target controller sending CHECK CONDITION or I/O PROCESS TERMINATED status for an active I/O process to its initiating controller or in asynchronous event notification. The target controller determines the condition to be of a nature where no recovery procedure requiring exclusive use of the logical unit or target routine is required. The target controller prepares sense data when the error is detected. If the sense data is transferred as autosense, the con- tingent allegiance is terminated upon successful transfer of the information packet(s) containing the status ILE and the sense data ILE(s). COPY MANAGER. A target controller which has implemented the COPY, COMPARE, and/or the COPY AND VERIFY commands. The target controller becomes a copy manager only on accepting one of these three commands and the corresponding Section 3. Glossary and Conventions 3-3 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 command parameter data. A copy manager implements an initiating controller logical element function more complete than that required for asynchronous event notification. CPD. Command parameter data. CRD. Command response data. CURRENT I/O PROCESS. An I/O process connected on a SPP bus. The I/O process may be an active I/O process or it may be a queued I/O process with the ILEs from information packets being routed to the queued I/O process queue in a target controller. (Parallel Interfaces.) Only one I/O process may be current on a single SPI bus. (Serial Interfaces.) Only one I/O process may be current per fiber at either the initiator end of a link or the target end of a link. Zero or more information packets may be between the link end points for the same or different I/O processes. +---+ | D | +---+ DEVICE CLASS. A set of target controllers all having the same logical model and specified independently in SDCS. Mandatory and optional functions are specified including the common commands and functions. All device classes conform to the mandatory requirements of the logical system. DEVICE TYPE. A specific target controller function which implements some or all of the functions for a device class. Each device type implements all mandatory commands and functions for its device class. DISBAND. A process which breaks up a set of paths established as a path group. DISCONNECT. (Parallel interfaces.) The action that occurs when a selected SPP device releases control of the bus, allowing it to go to the BUS FREE phase. (Serial interfaces.) The action that occurs at the end of an informa- tion packet transfer or the transmitter stops sending ordered sets during information packet transfer. +---+ | E | +---+ ECA. Extended contingent allegiance. ESTABLISH A PATH GROUP. A process to form a non-empty set of paths as a group which are treated as equivalent for most I/O process activity. EXECUTE. When applied to an active I/O process, only interface logical ele- ments which have been received and accepted are acted upon by the logical element. Interface logical elements which are received and not accepted 3-4 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 result in an appropriate message or a contingent allegiance to report the error. Contrast with receive and accept. EXPLICITLY NAMED PATH. An explicitly named path exists when the initiating controller successfully completes an active I/O process to transfer the ICID of the initiating controller to a LUN or TRN and the target controller trans- fers its selected port number to the initiating controller. EXTENDED CONTINGENT ALLEGIANCE. A condition in a target controller estab- lished when an error is detected and which results in either the target con- troller sending CHECK CONDITION or I/O PROCESS TERMINATED status for an active I/O process to an initiating controller or in asynchronous event notification. The target controller determines that the condition is a type where a recovery procedure requires exclusive use of the logical unit or target routine. The target controller prepares sense data when the error is detected. For AEN, the sense data is transferred in the SEND command. For an active I/O process, the sense data may be transferred as autosense. The target controller may preserve the sense data in the target controller for retrieval by a REQUEST SENSE command or deleted by the initiating controller without transfer. A special protocol notifies the initiating controller that the condition exists to differentiate it from contingent allegiance. A pro- tocol notifies the target controller when the initiating controller has com- pleted its implementation of the recovery procedure. The target controller recovery procedure is vendor specific. The initiating controller is not required to follow the recommended recovery procedure. Failure to follow the recommended procedure may have an undesirable effect on the target con- troller, the target controller function, or attached peripheral devices. +---+ | F | +---+ FIELD. A set of one or more contiguous bits. +---+ | G | +---+ GROUPED. The state of an explicitly named path when it is a member of an established path group. +---+ | H | +---+ H_C NEXUS. A nexus which exists between an initiating controller and a target controller. An H_C nexus, or any of its derivatives, may use more than one initiator and one target combination for connections during an active I/O process when using the multiple path option of SPP. Section 3. Glossary and Conventions 3-5 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 H_C_L NEXUS. A nexus which exists between an initiating controller, a target controller, and a logical unit. This relationship replaces the prior H_C_x nexus. H_C_L_Q NEXUS. A nexus between an initiating controller, a target con- troller, a logical unit, and a queue tag. This relationship replaces the prior H_C_x_y nexus. H_C_R NEXUS. A nexus which exists between an initiating controller, a target controller, and a target routine. This relationship replaces the prior H_C_x nexus. H_C_X NEXUS. A nexus which is either an H_C_L or H_C_R nexus. This relationship replaces the prior H_C_x_y nexus. H_C_X_Y NEXUS. A nexus which is either an H_C_x or H_C_L_Q nexus. This relationship replaces the prior H_C nexus. H_I_T_C NEXUS. An H_C nexus, or one of its derivatives, between an initi- ating controller and a target controller, which operates in single path mode. +---+ | I | +---+ I/O PROCESS. An I/O process consists of a set of connections consisting of one initial connection and zero or more reconnections. The set of con- nections relate to the exchange of information packets. The set of con- nections pertains to a nexus where zero or more commands may be transferred. An I/O process begins with the establishment of a nexus. An I/O process may be either untagged or tagged with a queue tag. When an I/O process contains one or more commands, the active I/O process normally ends with the discon- nect following successful transfer of a COMMAND COMPLETE message, if ECA does not exist. When an I/O process consists of only message exchanges, the active I/O process ends with the disconnect at the receiver of the the last message of the exchange. If CA exists, the I/O process ends with the transfer or deletion of the sense data for the contingent allegiance. If ECA exists, the I/O process ends with the disconnect following successful transfer of the RELEASE RECOVERY message from the same initiating controller. An I/O process ends abnormally with the disconnect following execution of an ABORT, an ABORT TAG, a BUS DEVICE RESET, or a CLEAR QUEUE message. An I/O process also ends abnormally when unexpected disconnect occurs. (Parallel Interfaces.) An I/O process ends abnormally with the disconnect following detection of the RESET event. I/O PROCESS QUEUE. An active I/O process queue or a queued I/O process queue. The contents of the I/O process queues in an initiating controller and a target controller may be different. ICID. Initiating controller ID. IDENTIFY FUNCTION. A process in logical elements used to identify the logical unit or target routine, and optionally a queue tag to establish or 3-6 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 reconnect to a correct nexus. The identify function determines whether an information packet establishs a new nexus or whether it is processed as part of an established nexus (i.e., an existing active I/O process or a queued I/O process). ILE. Interface logical element. IMPLICITLY NAMED PATH. An implicitly named path exists when the initiating controller has not transferred its ICID to the target controller, but the initiating controller has made at least one connect to the LUN or TRN. The target controller has transferred its selected port number to the initiating controller. INFORMATION PACKET. A set of bytes containing interface control fields and at least one interface logical element. INITIAL CONNECTION. An initial connection is the result of a connect. INITIATING CONTROLLER. A logical element which principally starts I/O proc- esses. Active I/O processes execute using the services of one or more ports in the initiating controller. (Serial Interfaces.) The ports may be for one or more Fiber Channel nodes. INITIATING CONTROLLER ID. An initiating controller ID is an identifier to uniquely name an initiating controller which is communicated to target con- trollers over the interface as part of the multiple path option. INITIATOR. An SPP port operating in initiator mode through which an initi- ating controller starts and executes I/O processes. An initiator usually attaches to an initiating controller. An initiator uses one port to one SPP bus. INITIATOR MODE. The current operating mode of a port which permits it to initiate I/O processes at another port. (Parallel interfaces.) An initiator selects another port, which is in target mode, on the same SPI bus. (Serial interfaces.) An initiator establishes an H_C nexus with another port using a link and possibly fabric. INTERFACE CONTROL FIELDS. An organized collection of bytes used to encapsulate interface logical elements into information packets. The trans- port layer interprets some of these fields to accomplish proper routing of information packets between initiating controllers and target controllers. INTERFACE LOGICAL ELEMENTS. Organized collections of bytes containing self- describing messages, CDBs, command parameter data, command response data, status, or logical block data. INVALID. An illegal, reserved, or unsupported bit, field, code value, bus phase, or protocol sequence. Section 3. Glossary and Conventions 3-7 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---+ | J | +---+ . +---+ | K | +---+ . +---+ | L | +---+ LBD. Logical block data. LOGICAL BLOCK. A unit of data supplied from or requested by an initiating controller usually for a peripheral device. A logical block may be fixed or variable in length. LOGICAL BLOCK DATA. A burst of bytes from or to a logical unit for a logical block. This term differentiates these data from messages, CDBs, command parameter data, command response data, status, and autosense. LOGICAL ELEMENT. An initiating controller or a target controller. LOGICAL PATH. A logical path is the set of all paths which have the same ICID and LUN or TRN in the same target controller. The set of paths identify the routes active I/O processes may take between an initiating controller and a logical unit or target routine. LOGICAL SYSTEM. (Target Controllers.) A logical system is the set of initi- ating controllers having at least one port attached to at least one port of the target controller and from which a connect has been made. (Initiating Controllers.) A logical system is the set of all logical units and target routines to which a connect has been made. The set of paths available to an I/O process is fixed when each H_C_x_y nexus is established; an H_C nexus uses only the path where the connect was made. LOGICAL UNIT. An addressable function within a target controller which exe- cutes active I/O processes. A logical unit has a name, the logical unit number or LUN, and a set of commands to execute. Often, there is a one-to-one mapping between peripheral devices and logical units, but this is not required. A logical unit may be part of, all of, composed of more than one peripheral device, or it may have no peripheral device. LOGICAL UNIT NUMBER. The name of a logical unit used during an I/O process to select it to execute an I/O process for an H_C_L or H_C_L_Q nexus. LSB. Least significant bit. 3-8 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 LU. Logical unit LUN. Logical unit number. +---+ | M | +---+ M**N. A mathematical expression representing the number m raised to the n-th power. Both m and n are integer decimal numbers. MESSAGE. An organized collection of bytes (1 or more) used for control between an initiating controller and a target controller for control of a nexus. Some message establish conditions which persist beyond the I/O process in which the condition was established. This term differentiates these data from a CDB, command parameter data, command response data, status, autosense, and a logical block. MSB. Most significant bit. MSG. Message. MULTIPLE PATH MODE. A condition for one I/O process where connections may be made on any path in the established path group where the connect occurred. While operating in multiple path mode, an I/O process may operate in single path status mode or multiple path status mode; the initiating controller establishes the desired operating condition when the connect is made. See definitions for single path status mode and multiple path status mode. For an implicitly named path or an ungrouped path see single path mode. MULTIPLE PATH STATUS MODE. A condition in a path group where any status is transferred on any path in the established path group where a connect is made. +---+ | N | +---+ NAME BIT. A field containing only one bit. "name" is replaced with a uniquely identifying phrase. NEXUS. A relationship between an initiating controller and a target con- troller that begins with an initial connection and ends with the completion of the associated I/O process. The relationship may be restricted to operate in single path mode. The relationship may be restricted to a single logical unit or target routine through the identify function. Each initiating con- troller and target controller may have zero, one, or more nexus established at one time. Section 3. Glossary and Conventions 3-9 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---+ | O | +---+ ONE. A true signal value, a single bit field with a value of 1b, or a field value numerically equal to 1b. OTHER PERIPHERAL DEVICE. A peripheral device which is in one of the fol- lowing device classes: scanner, medium changer, or graphic arts (2 classes). A peripheral device in a device class considered as 'other' cannot be a source or destination in a COPY, COMPARE, or COPY AND VERIFY command. See stream and block peripheral device definitions. +---+ | P | +---+ PAGE. Regular, self-describing sets of fields used with some command param- eter data and command response data. Each page has a page code. PAGE CODE. A field within a page whose value is unique within a command. The page code provides the means to interpret the remaining fields in a page. PARAMETER. A parameter is the value of a field. PASSWORD. An identifier used to permit otherwise unauthorized access to an assigned target controller function. PATH. A path is a named link between an initiating controller and a target controller function. At least one connect has been made from the initiating controller to the target controller function. The name consists of: an ICID; an SPP Address for the an initiator port; the initiating controller port number; the target controller port number; an SPP Address for the target controller; and, the valid LUN or TRN of the selected logical unit or target routine. A path begins as an implicitly named path and may be modified to an explicitly named path by an initiating controller. Only paths which have been explicitly named participate in established path groups. A path may be grouped or ungrouped. PATH GROUP. A path group is a cooperating set of paths in a logical path. The logical path consists a non-empty set of explicitly named paths. PENDING SENSE DATA. sense data for a contingent allegiance or extenced con- tingent allegiance not sent to the initiating controller as an autosense ILE when the status for the I/O process was sent. It is held in the target con- troller until retrieved or deleted by an action from the initiating con- troller, or by an internal target controller equivalent to a power cycle. PERIPHERAL DEVICE. A physical device attaching to an SPP device. A periph- eral device and a SPP device may be one unit. Examples of peripheral devices are: magnetic disks, an array of magnetic disks, printers, optical disks, magnetic tapes, and initiating controllers. Initiating controllers, as processor device class, are also peripheral devices. 3-10 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 PHYSICAL BLOCK. The minimum recording unit, in bytes, for certain device classes. The physical block may be fixed or variable in length and is device class dependent. PORT. A port is the name for the portion of an SPP device where it attaches to one SPP bus. An SPP device may have more than one port. Each port may attach to a different SPP bus. One port functions in either initiator mode or target mode during a connection. Each port has an SPP address. (Parallel interfaces.) Initiating controllers translate the SPP address into a SPI ID for arbitration. PORT NUMBER. A unique number for each port assigned by the controlling logical element. +---+ | Q | +---+ QIOP. Queued I/O process. QIOPQ. Queued I/O process queue. QUEUE TAG. The parameter associated with an I/O process that uniquely iden- tifies it from other tagged I/O processes for a logical unit from the same initiating controller. The queue tag is not related to the path or paths used for the I/O process; it is related only to the initiating controller and logical unit. QUEUED I/O PROCESS. An I/O process that is in the queued I/O process queue and is not in the active I/O process queue. The state of an I/O process in an initiating controller may be different from the state in the target con- troller associated with the same I/O process. (Initiating Controller.) An I/O process for which a connect has not been made. (Target Controller.) An untagged or a tagged I/O process which is not active. QUEUED I/O PROCESS QUEUE. A queue in either an initiating controller or a target controller to hold all or part of zero or more I/O processes before acceptance and execution. The I/O processes may be either tagged or untagged. QUEUEING FUNCTION. A process in a logical element which transfers or relates ILEs from an information packet to an I/O process in the queued I/O process queue (i.e., not active). The organization of the queued I/O process queue is controlled by the logical element. +---+ | R | +---+ RECEIVE. When applied to I/O processes, the result of transfer of an infor- mation packet between two logical elements. An information packet is checked and must be accepted before any action is taken relative to its ILEs. An Section 3. Glossary and Conventions 3-11 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 information packet which is received from an initiating controller not per- mitted access to a target controller is rejected with an appropriate status. An information packet which is received from an authorized initiaging con- troller, but which has logical construction or content errors is not accepted; the I/O process is termintated with a message or contingent alle- giance as appropriate for the error. Contrast with accept and execute. RECONNECT. The act of reviving a nexus to continue an I/O process. The con- nection may be on the same initiator and target pair as the last connection or on a different pair when using multiple path mode. The action taken to revive the nexus depends on the initiating controller conditions established in the target controller. A reconnect results by successfully establishing the conditions appropriate for the physical bus to transfer an information packet associated with a nexus between an initiator and a target. RECONNECTION. A reconnection is the result of a reconnect. (Parallel Inter- faces.) After a connect, a reconnection exists from the end of a subsequent SELECTION phase by either the initiating controller or the target controller until the next disconnect for an I/O process in an initiating controller. (Serial Interfaces.) After a connect, a reconnection exists while the receiving port is actively receiving an information packet for an I/O process in an initiating controller (i.e., transmission does not constitute a recon- nection since the fabric may prevent delivery). RESERVED. The term used for bits, fields, code values, and bus phases set aside for future standardization. +---+ | S | +---+ SCSI. SCSI-3. SCSI-3. Small Computer System Interface - 3 (X3.xxx-199X). SENSE DATA. Autosense data or command response data formatted according to SPP rules which identify the reason for contingent allegiance or extended contingent allegiance. The target controller also prepares sense data according to the same rules when a REQUEST SENSE command executes and neither a contingent allegiance nor an extended contingent allegiance condition exists. For contingent allegiance and extended contingent allegiance, Sense data may be held in the target controller and transferred when requested by a REQUEST SENSE command or as an autosense ILE following the status ILE when the error is reported. SIGNAL ASSERTION. (Parallel interfaces.) The act of driving a signal to the true state. (??? SSI GRS) SIGNAL NEGATION. (Parallel interfaces.) The act of driving a signal to the false state or allowing the cable terminators to bias the signal to the false state. (??? SSI GRS) 3-12 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 SIGNAL RELEASE. (Parallel interfaces.) The act of allowing the cable termi- nators to bias the signal to the false state. (??? SSI GRS) SINGLE PATH MODE. A condition in a path group for one I/O process where single path status mode is in effect and all connections are made on the path where the connect occurred. An implicitly named path or an ungrouped path is in single path mode since it cannot cooperate with any other path. SINGLE PATH STATUS MODE. An attribute of a path group where status leading to a contingent allegiance or extended contingent allegiance is transferred on the path where the connect occurred. An implicitly named path or an ungrouped path is in single path status mode since it cannot cooperate with any other path. SINGULAR. An attribute of an SPP command which prohibits its execution if it follows a command in an I/O process which has the Link bit set to 1 or which has the Link bit in its CDB is set to 1. SPI ID. (Parallel interfaces.) The bit-significant representation of the SPP address referring to one of the data bus signal lines available to the SPP device, excluding parity lines. SPP. SCSI-3 Packetized Protocol. SPP ADDRESS. The unique address for one port on an SPP device. The SPP address is unique on a SPP bus. Multiple ports on the same SPP device con- nected to the same SPP bus have different SPP addresses. The form of the SPP address varies with the physical interface used. The field value assigned to the source and destination fields of the interface control prefix fields. (Parallel interfaces.) The SPP address is a translation of the SPI ID for its port. The number of valid SPP addresses on a SPI bus is a function of the maximum data bus width of all attached ports. (Serial interfaces.) Neither the SPP address nor the number of SPP devices on a serial interface translates to the number of signal lines in the interface. SPP BUS. (Parallel interfaces.) A SPI port and the set of all ports, inter- connecting cables, etc., to and through which the port communicates. If a SPI port has bus signals connecting two external connectors, that portion of the SPI port is part of the SPP bus. The maximum number of SPI ports is 8 times bus width (in bytes, not including parity signals). (Serial inter- faces.) The set of all SPP devices to which a single SPP port can communi- cate. SPP DEVICE. A device capable of attaching to one or more SPP busses via one or more ports. The device may allow a port to function in either initiator mode or target mode for any one connection. Each SPP port is capable of both modes. SPP PORT. Port. STATUS. One field sent from a target controller at the completion of each command. Status is also produced to report some conditions which occur in an I/O process when a command is not executing. Most status reports result in ending an I/O process. This term differentiates these data from a message, a Section 3. Glossary and Conventions 3-13 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 CDB, command parameter data, command response data, autosense, and logical block data. STORAGE DEVICE. A peripheral device which is capapable of reading and optionally writing logical blocks to a medium. Some storage devices have the medium prepared so that a write process is not incorporated in the storage device (e.g., CDROM). Most storage devices permit writing at least once; reading may occur multiple times in all storage devices. STREAM PERIPHERAL DEVICE. A peripheral device which is in one of the fol- lowing device classes: sequential access, printer, processor or communi- cations. A peripheral device in a device class considered as 'stream' can be a source or destination in a COPY, COMPARE, or COPY AND VERIFY command. See block and other peripheral device definitions. SUPERVISOR COMMAND. A command which may not be executed by a target con- troller unless specifically authorized. +---+ | T | +---+ TARGET. An SPP port, operating in target mode, thorough which I/O processes pass for execution by a target controller function. A target usually attaches to a target controller. A target uses one port to one SPP bus. TARGET CONTROLLER. A logical element which principally executes I/O proc- esses. Active I/O processes execute using the services of one or more ports available to the target controller in target mode. (Serial Interfaces.) The ports may reside in one or more Fiber Channel nodes. TARGET CONTROLLER FUNCTION. A logical unit or a target routine. TARGET MODE. The current operating mode of a port which permits the port to be selected by another port on the same SPP bus. TARGET ROUTINE. An addressable function within a target controller which executes active I/O processes. A target routine has a name, a target routine number or TRN, and a command set to execute. TARGET ROUTINE NUMBER. The name of a target routine used during an I/O process to select it to execute an I/O process. THIRD-PARTY. For copy operations, third-party means a copy operation managed by one target controller which is not a source or destination of the copy operation. For multiple path operations, third-party means an assignment made for a path group from another path group. TR. Target routine. TRN. Target routine number. 3-14 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---+ | U | +---+ UNASSIGNED. An attribute of target controller functions which permits the function to respond to I/O processes on any path. UNEXPECTED DISCONNECT. A disconnection that occurs because of a protocol error. UNGROUPED. The state of a path when it is not a member of a path group. The path may be an implicitly named path or an explicitly named path. +---+ | V | +---+ VENDOR SPECIFIC. Something (e.g., a bit, field, code value, etc.) this standard identifies, but its use is not defined by this standard and may be used differently in various implementations. VS. Vendor specific. +---+ | W | +---+ . +---+ | X | +---+ XX. Digits 0-9, except those used as section numbers, in the text of this standard that are not immediately followed by lower-case "b" or "h" are decimal values. Large numbers are not separated by commas or spaces (e.g., 12345; not 12,345 or 12 345). XXB. Digits 0 and 1 immediately followed by lower-case "b" are binary values. XXH. Digits 0-9 and the upper-case letters "A"-"F" immediately followed by lower-case "h" are hexadecimal values. Section 3. Glossary and Conventions 3-15 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---+ | Y | +---+ . +---+ | Z | +---+ ZERO. A false signal value or a field with a value of 0b in each bit posi- tion. 3.2 EDITORIAL CONVENTIONS __________________________ Certain words and terms used in this standard have specific meanings beyond the normal English meaning. Glossaries define these words and terms or the definition appears at first use in the text. Names of signals, phases, mes- sages, commands, statuses, sense keys, additional sense codes, and additional sense code qualifiers are in all upper-case (e.g., REQUEST SENSE). Normal English capitalization (or lack thereof) is used for other words. Words have the normal technical English definition unless the word or phrase is defined in context or in a glossary, then that definition is used. Some words may have definitions unique to the sections where they are used. Every effort has been made to limit the number of such instances. 3.3 RELATIONSHIP OF ESSENTIAL SPP TERMS ________________________________________ Some terms defined in the glossaries of this section, have a relationship to one another as shown pictorially below. 3-16 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---------------------------------------------------------------------------+ | | | LOGICAL SYSTEM | | | | | | - SSI BUS OR SPI BUS | | | | - INITIATING CONTROLLER -> PORT -> PORT -> TARGET CONTROLLERS -> LU OR|TR | | | | (CONNECT) | | - LOGICAL SYSTEM CONSISTS OF ALL LU OR TR | | FOR WHICH A CONNECT HAS BEEN MADE | | - HAS AN ICID | | | | - LU OR TR -> TARGET CONTROLLER -> PORT -> PORT -> INITIATING CONTROLL|R | | | | (CONNECT) | | - LOGICAL SYSTEM CONSISTS OF ALL INITIATING CONTROLLERS | | FROM WHICH A CONNECT HAS BEEN MADE | | - HAS A LUN OR TRN, RESPECTIVELY | | - ASSIGNED OR UNASSIGNED | | | | - LOGICAL PATH | | - ICID || LUN OR TRN IN SAME TARGET CONTROLLER | | - PATH (PHYSICAL) | | - ICID || INITIATOR PORT NUMBER || INITIATOR SPP ADDRESS | | || TARGET SPP ADDRESS || TARGET PORT NUMBER | | || LUN OR TRN | | - IMPLICITLY NAMED PATH | | - UNGROUPED | | - SINGLE PATH MODE | | - SINGLE PATH STATUS MODE | | - EXPLICITLY NAMED PATH | | - UNGROUPED | | - GROUPED | | | | - PATH GROUP | | - ONLY EXPLICITLY NAMED PATHS | | - UNGROUPED PATHS | | - SINGLE PATH MODE | | - SINGLE PATH STATUS MODE | | - GROUPED PATHS | | - MULTIPLE PATH MODE DEFAULT | | - SINGLE PATH MODE SELECTABLE | | - SINGLE PATH STATUS MODE OR MULTIPLE PATH STATUS MODE | | - MAY HAVE A PASSWORD | | | +---------------------------------------------------------------------------+ Figure 3-1. Relationship of SPP Terms (Part 1 of 7) Section 3. Glossary and Conventions 3-17 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---------------------------------------------------------------------------+ | | | LOGICAL ELEMENT | | | | | | - AN INITIATING CONTROLLER (HAS AN ICID) | | - STARTS I/O PROCESSES | | | | - A TARGET CONTROLLER | | - EXECUTES I/O PROCESSSS | | - HAS ONE OR MORE LOGICAL UNITS | | - HAS A LUN | | - FIRST LUN IS ZERO, CONTIGUOUS NUMBERING | | - HAS A COMMAND SET | | - HAS A PERIPHERAL DEVICE CLASS | | - HAS ZERO OR MORE PERIPHERAL DEVICES | | - MAY HAVE LOGICAL BLOCKS | | - MAY BE RESERVED | | - MAY HAVE AN EXTENT RESERVED | | - HAS ZERO OR MORE TARGET ROUTINES | | - HAS A TRN | | - FIRST TRN IS ZERO, CONTIGUOUS NUMBERING | | - HAS A COMMAND SET | | - HAS A PERIPHERAL DEVICE CLASS | | | | - ATTACHES TO AT LEAST ONE SPP BUS | | | | - HAS AT LEAST ONE PORT | | - RETAINS TRANSFER PARAMETERS BY PORT || OTHER LOGICAL ELEMENT | | - IN INITIATOR MODE BECOMES AN INITIATOR | | - IN TARGET MODE BECOMES A TARGET | | - HAS A SPP ADDRESS (BECOMES SPI ID - PARALLEL) | | | | - MAINTAINS NEXUS STATUS AND CONTROL | | | | - MAINTAINS I/O PROCESS STATUS AND CONTROL | | | | - HAS A QUEUED I/O PROCESS QUEUE | | - HAS ZERO OR MORE QUEUED I/O PROCESSES | | | | - HAS AN ACTIVE I/O PROCESS QUEUE | | - HAS ZERO OR MORE ACTIVE I/O PROCESSES | | | | - HAS A MAXIMUM OF ONE CURRENT I/O PROCESS PER PORT | | - SELECTED FROM ACTIVE I/O PROCESS QUEUE OR | | QUEUED I/O PROCESS QUEUE | | - RETURNED TO SAME QUEUE AT END OF CONNECTION | | | +---------------------------------------------------------------------------+ Figure 3-2. Relationship of SPP Terms (Part 2 of 7) 3-18 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---------------------------------------------------------------------------+ | | | NEXUS | | | | - H_C NEXUS | | - H_C_X_Y NEXUS | | - H_C_X NEXUS | | - H_C_L | | - H_C_R | | - H_C_L_Q | | | | - FOR SINGLE PATH MODE REPLACE H_C WITH H_I_T_C | | | | - REQUIRES AN I/O PROCESS | | - HAS ZERO OR MORE COMMANDS | | - MADE UP OF ONE OR MORE INFORMATION PACKETS | | - MAY BE A QUEUED I/O PROCESS IN QUEUED I/O PROCESS QUEUE | | - MAY HAVE A QUEUE TAG | | - MAY BECOME A CURRENT I/O PROCESS WITH ANY | | CONNECTION ON THE ELIGIBLE SET OF PATHS | | STARTED BY AN INITIATING CONTROLLER | | - MAY BE AN ACTIVE I/O PROCESS IN ACTIVE I/O PROCESS QUEUE | | - QUEUED I/O PROCESSES TRANSFER TO ACTIVE I/O PROCESS QUEUE | | FOR EXECUTION | | - MAY HAVE A QUEUE TAG | | - MAY BECOME A CURRENT I/O PROCESS WITH ANY | | CONNECTION ON THE ELIGIBLE SET OF PATHS | | | | LEGEND: | | | | H = INITIATING CONTROLLER | | C = TARGET CONTROLLER | | I = INITIATOR | | T = TARGET | | | | | +---------------------------------------------------------------------------+ Figure 3-3. Relationship of SPP Terms (Part 3 of 7) Section 3. Glossary and Conventions 3-19 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---------------------------------------------------------------------------+ | | | INFORMATION PACKET | | - INTERFACE CONTROL FIELDS | | - INTERFACE CONTROL PREFIX FIELDS | | - INTERFACE CONTROL SUFFIX FIELDS | | - INTERFACE LOGICAL ELEMENTS | | | | | | INTERFACE LOGICAL ELEMENTS | | | | - MESSAGE | | - COMMAND DESCRIPTOR BLOCK | | - COMMAND PARAMETER DATA | | - BURST | | - MAY HAVE PAGES | | - PAGE CODES | | - MAY USE MULTIPLE PATHS | | - COMMAND RESPONSE DATA | | - BURST | | - MAY HAVE PAGES | | - PAGE CODES | | - MAY CONTAIN SENSE DATA | | - MAY USE MULTIPLE PATHS | | - LOGICAL BLOCK DATA | | - BURST | | - MAY USE MULTIPLE PATHS | | - STATUS | | - SOME CODES CAUSE CONTINGENT ALLEGIANCE | | - HAS PRESERVED SENSE DATA | | - MAY BE TRANSFERRED AS AUTOSENSE | | - ASYNCHRONOUS EVENT NOTIFICATION ALLOWED | | - SOME CODES MAY CAUSE EXTENDED CONTINGENT ALLEGIANCE | | - HAS PRESERVED SENSE DATA | | - MAY BE TRANSFERRED AS AUTOSENSE | | - ASYNCHRONOUS EVENT NOTIFICATION ALLOWED | | - OTHER CODES - NO ALLEGIANCE | | - AUTOSENSE | | - CONTAINS ONLY SENSE DATA | | - BURST | | | +---------------------------------------------------------------------------+ Figure 3-4. Relationship of SPP Terms (Part 4 of 7) 3-20 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---------------------------------------------------------------------------+ | | | LOGICAL ACTIVITY TERMS (OVER TIME) | | | | --------- INITIATING CONTROLLER QUEUED I/O PROCESS -------- | | ------------------------ BECOMES -------------------------- | | --------- INITIATING CONTROLLER ACTIVE I/O PROCESS -------- | | ------------------------ USES -------------------------- | | ------------------------- NEXUS --------------------------- | | ------ BECOMES ------ ------ BECOMES ----- | | CURRENT I/O PROCESS CURRENT I/O PROCESS | | | | I/O BUS ACTIVE | | +-------------------+ +------------------+ | | | | | | | | ---+ +------------------+ +--- | | I/O BUS INACTIVE | | INFORMATION PACKET INFORMATION PACKET | | TRANSFER OUT TRANSFER OUT | | | | CONNECTION DISCONNECT CONNECTION DISCONN|CT | CONNECT RECONNECT | | INITIAL CONNECTION RECONNECTION | | | | --------------------- ESTABLISHES ----------------------- | | ---------------------- NEXUS ------------------------ | | ------------------------ BECOMES -------------------------- | | ----------- TARGET CONTROLLER QUEUED I/O PROCESS ---------- | | ------------------------ BECOMES -------------------------- | | ----------- TARGET CONTROLLER ACTIVE I/O PROCESS ---------- | | ------ BECOMES ------ ------ BECOMES ----- | | CURRENT I/O PROCESS CURRENT I/O PROCESS | | | | I/O BUS ACTIVE | | +-------------------+ +------------------+ | | | | | | | | ---+ +------------------+ +--- | | I/O BUS INACTIVE | | INFORMATION PACKET INFORMATION PACKET | | TRANSFER IN OR OUT TRANSFER IN OR OUT | | | | CONNECTION DISCONNECT CONNECTION DISCONN|CT | RECONNECT RECONNECT | | RECONNECTION RECONNECTION | | | | ------------------ I/O PROCESS TERMINATES ----------------- | | | | | | CONNECTION | | - FROM A CONNECT RESULTS AN INITIAL CONNECTION | | - FROM A RECONNECT RESULTS IN A RECONNECTION | | - EACH ENDS WITH A DISCONNECT | | | +---------------------------------------------------------------------------+ Section 3. Glossary and Conventions 3-21 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 Figure 3-5. Relationship of SPP Terms (Part 5 of 7) +---------------------------------------------------------------------------+ | | | SPP DEVICE | | | | CONFIGURATIONS TO SEND AN INFORMATION PACKET | | FOR A CONNECT OF AN I/O PROCESS | | | | SPP DEVICE IN INITIATOR MODE | | | | | | +--------------------------+ | | | SPP DEVICE | | | +-----------+--------------------------| | | |INITIATING|| ||SPP PORT | | | |CONTROLLER|| INITIATOR || SPP ADDRESS |---SSI OR SPI BUS- | | | || MODE || SPI ID | | | | ICID || || (PARALLEL) | | | +--------------------------------------+ | | | | | | +--------------------------+ | | | SPP DEVICE | | | +----------------------+--------------------------| | | |PERIPHERAL|| TARGET || ||SPP PORT | | | |DEVICE(S) ||CONTROL- || INITIATOR || SPP ADDRESS |-SSI OR SPI BUS- | | | || LER || MODE || SPI ID | | | | || || || (PARALLEL) | | | +-------------------------------------------------+ | | | | | | | +---------------------------------------------------------------------------+ Figure 3-6. Relationship of SPP Terms (Part 6 of 7) 3-22 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---------------------------------------------------------------------------+ | | | SPP DEVICE | | | | CONFIGURATIONS TO RECEIVE AN INFORMATION PACKET | | FOR A CONNECT OF AN I/O PROCESS | | | | SPP DEVICE IN TARGET MODE | | | | | | +-----------------------+ | | | SPP DEVICE | | | +------------------------------+-----------------------| | | |PERIPHERAL||LOGICAL|| TARGET || ||SPP PORT | | | | DEVICE ||UNIT/ ||CONTROL-|| TARGET || SPP ADDRESS |---SSI OR SPI |US- | |----------||TARGET || LER || MODE || | | | |PERIPHERAL||ROUTINE|| || || SPI ID | | | | DEVICE || || || || (PARALLEL) | | | +------------------------------------------------------+ | | | | | | +-----------------------+ | | | SPP DEVICE | | | +--------------------------------------------| | | |LOGICAL|| || ||SPP PORT | | | |UNIT/ ||INITIATING|| TARGET || SPP ADDRESS |---SSI OR SPI BUS- | | |TARGET ||CONTROLLER|| MODE || SPI ID | | | |ROUTINE|| || || (PARALLEL) | | | +--------------------------------------------+ | | | | | +---------------------------------------------------------------------------+ Figure 3-7. Relationship of SPP Terms (Part 7 of 7) Section 3. Glossary and Conventions 3-23 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 3-24 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 PART 2. SPP PROTOCOL _____________________ SECTION 4. SPP LOGICAL OPERATIONS . . . . . . . . . . . . . . . . . . 4-1 4.1 Logical System Description . . . . . . . . . . . . . . . . . . . . 4-1 4.2 Description of Logical Operations . . . . . . . . . . . . . . . . 4-2 4.3 Mandatory Requirements . . . . . . . . . . . . . . . . . . . . . . 4-5 4.4 Logical System Definition . . . . . . . . . . . . . . . . . . . . 4-6 4.5 I/O Processes . . . . . . . . . . . . . . . . . . . . . . . . . 4-11 4.5.1 I/O Process Parameter Requirements (Mandatory) . . . . . . . 4-11 4.5.2 I/O Process Sense Data (Mandatory) . . . . . . . . . . . . . 4-12 4.5.3 SPP Identification . . . . . . . . . . . . . . . . . . . . . 4-12 4.5.3.1 Initiating Controller Identification (Optional) . . . . 4-13 4.5.3.2 SPP Address for a Port (Mandatory) . . . . . . . . . . . 4-13 4.5.3.3 Logical Units (Mandatory) . . . . . . . . . . . . . . . 4-13 4.5.3.4 Target Routines (Optional) . . . . . . . . . . . . . . . 4-13 4.6 Queued I/O Processes (Mandatory) . . . . . . . . . . . . . . . . 4-14 4.6.1 Untagged I/O Processes (Mandatory) . . . . . . . . . . . . . 4-14 4.6.2 Tagged I/O Processes (Optional) . . . . . . . . . . . . . . 4-15 4.6.3 Concurrent I/O Processes Execution . . . . . . . . . . . . . 4-19 4.7 Programmable Operating Definition (Parallel) (Optional) . . . . 4-19 4.8 I/O Process Termination . . . . . . . . . . . . . . . . . . . . 4-20 4.8.1 Normal I/O Process Termination . . . . . . . . . . . . . . . 4-20 4.8.2 Abnormal I/O Process Termination . . . . . . . . . . . . . . 4-21 4.8.2.1 Initiating Controller Caused Termination . . . . . . . . 4-21 4.8.2.2 Target Controller Caused Termination . . . . . . . . . . 4-21 4.9 Logical Unit Reservation Termination (Mandatory) . . . . . . . . 4-21 4.10 Path Group Operations (Optional) . . . . . . . . . . . . . . . 4-21 4.10.1 Single Path Mode . . . . . . . . . . . . . . . . . . . . . 4-22 4.10.2 Multiple Path Mode . . . . . . . . . . . . . . . . . . . . 4-22 4.10.3 Single Path Status . . . . . . . . . . . . . . . . . . . . 4-22 4.10.4 Multiple Path Status . . . . . . . . . . . . . . . . . . . 4-22 4.11 Assignment Termination (Optional) . . . . . . . . . . . . . . . 4-22 4.12 Path Group Termination (Optional) . . . . . . . . . . . . . . . 4-22 SECTION 5. SPP I/O PROCESS STRUCTURE . . . . . . . . . . . . . . . . . 5-1 5.1 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 5.1.1 Command Set Implementation Requirements (Mandatory) . . . . . 5-2 5.1.2 Reserved (Mandatory) . . . . . . . . . . . . . . . . . . . . . 5-2 5.1.3 Command Descriptor Block . . . . . . . . . . . . . . . . . . . 5-3 5.1.4 Operation Code (Mandatory) . . . . . . . . . . . . . . . . . . 5-5 5.1.5 Logical Block Address . . . . . . . . . . . . . . . . . . . . 5-5 5.1.6 Transfer Length . . . . . . . . . . . . . . . . . . . . . . . 5-6 5.1.7 Command Parameter Data Length . . . . . . . . . . . . . . . . 5-7 5.1.8 Command Response Data Length . . . . . . . . . . . . . . . . . 5-7 5.1.9 Control Field (Mandatory) . . . . . . . . . . . . . . . . . . 5-8 5.1.9.1 Link Bit (Mandatory) . . . . . . . . . . . . . . . . . . . 5-8 5.1.9.2 Flag Bit (Mandatory) . . . . . . . . . . . . . . . . . . . 5-9 5.2 Status (Mandatory) . . . . . . . . . . . . . . . . . . . . . . . . 5-9 5.2.1 Status Codes (Mandatory) . . . . . . . . . . . . . . . . . . 5-11 5.2.2 Status Code Reporting Priority (Mandatory) . . . . . . . . . 5-13 Part 2. SPP Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 5.3 Contingent Allegiance Condition (Mandatory) . . . . . . . . . . 5-14 5.4 Extended Contingent Allegiance Condition (Optional) . . . . . . 5-15 5.5 Asynchronous Event Notification (Mandatory) . . . . . . . . . . 5-16 SECTION 6. SPP INFORMATION PACKET STRUCTURE . . . . . . . . . . . . . 6-1 6.1 Information Packet Structure . . . . . . . . . . . . . . . . . . . 6-1 6.1.1 Interface Control Fields (Mandatory) . . . . . . . . . . . . . 6-2 6.1.2 Interface Logical Elements (Mandatory) . . . . . . . . . . . . 6-6 6.1.2.1 Message Interface Logical Element . . . . . . . . . . . . 6-8 6.1.2.2 Command Descriptor Block Interface Logical Element . . . . 6-8 6.1.2.3 Command Parameter Data Interface Logical Element . . . . . 6-8 6.1.2.4 Command Response Data Interface Logical Element . . . . . 6-8 6.1.2.5 Logical Block Data Interface Logical Element . . . . . . . 6-9 6.1.2.6 Status Interface Logical Element . . . . . . . . . . . . . 6-9 6.1.2.7 Autosense Interface Logical Element (Optional) . . . . . . 6-9 SECTION 7. SPP I/O PROCESS CONTROL . . . . . . . . . . . . . . . . . . 7-1 7.1 Messages (Mandatory) . . . . . . . . . . . . . . . . . . . . . . . 7-1 7.1.1 ABORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 7.1.2 ABORT I/O PROCESS . . . . . . . . . . . . . . . . . . . . . . 7-6 7.1.3 BUS DEVICE RESET . . . . . . . . . . . . . . . . . . . . . . . 7-7 7.1.4 CLEAR QUEUE . . . . . . . . . . . . . . . . . . . . . . . . . 7-7 7.1.5 I/O PROCESS COMPLETE . . . . . . . . . . . . . . . . . . . . . 7-7 7.1.6 EXTENDED MESSAGE REJECT . . . . . . . . . . . . . . . . . . . 7-8 7.1.7 INITIATE RECOVERY . . . . . . . . . . . . . . . . . . . . . . 7-9 7.1.8 INVALID BUS PHASE DETECTED (Parallel) . . . . . . . . . . . . 7-9 7.1.9 INVALID INFORMATION PACKET . . . . . . . . . . . . . . . . . 7-10 7.1.10 LINKED COMMAND COMPLETE . . . . . . . . . . . . . . . . . . 7-11 7.1.11 LINKED COMMAND COMPLETE (WITH FLAG) . . . . . . . . . . . . 7-12 7.1.12 MODIFY DATA POSITION . . . . . . . . . . . . . . . . . . . 7-12 7.1.13 PARITY ERROR (Parallel) . . . . . . . . . . . . . . . . . . 7-12 7.1.14 RELEASE RECOVERY . . . . . . . . . . . . . . . . . . . . . 7-13 7.1.15 RESEND PREVIOUS INFORMATION PACKET . . . . . . . . . . . . 7-13 7.1.16 SYNCHRONOUS DATA TRANSFER REQUEST (Parallel) . . . . . . . 7-14 7.1.17 SYNCHRONOUS PACKET TRANSFER REQUEST . . . . . . . . . . . . 7-16 7.1.18 TERMINATE I/O PROCESS . . . . . . . . . . . . . . . . . . . 7-18 7.1.19 TRANSFER READY . . . . . . . . . . . . . . . . . . . . . . 7-20 7.2 Command Processing Considerations and Exception Conditions . . . 7-21 7.2.1 Unit Attention Condition . . . . . . . . . . . . . . . . . . 7-21 7.2.2 Incorrect Initiating Controller Connection . . . . . . . . . 7-23 7.2.3 I/O Processes for an Invalid LUN or TRN . . . . . . . . . . 7-23 7.2.4 Parameter Rounding . . . . . . . . . . . . . . . . . . . . . 7-24 7.2.5 Unsuccessful I/O Process Termination Condition . . . . . . . 7-24 7.2.6 Reset Condition (Mandatory) . . . . . . . . . . . . . . . . 7-25 7.2.7 Unsuccessful Information Packet Transfer Condition . . . . . 7-26 7.2.8 Unexpected Disconnect Condition . . . . . . . . . . . . . . 7-26 7.2.9 Attention Condition (Parallel) . . . . . . . . . . . . . . . 7-26 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 SECTION 4. SPP LOGICAL OPERATIONS __________________________________ This section contains the logical system description of SPP. All I/O processes are accomplished by transferring information packets com- posed of interface logical elements. Initiating controllers and target con- trollers interpret the interface logical elements. Interface logical elements are messages, command descriptor blocks, command parameter data (additional data required for some commands), command response data (data not from logical blocks), logical blocks, autosense, and status. Initial information packet transfers on a SPI bus, are in asynchronous data transfer mode to perform synchronous data transfer negotiation only. For serial interface implementations, all transfers are in synchronous data transfer mode. 4.1 LOGICAL SYSTEM DESCRIPTION _______________________________ This section describes the logical system for an SPP environment to perform device-independent activity using one or more SPP busses. Figure 4-2 on page 4-10 shows the relationship of several terms from the glossary related to the mimimum logical system. The SCSI-3 Packetized Protocol, as viewed by initiating controllers and target controllers, is shown in Figure 4-1 on page 4-2. The initiating con- troller prepares an information packet and sends it to the target controller using the services of a transport layer. The target controller receives the complete information packet, interprets it, and prepares a response in the form of an information packet. It sends the information packet in the same manner as the initiating controller. The initiating controller receives a complete information packet as a result of the transmission. This exchange of information packets continues until an I/O process is com- plete. Information packets for multiple I/O processes may be multiplexed by both the initiating controller and the target controller to the same or dif- ferent devices. Section 4. SPP Logical Operations 4-1 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 +---------------------------------------------------------------------------+ | | | INITIATING CONTROLLER TARGET CONTROLLER | | | | +-----+ +-----+ | | | B | | B | | | | U | SPP | U | | | | F |<------INFORMATION PACKETS ------>| F | | | | F | | F | | | | E | | E | | | | R | | R | | | +---A-+ +-A---+ | | | | | | | | | | | | | | | +<-----+ +--------+ | | | | | | | | | | +-----+ | | +-->+ | | | | | | | | | | | | | | | | | | | | | | | | | +-V-----+ SPP PORTS +--V----+ | | | | | | | T | | T | | | | | | | | R | | R | | | | | +--V----+ A L |<---------------->| A L +----V--+ | | | T | N A | | N A | T | | | | R | S Y | SSI AND/OR SPI | S Y | R | | | | A L | P E | BUS(BUSSES) | P E | A L | | | | N A | O R | | O R | N A | | | | S Y |<------------------------------>| S Y | | | | P E | T | | T | P E | | | | O R |------+ +------| O R | | | | R | | R | | | | T | | T | | | +-------+ +-------+ | | | +---------------------------------------------------------------------------+ Figure 4-1. SPP High Level Protocol 4.2 DESCRIPTION OF LOGICAL OPERATIONS ______________________________________ An I/O process consists of a minimum of one information packet. Such an I/O process is concerned only with messages, such as BUS DEVICE RESET, which do not require a response from the target controller as part of an I/O process. Most I/O processes consists of at least two information packets. One infor- mation packet is sent from the initiating controller to the target controller to request some function(s) be performed. The target controller responds at completion of the function with an information packet indicating the status of the request(s). I/O processes which transfer logical blocks may require many information packets. The form of the request to perform a function is called a command descriptor block. Each command descriptor block is fixed length. Some commands need to transfer more data than can fit into the command descriptor block. This 4-2 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 additional data is called command parameter data. It is variable in length with the length specified in the command descriptor block. For commands which do not transfer logical block data, the target controller checks the command descriptor block and the command parameter data, if any. If they are correctly formed with valid values, the target controller exe- cutes the command. When execution is complete and successful, the target controller forms an information packet containing the status of the command and a command completion message (there are three). The information packet, when received at the initiating controller is checked and the I/O process parameters are updated. An alternative form of a command has a command descriptor block with no command parameter data, but it requires that the target controller return data, other than logical block data, as command response data. Execution is similar to the command description above. For commands which transfer logical block data, more than two information packets may be needed. For write-type commands, the initiating controller places the command descriptor block and possibly some of the logical block data in the first information packet and sends it. The target controller checks the command descriptor block as before. If it is correctly formed, the target controller can begin to process the logical block data, if present in the information packet. Meanwhile, the initiating controller may have filled up additional informa- tion packets and sent them, up to the limit agreed upon between the two logical elements. The target controller overlaps receipt of additional information packets with processing of each information packet. The target controller informs the initiating controller as the information packets are processed so that additional packets, if any, can be transferred. When all data has been transferred, the target controller finishes processing the data as specified by the MODE SELECT parameters and the command descriptor block. The status and command completion message are placed in an information packet and sent to the initiating controller. The I/O process is complete. The initiating controller can link several commands together to form larger I/O processes and place them in one or more information packets. I/O proc- esses with linked commands are treated as a unit by the target controller and the initiating controller. If, as is occasionally the case, the command descriptor block contains an error, the command is not executed. Any interface logical elements following the command descriptor block are not processed (i.e., treated as not having been received). Additional information packets for the I/O process are not processed. Detecting the error requires the target controller to terminate the I/O process and prepare sense data to identify the error. The error condition indicated above requires no recovery action which involves the target controller. This condition is called a contingent alle- giance condition. If the condition is reported using an autosense informa- tion logical element, the condition is immediately cleared with successful Section 4. SPP Logical Operations 4-3 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 transfer of the information packet which transfers the status and autosense interface logical elements (ILEs). The I/O process is terminated. If the target controller does not transfer autosense, the target controller prepares an information packet with status to indicate an error and a command completion message. The information packet, without an autosense ILE, is sent to the initiating controller. The I/O process is terminated but the contingent allegiance conditions remains in effect. If the target controller sends only status it shall preserve the sense data for possible retrieval by the initiating controller. The initiating con- troller may form an new untagged I/O process with the first command being a REQUEST SENSE command and send it to the target controller. The target con- troller sends the sense data in response to the REQUEST SENSE command and clears the contingent allegiance condition. The initiating controller may also ignore the status and send some other command which causes the target controller to clear the contingent allegiance condition and the sense data. If the error is more significant and the target controller determines that the error requires a recovery process involving both the initiating con- troller and the target controller, the condition is called an extended con- tingent allegiance. In addition to the status and autosense data, a special message informs the initiating controller of this condition. The target con- troller restricts access to the logical unit until the initiating controller releases it from extended contingent allegiance by sending the target con- troller another special message. If an error is detected outside the bounds of an active I/O process, the target controller uses a protocol called asynchronous event notification to transfer appropriate sense data to affected initiating controllers. Asyn- chronous event notification may result in extended contingent allegiance. The protocol for notification and exit is similar to the preceding example. There are different kinds of data transferred in information packets which are never all transmitted in the same information packet. These data are called interface logical elements. The interface logical elements are command descriptor blocks, status, messages, command parameter data, command response data, autosense, and logical block data. As described above, a target controller may have multiple ILEs from one or more information packets available for an I/O process from an initiating con- troller befor starting or during execution of an I/O process. Additionally, the target controller may permit one I/O process from each other initiating controllers. This is called untagged queuing. The depth of the queue is implementation dependent. The maximum depth shall not exceed one per initi- ating controller per logical unit or target routine. The minimum depth is one I/O process allowed in the target controller at a time. The target con- troller may execute these I/O processes in any order is deems appropriate. The second level of queuing requires the initiating controller to assign a code or a tag to each of its I/O processes for each logical unit. If the target controller has implemented this level of queuing, the target con- troller may have several I/O processes for the same initiating controller in 4-4 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 the I/O process queues for the same logical unit as well as I/O processses from other initiating controllers. This is called tagged queuing. This section has described, generally, the major elements of SPP I/O process flow. See the glossary for complete definitions of the terms introduced above. Details are covered in the following sections. Interoperability con- siderations with SPP logical elements are described below. The specific rules governing execution of I/O processes is discussed in subsequent sections. Some detailed examples are found in -- Heading 'APPA' unknown --. 4.3 MANDATORY REQUIREMENTS ___________________________ Mandatory requirements for logical operation placed on initiating controllers and target controllers include: 1) All ports shall implement an active initiator mode and an active target mode (i.e., dynamic switching of the port mode). 2) All SPP ports shall implement synchronous data transfer. (Serial Inter- faces.) Synchronous data transfer mode is the only transfer mode on the serial interface. (Parallel Interfaces.) Each SPI port shall negotiate for and be granted synchronous data transfer mode. All transfers, other than during synchronous negotiation shall be in synchronous data transfer mode. 3) (Parallel Interfaces.) A parallel SPI bus shall not have an intermix SPI ports of unequal DATA BUS widths. 4) (Parallel Interfaces.) All SPI ports which implement a DATA BUS width greater than one byte shall perform all information transfers at full bus width. 5) A port which normally acts as an initiator, when selected, shall enter target mode. An initiating controller shall declare itself as a processor device class in response to the INQUIRY command. 6) Initiating controllers shall respond correctly to asynchronous event notification (always enabled). 7) Target controllers shall implement initiator mode on each port to select initiators, to acquire the INQUIRY data to determine its principal initiating controllers, and to support asynchronous event notification. Events not occurring in the bounds of an I/O process are reported when they occur. 8) (Parallel Interface.) Initiating controllers and target controllers shall perform a synchronous data transfer negotiation as the first set of informa- tion transfers after any event which may make the synchronous negotiation invalid. The default state of a port at power-on shall be asynchronous data transfer mode. The state of a port after a reset event shall be asynchronous data transfer mode. 9) Target controllers shall implement the mandatory commands for both the common commands in SPP and for the implemented device class (in SDCS). Section 4. SPP Logical Operations 4-5 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 Within each command, all function defined as mandatory shall be implemented. This provides a minimum functional base for all implementations of a device class. 10) Logical elements shall implement untagged queuing. Tagged queuing is optional. 4.4 LOGICAL SYSTEM DEFINITION ______________________________ A logical system consists eighteen (19) items. Items 1) through 14) are man- datory; items 15) thorugh 19) are optional. 1) a minimum logical system consists of two SPP ports and one SPP bus con- necting them. 2) each SPP port is capable of operating in initiator mode (called an initi- ator) on its SPP bus. 3) each SPP port is capable of operating in target mode (called a target) on its SPP bus. 4) the initiator and target in Items 2 and 3 above, attach to the same SPP bus and are active in their respective modes during a connection between them (i.e., not the same port); the two ports may reverse modes for each con- nection. 5) the logical element attaching an SPP device which principally starts I/O processes is called an initiating controller. An initiating controller con- trols one or more ports per item 2. The same ports are used for target mode per item 3. 6) the logical element attaching an SPP device which principally receives and executes I/O processes is called a target controller. A target controller controls one or more ports per item 3. The same ports are used for initiator mode per item 2. NOTE: The names given to the logical elements attaching an SPP device do not prevent any SPP device from using all functions of SPP. The word "principally" in Items 5 and 6 implies this. Thus, a copy manager, acting principally as a target controller, may act as an initiating controller and use all defined functions of the commands and the logical system to perform a copy operation. 7) each port has an SPP address unique to the SPP bus on which it attaches. (Parallel Interfaces.) The SPP address translates to the physical SPI ID on the SPI bus. The SPI ID may be the same or different for each port when each port attaches to a different SPI bus. 8) each port is assigned a port number by its controlling logical element. The port number is unique within each logical element. 9) each target controller has one or more logical units each identified by a unique logical unit number (LUN). LUNs are contiguous beginning at zero. 4-6 SCSI-3 Packetized Protocol SCSI WORKING DOCUMENT X3T9.2/91-013 R01 10) each target controller has zero or more target routines each identified by a target routine number (TRN). TRNs are contiguous beginning at zero. 11) the extent of a logical system, from a target controller, is the set of all initiating controller/initiator combinations attached, through one or more SPP busses, to the target controller and from which a connect has been made. For an initiating controller, the extent of a logical system is the set of all logical units and target routines to which a connect has been made on one or more SPP busses. 12) For initiating controllers having access to a logical unit, access can be restricted to certain extents within some logical unit types, based on device class. Also, access may be temporarily restricted for a complete logical unit. These reservation functions provide the lowest level of restriction to information within a logical unit. There is no equivalent reservation func- tion for target routines. 13) Each initiating controller is assigned an initiating controller ID. An initiating controller ID (ICID) must be unique in a logical system. An identifier consisting of a ICID, an initiating controller port number, an initiator SPP address, a target controller SPP address, a target controller port number, and a LUN or TRN, defines a path when the relationship is estab- lished as the result of a connect started by an initiating controller to a logical unit or target routine. This is called an implicitly named path. That is, the initiating controller has the complete name of the path, but the target controller does not. The port numbers are transferred as part of each complete I/O process. No path exists between a LUN or TRN and an initiating controller unless the LUN or TRN is the object of a connect started by that initiating controller to the LUN or TRN. An implicitly named path is in an ungrouped state. When a path is in the ungrouped state, each I/O process is limited to operation on the path where the connect was made. This is called single path mode. Each initiator con- necting with a target controller on any port must be considered as attached to a unique initiating controller until the transfer of an ICID from the ini- tiating controller occurs. 14) All communication between initiating controllers and target controllers shall be in the form of information packets, except primitive signals as defined for each SPP bus. 15) An initiating controller transfers its ICID using a defined command between the logical elements. The implicitly named path becomes an explic- itly named path. An initiating controller connects with and transfers its ICID by a command to each logical unit or target routine with which it needs to define an explicitly named path. The LUN or TRN used with each command must be valid for the target controller. The logical unit need not be ready or installed (e.g., powered off but cabled or not cabled). The initiating controller is not required to transfer its ICID on all available physical paths between the initiating controller and the LUN or TRN, but only on those Section 4. SPP Logical Operations 4-7 SCSI WORKING DOCUMENT X3T9.2/91-013 R01 paths which it intends to use for additional SPP functions (Items 16 thorugh 19). Once paths are named, the target controller can distinguish which paths belong to which initiating controllers. An explicitly named path is initially in an ungrouped state. I/O processes are handled in the same manner as an implicitly named path unless additional agreements are reached between the initiating controller and the target con- troller as defined below. 16) An identifier, consisting of an ICID and either a LUN or TRN in the same target controller, represents one logical path. A logical path consists of one or more explicitly named paths or exactly one implicitly named path. The paths in a logical path are initially in an ungrouped state. (See Item 13.) The set of paths available in a logical path from an initiating controller to any one logical unit or target routine may be determined from the results of the INQUIRY command response data provided the command response data is unique to each logical unit or target routine. 17) A set of ungrouped explicitly named paths in a logical path is estab- lished as a path group through a command from the initiating controller using any one of the paths in the logical path. This set of paths, a logical path, is called a path group. Establishing a path group is the mechanism for ena- bling multiple path operations in logical system. Including a path in a path group does not restrict access to the logical unit or target routine from any other path. When establishing a path group, the initiating controller identifies where status leading to a contingent allegiance or extended contingent allegiance is reported. Any status which does not result in contingent allegiance may be sent over any path in the path group. The choices are single path status mode and multiple path status mode. The condition may be altered by dis- banding the group and establishing the group with the alternate choice. A path may be added to an established group at a later time by a command from the initiating controller on that path. A path may be removed from an established path group by a command from the initiating controller on that path. Once a path group is established, the extended functions of assignment (Item 19) and multiple path operation may be used. The inverse of establishing a path group is to disband a path group. A path group may be explicitly