I'm sponsoring this case for Jianfei Wang. The timer is set for 09/02/2009.
-Frank. 1. Introduction 1.1. Project/Component Working Name: Transport Layer Retries (TLR) Support 1.2. Name of Document Author/Supplier: Author: Jianfei Wang 1.3. Date of This Document: 08/24/2009 4. Technical Description: 4.1. Summary This project is to provide TLR (Transport Layer Retries) support in Solaris so that tape drive devices could be better supported. Requested release binding is Patch/Micro. 4.2. Details To support Transport Layer Retries(TLR), a new SCSI transport capability, SCSI_CAP_TRAN_LAYER_RETRIES, will be added. HBA drivers need TLR support should be updated to know this capability. The storage target driver should also be updated to coordinate the TLR support. When a new tape drive device is detected, the target driver checks the HBA's capability of TLR support with the scsi_ifgetcap(9F) interface in the attach(9E) entry point. The target driver reads Vital Product Data (VPD) page 0x90 to get the target device type. If VPD page 0x90 exists, the target device type is SAS2; otherwise the target device type is SAS1. If the HBA supports TLR and the target device is a SAS1 device, then the target driver uses SCSI command MODE_SENSE and MODE_SELECT to set the mode page (Protocol-Specific Logical Unit mode page)'s TLR flag. If set successfully, Initiator_Target_Lun nexus support TLR property. Because the mode page is not persistent, the TLR flag bit will be lost when the target device do a hard reset. So the target driver needs to set the mode page's TLR flag each time the target device completes hard reset. If the HBA supports TLR and the target device is SAS2 device, then the target driver issues InquiryVPD to get the capability of the tape device to check whether the target device is able to support TLR. If both the HBA driver and the tape device support TLR, the target driver will send a commands packet with a special pkg_flag, FLAG_TLR, to notify the HBA driver to set TLR in control bit before transportation. If the Initiator_Target_Lun nexus does not support TLR, commands from the target driver to the HBA driver would fail and the pkt_reason will be set to CMD_TLR_OFF. When the target driver get this reason, it will turn off the TLR control. 4.3. Exported Interfaces Interface Commitment Comments ============= ========== ===================== SCSI_CAP_TRAN_LAYER_RETRIES Committed SCSI TLR capability tran-layer-retries Committed SCSI_CAP_ASCII content FLAG_TLR Committed pkg_flag indicating TLR is supported CMD_TLR_OFF Committed pkt_reason indicating TLR is not supported 4.4. Bug/RFE Number(s) 6647764 - Solaris storage driver Transport Layer Retries (TLR) support 4.5. References Serial Attached SCSI - 1.1 (SAS-1.1) Serial Attached SCSI - 2 (SAS-2) SCSI Primary Commands - 4 (SPC-4) http://www.t10.org/ 4.6. Manpage changes scsi_hba_lookup_capstr.diff ============================ 156a157 > SCSI_CAP_TRAN_LAYER_RETRIES 157a159,161 > "tran-layer-retries" scsi_ifgetcap.diff =========================== 126a127,128 > tran-layer-retries Transport Layer retries is support by > the host adapter: 0 disables, 1 enables. scsi_pkt.diff =========================== 226a227,230 > FLAG_TLR Run command with Transport > Layer Retries support > 323a328,330 > CMD_TLR_OFF Transport Layer Retries turn off > 6. Resources and Schedule: 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: ON 6.5. ARC review type: Fast Track 6.6. ARC Exposure: Open