freebsd with flexible iflib nic queues
Go to file
Matt Jacob 5d57194434 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
2001-05-28 21:20:43 +00:00
bin Change noop option -h to do the real work. Now mode of symbolic link 2001-05-28 15:31:11 +00:00
contrib Update for the Bintuils 2.11.0 import. 2001-05-28 17:48:04 +00:00
crypto Fix $FreeBSD$ style committer messed up in rev 1.7 for some reason. 2001-05-24 07:22:08 +00:00
etc /var/log/console.log should be mode 600. 2001-05-28 20:54:34 +00:00
games When a game ends that makes the top 10, the function insert_score in 2001-05-23 21:01:01 +00:00
gnu Upgrade to Binutils 2.11.0. 2001-05-28 09:19:47 +00:00
include Drop nested __P(). This trips up Supelec's dcc. 2001-05-27 19:57:36 +00:00
kerberos5 use print_version from lib/vers instead of lib/roken 2001-05-14 09:24:50 +00:00
kerberosIV Fix PAMized telnet in exactly the same way as BDE did it for the other 2001-05-11 09:39:11 +00:00
lib Implement a HTTP_USER_AGENT environment variable. 2001-05-27 11:00:36 +00:00
libexec Use new backup feature of install(1). 2001-05-28 16:58:35 +00:00
release sendmail 8.11.4 has been imported. 2001-05-28 17:21:46 +00:00
sbin Use new backup feature of install(1). 2001-05-28 16:58:35 +00:00
secure Update for OpenSSL 0.9.6a 2001-05-20 03:43:14 +00:00
share Remove obsolete DEVFS manual pages. The routines they describe don't 2001-05-28 20:27:23 +00:00
sys Spring MegaChange #1. 2001-05-28 21:20:43 +00:00
tools Added support for all new install(1) options. 2001-05-28 16:53:01 +00:00
usr.bin Many new features and optimization improvements: 2001-05-28 16:41:53 +00:00
usr.sbin Various fixes, including suggestions from some thoughtful folks, thanks. 2001-05-28 13:17:20 +00:00
COPYRIGHT Update to add the July 22, 1999 addendum. 1999-09-05 21:33:47 +00:00
Makefile Make it possible to build manpages for the entire source tree. 2001-03-27 08:43:28 +00:00
Makefile.inc1 Bootstrap install(1). 2001-05-28 16:54:02 +00:00
Makefile.upgrade $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
README Slightly improve the description of "crypto". "DES" is a subset of 2000-08-31 17:59:01 +00:00
UPDATING Mention jakarta-tomcat issues 2001-05-22 20:41:36 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The
``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you have to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/i386/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
bin		System/User commands.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberosIV	Kerberos package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/handbook/synching.html