summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)