From dd1bf398eea19b08c6371a3c88909f6c902da672 Mon Sep 17 00:00:00 2001 From: Marco Peereboom Date: Sun, 10 Oct 2004 15:08:11 +0000 Subject: 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@ --- sys/dev/ic/aic79xx_openbsd.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'sys/dev') 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) -- cgit v1.2.3