summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2004-07-30 00:24:34 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2004-07-30 00:24:34 +0000
commitf1a256bf9c1770f12d8fbfedbab0ecc0c472d43d (patch)
tree3bdaca687042b6920eed0595f5db27ddbbb7ec80
parent40a17e3406443ff7cba502e91288e089b2b87841 (diff)
Do not negotiate or use non-async transfer rates until probing (i.e.
SCSI_POLL'ing) is complete. Similar to what is done on mpt, ahc, ahd, etc. This fixes problems during probe on hppa. Problems found & ok mickey@.
-rw-r--r--sys/dev/ic/siop.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/dev/ic/siop.c b/sys/dev/ic/siop.c
index 5dbfcc6976c..6144e138ab1 100644
--- a/sys/dev/ic/siop.c
+++ b/sys/dev/ic/siop.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: siop.c,v 1.34 2004/04/25 01:49:12 krw Exp $ */
+/* $OpenBSD: siop.c,v 1.35 2004/07/30 00:24:33 krw Exp $ */
/* $NetBSD: siop.c,v 1.65 2002/11/08 22:04:41 bouyer Exp $ */
/*
@@ -1402,6 +1402,11 @@ siop_scsicmd(xs)
TAILQ_INSERT_TAIL(&sc->ready_list, siop_cmd, next);
+ /* Negotiate transfer parameters on first non-polling command. */
+ if (((xs->flags & SCSI_POLL) == 0) &&
+ siop_target->target_c.status == TARST_PROBING)
+ siop_target->target_c.status = TARST_ASYNC;
+
siop_start(sc);
if ((xs->flags & SCSI_POLL) == 0) {
splx(s);
@@ -1428,8 +1433,6 @@ siop_scsicmd(xs)
*/
for (j = 0; j < SIOP_NTAG; j += SIOP_NCMDPB)
siop_morecbd(sc);
- if (sc->sc_c.targets[target]->status == TARST_PROBING)
- sc->sc_c.targets[target]->status = TARST_ASYNC;
/*
* Set TARF_DT here because if it is turned off during