NAME
ieee80211_ifattach,
    ieee80211_ifdetach,
    ieee80211_mhz2ieee,
    ieee80211_chan2ieee,
    ieee80211_ieee2mhz,
    ieee80211_media_init,
    ieee80211_media_change,
    ieee80211_media_status,
    ieee80211_watchdog,
    ieee80211_setmode,
    ieee80211_chan2mode,
    ieee80211_rate2media,
    ieee80211_media2rate,
    ieee80211_rate2plcp,
    ieee80211_plcp2rate —
    core 802.11 network stack
    functions
SYNOPSIS
#include
    <net80211/ieee80211_var.h>
  
  #include
    <net80211/ieee80211_proto.h>
void
  
  ieee80211_ifattach(struct
    ifnet *ifp);
void
  
  ieee80211_ifdetach(struct
    ifnet *ifp);
u_int
  
  ieee80211_mhz2ieee(u_int
    freq, u_int
  flags);
u_int
  
  ieee80211_chan2ieee(struct
    ieee80211com *ic, const
    struct ieee80211_channel *c);
u_int
  
  ieee80211_ieee2mhz(u_int
    chan, u_int
  flags);
void
  
  ieee80211_media_init(struct ifnet
    *ifp, ifm_change_cb_t media_change,
    ifm_stat_cb_t media_stat);
int
  
  ieee80211_media_change(struct
    ifnet *ifp);
void
  
  ieee80211_media_status(struct
    ifnet *ifp, struct
    ifmediareq *imr);
void
  
  ieee80211_watchdog(struct
    ifnet *ifp);
int
  
  ieee80211_setmode(struct
    ieee80211com *ic, enum
    ieee80211_phymode mode);
enum ieee80211_phymode
  
  ieee80211_chan2mode(struct
    ieee80211com *ic, const struct ieee80211_channel
    *chan);
int
  
  ieee80211_rate2media(struct
    ieee80211com *ic, int rate, enum
    ieee80211_phymode mode);
int
  
  ieee80211_media2rate(int
    mword);
u_int8_t
  
  ieee80211_rate2plcp(u_int8_t
    rate, enum
    ieee80211_phymode mode);
u_int8_t
  
  ieee80211_plcp2rate(u_int8_t
    plcp, enum
    ieee80211_phymode mode);
DESCRIPTION
The ieee80211 collection of functions are
    used to manage wireless network interfaces in the system which use the
    system's software 802.11 network stack. Most of these functions require that
    attachment to the stack is performed before calling. Several utility
    functions are also provided; these are safe to call from any driver without
    prior initialization.
The
    ieee80211_ifattach()
    function attaches the network interface ifp to the
    802.11 network stack layer. This function must be called before using any of
    the ieee80211 functions which need to store driver
    state across invocations. The struct ifnet instance
    pointed to by ifp MUST be an instance of
    struct ieee80211com, with various fields initialized
    to tell ieee80211 about its capabilities. This
    function performs Ethernet and BPF attachment (by calling
    ether_ifattach()
    and
    bpfattach())
    on behalf of the caller. It also implements the
    ifmedia interface.
The
    ieee80211_ifdetach()
    function frees any ieee80211 structures associated
    with the driver, and performs Ethernet and BPF detachment on behalf of the
    caller.
The
    ieee80211_mhz2ieee()
    utility function converts the frequency freq
    (specified in MHz) to an IEEE 802.11 channel number. The
    flags argument is a hint which specifies whether the
    frequency is in the 2GHz ISM band
    (IEEE80211_CHAN_2GHZ) or the 5GHz band
    (IEEE80211_CHAN_5GHZ); appropriate clipping of the
    result is then performed.
The
    ieee80211_chan2ieee()
    function converts the channel specified in *c to an
    IEEE channel number for the driver ic. If the
    conversion would be invalid, an error message is printed to the system
    console. This function requires that the driver is hooked up to the
    ieee80211 subsystem.
The
    ieee80211_ieee2mhz()
    utility function converts the IEEE channel number chan
    to a frequency (in MHz). The flags argument is a hint
    which specifies whether the frequency is in the 2GHz ISM band
    (IEEE80211_CHAN_2GHZ) or the 5GHz band
    (IEEE80211_CHAN_5GHZ); appropriate clipping of the
    result is then performed.
The
    ieee80211_media_init()
    function initializes media data structures used by the
    ifmedia interface, for the driver
    ifp. It must be called by the driver after calling
    ieee80211_ifattach() and before calling most
    ieee80211 functions. The
    media_change and media_stat
    arguments specify helper functions which will be invoked by the
    ifmedia framework when the user changes or queries
    media options, using a command such as
    ifconfig(8).
The
    ieee80211_media_status()
    and
    ieee80211_media_change()
    functions are device-independent handlers for ifmedia
    commands and are not intended to be called directly.
The
    ieee80211_watchdog()
    function is intended to be called from a driver's
    if_watchdog routine. It is used to perform periodic
    cleanup of state within the software 802.11 stack, as well as timing out
    scans.
The
    ieee80211_setmode()
    function is called from within the 802.11 stack to change the mode of the
    driver's PHY; it is not intended to be called directly.
The
    ieee80211_chan2mode()
    function returns the PHY mode required for use with the channel
    chan on the device ic. This is
    typically used when selecting a rate set, to be advertised in beacons, for
    example.
The
    ieee80211_rate2media()
    function converts the bit rate rate (measured in units
    of 0.5Mbps) to an ifmedia sub-type, for the device
    ic running in PHY mode mode. The
    ieee80211_media2rate()
    function performs the reverse of this conversion, returning the bit rate (in
    0.5Mbps units) corresponding to an ifmedia
  sub-type.
The
    ieee80211_rate2plcp()
    function converts the bit rate rate (measured in units
    of 0.5Mbps) to a plcp signal (in msb-first R4-R1
    format). The
    ieee80211_plcp2rate()
    function performs the reverse of this conversion, returning the bit rate (in
    0.5Mbps units) corresponding to a plcp signal (in
    msb-first R4-R1 format).
SEE ALSO
ifmedia(4), ieee80211_crypto(9), ieee80211_input(9), ieee80211_ioctl(9), ieee80211_node(9), ieee80211_output(9), ieee80211_proto(9), ieee80211_radiotap(9), rssadapt(9)
HISTORY
The ieee80211 series of functions first
    appeared in NetBSD 1.5, and were later ported to
    FreeBSD 4.6 and OpenBSD
  3.6.
AUTHORS
This man page was written by Bruce M. Simpson <bms@FreeBSD.org> and Darron Broad <darron@kewl.org>.