NAME¶
ieee80211_input
—
software 802.11 stack input functions
SYNOPSIS¶
#include
<net80211/ieee80211_var.h>
void
ieee80211_input
(
struct
ieee80211_node *,
struct mbuf *,
int rssi,
int
noise);
void
ieee80211_input_all
(
struct
ieee80211com *,
struct mbuf *,
int rssi,
int
noise);
DESCRIPTION¶
The
net80211
layer that supports 802.11
device drivers requires that receive processing be single-threaded. Typically
this is done using a dedicated driver
taskqueue(9) thread.
ieee80211_input
() and
ieee80211_input_all
() process received
802.11 frames and are designed for use in that context; e.g. no driver locks
may be held.
The frame passed up in the
mbuf must have the
802.11 protocol header at the front; all device-specific information and/or
PLCP must be removed. Any CRC must be stripped from the end of the frame. The
802.11 protocol header should be 32-bit aligned for optimal performance but
receive processing does not require it. If the frame holds a payload and that
is not aligned to a 32-bit boundary then the payload will be re-aligned so
that it is suitable for processing by protocols such as
ip(4).
If a device (such as
ath(4)) inserts padding after
the 802.11 header to align the payload to a 32-bit boundary the
IEEE80211_C_DATAPAD
capability must be set.
Otherwise header and payload are assumed contiguous in the mbuf chain.
If a received frame must pass through the A-MPDU receive reorder buffer then the
mbuf must be marked with the
M_AMPDU
flag.
Note that for the moment this is required of all frames received from a
station and TID where a Block ACK stream is active, not just A-MPDU
aggregates. It is sufficient to check for
IEEE80211_NODE_HT
in the
ni_flags of the station's node table entry,
any frames that do not require reorder processing will be dispatched with only
minimal overhead.
The
rssi parameter is the Receive Signal
Strength Indication of the frame measured in 0.5dBm units relative to the
noise floor. The
noise parameter is the best
approximation of the noise floor in dBm units at the time the frame was
received. RSSI and noise are used by the
net80211
layer to make scanning and roaming
decisions in station mode and to do auto channel selection for hostap and
similar modes. Otherwise the values are made available to user applications
(with the rssi presented as a filtered average over the last ten values and
the noise floor the last reported value).
SEE ALSO¶
ieee80211(9)