2004-03-04 12:52:10 +00:00
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
|
|
|
|
.\" Copyright (c) 2004 Darron Broad <darron@kewl.org>
|
|
|
|
.\" All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
.\" SUCH DAMAGE.
|
|
|
|
.\"
|
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
2009-08-12 21:03:16 +00:00
|
|
|
.Dd August 4, 2009
|
2004-07-07 12:59:39 +00:00
|
|
|
.Dt IEEE80211_INPUT 9
|
2004-03-04 12:52:10 +00:00
|
|
|
.Os
|
|
|
|
.Sh NAME
|
2009-08-12 21:03:16 +00:00
|
|
|
.Nm ieee80211_input
|
2004-07-07 12:59:39 +00:00
|
|
|
.Nd software 802.11 stack input functions
|
2004-03-04 12:52:10 +00:00
|
|
|
.Sh SYNOPSIS
|
|
|
|
.In net80211/ieee80211_var.h
|
|
|
|
.Ft void
|
2004-07-07 12:59:39 +00:00
|
|
|
.Fo ieee80211_input
|
2009-08-12 21:03:16 +00:00
|
|
|
.Fa "struct ieee80211_node *"
|
|
|
|
.Fa "struct mbuf *"
|
|
|
|
.Fa "int rssi"
|
|
|
|
.Fa "int noise"
|
2004-07-07 12:59:39 +00:00
|
|
|
.Fc
|
2004-03-04 12:52:10 +00:00
|
|
|
.Ft void
|
2009-08-12 21:03:16 +00:00
|
|
|
.Fo ieee80211_input_all
|
|
|
|
.Fa "struct ieee80211com *"
|
|
|
|
.Fa "struct mbuf *"
|
|
|
|
.Fa "int rssi"
|
|
|
|
.Fa "int noise"
|
2004-07-07 12:59:39 +00:00
|
|
|
.Fc
|
2004-03-04 12:52:10 +00:00
|
|
|
.Sh DESCRIPTION
|
|
|
|
The
|
2009-08-12 21:03:16 +00:00
|
|
|
.Nm net80211
|
|
|
|
layer that supports 802.11 device drivers requires that
|
|
|
|
receive processing be single-threaded.
|
|
|
|
Typically this is done using a dedicated driver
|
|
|
|
.Xr taskqueue 9
|
|
|
|
thread.
|
2004-03-04 12:52:10 +00:00
|
|
|
.Fn ieee80211_input
|
|
|
|
and
|
2009-08-12 21:03:16 +00:00
|
|
|
.Fn ieee80211_input_all
|
|
|
|
process received 802.11 frames and are designed
|
|
|
|
for use in that context; e.g. no driver locks may be held.
|
2004-03-04 12:52:10 +00:00
|
|
|
.Pp
|
2009-08-12 21:03:16 +00:00
|
|
|
The frame passed up in the
|
|
|
|
.Vt 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
|
|
|
|
.Xr ip 4 .
|
|
|
|
.Pp
|
|
|
|
If a device (such as
|
|
|
|
.Xr ath 4 )
|
|
|
|
inserts padding after the 802.11 header to align
|
|
|
|
the payload to a 32-bit boundary the
|
|
|
|
.Dv IEEE80211_C_DATAPAD
|
|
|
|
capability must be set.
|
|
|
|
Otherwise header and payload are assumed contiguous in the mbuf chain.
|
|
|
|
.Pp
|
|
|
|
If a received frame must pass
|
|
|
|
through the A-MPDU receive reorder buffer then the mbuf
|
|
|
|
must be marked with the
|
|
|
|
.Dv 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
|
|
|
|
.Dv IEEE80211_NODE_HT
|
|
|
|
in the
|
|
|
|
.Vt ni_flags
|
|
|
|
of the station's node table entry, any frames that do not require reorder
|
|
|
|
processing will be dispatched with only minimal overhead.
|
2004-03-04 12:52:10 +00:00
|
|
|
.Pp
|
|
|
|
The
|
2009-08-12 21:03:16 +00:00
|
|
|
.Vt rssi
|
|
|
|
parameter is the Receive Signal Strength Indication of the frame
|
|
|
|
measured in 0.5dBm units relative to the noise floor.
|
2004-03-04 12:52:10 +00:00
|
|
|
The
|
2009-08-12 21:03:16 +00:00
|
|
|
.Vt 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
|
|
|
|
.Nm 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
|
2012-03-29 05:02:12 +00:00
|
|
|
(with the rssi presented as a filtered average over the last ten values
|
2009-08-12 21:03:16 +00:00
|
|
|
and the noise floor the last reported value).
|
|
|
|
.Sh SEE ALSO
|
2009-09-18 00:33:47 +00:00
|
|
|
.Xr ieee80211 9
|