forked from Minki/linux
scsi: wd33c93: Translate message byte to host byte
Instead of setting the message byte translate it to the appropriate host byte. As error recovery would return DID_ERROR for any non-zero message byte the translation doesn't change the error handling. Link: https://lore.kernel.org/r/20210427083046.31620-26-hare@suse.de Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
0e00ba7338
commit
6e39836ebc
@ -1176,13 +1176,13 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||
if (cmd->SCp.Status == ILLEGAL_STATUS_BYTE)
|
||||
cmd->SCp.Status = lun;
|
||||
if (cmd->cmnd[0] == REQUEST_SENSE
|
||||
&& cmd->SCp.Status != SAM_STAT_GOOD)
|
||||
cmd->result =
|
||||
(cmd->
|
||||
result & 0x00ffff) | (DID_ERROR << 16);
|
||||
else
|
||||
cmd->result =
|
||||
cmd->SCp.Status | (cmd->SCp.Message << 8);
|
||||
&& cmd->SCp.Status != SAM_STAT_GOOD) {
|
||||
set_host_byte(cmd, DID_ERROR);
|
||||
} else {
|
||||
set_host_byte(cmd, DID_OK);
|
||||
scsi_msg_to_host_byte(cmd, cmd->SCp.Message);
|
||||
set_status_byte(cmd, cmd->SCp.Status);
|
||||
}
|
||||
cmd->scsi_done(cmd);
|
||||
|
||||
/* We are no longer connected to a target - check to see if
|
||||
@ -1262,11 +1262,14 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||
hostdata->connected = NULL;
|
||||
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff));
|
||||
hostdata->state = S_UNCONNECTED;
|
||||
if (cmd->cmnd[0] == REQUEST_SENSE && cmd->SCp.Status != SAM_STAT_GOOD)
|
||||
cmd->result =
|
||||
(cmd->result & 0x00ffff) | (DID_ERROR << 16);
|
||||
else
|
||||
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
||||
if (cmd->cmnd[0] == REQUEST_SENSE &&
|
||||
cmd->SCp.Status != SAM_STAT_GOOD) {
|
||||
set_host_byte(cmd, DID_ERROR);
|
||||
} else {
|
||||
set_host_byte(cmd, DID_OK);
|
||||
scsi_msg_to_host_byte(cmd, cmd->SCp.Message);
|
||||
set_status_byte(cmd, cmd->SCp.Status);
|
||||
}
|
||||
cmd->scsi_done(cmd);
|
||||
|
||||
/* We are no longer connected to a target - check to see if
|
||||
@ -1295,14 +1298,14 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff));
|
||||
hostdata->state = S_UNCONNECTED;
|
||||
DB(DB_INTR, printk(":%d", cmd->SCp.Status))
|
||||
if (cmd->cmnd[0] == REQUEST_SENSE
|
||||
&& cmd->SCp.Status != SAM_STAT_GOOD)
|
||||
cmd->result =
|
||||
(cmd->
|
||||
result & 0x00ffff) | (DID_ERROR << 16);
|
||||
else
|
||||
cmd->result =
|
||||
cmd->SCp.Status | (cmd->SCp.Message << 8);
|
||||
if (cmd->cmnd[0] == REQUEST_SENSE
|
||||
&& cmd->SCp.Status != SAM_STAT_GOOD) {
|
||||
set_host_byte(cmd, DID_ERROR);
|
||||
} else {
|
||||
set_host_byte(cmd, DID_OK);
|
||||
scsi_msg_to_host_byte(cmd, cmd->SCp.Message);
|
||||
set_status_byte(cmd, cmd->SCp.Status);
|
||||
}
|
||||
cmd->scsi_done(cmd);
|
||||
break;
|
||||
case S_PRE_TMP_DISC:
|
||||
|
Loading…
Reference in New Issue
Block a user