From 2b692438457a5f249812a6078b70a85c8529e0aa Mon Sep 17 00:00:00 2001 From: fvdl Date: Sat, 2 Dec 2000 14:53:01 +0000 Subject: [PATCH] Add AHC_NO_TAGS option to switch off tagged queueing. Done because tagged queueing has a severe performance impact (60%) on write throughput with UBC. Needs investigation. --- sys/dev/ic/aic7xxx.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sys/dev/ic/aic7xxx.c b/sys/dev/ic/aic7xxx.c index d5100096ca39..a9359927a3b0 100644 --- a/sys/dev/ic/aic7xxx.c +++ b/sys/dev/ic/aic7xxx.c @@ -1,4 +1,4 @@ -/* $NetBSD: aic7xxx.c,v 1.61 2000/11/14 18:21:01 thorpej Exp $ */ +/* $NetBSD: aic7xxx.c,v 1.62 2000/12/02 14:53:01 fvdl Exp $ */ /* * Generic driver for the aic7xxx based adaptec SCSI controllers @@ -327,7 +327,9 @@ static void ahcminphys(struct buf *); static __inline struct scsipi_xfer *ahc_first_xs(struct ahc_softc *); static __inline void ahc_swap_hscb(struct hardware_scb *); static __inline void ahc_swap_sg(struct ahc_dma_seg *); +#ifndef AHC_NO_TAGS static void ahc_check_tags(struct ahc_softc *, struct scsipi_xfer *); +#endif static int ahc_istagged_device(struct ahc_softc *, struct scsipi_xfer *, int); #if defined(AHC_DEBUG) && 0 @@ -3431,7 +3433,9 @@ ahc_done(struct ahc_softc *ahc, struct scb *scb) splx(s); } else { xs->xs_status |= XS_STS_DONE; +#ifndef AHC_NO_TAGS ahc_check_tags(ahc, xs); +#endif scsipi_done(xs); } @@ -5623,6 +5627,7 @@ ahc_dumptinfo(struct ahc_softc *ahc, struct ahc_initiator_tinfo *tinfo) } #endif +#ifndef AHC_NO_TAGS static void ahc_check_tags(struct ahc_softc *ahc, struct scsipi_xfer *xs) { @@ -5678,11 +5683,15 @@ ahc_check_tags(struct ahc_softc *ahc, struct scsipi_xfer *xs) } } } +#endif static int ahc_istagged_device(struct ahc_softc *ahc, struct scsipi_xfer *xs, int nocmdcheck) { +#ifdef AHC_NO_TAGS + return 0; +#else char channel; u_int our_id, target; struct tmode_tstate *tstate; @@ -5709,4 +5718,5 @@ ahc_istagged_device(struct ahc_softc *ahc, struct scsipi_xfer *xs, xs->sc_link->scsipi_scsi.lun, channel, ROLE_INITIATOR); return (tstate->tagenable & devinfo.target_mask); +#endif }