ED(4)

NAME
wl - NCR Wavelan device driver

SYNOPSIS
device wl0 at isa? port 0x300 net irq ? vector wlintr

DESCRIPTION
The wl driver provides support for the ISA bus AT&T/NCR/Lucent Wavelan ethernet-like wireless network cards.

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 wlconfig(8) program. The base address for the card is set by dipswitches; see the manual supplied with the card for details.

The wl driver does not accept any flags, however its behaviour can be controlled with a number of sysctl values:

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.

machdep.wl_xmit_watch
    Causes extra debugging messages concerning the state of transmitted packets to be printed.

machdep.wl_gather_snr
    SNR statistics are gathered. This is not completely implemented yet.

DIAGNOSTICS

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 wlconfig(8) to reconfigure the IRQ to a sensible value.

wl%d init(): trouble resetting board.

wl%d bldcu(): iscp_busy timeout.

wl%d bldcu(): not ready after reset. The board failed to respond correctly during reset and configuration.

wl%d: busy?! While attempting to queue a packet for transmission, the card claims to be busy although we were sure it wasn'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.

wl%d read(): Invalid buffer The i82586 on the card has corrupted its buffers.

wl%d read(): hwrst trouble. Having failed to meet expectations, the i82586 on the card is refusing to reset.

wl%d read(): No mbuf nth An error occurred allocating mbufs to copy a received packet to.

wl%d ioctl(): board is not running The interface was marked as DOWN but still RUNNING. Harmless.

wlack() int bits disappeared : %04x != int_type %04x While acknowledging an interrupt, some of the interrupt sources on the i83586 went away.

wl%d: xmt intr but not busy, CU %04x A transmit interrupt occurred but we are not expecting one.

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.

wl%d: xmt aborted The transmission of a packet was aborted.

wl%d: no CTS A packet was not transmitted because the CTS input to the i82586 went away.

wl%d: DMA underrun The DMA hardware on the Wavelan card failed, causing an outgoing packet to be lost.

wl%d: xmt deferred Transmission of a packet was deferred to avoid other traffic.

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.

wl%d: too many collisions A packet was aborted because too many collisions occurred trying to send it.

wl%d RCV: !OK %x A receive operation did not complete OK.

wl%d: slow accepting xmit The i82586 on the card is taking a long time to accept a transmit command.

wl%d: i82586 Self Test failed! Diagnostics on the i82586 failed.

wl%d: %s failed; status = %d, inw = %x, outw = %x A command to the i82586 failed.

wl%d wlack(): board not accepting command. The card is not responding to an interrupt acknowledge.

CAVEATS
The cards are known to lose transmit interrupts under heavy load. Ajust the machdep.wl_xmit_delay parameter to avoid this.

On one test link, packet loss was significant enough to causes major lagging.

BUGS
The wl 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.

SEE ALSO
wlconfig(8), netintro(4), ifconfig(8)

HISTORY
The wl 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.