Provided by: freebsd-manpages_10.1~RC1-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 modem.


     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 follows:

     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 useful.

     machdep.wl_gather_snr <milliseconds>  This switch is not currently useful.

     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.


     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.


     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.