Use the SCSIACCEL ioctl() to turn on TAG QUEUEs.
This commit is contained in:
parent
4a962c6cd9
commit
905ef1b7fa
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: ncr53c9x.c,v 1.69 2000/12/20 15:49:03 briggs Exp $ */
|
/* $NetBSD: ncr53c9x.c,v 1.70 2001/01/19 23:04:23 eeh Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||||
|
@ -251,7 +251,7 @@ ncr53c9x_attach(sc, adapter, device)
|
||||||
sc->sc_link.scsipi_scsi.adapter_target = sc->sc_id;
|
sc->sc_link.scsipi_scsi.adapter_target = sc->sc_id;
|
||||||
sc->sc_link.adapter = (adapter) ? adapter : &ncr53c9x_adapter;
|
sc->sc_link.adapter = (adapter) ? adapter : &ncr53c9x_adapter;
|
||||||
sc->sc_link.device = (device) ? device : &ncr53c9x_device;
|
sc->sc_link.device = (device) ? device : &ncr53c9x_device;
|
||||||
sc->sc_link.openings = 32;
|
sc->sc_link.openings = 2;
|
||||||
sc->sc_link.scsipi_scsi.max_target = 7;
|
sc->sc_link.scsipi_scsi.max_target = 7;
|
||||||
sc->sc_link.scsipi_scsi.max_lun = 7;
|
sc->sc_link.scsipi_scsi.max_lun = 7;
|
||||||
sc->sc_link.type = BUS_SCSI;
|
sc->sc_link.type = BUS_SCSI;
|
||||||
|
@ -442,14 +442,13 @@ ncr53c9x_init(sc, doreset)
|
||||||
struct ncr53c9x_tinfo *ti = &sc->sc_tinfo[r];
|
struct ncr53c9x_tinfo *ti = &sc->sc_tinfo[r];
|
||||||
/* XXX - config flags per target: low bits: no reselect; high bits: no synch */
|
/* XXX - config flags per target: low bits: no reselect; high bits: no synch */
|
||||||
|
|
||||||
ti->flags = ((sc->sc_cfflags & (1<<(r+16))) ? T_TAGOFF : 0) |
|
ti->flags = ((sc->sc_minsync && !(sc->sc_cfflags & (1<<(r+8))))
|
||||||
((sc->sc_minsync && !(sc->sc_cfflags & (1<<(r+8))))
|
|
||||||
? 0 : T_SYNCHOFF) |
|
? 0 : T_SYNCHOFF) |
|
||||||
((sc->sc_cfflags & (1<<r)) ? T_RSELECTOFF : 0) |
|
((sc->sc_cfflags & (1<<r)) ? T_RSELECTOFF : 0) |
|
||||||
T_NEED_TO_RESET;
|
T_NEED_TO_RESET;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (ncr53c9x_notag)
|
if (ncr53c9x_notag)
|
||||||
ti->flags |= T_TAGOFF;
|
ti->flags &= ~T_TAG;
|
||||||
#endif
|
#endif
|
||||||
ti->period = sc->sc_minsync;
|
ti->period = sc->sc_minsync;
|
||||||
ti->offset = 0;
|
ti->offset = 0;
|
||||||
|
@ -940,7 +939,13 @@ ncr53c9x_ioctl(link, cmd, arg, flag, p)
|
||||||
sc->sc_dev.dv_xname, sp->sa_target);
|
sc->sc_dev.dv_xname, sp->sa_target);
|
||||||
ti->flags |= T_NEGOTIATE;
|
ti->flags |= T_NEGOTIATE;
|
||||||
}
|
}
|
||||||
break;
|
if ((sp->sa_flags & SC_ACCEL_TAGS) != 0) {
|
||||||
|
if ((sc->sc_cfflags & (1<<((sp->sa_target)+16))) == 0) {
|
||||||
|
ti->flags |= T_TAG;
|
||||||
|
link->openings = 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
error = ENOTTY;
|
error = ENOTTY;
|
||||||
|
@ -987,7 +992,9 @@ ncr53c9x_sched(sc)
|
||||||
lun = sc_link->scsipi_scsi.lun;
|
lun = sc_link->scsipi_scsi.lun;
|
||||||
|
|
||||||
/* Select type of tag for this command */
|
/* Select type of tag for this command */
|
||||||
if ((ti->flags & (T_RSELECTOFF|T_TAGOFF)) != 0)
|
if ((ti->flags & (T_RSELECTOFF)) != 0)
|
||||||
|
tag = 0;
|
||||||
|
else if ((ti->flags & (T_TAG)) == 0)
|
||||||
tag = 0;
|
tag = 0;
|
||||||
else if ((ecb->flags & ECB_SENSE) != 0)
|
else if ((ecb->flags & ECB_SENSE) != 0)
|
||||||
tag = 0;
|
tag = 0;
|
||||||
|
@ -1504,7 +1511,7 @@ gotit:
|
||||||
NCR_MSGS(("(rejected sent tag)"));
|
NCR_MSGS(("(rejected sent tag)"));
|
||||||
NCRCMD(sc, NCRCMD_FLUSH);
|
NCRCMD(sc, NCRCMD_FLUSH);
|
||||||
DELAY(1);
|
DELAY(1);
|
||||||
ti->flags |= T_TAGOFF;
|
ti->flags &= ~T_TAG;
|
||||||
lun = ecb->xs->sc_link->scsipi_scsi.lun;
|
lun = ecb->xs->sc_link->scsipi_scsi.lun;
|
||||||
li = TINFO_LUN(ti, lun);
|
li = TINFO_LUN(ti, lun);
|
||||||
if (ecb->tag[0] &&
|
if (ecb->tag[0] &&
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: ncr53c9xvar.h,v 1.29 2000/12/20 03:19:34 eeh Exp $ */
|
/* $NetBSD: ncr53c9xvar.h,v 1.30 2001/01/19 23:04:23 eeh Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1997 The NetBSD Foundation, Inc.
|
* Copyright (c) 1997 The NetBSD Foundation, Inc.
|
||||||
|
@ -175,7 +175,7 @@ struct ncr53c9x_tinfo {
|
||||||
#define T_SYNCMODE 0x08 /* SYNC mode has been negotiated */
|
#define T_SYNCMODE 0x08 /* SYNC mode has been negotiated */
|
||||||
#define T_SYNCHOFF 0x10 /* SYNC mode for is permanently off */
|
#define T_SYNCHOFF 0x10 /* SYNC mode for is permanently off */
|
||||||
#define T_RSELECTOFF 0x20 /* RE-SELECT mode is off */
|
#define T_RSELECTOFF 0x20 /* RE-SELECT mode is off */
|
||||||
#define T_TAGOFF 0x40 /* TAG QUEUEs are off */
|
#define T_TAG 0x40 /* Turn on TAG QUEUEs */
|
||||||
u_char period; /* Period suggestion */
|
u_char period; /* Period suggestion */
|
||||||
u_char offset; /* Offset suggestion */
|
u_char offset; /* Offset suggestion */
|
||||||
u_char nextag; /* Next available tag */
|
u_char nextag; /* Next available tag */
|
||||||
|
|
Loading…
Reference in New Issue