diff options
author | Matt Jacob <mjacob@FreeBSD.org> | 2002-02-04 21:04:25 +0000 |
---|---|---|
committer | Matt Jacob <mjacob@FreeBSD.org> | 2002-02-04 21:04:25 +0000 |
commit | 75c1e828c0f407d62605ba6ba40c542ecac4d2c5 (patch) | |
tree | 6bc5ce3afd87000d0d3bd51b3708bd7ccb43fbc6 /sys/dev/isp/isp_target.c | |
parent | 3fd18735a4975d99908822d60291f410de46aaf6 (diff) | |
download | src-75c1e828c0f407d62605ba6ba40c542ecac4d2c5.tar.gz src-75c1e828c0f407d62605ba6ba40c542ecac4d2c5.zip |
+ A variety of 23XX changes:
disable MWI on 2300
based on function code, set an 'isp_port' for the 2312- it's a
separate instance, but the NVRAM is shared, and the second port's
NVRAM is at offset 256.
+ Enable RIO operation for LVD SCSI cards. This makes a *big* difference
as even under reasonable load we get batched completions of about 30
commands at a time on, say, an ISP1080.
+ Do 'continuation' mailbox commands- this allows us to specify a work
area within the softc and 'continue' repeated mailbox commands. This is
more or less on an ad hoc basis and is currently only used for firmware
loading (which f/w now loads substantially faster becuase the calling
thread is only woken when all the f/w words are loaded- not for each
one of the 40000 f/w words that gets loaded).
+ If we're about to return from isp_intr with a 'bogus interrupt' indication,
and we're not a 23XX card, check to see whether the semaphore register is
currently *2* (not *1* as it should be) and whether there's an async completion
sitting in outgoing mailbox0. This seems to capture cases of lost fast posting
and RIO interrupts that the 12160 && 1080 have been known to pump out under
extreme load (extreme, as in > 250 active commands).
+ FC_SCRATCH_ACQUIRE/FC_SCRATCH_RELEASE macros.
+ Endian correct swizzle/unswizzle of an ATIO2 that has a WWPN in it.
MFC after: 1 week
Notes
Notes:
svn path=/head/; revision=90224
Diffstat (limited to 'sys/dev/isp/isp_target.c')
-rw-r--r-- | sys/dev/isp/isp_target.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/dev/isp/isp_target.c b/sys/dev/isp/isp_target.c index a4bcf6f0b1e6..05a844688fe9 100644 --- a/sys/dev/isp/isp_target.c +++ b/sys/dev/isp/isp_target.c @@ -29,6 +29,10 @@ */ /* + * Bug fixes gratefully acknowledged from: + * Oded Kedem <oded@kashya.com> + */ +/* * Include header file appropriate for platform we're building on. */ @@ -678,6 +682,7 @@ isp_notify_ack(struct ispsoftc *isp, void *arg) na->na_task_flags = inp->in_task_flags; na->na_seqid = inp->in_seqid; na->na_flags = NAFC_RCOUNT; + na->na_status = inp->in_status; if (inp->in_status == IN_RESET) { na->na_flags |= NAFC_RST_CLRD; } |