freebsd with flexible iflib nic queues
Go to file
Mike Silbersack b72d483eb5 Fixes from Thomas Nystrom to fix hanging problems experienced by vr cards
under load.

This patch has been tested by Thomas and other for more than a month now,
and all (known) hangs seem to be solved.

Thomas's explanation of the patch:

*  Fix the problem with the printing of the RX-error.

*  Code from if_fet do better deal with the RX-recovery including a
   timeout of the RX-turnoff.

*  The call to vr_rxeof before vr_rxeoc have been moved to a point
   where the RX-part of the chip is turned off. Otherwise there is a
   window where new data could have been written to the buffer chain
   before the RX-part is turned off. If this happens the chip will see
   a busy rx-buffer. I have no evidence that this have occured but
   god knows what the chip will do in this case!

*  I have added a timeout of the TX-turnoff. I have checked and in
   my 900 MHz system the flags for turnoff (both RX & TX) is seen at
   the first check in the loop.

*  I could see that I got the VR_ISR_DROPPED interrupt sometimes and
   started to thinking about this. I then realized that no recovery is
   needed for this case and therefore I only count it as an rxerror
   (which was not done before).

*  Finally I have changed the FIFO RX threshhold to 128 bytes. When I
   did this the VR_ISR_DROPPED interrupt went away. Theory: The chip
   will receive a complete frame before it tries to write it out to
   memory then the RX threshold is set to store'n'forward. IF the frame
   is large AND the next rx frame also is large AND the bus is busy
   transfering a TX frame to the TX fifo THEN the second received
   frame wont fit in the FIFO and is then dropped. By having the RX
   threshold set to 128 the RX fifo is emptied faster.

MFC after:	5 days
2003-01-31 07:37:06 +00:00
bin Remove now unnecessary main() prototype. 2003-01-29 21:46:12 +00:00
contrib Background: 2003-01-29 18:14:29 +00:00
crypto Background: 2003-01-29 18:14:29 +00:00
etc Re-add information for applying for IP space from a registry since that 2003-01-28 21:29:23 +00:00
games Add an explanation of why indirection is good. Remove an indirection 2003-01-23 19:23:52 +00:00
gnu Finish update for cvs-1.11.5. Some build-time tunables were moved from 2003-01-21 23:00:36 +00:00
include unifdef -D_THREAD_SAFE 2003-01-24 01:47:55 +00:00
kerberos5 Define OPENSSL_DES_LIBDES_COMPATIBILITY so that Heimdal will build with 2003-01-21 14:08:24 +00:00
kerberosIV update version numbers to (consistenly): 2002-10-23 06:12:21 +00:00
lib Back out previous. Many people disagreed with removing the warning. 2003-01-30 23:32:53 +00:00
libexec When searching for a unique file name in guniquefd(), 2003-01-29 17:04:07 +00:00
release New errata entry: amd(8) problems caused by non-blocking RPC bug. 2003-01-30 22:19:23 +00:00
sbin Add sunlabel, a more or less drop in replacement for bsd^H^H^Hdisklabel(8) 2003-01-31 07:03:25 +00:00
secure Background: 2003-01-29 18:14:29 +00:00
share The umass(4) driver now supports the Trek Thumbdrive 8MB. 2003-01-30 18:37:34 +00:00
sys Fixes from Thomas Nystrom to fix hanging problems experienced by vr cards 2003-01-31 07:37:06 +00:00
tools Add more scaffolding to make this compile kernel code. 2003-01-28 09:48:59 +00:00
usr.bin A few changes for clarity. 2003-01-27 18:16:36 +00:00
usr.sbin Eliminate hard sentence breaks. 2003-01-30 22:38:54 +00:00
COPYRIGHT
MAINTAINERS Deregister etc/rc.* commit request notification. mtm is doing a better job 2003-01-30 17:39:26 +00:00
Makefile Part 3/3 of unbreaking cross releases: 2003-01-29 10:00:42 +00:00
Makefile.inc1 Move elf2aout back to /usr/bin -- it is a general development tool, not 2002-12-30 10:01:26 +00:00
Makefile.upgrade
README Fix broken handbook links. 2002-07-21 16:45:30 +00:00
UPDATING 20030128 2003-01-29 07:14:16 +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/doc/en_US.ISO8859-1/books/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 might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/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.

kerberos5	Kerberos5 (Heimdal) package.

kerberosIV	KerberosIV (eBones) 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/doc/en_US.ISO8859-1/books/handbook/synching.html