|
NAMEnet80211_vap —
802.11 network layer virtual radio support
SYNOPSIS#include
<net80211/ieee80211_var.h>
int
int
void
DESCRIPTIONThenet80211 software layer provides a support framework
for drivers that includes 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.
The virtual radio interface defined by the
The virtual radio architecture splits state between a single
per-device ieee80211com structure and one or more
ieee80211vap structures. Vaps are created with the
The vap creation process is done in three steps. First the driver
allocates the data structure with
malloc(9).
This data structure must have an ieee80211vap
structure at the front but is usually extended with driver-private state.
Next the vap is setup with a call to
A vap is deleted when an MULTI-VAP OPERATIONDrivers are responsible for deciding if multiple vaps can be created and how to manage them. Whether or not multiple concurrent vaps can be supported depends on a device's capabilities. For example, multiple hostap vaps can usually be supported but many devices do not support assigning each vap a unique BSSID. If a device supports hostap operation it can usually support concurrent station mode vaps but possibly with limitations such as losing support for hardware beacon miss support. Devices that are capable of hostap operation and can send and receive 4-address frames should be able to support WDS vaps together with an ap vap. But in contrast some devices cannot support WDS vaps without at least one ap vap (this however can be finessed by forcing the ap vap to not transmit beacon frames). All devices should support the creation of any number of monitor mode vaps concurrent with other vaps but it is the responsibility of the driver to allow this.An important consequence of supporting multiple concurrent vaps is that a driver's iv_newstate method must be written to handle being called for each vap. Where necessary, drivers must track private state for all vaps and not just the one whose state is being changed (e.g. for handling beacon timers the driver may need to know if all vaps that beacon are stopped before stopping the hardware timers). SEE ALSOieee80211(9), ifnet(9), malloc(9)
Visit the GSP FreeBSD Man Page Interface. |