freebsd kernel with SKQ
Go to file
Pyun YongHyeon 919133a8ef Bring busdmafied sk(4) to all architectures.
- MPSAFE. No more recursive lock required.
- bus_dma(9) conversion. I think it should work on all architectures.
- optimized Rx handler for each normal and jumbo frames. Previously
  sk(4) used jumbo frame management code to handle normal sized
  frames. As the handler needs an additional lock to protect jumbo
  frame management structure from races, it used two lock operations
  for each received packet. Now sk(4) uses single lock operation for
  normal frame.(Jumbo frame still needs two lock operations as before.)
  The hardware supports DMA scatter operations for Rx descriptors such
  that it's possible to take advantagee of m_cljget(9) for jumbo frames.
  However, due to a unknown reasons it resulted in poor performance on
  sparc64. So I dropped m_cljget(9) approach. This should be revisited
  since it would reduce one lock operation for jumbo frame handling.
- Tx TCP/Rx IP checksum offload support. According to the data sheet
  of SK-NET GENESIS the hardware supports Rx IP/TCP/UDP offload.
  But I couldn't make it work on my Yukon hardware. So Rx TCP/UDP was
  disabled at the moment. It seems that newer Yukon chips can support
  Tx UDP checksum offload too. But I need more documentation first.
- Added more wait time in reading VPD data. It seems that ASUS LOM
  takes a very long time to respond VPD read signal.
- Added an additional lock for MII register access callbacks.
- Added more strict received packet validation routine. Previously it
  passed corrupted packets to upper layers under certain conditions.
- A new function sk_yukon_tick() to handle auto-negotiation properly.
- Interrupt handler now checks shared interrupt source and protects
  the interrupt handler from NULL pointer dereference which was caused
  by odd status word value. The status word can returns 0xffffffff if
  cable is unplugged while Rx/Tx/auto-negotiation is in progress.
- suspend/resume support(not tested).
- Added Rx/Tx FIFO flush routine for Yukon
- Activate Tx descriptor poll timer in order to protect possible loss
  of SK_TXBMU_TX_START command. Previously the driver continuously issued
  SK_TXBMU_TX_START when it notices pending Tx descriptors not processed
  yet in interrupt handler. That approach would add additional PCI
  write access overhead under high Tx load situations and it might fail
  if the first SK_TXBMU_TX_START was lost and no interrupt is generated
  from the first SK_TXBMU_TX_START command.
- s/printf/if_printf/, s/printf/device_printf/, Axe sk_unit in softc.
- Setting multicast/station address is now safe on strict-alignment
  architectures.
- Fix long standing bug in VLAN header length setup.
- Added/corrected register definitions for Yukon.
  (Register information from Linux skge driver.)
- Added Rx status definition for Marvell Yukon/XaQti XMAC.
  (Rx status register information from Linux skge driver.)
- Update if_oerrors if we encounter watchdog error.
- callout(9) conversion

Special thanks to jkim who let me know RX status differences between
Yukon and XaQti XMAC.
It seems that there is still occasional watchdog timeout error but I
couldn't reproduce it and need more information to analyze it from
users.

Tested by:	bz(amd64), me(i386, sparc64), current ML
		Frank Behrens frank ! pinky ( sax $ de
2006-04-27 05:59:09 +00:00
bin Whitespace nits. 2006-04-17 17:55:11 +00:00
contrib Re-add option -C to usage(). 2006-04-19 12:19:06 +00:00
crypto Fix utmp. There is some clever logic in configure.ac which attempts to 2006-03-23 21:31:42 +00:00
etc Remove last vestiges of sab(4). 2006-04-25 19:43:53 +00:00
games Add attribution: the quote comes from Perlis's Paradigms of AI Programming 2006-04-24 12:13:02 +00:00
gnu Clean the product of patch(1). 2006-04-10 09:00:19 +00:00
include Add a prototype for fcloseall(). 2006-04-22 15:10:11 +00:00
kerberos5 Reimplementation of world/kernel build options. For details, see: 2006-03-17 18:54:44 +00:00
lib Change the semantics of brk_max to dynamically deal with data segment 2006-04-27 01:03:00 +00:00
libexec *thwack*! all the world's not i386. 2006-03-29 12:29:01 +00:00
release Fix assorted grammar and punctuation nits. These are a subset of 2006-04-25 15:21:26 +00:00
rescue Pass -DCRUNCH down to standard targets in individual makefiles. 2006-04-10 09:32:50 +00:00
sbin o Do recrack(arguments) for commands which actually take NAME as 2006-04-21 20:33:16 +00:00
secure Clean generated headers. 2006-04-10 08:47:18 +00:00
share document the new tunable. 2006-04-25 16:52:54 +00:00
sys Bring busdmafied sk(4) to all architectures. 2006-04-27 05:59:09 +00:00
tools Add some new options to mac_bsdestended. We can now match on: 2006-04-23 17:06:18 +00:00
usr.bin Fix a typo. 2006-04-22 03:04:24 +00:00
usr.sbin Add some new options to mac_bsdestended. We can now match on: 2006-04-23 17:06:18 +00:00
COPYRIGHT Happy new year, a little late 2006-01-15 22:06:10 +00:00
LOCKS Document commit constraints for RELENG_6_*. 2006-01-13 06:51:43 +00:00
MAINTAINERS Saying that asr(4) has a maintainer is like saying that a politician has 2006-04-01 21:19:15 +00:00
Makefile Add the new "showconfig" target that displays build configuration. 2006-03-18 14:30:23 +00:00
Makefile.inc1 Sort bootstrap-tools entries. 2006-03-31 14:10:35 +00:00
ObsoleteFiles.inc Record the /lib/libgpib.so.1 move to /usr/lib. 2006-04-13 13:19:10 +00:00
README Add a note explaining what the rescue/ directory is for. 2006-03-01 20:14:55 +00:00
UPDATING Fix the "make distribution" example; it should be run from src/. 2006-04-07 11:36:25 +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.

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