summaryrefslogtreecommitdiff
path: root/sys/dev/ic/aic7xxx_openbsd.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ic/aic7xxx_openbsd.h')
-rw-r--r--sys/dev/ic/aic7xxx_openbsd.h21
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