summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorMarco Peereboom <marco@cvs.openbsd.org>2004-10-10 15:08:11 +0000
committerMarco Peereboom <marco@cvs.openbsd.org>2004-10-10 15:08:11 +0000
commitdd1bf398eea19b08c6371a3c88909f6c902da672 (patch)
tree4a213607af81e78683f209f27d824cff8ef9afff /sys/dev
parent49e54e4a7c98aef3d912cadafc871368b98c938b (diff)
Work around "overlapped command" issue on devices that are slower than U320. Committing this due to a preemptive "I don't like your fix" comment from krw@
Tested by pval@, krw@ and me, ok krw@
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ic/aic79xx_openbsd.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/dev/ic/aic79xx_openbsd.c b/sys/dev/ic/aic79xx_openbsd.c
index 406dacc7bef..3afd2a5201f 100644
--- a/sys/dev/ic/aic79xx_openbsd.c
+++ b/sys/dev/ic/aic79xx_openbsd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: aic79xx_openbsd.c,v 1.8 2004/08/23 20:16:01 marco Exp $ */
+/* $OpenBSD: aic79xx_openbsd.c,v 1.9 2004/10/10 15:08:10 marco Exp $ */
/*
* Copyright (c) 2004 Milos Urbanek, Kenneth R. Westerback & Marco Peereboom
@@ -497,6 +497,14 @@ ahd_execute_scb(void *arg, bus_dma_segment_t *dm_segs, int nsegments)
if ((tstate->tagenable & mask) != 0)
scb->hscb->control |= TAG_ENB;
+ /* disable tags and disconection to work around overlapped commands
+ * for non U320 devices
+ */
+ if ((tinfo->curr.ppr_options & MSG_EXT_PPR_PROT_IUS) == 0) {
+ scb->hscb->control &= ~TAG_ENB;
+ scb->hscb->control &= ~DISCENB;
+ }
+
if ((tinfo->curr.ppr_options & MSG_EXT_PPR_PROT_IUS) != 0) {
scb->flags |= SCB_PACKETIZED;
if (scb->hscb->task_management != 0)