aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ipr.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/ipr.c')
-rw-r--r--drivers/scsi/ipr.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 0724b5810ee2..d871dd37d22c 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -4666,18 +4666,19 @@ static void ipr_erp_start(struct ipr_ioa_cfg *ioa_cfg,
4666 struct scsi_cmnd *scsi_cmd = ipr_cmd->scsi_cmd; 4666 struct scsi_cmnd *scsi_cmd = ipr_cmd->scsi_cmd;
4667 struct ipr_resource_entry *res = scsi_cmd->device->hostdata; 4667 struct ipr_resource_entry *res = scsi_cmd->device->hostdata;
4668 u32 ioasc = be32_to_cpu(ipr_cmd->ioasa.ioasc); 4668 u32 ioasc = be32_to_cpu(ipr_cmd->ioasa.ioasc);
4669 u32 masked_ioasc = ioasc & IPR_IOASC_IOASC_MASK;
4669 4670
4670 if (!res) { 4671 if (!res) {
4671 ipr_scsi_eh_done(ipr_cmd); 4672 ipr_scsi_eh_done(ipr_cmd);
4672 return; 4673 return;
4673 } 4674 }
4674 4675
4675 if (!ipr_is_gscsi(res)) 4676 if (!ipr_is_gscsi(res) && masked_ioasc != IPR_IOASC_HW_DEV_BUS_STATUS)
4676 ipr_gen_sense(ipr_cmd); 4677 ipr_gen_sense(ipr_cmd);
4677 4678
4678 ipr_dump_ioasa(ioa_cfg, ipr_cmd, res); 4679 ipr_dump_ioasa(ioa_cfg, ipr_cmd, res);
4679 4680
4680 switch (ioasc & IPR_IOASC_IOASC_MASK) { 4681 switch (masked_ioasc) {
4681 case IPR_IOASC_ABORTED_CMD_TERM_BY_HOST: 4682 case IPR_IOASC_ABORTED_CMD_TERM_BY_HOST:
4682 if (ipr_is_naca_model(res)) 4683 if (ipr_is_naca_model(res))
4683 scsi_cmd->result |= (DID_ABORT << 16); 4684 scsi_cmd->result |= (DID_ABORT << 16);