]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Spring MegaChange #1.
authorMatt Jacob <mjacob@FreeBSD.org>
Mon, 28 May 2001 21:20:43 +0000 (21:20 +0000)
committerMatt Jacob <mjacob@FreeBSD.org>
Mon, 28 May 2001 21:20:43 +0000 (21:20 +0000)
commit5d571944340035a996b8ba33bf2a2f4d1b92b2bb
tree12d6acf66bcdf222c7c409b3fd0a5eb06665873b
parent266aa9428312b522e98d766afa4d6d4a25a54eec
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
sys/dev/isp/isp.c
sys/dev/isp/isp_freebsd.c
sys/dev/isp/isp_freebsd.h
sys/dev/isp/isp_ioctl.h [new file with mode: 0644]
sys/dev/isp/isp_pci.c
sys/dev/isp/isp_target.c
sys/dev/isp/isp_target.h
sys/dev/isp/isp_tpublic.h
sys/dev/isp/ispvar.h