freebsd with flexible iflib nic queues
Go to file
Marius Strobl da28723ecd o Disable HMEDEBUG by default.
o Add CTASSERTs ensuring that HME_NRXDESC and HME_NTXDESC are set to
  legal values.
o Use appropriate maxsize, nsegments and maxsegsize parameters when
  creating DMA tags and correct some comments related to them.
o The FreeBSD bus_dmamap_sync(9) supports ored together flags for quite
  some time now so collapse calls accordingly.
o Add missing BUS_DMASYNC_PREREAD when syncing the control DMA maps in
  hme_rint() and hme_start_locked().
o Keep state of the link state and use it to enable or disable the MAC
  in hme_mii_statchg() accordingly as well as to return early from
  hme_start_locked() in case the link is down.
o Introduce a sc_flags and use it to replace individual members like
  sc_pci.
o Add bus_barrier(9) calls to hme_mac_bitflip(), hme_mii_readreg(),
  hme_mii_writereg() and hme_stop() to ensure the respective bit
  has been written before we starting polling on it and for the right
  bits to change.
o Rather just returning in case hme_mac_bitflip() fails and leaving us
  in an undefined state report the problem and move on; chances are
  the requested configuration will become active shortly after.
o Don't call hme_start_locked() in hme_init_locked() unconditionally
  but only after calls to hme_init_locked() when it's appropriate, i.e.
  in hme_watchdog().
o Add a KASSERT which asserts nsegs is valid also to hme_load_txmbuf().
o In hme_load_txmbuf():
  - use a maximum of the newly introduced HME_NTXSEGS segments instead
    of the incorrect HME_NTXQ, which reflects the maximum TX queue
    length, for loading the mbufs and put the DMA segments back onto
    the stack instead of the softc as 16 should be ok there.
  - use the common errno(2) return values instead of homegrown ones,
  - given that hme_load_txmbuf() is allowed to fail resulting in a
    packet drop for quite some time now implement the functionality of
    hme_txcksum() by means of m_pullup(9), which de-obfuscates the code
    and allows to always retrieve the correct length of the IP header, [1]
  - also add a KASSERT which asserts nsegs is valid,
  - take advantage of m_collapse(9) instead of m_defrag(9) for
    performance reasons.
o Don't bother to check whether the interface is running or whether its
  queue is empty before calling hme_start_locked() in hme_tint(), the
  former will check these anyway.
o In hme_intr() call hme_rint() before hme_tint() as gem_tint() may
  take quite a while to return when it calls hme_start_locked().
o Get rid of sc_debug and just check if_flags for IFF_DEBUG directly.
o Add a shadow sc_ifflags so we don't reset the chip when unnecessary.
o Handle IFF_ALLMULTI correctly. [2]
o Use PCIR_BAR instead of a homegrown macro.
o Replace sc_enaddr[6] with sc_enaddr[ETHER_ADDR_LEN].
o Use the maximum of 256 TX descriptors for better performance as using
  all of them has no additional static cost rather than using just half
  of them.

Reported by:	rwatson [2]
Suggested by:	yongari [1]
Reviewed by:	yongari
MFC after:	1 month
2008-04-24 23:12:03 +00:00
bin Turn a tab into a space. This fixes a misalignment for ls -l. 2008-04-05 21:26:25 +00:00
cddl Add FreeBSD IDs to files that originate in FreeBSD. 2008-04-22 07:43:00 +00:00
contrib List of files that are off the vendor branch, but we use the stock vendor 2008-04-24 18:23:13 +00:00
crypto Fix the Xlist so it actually works with 'tar -X', and update the upgrade 2008-02-06 23:14:24 +00:00
etc Revert rev 1.332 and keep ddb scripts off by default for now. Minidumps 2008-04-23 22:40:59 +00:00
games Put back the quote from Chinggis Khan removed in rev. 1.259. 2008-04-03 10:22:56 +00:00
gnu Add 'arm' category. 2008-04-23 03:05:31 +00:00
include Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into 2008-04-17 22:17:54 +00:00
kerberos5 While checking over the libraries for 7.0-REL Kris found the following 2007-11-20 04:20:32 +00:00
lib Stricter check for integer overflow. 2008-04-24 07:49:00 +00:00
libexec MFp4: Add mips support for dynamic linking. 2008-04-04 20:59:26 +00:00
release libbsdxml is now required by ifconfig(8). 2008-04-22 18:20:05 +00:00
rescue Adding glabel alias killed gpart alias; fix it. 2008-03-29 13:15:33 +00:00
sbin Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
secure For users of FreeBSD <= 6.2 we recommend during the x.org 7.x upgrade 2008-03-05 20:58:15 +00:00
share Fix the year of my doc/www commit bit that I've got :) 2008-04-23 08:51:05 +00:00
sys o Disable HMEDEBUG by default. 2008-04-24 23:12:03 +00:00
tools Updated the test to handle multiple sinks. The sinks cut their 2008-04-24 06:56:45 +00:00
usr.bin Capitalize "Eve". This is the correct form and now matches 2008-04-24 01:37:12 +00:00
usr.sbin Remove duplicate headers <sys/socket.h> 2008-04-21 07:25:26 +00:00
COPYRIGHT Happy new year 2008! 2007-12-31 22:09:19 +00:00
LOCKS Once the release goes out, RELENG_7_* will need approval from so@. 2008-01-24 22:07:03 +00:00
MAINTAINERS OLDCARD is gone, release imp's lock. 2008-01-26 21:58:52 +00:00
Makefile Double up the necessary size of /usr/obj to 800MB 2008-03-31 13:32:55 +00:00
Makefile.inc1 Bootstrap the build of btxld. 2008-04-15 05:14:42 +00:00
ObsoleteFiles.inc Add recent obsolete files. 2008-04-20 16:03:19 +00:00
README
UPDATING 802.11 support moves to vaps 2008-04-20 21:25:37 +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 ``world''
target should only be used in cases where the source tree has not
changed from the currently running version.  See:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

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.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

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