diff options
-rw-r--r-- | drivers/scsi/aacraid/aachba.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c index 24b1ba06ece4..fdc7d9935aeb 100644 --- a/drivers/scsi/aacraid/aachba.c +++ b/drivers/scsi/aacraid/aachba.c | |||
@@ -2693,8 +2693,22 @@ static void aac_srb_callback(void *context, struct fib * fibptr) | |||
2693 | scsicmd->cmnd[0], | 2693 | scsicmd->cmnd[0], |
2694 | le32_to_cpu(srbreply->scsi_status)); | 2694 | le32_to_cpu(srbreply->scsi_status)); |
2695 | #endif | 2695 | #endif |
2696 | scsicmd->result = DID_ERROR << 16 | COMMAND_COMPLETE << 8; | 2696 | if ((scsicmd->cmnd[0] == ATA_12) |
2697 | break; | 2697 | || (scsicmd->cmnd[0] == ATA_16)) { |
2698 | if (scsicmd->cmnd[2] & (0x01 << 5)) { | ||
2699 | scsicmd->result = DID_OK << 16 | ||
2700 | | COMMAND_COMPLETE << 8; | ||
2701 | break; | ||
2702 | } else { | ||
2703 | scsicmd->result = DID_ERROR << 16 | ||
2704 | | COMMAND_COMPLETE << 8; | ||
2705 | break; | ||
2706 | } | ||
2707 | } else { | ||
2708 | scsicmd->result = DID_ERROR << 16 | ||
2709 | | COMMAND_COMPLETE << 8; | ||
2710 | break; | ||
2711 | } | ||
2698 | } | 2712 | } |
2699 | if (le32_to_cpu(srbreply->scsi_status) == SAM_STAT_CHECK_CONDITION) { | 2713 | if (le32_to_cpu(srbreply->scsi_status) == SAM_STAT_CHECK_CONDITION) { |
2700 | int len; | 2714 | int len; |