diff options
author | Kenneth R Westerback <krw@cvs.openbsd.org> | 2004-07-30 00:24:34 +0000 |
---|---|---|
committer | Kenneth R Westerback <krw@cvs.openbsd.org> | 2004-07-30 00:24:34 +0000 |
commit | f1a256bf9c1770f12d8fbfedbab0ecc0c472d43d (patch) | |
tree | 3bdaca687042b6920eed0595f5db27ddbbb7ec80 | |
parent | 40a17e3406443ff7cba502e91288e089b2b87841 (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.c | 9 |
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 |