summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/ieee80211.9 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man9/ieee80211.9 3.html')
-rw-r--r--static/freebsd/man9/ieee80211.9 3.html568
1 files changed, 0 insertions, 568 deletions
diff --git a/static/freebsd/man9/ieee80211.9 3.html b/static/freebsd/man9/ieee80211.9 3.html
deleted file mode 100644
index 7c8c3714..00000000
--- a/static/freebsd/man9/ieee80211.9 3.html
+++ /dev/null
@@ -1,568 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">IEEE80211(9)</td>
- <td class="head-vol">Kernel Developer's Manual</td>
- <td class="head-rtitle">IEEE80211(9)</td>
- </tr>
-</table>
-<div class="manual-text">
-<section class="Sh">
-<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
-<p class="Pp"><code class="Nm">IEEE80211</code> &#x2014; <span class="Nd">802.11
- network layer</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<p class="Pp"><code class="In">#include
- &lt;<a class="In">net80211/ieee80211_var.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">ieee80211_ifattach</code>(<var class="Fa" style="white-space: nowrap;">struct
- ieee80211com *ic</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">ieee80211_ifdetach</code>(<var class="Fa" style="white-space: nowrap;">struct
- ieee80211com *ic</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">ieee80211_mhz2ieee</code>(<var class="Fa" style="white-space: nowrap;">u_int
- freq</var>, <var class="Fa" style="white-space: nowrap;">u_int
- flags</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">ieee80211_chan2ieee</code>(<var class="Fa" style="white-space: nowrap;">struct
- ieee80211com *ic</var>, <var class="Fa" style="white-space: nowrap;">const
- struct ieee80211_channel *c</var>);</p>
-<p class="Pp"><var class="Ft">u_int</var>
- <br/>
- <code class="Fn">ieee80211_ieee2mhz</code>(<var class="Fa" style="white-space: nowrap;">u_int
- chan</var>, <var class="Fa" style="white-space: nowrap;">u_int
- flags</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">ieee80211_media_change</code>(<var class="Fa" style="white-space: nowrap;">struct
- ifnet *ifp</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">ieee80211_media_status</code>(<var class="Fa" style="white-space: nowrap;">struct
- ifnet *ifp</var>, <var class="Fa" style="white-space: nowrap;">struct
- ifmediareq *imr</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">ieee80211_setmode</code>(<var class="Fa" style="white-space: nowrap;">struct
- ieee80211com *ic</var>, <var class="Fa" style="white-space: nowrap;">enum
- ieee80211_phymode mode</var>);</p>
-<p class="Pp"><var class="Ft">enum ieee80211_phymode</var>
- <br/>
- <code class="Fn">ieee80211_chan2mode</code>(<var class="Fa">const struct
- ieee80211_channel *chan</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">ieee80211_rate2media</code>(<var class="Fa">struct
- ieee80211com *ic</var>, <var class="Fa">int rate</var>, <var class="Fa">enum
- ieee80211_phymode mode</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">ieee80211_media2rate</code>(<var class="Fa" style="white-space: nowrap;">int
- mword</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">IEEE 802.11 device drivers are written to use the infrastructure
- provided by the <code class="Nm">IEEE80211</code> software layer. This
- software provides a support framework for drivers that includes ifnet
- cloning, state management, and a user management API by which applications
- interact with 802.11 devices. Most drivers depend on the
- <code class="Nm">IEEE80211</code> layer for protocol services but devices
- that off-load functionality may bypass the layer to connect directly to the
- device.</p>
-<p class="Pp">A <code class="Nm">IEEE80211</code> device driver implements a
- virtual radio API that is exported to users through network interfaces (aka
- vaps) that are cloned from the underlying device. These interfaces have an
- operating mode (station, adhoc, hostap, wds, monitor, etc.) that is fixed
- for the lifetime of the interface. Devices that can support multiple
- concurrent interfaces allow multiple vaps to be cloned. This enables
- construction of interesting applications such as an AP vap and one or more
- WDS vaps or multiple AP vaps, each with a different security model. The
- <code class="Nm">IEEE80211</code> layer virtualizes most 802.11 state and
- coordinates vap state changes including scheduling multiple vaps. State that
- is not virtualized includes the current channel and WME/WMM parameters.
- Protocol processing is typically handled entirely in the
- <code class="Nm">IEEE80211</code> layer with drivers responsible purely for
- moving data between the host and device. Similarly,
- <code class="Nm">IEEE80211</code> handles most <a class="Xr">ioctl(2)</a>
- requests without entering the driver; instead drivers are notified of state
- changes that require their involvement.</p>
-<p class="Pp">The virtual radio interface defined by the
- <code class="Nm">IEEE80211</code> layer means that drivers must be
- structured to follow specific rules. Drivers that support only a single
- interface at any time must still follow these rules.</p>
-<p class="Pp">Most of these functions require that attachment to the stack is
- performed before calling.</p>
-<p class="Pp" id="ieee80211_ifattach">The
- <a class="permalink" href="#ieee80211_ifattach"><code class="Fn">ieee80211_ifattach</code></a>()
- function attaches the wireless network interface <var class="Fa">ic</var> to
- the 802.11 network stack layer. This function must be called before using
- any of the <code class="Nm">IEEE80211</code> functions which need to store
- driver state across invocations.</p>
-<p class="Pp" id="ieee80211_ifdetach">The
- <a class="permalink" href="#ieee80211_ifdetach"><code class="Fn">ieee80211_ifdetach</code></a>()
- function frees any <code class="Nm">IEEE80211</code> structures associated
- with the driver, and performs Ethernet and BPF detachment on behalf of the
- caller.</p>
-<p class="Pp" id="ieee80211_mhz2ieee">The
- <a class="permalink" href="#ieee80211_mhz2ieee"><code class="Fn">ieee80211_mhz2ieee</code></a>()
- utility function converts the frequency <var class="Fa">freq</var>
- (specified in MHz) to an IEEE 802.11 channel number. The
- <var class="Fa">flags</var> argument is a hint which specifies whether the
- frequency is in the 2GHz ISM band
- (<var class="Vt">IEEE80211_CHAN_2GHZ</var>) or the 5GHz band
- (<var class="Vt">IEEE80211_CHAN_5GHZ</var>); appropriate clipping of the
- result is then performed.</p>
-<p class="Pp" id="ieee80211_chan2ieee">The
- <a class="permalink" href="#ieee80211_chan2ieee"><code class="Fn">ieee80211_chan2ieee</code></a>()
- function converts the channel specified in <var class="Fa">*c</var> to an
- IEEE channel number for the driver <var class="Fa">ic</var>. 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
- <code class="Nm">IEEE80211</code> subsystem.</p>
-<p class="Pp" id="ieee80211_ieee2mhz">The
- <a class="permalink" href="#ieee80211_ieee2mhz"><code class="Fn">ieee80211_ieee2mhz</code></a>()
- utility function converts the IEEE channel number <var class="Ft">chan</var>
- to a frequency (in MHz). The <var class="Fa">flags</var> argument is a hint
- which specifies whether the frequency is in the 2GHz ISM band
- (<var class="Vt">IEEE80211_CHAN_2GHZ</var>) or the 5GHz band
- (<var class="Vt">IEEE80211_CHAN_5GHZ</var>); appropriate clipping of the
- result is then performed.</p>
-<p class="Pp" id="ieee80211_media_status">The
- <a class="permalink" href="#ieee80211_media_status"><code class="Fn">ieee80211_media_status</code></a>()
- and
- <a class="permalink" href="#ieee80211_media_change"><code class="Fn" id="ieee80211_media_change">ieee80211_media_change</code></a>()
- functions are device-independent handlers for <var class="Vt">ifmedia</var>
- commands and are not intended to be called directly.</p>
-<p class="Pp" id="ieee80211_setmode">The
- <a class="permalink" href="#ieee80211_setmode"><code class="Fn">ieee80211_setmode</code></a>()
- 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.</p>
-<p class="Pp" id="ieee80211_chan2mode">The
- <a class="permalink" href="#ieee80211_chan2mode"><code class="Fn">ieee80211_chan2mode</code></a>()
- function returns the PHY mode required for use with the channel
- <var class="Fa">chan</var>. This is typically used when selecting a rate
- set, to be advertised in beacons, for example.</p>
-<p class="Pp" id="ieee80211_rate2media">The
- <a class="permalink" href="#ieee80211_rate2media"><code class="Fn">ieee80211_rate2media</code></a>()
- function converts the bit rate <var class="Fa">rate</var> (measured in units
- of 0.5Mbps) to an <var class="Vt">ifmedia</var> sub-type, for the device
- <var class="Fa">ic</var> running in PHY mode <var class="Fa">mode</var>. The
- <a class="permalink" href="#ieee80211_media2rate"><code class="Fn" id="ieee80211_media2rate">ieee80211_media2rate</code></a>()
- performs the reverse of this conversion, returning the bit rate (in 0.5Mbps
- units) corresponding to an <var class="Vt">ifmedia</var> sub-type.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DATA_STRUCTURES"><a class="permalink" href="#DATA_STRUCTURES">DATA
- STRUCTURES</a></h1>
-<p class="Pp">The virtual radio architecture splits state between a single
- per-device <var class="Vt">ieee80211com</var> structure and one or more
- <var class="Vt">ieee80211vap</var> structures. Drivers are expected to setup
- various shared state in these structures at device attach and during vap
- creation but otherwise should treat them as read-only. The
- <var class="Vt">ieee80211com</var> structure is allocated by the
- <code class="Nm">IEEE80211</code> layer as adjunct data to a device's
- <var class="Vt">ifnet</var>; it is accessed through the
- <var class="Vt">if_l2com</var> structure member. The
- <var class="Vt">ieee80211vap</var> structure is allocated by the driver in
- the &#x201C;vap create&#x201D; method and should be extended with any
- driver-private state. This technique of giving the driver control to
- allocate data structures is used for other <code class="Nm">IEEE80211</code>
- data structures and should be exploited to maintain driver-private state
- together with public <code class="Nm">IEEE80211</code> state.</p>
-<p class="Pp">The other main data structures are the station, or node, table
- that tracks peers in the local BSS, and the channel table that defines the
- current set of available radio channels. Both tables are bound to the
- <var class="Vt">ieee80211com</var> structure and shared by all vaps.
- Long-lasting references to a node are counted to guard against premature
- reclamation. In particular every packet sent/received holds a node reference
- (either explicitly for transmit or implicitly on receive).</p>
-<p class="Pp">The <var class="Vt">ieee80211com</var> and
- <var class="Vt">ieee80211vap</var> structures also hold a collection of
- method pointers that drivers fill-in and/or override to take control of
- certain operations. These methods are the primary way drivers are bound to
- the <code class="Nm">IEEE80211</code> layer and are described below.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DRIVER_ATTACH/DETACH"><a class="permalink" href="#DRIVER_ATTACH/DETACH">DRIVER
- ATTACH/DETACH</a></h1>
-<p class="Pp">Drivers attach to the <code class="Nm">IEEE80211</code> layer with
- the
- <a class="permalink" href="#ieee80211_ifattach~2"><code class="Fn" id="ieee80211_ifattach~2">ieee80211_ifattach</code></a>()
- function. The driver is expected to allocate and setup any device-private
- data structures before passing control. The
- <var class="Vt">ieee80211com</var> structure must be pre-initialized with
- state required to setup the <code class="Nm">IEEE80211</code> layer:</p>
-<dl class="Bl-tag">
- <dt id="ic_ifp"><a class="permalink" href="#ic_ifp"><code class="Dv">ic_ifp</code></a></dt>
- <dd>Backpointer to the physical device's ifnet.</dd>
- <dt id="ic_caps"><a class="permalink" href="#ic_caps"><code class="Dv">ic_caps</code></a></dt>
- <dd>Device/driver capabilities; see below for a complete description.</dd>
- <dt id="ic_channels"><a class="permalink" href="#ic_channels"><code class="Dv">ic_channels</code></a></dt>
- <dd>Table of channels the device is capable of operating on. This is initially
- provided by the driver but may be changed through calls that change the
- regulatory state.</dd>
- <dt id="ic_nchan"><a class="permalink" href="#ic_nchan"><code class="Dv">ic_nchan</code></a></dt>
- <dd>Number of entries in <code class="Dv">ic_channels</code>.</dd>
-</dl>
-<p class="Pp" id="ieee80211_ifattach~3">On return from
- <a class="permalink" href="#ieee80211_ifattach~3"><code class="Fn">ieee80211_ifattach</code></a>()
- the driver is expected to override default callback functions in the
- <var class="Vt">ieee80211com</var> structure to register it's private
- routines. Methods marked with a &#x201C;*&#x201D; must be provided by the
- driver.</p>
-<dl class="Bl-tag">
- <dt id="ic_vap_create*"><a class="permalink" href="#ic_vap_create*"><code class="Dv">ic_vap_create*</code></a></dt>
- <dd>Create a vap instance of the specified type (operating mode). Any fixed
- BSSID and/or MAC address is provided. Drivers that support multi-bssid
- operation may honor the requested BSSID or assign their own.</dd>
- <dt id="ic_vap_delete*"><a class="permalink" href="#ic_vap_delete*"><code class="Dv">ic_vap_delete*</code></a></dt>
- <dd>Destroy a vap instance created with
- <code class="Dv">ic_vap_create</code>.</dd>
- <dt id="ic_getradiocaps"><a class="permalink" href="#ic_getradiocaps"><code class="Dv">ic_getradiocaps</code></a></dt>
- <dd>Return the list of calibrated channels for the radio. The default method
- returns the current list of channels (space permitting).</dd>
- <dt id="ic_setregdomain"><a class="permalink" href="#ic_setregdomain"><code class="Dv">ic_setregdomain</code></a></dt>
- <dd>Process a request to change regulatory state. The routine may reject a
- request or constrain changes (e.g. reduce transmit power caps). The
- default method accepts all proposed changes.</dd>
- <dt id="ic_send_mgmt"><a class="permalink" href="#ic_send_mgmt"><code class="Dv">ic_send_mgmt</code></a></dt>
- <dd>Send an 802.11 management frame. The default method fabricates the frame
- using <code class="Nm">IEEE80211</code> state and passes it to the driver
- through the <code class="Dv">ic_raw_xmit</code> method.</dd>
- <dt id="ic_raw_xmit"><a class="permalink" href="#ic_raw_xmit"><code class="Dv">ic_raw_xmit</code></a></dt>
- <dd>Transmit a raw 802.11 frame. The default method drops the frame and
- generates a message on the console.</dd>
- <dt id="ic_updateslot"><a class="permalink" href="#ic_updateslot"><code class="Dv">ic_updateslot</code></a></dt>
- <dd>Update hardware state after an 802.11 IFS slot time change. There is no
- default method; the pointer may be NULL in which case it will not be
- used.</dd>
- <dt id="ic_update_mcast"><a class="permalink" href="#ic_update_mcast"><code class="Dv">ic_update_mcast</code></a></dt>
- <dd>Update hardware for a change in the multicast packet filter. The default
- method prints a console message.</dd>
- <dt id="ic_update_promisc"><a class="permalink" href="#ic_update_promisc"><code class="Dv">ic_update_promisc</code></a></dt>
- <dd>Update hardware for a change in the promiscuous mode setting. The default
- method prints a console message.</dd>
- <dt id="ic_newassoc"><a class="permalink" href="#ic_newassoc"><code class="Dv">ic_newassoc</code></a></dt>
- <dd>Update driver/device state for association to a new AP (in station mode)
- or when a new station associates (e.g. in AP mode). There is no default
- method; the pointer may be NULL in which case it will not be used.</dd>
- <dt id="ic_node_alloc"><a class="permalink" href="#ic_node_alloc"><code class="Dv">ic_node_alloc</code></a></dt>
- <dd>Allocate and initialize a <var class="Vt">ieee80211_node</var> structure.
- This method cannot sleep. The default method allocates zero'd memory using
- <a class="Xr">malloc(9)</a>. Drivers should override this method to
- allocate extended storage for their own needs. Memory allocated by the
- driver must be tagged with <code class="Dv">M_80211_NODE</code> to balance
- the memory allocation statistics.</dd>
- <dt id="ic_node_free"><a class="permalink" href="#ic_node_free"><code class="Dv">ic_node_free</code></a></dt>
- <dd>Reclaim storage of a node allocated by
- <code class="Dv">ic_node_alloc</code>. Drivers are expected to
- <a class="permalink" href="#interpose"><i class="Em" id="interpose">interpose</i></a>
- their own method to cleanup private state but must call through this
- method to allow <code class="Nm">IEEE80211</code> to reclaim it's private
- state.</dd>
- <dt id="ic_node_cleanup"><a class="permalink" href="#ic_node_cleanup"><code class="Dv">ic_node_cleanup</code></a></dt>
- <dd>Cleanup state in a <var class="Vt">ieee80211_node</var> created by
- <code class="Dv">ic_node_alloc</code>. This operation is distinguished
- from <code class="Dv">ic_node_free</code> in that it may be called long
- before the node is actually reclaimed to cleanup adjunct state. This can
- happen, for example, when a node must not be reclaimed due to references
- held by packets in the transmit queue. Drivers typically interpose
- <code class="Dv">ic_node_cleanup</code> instead of
- <code class="Dv">ic_node_free</code>.</dd>
- <dt id="ic_node_age"><a class="permalink" href="#ic_node_age"><code class="Dv">ic_node_age</code></a></dt>
- <dd>Age, and potentially reclaim, resources associated with a node. The
- default method ages frames on the power-save queue (in AP mode) and
- pending frames in the receive reorder queues (for stations using
- A-MPDU).</dd>
- <dt id="ic_node_drain"><a class="permalink" href="#ic_node_drain"><code class="Dv">ic_node_drain</code></a></dt>
- <dd>Reclaim all optional resources associated with a node. This call is used
- to free up resources when they are in short supply.</dd>
- <dt id="ic_node_getrssi"><a class="permalink" href="#ic_node_getrssi"><code class="Dv">ic_node_getrssi</code></a></dt>
- <dd>Return the Receive Signal Strength Indication (RSSI) in .5 dBm units for
- the specified node. This interface returns a subset of the information
- returned by <code class="Dv">ic_node_getsignal</code>. The default method
- calculates a filtered average over the last ten samples passed in to
- <a class="Xr">ieee80211_input(9)</a> or
- <a class="Xr">ieee80211_input_all(9)</a>.</dd>
- <dt id="ic_node_getsignal"><a class="permalink" href="#ic_node_getsignal"><code class="Dv">ic_node_getsignal</code></a></dt>
- <dd>Return the RSSI and noise floor (in .5 dBm units) for a station. The
- default method calculates RSSI as described above; the noise floor
- returned is the last value supplied to
- <a class="Xr">ieee80211_input(9)</a> or
- <a class="Xr">ieee80211_input_all(9)</a>.</dd>
- <dt id="ic_node_getmimoinfo"><a class="permalink" href="#ic_node_getmimoinfo"><code class="Dv">ic_node_getmimoinfo</code></a></dt>
- <dd>Return MIMO radio state for a station in support of the
- <code class="Dv">IEEE80211_IOC_STA_INFO</code> ioctl request. The default
- method returns nothing.</dd>
- <dt id="ic_scan_start*"><a class="permalink" href="#ic_scan_start*"><code class="Dv">ic_scan_start*</code></a></dt>
- <dd>Prepare driver/hardware state for scanning. This callback is done in a
- sleepable context.</dd>
- <dt id="ic_scan_end*"><a class="permalink" href="#ic_scan_end*"><code class="Dv">ic_scan_end*</code></a></dt>
- <dd>Restore driver/hardware state after scanning completes. This callback is
- done in a sleepable context.</dd>
- <dt id="ic_set_channel*"><a class="permalink" href="#ic_set_channel*"><code class="Dv">ic_set_channel*</code></a></dt>
- <dd>Set the current radio channel using <var class="Vt">ic_curchan</var>. This
- callback is done in a sleepable context.</dd>
- <dt id="ic_scan_curchan"><a class="permalink" href="#ic_scan_curchan"><code class="Dv">ic_scan_curchan</code></a></dt>
- <dd>Start scanning on a channel. This method is called immediately after each
- channel change and must initiate the work to scan a channel and schedule a
- timer to advance to the next channel in the scan list. This callback is
- done in a sleepable context. The default method handles active scan work
- (e.g. sending ProbeRequest frames), and schedules a call to
- <a class="Xr">ieee80211_scan_next(9)</a> according to the maximum dwell
- time for the channel. Drivers that off-load scan work to firmware
- typically use this method to trigger per-channel scan activity.</dd>
- <dt id="ic_scan_mindwell"><a class="permalink" href="#ic_scan_mindwell"><code class="Dv">ic_scan_mindwell</code></a></dt>
- <dd>Handle reaching the minimum dwell time on a channel when scanning. This
- event is triggered when one or more stations have been found on a channel
- and the minimum dwell time has been reached. This callback is done in a
- sleepable context. The default method signals the scan machinery to
- advance to the next channel as soon as possible. Drivers can use this
- method to preempt further work (e.g. if scanning is handled by firmware)
- or ignore the request to force maximum dwell time on a channel.</dd>
- <dt id="ic_recv_action"><a class="permalink" href="#ic_recv_action"><code class="Dv">ic_recv_action</code></a></dt>
- <dd>Process a received Action frame. The default method points to
- <a class="Xr">ieee80211_recv_action(9)</a> which provides a mechanism for
- setting up handlers for each Action frame class.</dd>
- <dt id="ic_send_action"><a class="permalink" href="#ic_send_action"><code class="Dv">ic_send_action</code></a></dt>
- <dd>Transmit an Action frame. The default method points to
- <a class="Xr">ieee80211_send_action(9)</a> which provides a mechanism for
- setting up handlers for each Action frame class.</dd>
- <dt id="ic_ampdu_enable"><a class="permalink" href="#ic_ampdu_enable"><code class="Dv">ic_ampdu_enable</code></a></dt>
- <dd>Check if transmit A-MPDU should be enabled for the specified station and
- AC. The default method checks a per-AC traffic rate against a per-vap
- threshold to decide if A-MPDU should be enabled. This method also
- rate-limits ADDBA requests so that requests are not made too frequently
- when a receiver has limited resources.</dd>
- <dt id="ic_addba_request"><a class="permalink" href="#ic_addba_request"><code class="Dv">ic_addba_request</code></a></dt>
- <dd>Request A-MPDU transmit aggregation. The default method sets up local
- state and issues an ADDBA Request Action frame. Drivers may interpose this
- method if they need to setup private state for handling transmit
- A-MPDU.</dd>
- <dt id="ic_addb_response"><a class="permalink" href="#ic_addb_response"><code class="Dv">ic_addb_response</code></a></dt>
- <dd>Process a received ADDBA Response Action frame and setup resources as
- needed for doing transmit A-MPDU.</dd>
- <dt id="ic_addb_stop"><a class="permalink" href="#ic_addb_stop"><code class="Dv">ic_addb_stop</code></a></dt>
- <dd>Shutdown an A-MPDU transmit stream for the specified station and AC. The
- default method reclaims local state after sending a DelBA Action
- frame.</dd>
- <dt id="ic_bar_response"><a class="permalink" href="#ic_bar_response"><code class="Dv">ic_bar_response</code></a></dt>
- <dd>Process a response to a transmitted BAR control frame.</dd>
- <dt id="ic_ampdu_rx_start"><a class="permalink" href="#ic_ampdu_rx_start"><code class="Dv">ic_ampdu_rx_start</code></a></dt>
- <dd>Prepare to receive A-MPDU data from the specified station for the
- TID.</dd>
- <dt id="ic_ampdu_rx_stop"><a class="permalink" href="#ic_ampdu_rx_stop"><code class="Dv">ic_ampdu_rx_stop</code></a></dt>
- <dd>Terminate receipt of A-MPDU data from the specified station for the
- TID.</dd>
-</dl>
-<p class="Pp">Once the <code class="Nm">IEEE80211</code> layer is attached to a
- driver there are two more steps typically done to complete the work:</p>
-<ol class="Bl-enum">
- <li>Setup &#x201C;radiotap support&#x201D; for capturing raw 802.11 packets
- that pass through the device. This is done with a call to
- <a class="Xr">ieee80211_radiotap_attach(9)</a>.</li>
- <li>Do any final device setup like enabling interrupts.</li>
-</ol>
-<p class="Pp" id="ieee80211_ifdetach~2">State is torn down and reclaimed with a
- call to
- <a class="permalink" href="#ieee80211_ifdetach~2"><code class="Fn">ieee80211_ifdetach</code></a>().
- Note this call may result in multiple callbacks into the driver so it should
- be done before any critical driver state is reclaimed. On return from
- <code class="Fn">ieee80211_ifdetach</code>() all associated vaps and ifnet
- structures are reclaimed or inaccessible to user applications so it is safe
- to teardown driver state without worry about being re-entered. The driver is
- responsible for calling <a class="Xr">if_free(9)</a> on the ifnet it
- allocated for the physical device.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DRIVER_CAPABILITIES"><a class="permalink" href="#DRIVER_CAPABILITIES">DRIVER
- CAPABILITIES</a></h1>
-<p class="Pp">Driver/device capabilities are specified using several sets of
- flags in the <var class="Vt">ieee80211com</var> structure. General
- capabilities are specified by <var class="Vt">ic_caps</var>. Hardware
- cryptographic capabilities are specified by
- <var class="Vt">ic_cryptocaps</var>. Software cryptographic capabilities are
- specified by <var class="Vt">ic_sw_cryptocaps</var>. 802.11n capabilities,
- if any, are specified by <var class="Vt">ic_htcaps</var>. The
- <code class="Nm">IEEE80211</code> layer propagates a subset of these
- capabilities to each vap through the equivalent fields:
- <var class="Vt">iv_caps</var>, <var class="Vt">iv_cryptocaps</var>, and
- <var class="Vt">iv_htcaps</var>. The following general capabilities are
- defined:</p>
-<dl class="Bl-tag">
- <dt id="IEEE80211_C_STA"><a class="permalink" href="#IEEE80211_C_STA"><code class="Dv">IEEE80211_C_STA</code></a></dt>
- <dd>Device is capable of operating in station (aka Infrastructure) mode.</dd>
- <dt id="IEEE80211_C_8023ENCAP"><a class="permalink" href="#IEEE80211_C_8023ENCAP"><code class="Dv">IEEE80211_C_8023ENCAP</code></a></dt>
- <dd>Device requires 802.3-encapsulated frames be passed for transmit. By
- default <code class="Nm">IEEE80211</code> will encapsulate all outbound
- frames as 802.11 frames (without a PLCP header).</dd>
- <dt id="IEEE80211_C_FF"><a class="permalink" href="#IEEE80211_C_FF"><code class="Dv">IEEE80211_C_FF</code></a></dt>
- <dd>Device supports Atheros Fast-Frames.</dd>
- <dt id="IEEE80211_C_TURBOP"><a class="permalink" href="#IEEE80211_C_TURBOP"><code class="Dv">IEEE80211_C_TURBOP</code></a></dt>
- <dd>Device supports Atheros Dynamic Turbo mode.</dd>
- <dt id="IEEE80211_C_IBSS"><a class="permalink" href="#IEEE80211_C_IBSS"><code class="Dv">IEEE80211_C_IBSS</code></a></dt>
- <dd>Device is capable of operating in adhoc/IBSS mode.</dd>
- <dt id="IEEE80211_C_PMGT"><a class="permalink" href="#IEEE80211_C_PMGT"><code class="Dv">IEEE80211_C_PMGT</code></a></dt>
- <dd>Device supports dynamic power-management (aka power save) in station
- mode.</dd>
- <dt id="IEEE80211_C_HOSTAP"><a class="permalink" href="#IEEE80211_C_HOSTAP"><code class="Dv">IEEE80211_C_HOSTAP</code></a></dt>
- <dd>Device is capable of operating as an Access Point in Infrastructure
- mode.</dd>
- <dt id="IEEE80211_C_AHDEMO"><a class="permalink" href="#IEEE80211_C_AHDEMO"><code class="Dv">IEEE80211_C_AHDEMO</code></a></dt>
- <dd>Device is capable of operating in Adhoc Demo mode. In this mode the device
- is used purely to send/receive raw 802.11 frames.</dd>
- <dt id="IEEE80211_C_SWRETRY"><a class="permalink" href="#IEEE80211_C_SWRETRY"><code class="Dv">IEEE80211_C_SWRETRY</code></a></dt>
- <dd>Device supports software retry of transmitted frames.</dd>
- <dt id="IEEE80211_C_TXPMGT"><a class="permalink" href="#IEEE80211_C_TXPMGT"><code class="Dv">IEEE80211_C_TXPMGT</code></a></dt>
- <dd>Device support dynamic transmit power changes on transmitted frames; also
- known as Transmit Power Control (TPC).</dd>
- <dt id="IEEE80211_C_SHSLOT"><a class="permalink" href="#IEEE80211_C_SHSLOT"><code class="Dv">IEEE80211_C_SHSLOT</code></a></dt>
- <dd>Device supports short slot time operation (for 802.11g).</dd>
- <dt id="IEEE80211_C_SHPREAMBLE"><a class="permalink" href="#IEEE80211_C_SHPREAMBLE"><code class="Dv">IEEE80211_C_SHPREAMBLE</code></a></dt>
- <dd>Device supports short preamble operation (for 802.11g).</dd>
- <dt id="IEEE80211_C_MONITOR"><a class="permalink" href="#IEEE80211_C_MONITOR"><code class="Dv">IEEE80211_C_MONITOR</code></a></dt>
- <dd>Device is capable of operating in monitor mode.</dd>
- <dt id="IEEE80211_C_DFS"><a class="permalink" href="#IEEE80211_C_DFS"><code class="Dv">IEEE80211_C_DFS</code></a></dt>
- <dd>Device supports radar detection and/or DFS. DFS protocol support can be
- handled by <code class="Nm">IEEE80211</code> but the device must be
- capable of detecting radar events.</dd>
- <dt id="IEEE80211_C_MBSS"><a class="permalink" href="#IEEE80211_C_MBSS"><code class="Dv">IEEE80211_C_MBSS</code></a></dt>
- <dd>Device is capable of operating in MeshBSS (MBSS) mode (as defined by
- 802.11s Draft 3.0).</dd>
- <dt id="IEEE80211_C_WPA1"><a class="permalink" href="#IEEE80211_C_WPA1"><code class="Dv">IEEE80211_C_WPA1</code></a></dt>
- <dd>Device supports WPA1 operation.</dd>
- <dt id="IEEE80211_C_WPA2"><a class="permalink" href="#IEEE80211_C_WPA2"><code class="Dv">IEEE80211_C_WPA2</code></a></dt>
- <dd>Device supports WPA2/802.11i operation.</dd>
- <dt id="IEEE80211_C_BURST"><a class="permalink" href="#IEEE80211_C_BURST"><code class="Dv">IEEE80211_C_BURST</code></a></dt>
- <dd>Device supports frame bursting.</dd>
- <dt id="IEEE80211_C_WME"><a class="permalink" href="#IEEE80211_C_WME"><code class="Dv">IEEE80211_C_WME</code></a></dt>
- <dd>Device supports WME/WMM operation (at the moment this is mostly support
- for sending and receiving QoS frames with EDCF).</dd>
- <dt id="IEEE80211_C_WDS"><a class="permalink" href="#IEEE80211_C_WDS"><code class="Dv">IEEE80211_C_WDS</code></a></dt>
- <dd>Device supports transmit/receive of 4-address frames.</dd>
- <dt id="IEEE80211_C_BGSCAN"><a class="permalink" href="#IEEE80211_C_BGSCAN"><code class="Dv">IEEE80211_C_BGSCAN</code></a></dt>
- <dd>Device supports background scanning.</dd>
- <dt id="IEEE80211_C_TXFRAG"><a class="permalink" href="#IEEE80211_C_TXFRAG"><code class="Dv">IEEE80211_C_TXFRAG</code></a></dt>
- <dd>Device supports transmit of fragmented 802.11 frames.</dd>
- <dt id="IEEE80211_C_TDMA"><a class="permalink" href="#IEEE80211_C_TDMA"><code class="Dv">IEEE80211_C_TDMA</code></a></dt>
- <dd>Device is capable of operating in TDMA mode.</dd>
-</dl>
-<p class="Pp">The follow general crypto capabilities are defined. In general
- <code class="Nm">IEEE80211</code> will fall-back to software support when a
- device is not capable of hardware acceleration of a cipher. This can be done
- on a per-key basis. <code class="Nm">IEEE80211</code> can also handle
- software <code class="Dv">Michael</code> calculation combined with hardware
- <code class="Dv">AES</code> acceleration.</p>
-<dl class="Bl-tag">
- <dt id="IEEE80211_CRYPTO_WEP"><a class="permalink" href="#IEEE80211_CRYPTO_WEP"><code class="Dv">IEEE80211_CRYPTO_WEP</code></a></dt>
- <dd>Device supports hardware WEP cipher.</dd>
- <dt id="IEEE80211_CRYPTO_TKIP"><a class="permalink" href="#IEEE80211_CRYPTO_TKIP"><code class="Dv">IEEE80211_CRYPTO_TKIP</code></a></dt>
- <dd>Device supports hardware TKIP cipher.</dd>
- <dt id="IEEE80211_CRYPTO_AES_OCB"><a class="permalink" href="#IEEE80211_CRYPTO_AES_OCB"><code class="Dv">IEEE80211_CRYPTO_AES_OCB</code></a></dt>
- <dd>Device supports hardware AES-OCB cipher.</dd>
- <dt id="IEEE80211_CRYPTO_AES_CCM"><a class="permalink" href="#IEEE80211_CRYPTO_AES_CCM"><code class="Dv">IEEE80211_CRYPTO_AES_CCM</code></a></dt>
- <dd>Device supports hardware AES-CCM cipher.</dd>
- <dt id="IEEE80211_CRYPTO_TKIPMIC"><a class="permalink" href="#IEEE80211_CRYPTO_TKIPMIC"><code class="Dv">IEEE80211_CRYPTO_TKIPMIC</code></a></dt>
- <dd>Device supports hardware Michael for use with TKIP.</dd>
- <dt id="IEEE80211_CRYPTO_CKIP"><a class="permalink" href="#IEEE80211_CRYPTO_CKIP"><code class="Dv">IEEE80211_CRYPTO_CKIP</code></a></dt>
- <dd>Devices supports hardware CKIP cipher.</dd>
-</dl>
-<p class="Pp">The follow general 802.11n capabilities are defined. The first
- capabilities are defined exactly as they appear in the 802.11n
- specification. Capabilities beginning with IEEE80211_HTC_AMPDU are used
- solely by the <code class="Nm">IEEE80211</code> layer.</p>
-<dl class="Bl-tag">
- <dt id="IEEE80211_HTCAP_CHWIDTH40"><a class="permalink" href="#IEEE80211_HTCAP_CHWIDTH40"><code class="Dv">IEEE80211_HTCAP_CHWIDTH40</code></a></dt>
- <dd>Device supports 20/40 channel width operation.</dd>
- <dt id="IEEE80211_HTCAP_SMPS_DYNAMIC"><a class="permalink" href="#IEEE80211_HTCAP_SMPS_DYNAMIC"><code class="Dv">IEEE80211_HTCAP_SMPS_DYNAMIC</code></a></dt>
- <dd>Device supports dynamic SM power save operation.</dd>
- <dt id="IEEE80211_HTCAP_SMPS_ENA"><a class="permalink" href="#IEEE80211_HTCAP_SMPS_ENA"><code class="Dv">IEEE80211_HTCAP_SMPS_ENA</code></a></dt>
- <dd>Device supports static SM power save operation.</dd>
- <dt id="IEEE80211_HTCAP_GREENFIELD"><a class="permalink" href="#IEEE80211_HTCAP_GREENFIELD"><code class="Dv">IEEE80211_HTCAP_GREENFIELD</code></a></dt>
- <dd>Device supports Greenfield preamble.</dd>
- <dt id="IEEE80211_HTCAP_SHORTGI20"><a class="permalink" href="#IEEE80211_HTCAP_SHORTGI20"><code class="Dv">IEEE80211_HTCAP_SHORTGI20</code></a></dt>
- <dd>Device supports Short Guard Interval on 20MHz channels.</dd>
- <dt id="IEEE80211_HTCAP_SHORTGI40"><a class="permalink" href="#IEEE80211_HTCAP_SHORTGI40"><code class="Dv">IEEE80211_HTCAP_SHORTGI40</code></a></dt>
- <dd>Device supports Short Guard Interval on 40MHz channels.</dd>
- <dt id="IEEE80211_HTCAP_TXSTBC"><a class="permalink" href="#IEEE80211_HTCAP_TXSTBC"><code class="Dv">IEEE80211_HTCAP_TXSTBC</code></a></dt>
- <dd>Device supports Space Time Block Convolution (STBC) for transmit.</dd>
- <dt id="IEEE80211_HTCAP_RXSTBC_1STREAM"><a class="permalink" href="#IEEE80211_HTCAP_RXSTBC_1STREAM"><code class="Dv">IEEE80211_HTCAP_RXSTBC_1STREAM</code></a></dt>
- <dd>Device supports 1 spatial stream for STBC receive.</dd>
- <dt id="IEEE80211_HTCAP_RXSTBC_2STREAM"><a class="permalink" href="#IEEE80211_HTCAP_RXSTBC_2STREAM"><code class="Dv">IEEE80211_HTCAP_RXSTBC_2STREAM</code></a></dt>
- <dd>Device supports 1-2 spatial streams for STBC receive.</dd>
- <dt id="IEEE80211_HTCAP_RXSTBC_3STREAM"><a class="permalink" href="#IEEE80211_HTCAP_RXSTBC_3STREAM"><code class="Dv">IEEE80211_HTCAP_RXSTBC_3STREAM</code></a></dt>
- <dd>Device supports 1-3 spatial streams for STBC receive.</dd>
- <dt id="IEEE80211_HTCAP_MAXAMSDU_7935"><a class="permalink" href="#IEEE80211_HTCAP_MAXAMSDU_7935"><code class="Dv">IEEE80211_HTCAP_MAXAMSDU_7935</code></a></dt>
- <dd>Device supports A-MSDU frames up to 7935 octets.</dd>
- <dt id="IEEE80211_HTCAP_MAXAMSDU_3839"><a class="permalink" href="#IEEE80211_HTCAP_MAXAMSDU_3839"><code class="Dv">IEEE80211_HTCAP_MAXAMSDU_3839</code></a></dt>
- <dd>Device supports A-MSDU frames up to 3839 octets.</dd>
- <dt id="IEEE80211_HTCAP_DSSSCCK40"><a class="permalink" href="#IEEE80211_HTCAP_DSSSCCK40"><code class="Dv">IEEE80211_HTCAP_DSSSCCK40</code></a></dt>
- <dd>Device supports use of DSSS/CCK on 40MHz channels.</dd>
- <dt id="IEEE80211_HTCAP_PSMP"><a class="permalink" href="#IEEE80211_HTCAP_PSMP"><code class="Dv">IEEE80211_HTCAP_PSMP</code></a></dt>
- <dd>Device supports PSMP.</dd>
- <dt id="IEEE80211_HTCAP_40INTOLERANT"><a class="permalink" href="#IEEE80211_HTCAP_40INTOLERANT"><code class="Dv">IEEE80211_HTCAP_40INTOLERANT</code></a></dt>
- <dd>Device is intolerant of 40MHz wide channel use.</dd>
- <dt id="IEEE80211_HTCAP_LSIGTXOPPROT"><a class="permalink" href="#IEEE80211_HTCAP_LSIGTXOPPROT"><code class="Dv">IEEE80211_HTCAP_LSIGTXOPPROT</code></a></dt>
- <dd>Device supports L-SIG TXOP protection.</dd>
- <dt id="IEEE80211_HTC_AMPDU"><a class="permalink" href="#IEEE80211_HTC_AMPDU"><code class="Dv">IEEE80211_HTC_AMPDU</code></a></dt>
- <dd>Device supports A-MPDU aggregation. Note that any 802.11n compliant device
- must support A-MPDU receive so this implicitly means support for
- <i class="Em">transmit</i> of A-MPDU frames.</dd>
- <dt id="IEEE80211_HTC_AMSDU"><a class="permalink" href="#IEEE80211_HTC_AMSDU"><code class="Dv">IEEE80211_HTC_AMSDU</code></a></dt>
- <dd>Device supports A-MSDU aggregation. Note that any 802.11n compliant device
- must support A-MSDU receive so this implicitly means support for
- <i class="Em">transmit</i> of A-MSDU frames.</dd>
- <dt id="IEEE80211_HTC_HT"><a class="permalink" href="#IEEE80211_HTC_HT"><code class="Dv">IEEE80211_HTC_HT</code></a></dt>
- <dd>Device supports High Throughput (HT) operation. This capability must be
- set to enable 802.11n functionality in
- <code class="Nm">IEEE80211</code>.</dd>
- <dt id="IEEE80211_HTC_SMPS"><a class="permalink" href="#IEEE80211_HTC_SMPS"><code class="Dv">IEEE80211_HTC_SMPS</code></a></dt>
- <dd>Device supports MIMO Power Save operation.</dd>
- <dt id="IEEE80211_HTC_RIFS"><a class="permalink" href="#IEEE80211_HTC_RIFS"><code class="Dv">IEEE80211_HTC_RIFS</code></a></dt>
- <dd>Device supports Reduced Inter Frame Spacing (RIFS).</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
- ALSO</a></h1>
-<p class="Pp"><a class="Xr">ioctl(2)</a>, <a class="Xr">ieee80211_amrr(9)</a>,
- <a class="Xr">ieee80211_beacon(9)</a>, <a class="Xr">ieee80211_bmiss(9)</a>,
- <a class="Xr">ieee80211_crypto(9)</a>, <a class="Xr">ieee80211_ddb(9)</a>,
- <a class="Xr">ieee80211_input(9)</a>, <a class="Xr">ieee80211_node(9)</a>,
- <a class="Xr">ieee80211_output(9)</a>, <a class="Xr">ieee80211_proto(9)</a>,
- <a class="Xr">ieee80211_radiotap(9)</a>,
- <a class="Xr">ieee80211_regdomain(9)</a>,
- <a class="Xr">ieee80211_scan(9)</a>, <a class="Xr">ieee80211_vap(9)</a>,
- <a class="Xr">ifnet(9)</a>, <a class="Xr">malloc(9)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <code class="Nm">IEEE80211</code> series of functions first
- appeared in <span class="Ux">NetBSD 1.5</span>, and were later ported to
- <span class="Ux">FreeBSD 4.6</span>. This man page was updated with the
- information from <span class="Ux">NetBSD</span>
- <code class="Nm">IEEE80211</code> man page.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The original <span class="Ux">NetBSD</span>
- <code class="Nm">IEEE80211</code> man page was written by
- <span class="An">Bruce M. Simpson</span>
- &lt;<a class="Mt" href="mailto:bms@FreeBSD.org">bms@FreeBSD.org</a>&gt; and
- <span class="An">Darron Broad</span>
- &lt;<a class="Mt" href="mailto:darron@kewl.org">darron@kewl.org</a>&gt;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 24, 2024</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>