The ieee80211 collection of functions are used to manage wireless network interfaces in the system which use the systems 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
.Vt struct ifnet instance pointed to by ifp MUST be an instance of
.Vt struct ieee80211com , with various fields initialized to tell ieee80211 about its capabilities. This function performs Ethernet and BPF attachment (by calling ether_ifattach and bpfattach2) on behalf of the caller. It also implements the
.Vt 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 (Vt IEEE80211_CHAN_2GHZ) or the 5GHz band (Vt 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 (Vt IEEE80211_CHAN_2GHZ) or the 5GHz band (Vt IEEE80211_CHAN_5GHZ); appropriate clipping of the result is then performed.
The ieee80211_media_init function initializes media data structures used by the
.Vt ifmedia interface, for the driver ifp. It must be called by the driver after calling ieee80211_attach and before calling most ieee80211 functions. The media_change and media_stat arguments specify helper functions which will be invoked by the
.Vt 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
.Vt ifmedia commands and are not intended to be called directly.
The ieee80211_watchdog function is intended to be called from a drivers 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 drivers 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
.Vt ifmedia sub-type, for the device ic running in PHY mode mode. The ieee80211_media2rate performs the reverse of this conversion, returning the bit rate (in 0.5Mbps units) corresponding to an
.Vt ifmedia sub-type.
ieee80211_crypto(9), ieee80211_input(9), ieee80211_ioctl(9), ieee80211_node(9), ieee80211_output(9), ieee80211_proto(9), ieee80211_radiotap(9), ifnet(9)