SEAGATE OKLAHOMA CITY OPERATIONS _________________________________________________________________ X3T9.2/90-126 Date: 8/17/90 John Lohmeyer Chairman X3T9.2 Subject: SCSI-3 Proposal for Messages and Commands Supported Lists During discussions of my enhanced caching page proposal, I was asked to propose a method of determining which messages are supported. Although I do not agree that the direct control of Modify Data Pointers should be omitted from the caching page, I see several benefits of having a method for initiators and targets to determine what functions the others support. It appears that there are several mechanisms in SCSI-2 which could be adopted to provide this new capability. In several discussions, some committee participants have argued for deductive control of which messages and perhaps commands to utilize. An example of the discussions I refer to are the debates over who, why, and when SDTR messages should be issued. Influenced by these debates I elected to not add Mode Select/Sense pages to accomplish the task. I presumed this would imply explicit, rather than deductive, control. Rather than explicit control I am proposing two sets of two commands to pass the lists of messages and commands between initiators and targets. No definition is intended or provided as to how the parties use the lists. (There are however some beneficial uses!) I recognize that an initiator may be designed for some list less than the 26 presently defined SCSI, and potentially 128 vendor unique, messages or the 88 presently defined SCSI, and potentially 75 vendor unique, commands. Although designed for the shorter list, all are possible through "SCSI pass through" facilities. I am presuming that optimization should occur for the shorter list rather than the never never land of "SCSI pass through". Thus the attached proposal is to provide additional optimization capability and not for any absolute control function. I have an opinion that it could obviate the need for a "SCSI-2 CCS". However I urge that acceptance of the proposal not be based upon that opinion. Please let me know if you have any questions about the attached proposal. G.E. Milligan 7.x.x. SEND MESSAGES SUPPORTED(6) Command Table 7-x: SEND MESSAGES SUPPORTED(6) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (4Eh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number |Reserved| Reserved | SP | -----|-----------------------------------------------------------------------| 2 | Reserved | -----|-----------------------------------------------------------------------| 3 | Reserved | -----|-----------------------------------------------------------------------| 4 | Parameter List Length | -----|-----------------------------------------------------------------------| 5 | Control | ============================================================================== The SEND MESSAGES SUPPORTED (6) command (Table 7-x) provides a means for the initiator to specify the messages the initiator supports to the target. Both In and Out messages are specified. Targets that implement the SEND MESSAGES SUPPORTED command shall also implement the RECEIVE MESSAGES SUPPORTED command. Initiators should issue SEND MESSAGES SUPPORTED after MODE SELECT and prior to RECEIVE MESSAGES SUPPORTED to allow for any interdependencies that may occur. If a target supports saved pages, for this command, it may save only one copy of the page for each logical unit and have it apply to all initiators or it may save separate copies for each initiator for each logical unit. If separate copies are saved, the target shall maintain separate current values for each I_T_L nexus. Pages which are common to all initiators are not required to have multiple copies. A save pages (SP) bit of zero indicates the target is not required to save any pages through periods of no power. A SP bit of one indicates that the target shall save the information to a non-volatile vendor-specific location all the savable pages including any sent during the DATA OUT phase. The SP bit is optional, even when pages are supported by the target. If the target does not implement saved pages and the SP bit is set to one, the command shall be terminated with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST, and the additional sense code shall be set to INVALID FIELD IN CDB. The parameter list length field specifies the length in bytes of the SEND MESSAGES SUPPORTED parameter list that shall be transferred from the initiator to the target during the DATA OUT phase. A parameter list length of zero indicates that no data shall be transferred. This condition shall not be considered as an error. A parameter list length that results in the truncation of any descriptor, header or page of parameters shall cause the target to terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST, and the additional sense code shall be set to PARAMETER LIST LENGTH ERROR. The parameter list for the SEND MESSAGES SUPPORTED MODE SELECT and RECEIVE MESSAGES SUPPORTED commands is defined in 7.x.x. 7.x.x. RECEIVE MESSAGES SUPPORTED(6) Command Table 7-x: RECEIVE MESSAGES SUPPORTED(6) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (4Fh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number |Reserved|Reserved| Reserved | -----|-----------------------------------------------------------------------| 2 | PC | Reserved | -----|-----------------------------------------------------------------------| 3 | Reserved | -----|-----------------------------------------------------------------------| 4 | Allocation Length | -----|-----------------------------------------------------------------------| 5 | Control | ============================================================================== The RECEIVE MESSAGES SUPPORTED(6) command (Table 7-x) provides a means for a target to report the messages supported by the target to the initiator. It is a complementary command to the SEND MESSAGES SUPPORTED(6) command. The page control (PC) field defines the type of message values to be returned. The page control field is defined in Table 7-x. Table 7-x: Page Control Field ================================================ Bit 7 Bit 6 Type of Parameter Values Section ----- ----- ------------------------ -------- 0 0 Fast messages 7.x.x.1 0 1 Slow messages 7.x.x.2 1 0 All messages 7.x.x.3 1 1 Reserved ================================================ 7.x.x.1. Fast Messages A PC field value of 0h requests the target to return the current message codes supported which are executed without a significant delay from such techniques as paging. Determination of what constitutes a significant delay is vendor specific. 7.x.x.x. Slow Messages A PC field value of 1h requests the target to return the current message codes supported which are executed with a significant delay from such techniques as paging. Determination of what constitutes a significant delay is vendor specific. 7.x.x.x. All Messages A PC field value of 2h requests the target to return the current message codes supported which are available. This list is the combination of message codes which would be returned by PC field values of 0h and 1h. 7.x.x. SEND COMMANDS SUPPORTED(6) Command Table 7-x: SEND COMMANDS SUPPORTED(6) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (50h) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number |Reserved| Reserved | SP | -----|-----------------------------------------------------------------------| 2 | Reserved | -----|-----------------------------------------------------------------------| 3 | Reserved | -----|-----------------------------------------------------------------------| 4 | Parameter List Length | -----|-----------------------------------------------------------------------| 5 | Control | ============================================================================== The SEND COMMANDS SUPPORTED (6) command (Table 7-x) provides a means for the initiator to specify the commands the initiator supports to the target. Targets that implement the SEND COMMANDS SUPPORTED command shall also implement the RECEIVE COMMANDS SUPPORTED command. Initiators should issue SEND COMMANDS SUPPORTED after MODE SELECT and prior to RECEIVE COMMANDS SUPPORTED to allow for any interdependencies that may occur. If a target supports saved pages, for this command, it may save only one copy of the page for each logical unit and have it apply to all initiators or it may save separate copies for each initiator for each logical unit. If separate copies are saved, the target shall maintain separate current values for each I_T_L nexus. Pages which are common to all initiators are not required to have multiple copies. A save pages (SP) bit of zero indicates the target is not required to save any pages through periods of no power. A SP bit of one indicates that the target shall save the information to a non-volatile vendor-specific location all the savable pages including any sent during the DATA OUT phase. The SP bit is optional, even when pages are supported by the target. If the target does not implement saved pages and the SP bit is set to one, the command shall be terminated with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST, and the additional sense code shall be set to INVALID FIELD IN CDB. The parameter list length field specifies the length in bytes of the SEND COMMANDS SUPPORTED parameter list that shall be transferred from the initiator to the target during the DATA OUT phase. A parameter list length of zero indicates that no data shall be transferred. This condition shall not be considered as an error. A parameter list length that results in the truncation of any descriptor, header or page of parameters shall cause the target to terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST, and the additional sense code shall be set to PARAMETER LIST LENGTH ERROR. The parameter list for the SEND COMMANDS SUPPORTED MODE SELECT and RECEIVE COMMANDS SUPPORTED commands is defined in 7.x.x. 7.x.x. RECEIVE COMMANDS SUPPORTED(6) Command Table 7-x: RECEIVE COMMANDS SUPPORTED(6) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (4Fh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number |Reserved|Reserved| Reserved | -----|-----------------------------------------------------------------------| 2 | PC | Reserved | -----|-----------------------------------------------------------------------| 3 | Reserved | -----|-----------------------------------------------------------------------| 4 | Allocation Length | -----|-----------------------------------------------------------------------| 5 | Control | ============================================================================== The RECEIVE COMMANDS SUPPORTED(6) command (Table 7-x) provides a means for a target to report the commands supported by the target to the initiator. It is a complementary command to the SEND COMMANDS SUPPORTED(6) command. The page control (PC) field defines the type of command values to be returned. The page control field is defined in Table 7-x. Table 7-x: Page Control Field ================================================ Bit 7 Bit 6 Type of Parameter Values Section ----- ----- ------------------------ -------- 0 0 Fast commands 7.x.x.1 0 1 Slow commands 7.x.x.2 1 0 All commands 7.x.x.3 1 1 Reserved ================================================ 7.x.x.1. Fast Commands A PC field value of 0h requests the target to return the current command codes supported which are executed without a significant delay from such techniques as paging. Determination of what constitutes a significant delay is vendor specific. 7.x.x.x. Slow Commands A PC field value of 1h requests the target to return the current command codes supported which are executed with a significant delay from such techniques as paging. Determination of what constitutes a significant delay is vendor specific. 7.x.x.x. All Commands A PC field value of 2h requests the target to return the current command codes supported which are available. This list is the combination of command codes which would be returned by PC field values of 0h and 1h. 7.x.x.x. Supported Messages/Commands Parameters This section describes the block descriptors and the pages used with SEND MESSAGES SUPPORTED, RECEIVE MESSAGES SUPPORTED, SEND COMMANDS SUPPORTED, RECEIVE COMMANDS SUPPORTED, commands. The parameter list shown in Table 7-x contains a header, followed by a variable-length page. Table 7-x: Supported Messages/Commands Parameters List ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0-1 | Header | -----|-----------------------------------------------------------------------| 2-n | Parameters | ============================================================================== The parameter header is defined in Table 7-x. Table 7-x: Supported Messages/Commands Parameters Header ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | PS | Page Code TBD | -----|-----------------------------------------------------------------------| 1 | Page Length | ============================================================================== The Supported Messages/Commands page provides the initiator the means to determine which messages or commands are supported by the target. When using the RECEIVE SUPPORTED MESSAGES/COMMANDS command, a parameter savable (PS) bit of one indicates that the parameters can be saved by the target in a non-volatile, vendor- specific location. A PS bit of zero indicates that the parameters cannot be saved. When using the SEND SUPPORTED MESSAGES/COMMANDS command, the PS bit is reserved. The page code field provides for the possibility of future expansion. The page length field specifies the length in bytes of the parameters that follow. If the initiator does not set this value to a value that is equal to or greater than that returned for the page by the RECEIVE SUPPORTED MESSAGES/COMMANDS command, the target shall terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST with the additional sense code set to INVALID FIELD IN PARAMETER LIST. The target shall truncate the returned parameters to the length of valid parameters. Without apriori information the initiator should use a page length of FFh. The parameters are a sorted list of messages or commands supported, depending upon which command was being responded to. The sort starts with 00h and ends with FFh, if applicable, in ascending order.