Provided by: freebsd-manpages_8.2-1_all bug


     wl — T1 speed ISA/radio lan card


     device wl0 at isa? port 0x300 irq 5


     The wl driver controls a radio lan card system made originally by NCR,
     then ATT, now Lucent.  The system is spread-spectrum radio at around 915
     MHz (or 2.4 GHz).  With the supplied omni-directional antennae, about 400
     feet (indoors, more outdoors) can be covered in circumference.  This card
     can talk to the companion (wlp0) pccard.  Speeds vary from 1 megabit to
     theoretically 2 megabits (roughly T1 in speed).

     The card has three fundamental hardware units, a so-called PSA or
     programmable storage area, a radio modem, and a Ethernet lan controller.
     The latter component is the ancient (and not very honorable) Intel 82586
     Ethernet chip.  Fundamentally it appears to the operating system as an
     Ethernet system, and speaks IEEE MAC addresses.  The radio modem simply
     translates Ethernet packets to/from radio packets, that are either at 2.4
     GHz or 915 MHz depending on the radio modem.  It supports a collision
     avoidance scheme.  The lan controller supports promiscuous mode,
     broadcast, and multicasting (although there is a glitch in the latter).
     "It thinks it is Ethernet".

     How it is used depends on the kind of antennae deployed with it.  Point
     to point applications are possible as are Ethernet-like lan use.  The
     vendor ships an omni-directional antennae that works in the vicinity of
     400 feet (indoors).  Point to point antennae can be purchased that will
     go miles.


     The card can either be initialized with the vendor supplied DOS setup
     software.  Typically minimally an IRQ, port, and Network ID must be
     supplied.  Michael Smith's wlconfig(8) utility can now be used to do this
     work from the UNIX side.  The card is "not" plug and play.  The network
     id controls whether one set of cards can hear another.  If different,
     cards will read physical packets, but they will be discarded by the radio


     In addition to the config utility, there are several sysctl switches that
     can be used to modify runtime parameters.  The sysctl(8) variables are as

     machdep.wl_xmit_delay <useconds>  This variable will cause the driver to
     insert a delay on transmit.  250 is the default.  The delay should
     probably be a bit longer on faster cpus and less on slower cpus.  It
     exists because the 82586 was not designed to work with Pentium-speed cpu
     systems and if overdriven will have copious xmit side errors.

     machdep.wl_ignore_nwid <0 | 1>  This switch defaults to 0; i.e., the nwid
     is not ignored.  It can be set to 1 to cause the nwid to not be used.
     This may be useful when the device is in promiscuous mode as one can
     watch for all packets and ignore nwid differences.

     machdep.wl_xmit_watch <milliseconds>  This switch is not currently

     machdep.wl_gather_snr <milliseconds>  This switch is not currently

     There is also a signal strength cache in the driver.  It may be
     interrogated with wlconfig(8).  Incoming packets are checked for certain
     hardware radio-modem values including signal strength, silence, and
     quality, which range fro 0..63, 0..63, and 0..15 respectively.  Thus one
     can read out signal strenth values to see how close/far peer nodes are.
     The signal strength cache is indexed by sender MAC address.  There are
     two sysctls that change how it filters packets.  Both are on by default.

     machdep.wl_wlcache_mcastonly <0 | 1>  By default this switch is on.  It
     forces the cache to filter out unicast packets.  Only broadcast or
     multicast packets are accepted.

     machdep.wl_wlcache_iponly <0 | 1>  By default this switch is on.  It
     forces the driver to discard non-IP packets and also stores the IP src
     address.  ARP packets are ignored, as are any other network protocol
     barring IPv4 packets.


     The 82586 has numerous defects.  It may experience transmit-side errors
     when modern faster cpus send packets at it faster than it can handle.
     The driver (and probably the chip) does not support an all multicast
     mode.  As a result, it can be used with applications like mrouted(8)
     (ports/net/mrouted), but it must go into promiscuous mode for that to
     work.  The driver is slow to change modes from "normal" to promiscuous
     mode, presumably due to delays in the configuration code.


     sysctl(8), wlconfig(8)


     The wl driver was written by Anders Klemets (thousands of years ago?) and
     appears to be based on an even older Intel 82586 driver.  The 82586
     controller was one of the first (if not the first?) integrated lan
     controller on the block.  That does not mean it was the best either.
     Anders ported and or created a driver for the ISA wavelan and PCCARD
     wavelan system too (wlp).  Robert T. Morris, Jr. ported the Mach drivers
     to BSDI.  Jim Binkley ported them to FreeBSD 2.1.  Michael Smith ported
     the wl driver only to 2.2.2.  Jim and Michael have been maintaining them.
     The current state of the driver is NOT ANYONE'S FAULT.  Thanks to Bernie
     Doehner and Robert Buaas for contributions.


     Too numerous to mention.  See above.