Copyright (c) 1996 Michael Smith
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
$Id$
.Dd March 4, 1997 .Dt ED 4 i386 .Os FreeBSD .Sh NAME .Nm wl .Nd NCR Wavelan device driver .Sh SYNOPSIS .Cd "device wl0 at isa? port 0x300 net irq ? vector wlintr" .Sh DESCRIPTION The .Nm driver provides support for the ISA bus AT&T/NCR/Lucent Wavelan ethernet-like wireless network cards.
p All card configuration values except for the base address are read from the PSA (Parameter Storage Area) on the card, which can be configured with the .Xr wlconfig 8 program. The base address for the card is set by dipswitches; see the manual supplied with the card for details.
p The .Nm driver does not accept any flags, however its behaviour can be controlled with a number of sysctl values: l -hang -offset indent t Em machdep.wl_xmit_delay On some systems, the driver is too fast for the Wavelan card. This value can be tweaked to slow the output rate of the driver at the expense of CPU performance. A value of 200 is believed to be acceptable for 486 systems, while 1000 is considered adequate for a 166MHz Pentium. t Em machdep.wl_xmit_watch Causes extra debugging messages concerning the state of transmitted packets to be printed. t Em machdep.wl_gather_snr SNR statistics are gathered. This is not completely implemented yet. .El .Sh DIAGNOSTICS l -diag t "wl%d: PSA corrupt (invalid IRQ value)" The IRQ value in the PSA is illegal. The card will be configured not to generate any interrupts, ie. it will not work as a network device, however it will be possible to use .Xr wlconfig 8 to reconfigure the IRQ to a sensible value. t "wl%d init(): trouble resetting board." t "wl%d bldcu(): iscp_busy timeout." t "wl%d bldcu(): not ready after reset." The board failed to respond correctly during reset and configuration. t "wl%d: busy?!" While attempting to queue a packet for transmission, the card claims to be busy although we were sure it wasn't. t "wl%d read(): board is not running." An attempt was made to read a packet from the card, but we don't think that it's running. Should never happen. t "wl%d read(): Invalid buffer" The i82586 on the card has corrupted its buffers. t "wl%d read(): hwrst trouble." Having failed to meet expectations, the i82586 on the card is refusing to reset. t "wl%d read(): No mbuf nth" An error occurred allocating mbufs to copy a received packet to. t "wl%d ioctl(): board is not running" The interface was marked as DOWN but still RUNNING. Harmless. t "wlack() int bits disappeared : %04x != int_type %04x" While acknowledging an interrupt, some of the interrupt sources on the i83586 went away. t "wl%d: xmt intr but not busy, CU %04x" A transmit interrupt occurred but we are not expecting one. t "wl%d: xmt intr but ac_status == 0" A transmit interrupt occurred but there is no status to indicate that one should have been generated. t "wl%d: xmt aborted" The transmission of a packet was aborted. t "wl%d: no CTS" A packet was not transmitted because the CTS input to the i82586 went away. t "wl%d: DMA underrun" The DMA hardware on the Wavelan card failed, causing an outgoing packet to be lost. t "wl%d: xmt deferred" Transmission of a packet was deferred to avoid other traffic. t "wl%d: heart beat" The i82586 thought it heard a heartbeat signal. This usually means that there's someone else transmitting at the same time. t "wl%d: too many collisions" A packet was aborted because too many collisions occurred trying to send it. t "wl%d RCV: !OK %x" A receive operation did not complete OK. t "wl%d: slow accepting xmit" The i82586 on the card is taking a long time to accept a transmit command. t "wl%d: i82586 Self Test failed!" Diagnostics on the i82586 failed. t "wl%d: %s failed; status = %d, inw = %x, outw = %x" A command to the i82586 failed. t "wl%d wlack(): board not accepting command." The card is not responding to an interrupt acknowledge. .El .Sh CAVEATS The cards are known to lose transmit interrupts under heavy load. Ajust the machdep.wl_xmit_delay parameter to avoid this.
p On one test link, packet loss was significant enough to causes major lagging. .Sh BUGS The .Nm driver is very old and has been hacked on by many people. The i82586 is an odd and funky device. The two are not necessarily a good mix. .Sh SEE ALSO .Xr wlconfig 8 , .Xr netintro 4 , .Xr ifconfig 8 .Sh HISTORY The .Nm device driver was written/ported for Mach by Anders Klemets, ported to BSD/OS by Richard Morris, to FreeBSD 2.1 by Jim Binkley and to FreeBSD 2.2 by Michael Smith. It has not appeared in any FreeBSD releases yet.