diff options
author | 2004-10-10 15:08:10 +0000 | |
---|---|---|
committer | 2004-10-10 15:08:10 +0000 | |
commit | 0fc87b0d8ff4cee0631f0bd8b7f025f33e975571 (patch) | |
tree | 5d56ca88b1b474565e1bc8b70fd2ffd2a5db9cf0 /sys/dev/ic/aic79xx_openbsd.c | |
parent | Add PT_LOOS, PT_HIOS and Elf_Half. (diff) | |
download | wireguard-openbsd-0fc87b0d8ff4cee0631f0bd8b7f025f33e975571.tar.xz wireguard-openbsd-0fc87b0d8ff4cee0631f0bd8b7f025f33e975571.zip |
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/ic/aic79xx_openbsd.c')
-rw-r--r-- | sys/dev/ic/aic79xx_openbsd.c | 10 |
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) |