summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp/isp_tpublic.h
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2001-05-28 21:20:43 +0000
committermjacob <mjacob@FreeBSD.org>2001-05-28 21:20:43 +0000
commit19b20edd4063454edfe9d46a08ec2249527d1e8b (patch)
tree2ff029f1c3035ecb1a70ed1b7e80e5a0ed1b794c /sys/dev/isp/isp_tpublic.h
parentf80decdc0cdb69cc9099b1ba2b51651e287082f2 (diff)
downloadFreeBSD-src-19b20edd4063454edfe9d46a08ec2249527d1e8b.zip
FreeBSD-src-19b20edd4063454edfe9d46a08ec2249527d1e8b.tar.gz
Spring MegaChange #1.
---- Make a device for each ISP- really usable only with devfs and add an ioctl entry point (this can be used to (re)set debug levels, reset the HBA, rescan the fabric, issue lips, etc). ---- Add in a kernel thread for Fibre Channel cards. The purpose of this thread is to be woken up to clean up after Fibre Channel events block things. Basically, any FC event that casts doubt on the location or identify of FC devices blocks the queues. When, and if, we get the PORT DATABASE CHANGED or NAME SERVER DATABASE CHANGED async event, we activate the kthread which will then, in full thread context, re-evaluate the local loop and/or the fabric. When it's satisfied that things are stable, it can then release the blocked queues and let commands flow again. The prior mechanism was a lazy evaluation. That is, the next command to come down the pipe after change events would pay the full price for re-evaluation. And if this was done off of a softcall, it really could hang up the system. These changes brings the FreeBSD port more in line with the Solaris, Linux and NetBSD ports. It also, more importantly, gets us being more proactive about topology changes which could then be reflected upwards to CAM so that the periph driver can be informed sooner rather than later when things arrive or depart. --- Add in the (correct) usage of locking macros- we now have lock transition macros which allow us to transition from holding the CAM lock (Giant) and grabbing the softc lock and vice versa. Switch over to having this HBA do real locking. Some folks claim this won't be a win. They're right. But you have to start somewhere, and this will begin to teach us how to DTRT for HBAs, etc. -- Start putting in prototype 2300 support. Add back in LIP and Loop Reset as async events that each platform will handle. Add in another int_bogus instrumentation point. Do some more substantial target mode cleanups. MFC after: 8 weeks
Diffstat (limited to 'sys/dev/isp/isp_tpublic.h')
-rw-r--r--sys/dev/isp/isp_tpublic.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/isp/isp_tpublic.h b/sys/dev/isp/isp_tpublic.h
index 03f832d..4a03c99 100644
--- a/sys/dev/isp/isp_tpublic.h
+++ b/sys/dev/isp/isp_tpublic.h
@@ -223,11 +223,12 @@ typedef struct tmd_cmd {
u_int8_t cd_reserved[_TMD_PAD_LEN];
} tmd_cmd_t;
-#define CDFL_BUSY 0x01 /* this command is not on a free list */
+#define CDFL_SNSVALID 0x01 /* sense data (from f/w) valid */
#define CDFL_NODISC 0x02 /* disconnects disabled */
#define CDFL_SENTSENSE 0x04 /* last action sent sense data */
#define CDFL_SENTSTATUS 0x08 /* last action sent status */
#define CDFL_ERROR 0x10 /* last action ended in error */
+#define CDFL_BUSY 0x40 /* this command is not on a free list */
#define CDFL_PRIVATE_0 0x80 /* private layer flags */
#define CDFH_SNSVALID 0x01 /* sense data valid */
OpenPOWER on IntegriCloud