summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFinn Thain <fthain@telegraphics.com.au>2018-09-26 21:17:11 -0400
committerMartin K. Petersen <martin.petersen@oracle.com>2018-09-28 02:21:55 -0400
commitca694afad707cb3ae2fdef3b28454444d9ac726e (patch)
treec3cb26ea1732a5a915f366d62e23e66b37ab2f84
parent08267216b3f8aa5adc204bdccf8deb72c1cd7665 (diff)
scsi: NCR5380: Handle BUS FREE during reselection
The X3T9.2 specification (draft) says, under "6.1.4.2 RESELECTION time-out procedure", that a target may assert RST or go to BUS FREE phase if the initiator does not respond within 200 us. Something like this has been observed with AztecMonster II target. When it happens, all we can do is wait for the target to try again. Tested-by: Michael Schmitz <schmitzmic@gmail.com> Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/NCR5380.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 419033643015..b9a3eb0647e4 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -2047,6 +2047,9 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
2047 2047
2048 if (NCR5380_poll_politely(hostdata, 2048 if (NCR5380_poll_politely(hostdata,
2049 STATUS_REG, SR_REQ, SR_REQ, 2 * HZ) < 0) { 2049 STATUS_REG, SR_REQ, SR_REQ, 2 * HZ) < 0) {
2050 if ((NCR5380_read(STATUS_REG) & (SR_BSY | SR_SEL)) == 0)
2051 /* BUS FREE phase */
2052 return;
2050 shost_printk(KERN_ERR, instance, "reselect: REQ timeout\n"); 2053 shost_printk(KERN_ERR, instance, "reselect: REQ timeout\n");
2051 do_abort(instance); 2054 do_abort(instance);
2052 return; 2055 return;