diff options
Diffstat (limited to 'sys/dev/ic/aic7xxx_openbsd.h')
-rw-r--r-- | sys/dev/ic/aic7xxx_openbsd.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/sys/dev/ic/aic7xxx_openbsd.h b/sys/dev/ic/aic7xxx_openbsd.h index bb52f81791d..9c9519e3cf5 100644 --- a/sys/dev/ic/aic7xxx_openbsd.h +++ b/sys/dev/ic/aic7xxx_openbsd.h @@ -1,4 +1,4 @@ -/* $OpenBSD: aic7xxx_openbsd.h,v 1.9 2003/12/24 22:45:45 krw Exp $ */ +/* $OpenBSD: aic7xxx_openbsd.h,v 1.10 2003/12/28 21:29:27 krw Exp $ */ /* $NetBSD: aic7xxx_osm.h,v 1.7 2003/11/02 11:07:44 wiz Exp $ */ /* @@ -325,6 +325,25 @@ uint32_t ahc_get_scsi_status(struct scb *scb) static __inline void ahc_set_transaction_tag(struct scb *scb, int enabled, u_int type) { + /* + * Assume that enabled == 0, or tstate->tagenable has already + * been checked and found to be set. + */ + switch (scb->xs->cmd->opcode) { + case INQUIRY: + case TEST_UNIT_READY: + case REQUEST_SENSE: + /* Don't use tagged i/o on these commands. */ + enabled = 0; + break; + default: + break; + } + + if (enabled) + scb->hscb->control |= TAG_ENB; + else + scb->hscb->control &= ~TAG_ENB; } static __inline |