[SCSI] mpt2sas: Return the correct sense key for DIF errors
authorMartin K. Petersen <martin.petersen@oracle.com>
Tue, 28 Aug 2012 18:29:36 +0000 (14:29 -0400)
committerJames Bottomley <JBottomley@Parallels.com>
Mon, 24 Sep 2012 08:11:00 +0000 (12:11 +0400)
Only a target device should return ABORTED COMMAND when a PI error is
discovered. The HBA should always set the sense key to ILLEGAL REQUEST.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Acked-by: "Sreekanth Reddy" <Sreekanth.reddy@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/mpt2sas/mpt2sas_scsih.c

index 7d774c5..bfda0ec 100644 (file)
@@ -3772,8 +3772,6 @@ static void
 _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status)
 {
        u8 ascq;
-       u8 sk;
-       u8 host_byte;
 
        switch (ioc_status) {
        case MPI2_IOCSTATUS_EEDP_GUARD_ERROR:
@@ -3790,16 +3788,8 @@ _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status)
                break;
        }
 
-       if (scmd->sc_data_direction == DMA_TO_DEVICE) {
-               sk = ILLEGAL_REQUEST;
-               host_byte = DID_ABORT;
-       } else {
-               sk = ABORTED_COMMAND;
-               host_byte = DID_OK;
-       }
-
-       scsi_build_sense_buffer(0, scmd->sense_buffer, sk, 0x10, ascq);
-       scmd->result = DRIVER_SENSE << 24 | (host_byte << 16) |
+       scsi_build_sense_buffer(0, scmd->sense_buffer, ILLEGAL_REQUEST, 0x10, ascq);
+       scmd->result = DRIVER_SENSE << 24 | (DID_ABORT << 16) |
            SAM_STAT_CHECK_CONDITION;
 }