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.
This commit is contained in:
fvdl 2000-12-02 14:53:01 +00:00
parent e4326b372a
commit 2b69243845
1 changed files with 11 additions and 1 deletions

View File

@ -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
}