scsi: libsas: Add return_fis_on_success to sas_ata_task
authorIgor Pylypiv <ipylypiv@google.com>
Sat, 19 Aug 2023 21:30:39 +0000 (14:30 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Mon, 21 Aug 2023 21:11:41 +0000 (17:11 -0400)
Set return_fis_on_success when libata requests result taskfile.

For Command Duration Limits policy 0xD (command completes without
an error) libata needs FIS in order to detect the ATA_SENSE bit and
read the Sense Data for Successful NCQ Commands log (0Fh).

Signed-off-by: Igor Pylypiv <ipylypiv@google.com>
Link: https://lore.kernel.org/r/20230819213040.1101044-2-ipylypiv@google.com
Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/libsas/sas_ata.c
include/scsi/libsas.h

index 77714a4..e74b60d 100644 (file)
@@ -207,6 +207,9 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
        task->ata_task.use_ncq = ata_is_ncq(qc->tf.protocol);
        task->ata_task.dma_xfer = ata_is_dma(qc->tf.protocol);
 
+       if (qc->flags & ATA_QCFLAG_RESULT_TF)
+               task->ata_task.return_fis_on_success = 1;
+
        if (qc->scsicmd)
                ASSIGN_SAS_TASK(qc->scsicmd, task);
 
index 159823e..9e2c69c 100644 (file)
@@ -550,6 +550,7 @@ struct sas_ata_task {
        u8     use_ncq:1;
        u8     set_affil_pol:1;
        u8     stp_affil_pol:1;
+       u8     return_fis_on_success:1;
 
        u8     device_control_reg_update:1;