aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/isp/isp_target.c
diff options
context:
space:
mode:
authorMatt Jacob <mjacob@FreeBSD.org>2002-02-04 21:04:25 +0000
committerMatt Jacob <mjacob@FreeBSD.org>2002-02-04 21:04:25 +0000
commit75c1e828c0f407d62605ba6ba40c542ecac4d2c5 (patch)
tree6bc5ce3afd87000d0d3bd51b3708bd7ccb43fbc6 /sys/dev/isp/isp_target.c
parent3fd18735a4975d99908822d60291f410de46aaf6 (diff)
downloadsrc-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.c5
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;
}