Initial import of documentation for net80211 interface code.

Of particular interest here is the ieee80211_radiotap(9) man page.

TODO: Flesh out ieee80211_node.9, ieee80211_proto.9.

Submitted by:	bms (with help from Darron Broad)
This commit is contained in:
Bruce M Simpson 2004-03-04 12:52:10 +00:00
parent d483b7825e
commit 3f3f4cdba2
9 changed files with 1118 additions and 0 deletions

View File

@ -450,6 +450,53 @@ MLINKS+=g_geom.9 g_destroy_geom.9 \
MLINKS+=g_provider.9 g_destroy_provider.9 \
g_provider.9 g_error_provider.9 \
g_provider.9 g_new_providerf.9
MLINKS+=ieee80211.9 ieee80211_attach.9 \
ieee80211.9 ieee80211_chan2ieee.9 \
ieee80211.9 ieee80211_chan2mode.9 \
ieee80211.9 ieee80211_ieee2mhz.9 \
ieee80211.9 ieee80211_ifattach.9 \
ieee80211.9 ieee80211_ifdetach.9 \
ieee80211.9 ieee80211_media2rate.9 \
ieee80211.9 ieee80211_media_change.9 \
ieee80211.9 ieee80211_media_init.9 \
ieee80211.9 ieee80211_media_status.9 \
ieee80211.9 ieee80211_mhz2ieee.9 \
ieee80211.9 ieee80211_rate2media.9 \
ieee80211.9 ieee80211_setmode.9 \
ieee80211.9 ieee80211_watchdog.9
MLINKS+=ieee80211_crypto.9 ieee80211_crypto_attach.9 \
ieee80211_crypto.9 ieee80211_crypto_detach.9 \
ieee80211_crypto.9 ieee80211_wep_crypt.9
MLINKS+=ieee80211_input.9 ieee80211_decap.9 \
ieee80211_input.9 ieee80211_input.9 \
ieee80211_input.9 ieee80211_recv_mgmt.9
MLINKS+=ieee80211_ioctl.9 ieee80211_cfgget.9 \
ieee80211_ioctl.9 ieee80211_cfgset.9 \
ieee80211_ioctl.9 ieee80211_ioctl.9 \
MLINKS+=ieee80211_node.9 ieee80211_alloc_node.9 \
ieee80211_node.9 ieee80211_begin_scan.9 \
ieee80211_node.9 ieee80211_create_ibss.9 \
ieee80211_node.9 ieee80211_dup_bss.9 \
ieee80211_node.9 ieee80211_end_scan.9 \
ieee80211_node.9 ieee80211_find_node.9 \
ieee80211_node.9 ieee80211_free_allnodes.9 \
ieee80211_node.9 ieee80211_free_node.9 \
ieee80211_node.9 ieee80211_iterate_nodes.9 \
ieee80211_node.9 ieee80211_lookup_node.9 \
ieee80211_node.9 ieee80211_next_scan.9 \
ieee80211_node.9 ieee80211_node_attach.9 \
ieee80211_node.9 ieee80211_node_detach.9 \
ieee80211_node.9 ieee80211_node_lateattach.9 \
ieee80211_node.9 ieee80211_timeout_nodes.9
MLINKS+=ieee80211_output.9 ieee80211_add_rates.9 \
ieee80211_output.9 ieee80211_add_xrates.9 \
ieee80211_output.9 ieee80211_encap.9 \
ieee80211_output.9 ieee80211_send_mgmt.9
MLINKS+=ieee80211_proto.9 ieee80211_dump_pkt.9 \
ieee80211_proto.9 ieee80211_fix_rate.9 \
ieee80211_proto.9 ieee80211_print_essid.9 \
ieee80211_proto.9 ieee80211_proto_attach.9 \
ieee80211_proto.9 ieee80211_proto_detach.9
MLINKS+=ifnet.9 ifaddr.9 \
ifnet.9 if_data.9 \
ifnet.9 ifqueue.9

246
share/man/man9/ieee80211.9 Normal file
View File

@ -0,0 +1,246 @@
.\"
.\" 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$
.\" $Id: ieee80211.9,v 1.5 2004/03/04 12:33:27 bruce Exp $
.\"
.Dd March 2, 2004
.Dt ieee80211 9
.Os
.Sh NAME
.Nm ieee80211
.Nd core 802.11 network stack functions
.Sh SYNOPSIS
.In net80211/ieee80211_var.h
.In net80211/ieee80211_proto.h
.Ft void
.Fn ieee80211_ifattach "struct ifnet *ifp"
.Ft void
.Fn ieee80211_ifdetach "struct ifnet *ifp"
.Ft u_int
.Fn ieee80211_mhz2ieee "u_int freq" "u_int flags"
.Ft u_int
.Fn ieee80211_chan2ieee "struct ieee80211com *ic" "struct ieee80211_channel *c"
.Ft u_int
.Fn ieee80211_ieee2mhz "u_int chan" "u_int flags"
.Fa int
.Fn ieee80211_media_change "struct ifnet *ifp"
.Fa void
.Fn ieee80211_media_status "struct ifnet *ifp" "struct ifmediareq *imr"
.Ft void
.Fn ieee80211_watchdog "struct ifnet *ifp"
.Ft int
.Fn ieee80211_setmode "struct ieee80211com *ic" "enum ieee80211_phymode mode"
.Ft enum ieee80211_phymode
.Fn ieee80211_chan2mode "struct ieee80211com *ic" "struct ieee80211_channel *chan"
.Ft int
.Fn ieee80211_rate2media "struct ieee80211com *ic" "int rate" "enum ieee80211_phymode mode"
.Ft int
.Fn ieee80211_media2rate "int mword"
.Sh DESCRIPTION
The
.Nm
collection of functions are used to manage wireless network interfaces in the
system which use the system's 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.
.Pp
.\"
The
.Fn ieee80211_ifattach
function attaches the network interface
.Fa ifp
to the 802.11 network stack layer.
This function must be called before using any of the
.Nm
functions which need to store driver state across invocations;
The
.Vt struct ifnet
instance pointed to by
.Fa ifp
MUST be an instance of
.Vt struct ieee80211com ,
with various fields initialized to tell
.Nm
about its capabilities.
This function performs Ethernet and BPF attachment (by calling
.Fn ether_ifattach
and
.Fn bpfattach2 )
on behalf of the caller.
It also implements the
.Vt ifmedia
interface.
.Pp
.\"
The
.Fn ieee80211_ifdetach
function frees any
.Nm
structures associated with the driver, and performs Ethernet and BPF
detachment on behalf of the caller.
.Pp
.\"
The
.Fn ieee80211_mhz2ieee
utility function converts the frequency
.Fa freq
(specified in MHz) to an IEEE 802.11 channel number.
The
.Fa 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.
.Pp
.\"
The
.Fn ieee80211_chan2ieee
function converts the channel specified in
.Fa *c
to an IEEE channel number for the driver
.Fa 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
.Nm
subsystem.
.Pp
.\"
The
.Fn ieee80211_ieee2mhz
utility function converts the IEEE channel number
.Ft chan
to a frequency (in MHz).
The
.Fa 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.
.Pp
.\"
The
.Fn ieee80211_media_init
function initializes media data structures used by the
.Vt ifmedia
interface, for the driver
.Fa ifp .
It must be called by the driver after calling
.Fn ieee80211_attach
and before calling most
.Nm
functions.
The
.Fa media_change
and
.Fa 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
.Xr ifconfig 8 .
.Pp
.\"
The
.Fn ieee80211_media_status
and
.Fn ieee80211_media_change
functions are device-independent handlers for
.Vt ifmedia
commands and are not intended to be called directly.
.Pp
.\"
The
.Fn ieee80211_watchdog
function is intended to be called from a driver's
.Vt if_watchdog
routine.
It is used to perform periodic cleanup of state within the software 802.11
stack, as well as timing out scans.
.Pp
.\"
The
.Fn ieee80211_setmode
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.
.Pp
.\"
The
.Fn ieee80211_chan2mode
function returns the PHY mode required for use with the channel
.Fa chan
on the device
.Fa ic .
This is typically used when selecting a rate set, to be advertised in
beacons, for example.
.Pp
.\"
The
.Fn ieee80211_rate2media
function converts the bit rate
.Fa rate (
measured in units of 0.5Mbps) to an
.Vt ifmedia
sub-type, for the device
.Fa ic
running in PHY mode
.Fa mode .
The
.Fn ieee80211_media2rate
performs the reverse of this conversion, returning the bit rate (in 0.5Mbps
units) corresponding to an
.Vt ifmedia
sub-type.
.Pp
.\"
.Sh SEE ALSO
.Xr ifnet 9
.Xr ieee80211_crypto 9 ,
.Xr ieee80211_input 9 ,
.Xr ieee80211_ioctl 9 ,
.Xr ieee80211_node 9 ,
.Xr ieee80211_output 9 ,
.Xr ieee80211_proto 9 ,
.Xr ieee80211_radiotap 9
.Sh HISTORY
The
.Nm
series of functions first appeared in
.Nx 1.5 ,
and were later ported to
.Fx 4.6 .
.Sh AUTHORS
This man page was written by
.An Bruce M. Simpson Aq bms@FreeBSD.org
and
.An Darron Broad Aq darron@kewl.org .

View File

@ -0,0 +1,102 @@
.\"
.\" 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$
.\" $Id: ieee80211_crypto.9,v 1.3 2004/03/04 10:42:56 bruce Exp $
.\"
.Dd March 2, 2004
.Dt ieee80211_crypto 9
.Os
.Sh NAME
.Nm ieee80211_crypto
.Nd 802.11 WEP encryption functions
.Sh SYNOPSIS
.Ft void
.Fn ieee80211_crypto_attach "struct ifnet *ifp"
.Ft void
.Fn ieee80211_crypto_detach "struct ifnet *ifp"
.Ft struct mbuf *
.Fn ieee80211_wep_crypt "struct ifnet *ifp" "struct mbuf *m0" "int txflag"
.Sh DESCRIPTION
The
.Nm
collection of functions provide software encryption support
for 802.11 device drivers.
.Pp
.\"
The
.Fn ieee80211_crypto_attach
function initializes crypto support for the interface
.Fa ifp ,
and sets the initialization vector (IV) for WEP encryption to
a random number derived from a secure PRNG.
.Pp
.\"
The
.Fn ieee80211_crypto_detach
function frees data structures associated with crypto support
for the interface
.Fa ifp .
.Pp
.\"
The
.Fn ieee80211_wep_crypt
function runs the appropriate WEP encryption algorithm over the 802.11
encapsulated frame held in the mbuf chain
.Fa m0 ,
for transmission or reception on the interface
.Fa ifp .
The
.Fa txflag
argument specifies whether the frame is being received or transmitted.
A value of 0 indicates that the frame is being received and should
therefore be decrypted; a non-zero value indicates that the frame
and should be encrypted.
.\"
.Sh IMPLEMENTATION NOTES
The
.Fn ieee80211_wep_crypt
function stores its IV in the interface's embedded
.Vt struct ieee80211com
instance.
.Sh SEE ALSO
.Xr awi 4 ,
.Xr wi 4 ,
.Xr arc4random 9 ,
.Xr ieee80211 9 ,
.Xr ifnet 9
.Sh HISTORY
The
.Nm
series of functions first appeared in
.Nx 1.5 ,
and were later ported to
.Fx 4.6 .
.Sh AUTHORS
This man page was written by
.An Bruce M. Simpson Aq bms@FreeBSD.org
and
.An Darron Broad Aq darron@kewl.org .

View File

@ -0,0 +1,108 @@
.\"
.\" 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$
.\" $Id: ieee80211_input.9,v 1.6 2004/03/04 12:33:27 bruce Exp $
.\"
.Dd March 2, 2004
.Dt ieee80211 9
.Os
.Sh NAME
.Nm ieee80211
.Nd core 802.11 network stack functions
.Sh SYNOPSIS
.In net80211/ieee80211_var.h
.In net80211/ieee80211_proto.h
.Ft void
.Fn ieee80211_input "struct ifnet *ifp" "struct mbuf *m" "struct ieee80211_node *ni" "int rssi" "u_int32_t rstamp"
.Ft struct mbuf *
.Fn ieee80211_decap "struct ifnet *ifp" "struct mbuf *m"
.Ft void
.Fn ieee80211_recv_mgmt "struct ieee80211com *ic" "struct mbuf *m0" "struct ieee80211_node *ni" "int subtype" "int rssi" "u_int32_t rstamp"
.Sh DESCRIPTION
The
.Nm
functions process received 802.11 frames.
.Pp
.\"
The
.Fn ieee80211_input
function takes an mbuf chain
.Fa m
containing a complete 802.11 frame from the driver
.Fa ifp
and passes it to the software 802.11 stack for input processing.
The
.Fa ni
argument specifies an instance of
.Vt struct ieee80211_node
(which may be driver-specific) representing the node from which the
frame was received.
The arguments
.Fa rssi
and
.Fa stamp
are typically derived from on-card data structures; they are used for
recording the signal strength and time received of the frame respectively.
.Pp
.\"
The
.Fn ieee80211_decap
function performs decapsulation of the 802.11 frame in the mbuf chain
.Fa m
received by the device
.Fa ifp ,
taking the form of the 802.11 address fields into account;
the structure of 802.11 addresses vary according to the intended
source and destination of the frame.
It is typically called from within
.Fn ieee80211_input .
.Pp
.\"
The
.Fn ieee80211_recv_mgmt
performs input processing for 802.11 management frames.
It is typically called from within
.Fn ieee80211_input .
.Pp
.\"
.Sh SEE ALSO
.Xr ieee80211 9 ,
.Xr ifnet 9
.Sh HISTORY
The
.Nm
series of functions first appeared in
.Nx 1.5 ,
and were later ported to
.Fx 4.6 .
.Sh AUTHORS
This man page was written by
.An Bruce M. Simpson Aq bms@FreeBSD.org
and
.An Darron Broad Aq darron@kewl.org .
.Sh BUGS
There is no netisr queue specifically for the software 802.11 stack yet.

View File

@ -0,0 +1,100 @@
.\"
.\" 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$
.\" $Id: ieee80211_ioctl.9,v 1.5 2004/03/04 12:33:27 bruce Exp $
.\"
.Dd March 2, 2004
.Dt ieee80211_ioctl 9
.Os
.Sh NAME
.Nm ieee80211_ioctl
.Nd 802.11 interface ioctl commands
.Sh SYNOPSIS
.In net80211/ieee80211_var.h
.In net80211/ieee80211_proto.h
.In net80211/ieee80211_ioctl.h
.Ft int
.Fn ieee80211_cfgget "struct ifnet *ifp" "u_long cmd" "caddr_t data"
.Ft int
.Fn ieee80211_cfgset "struct ifnet *ifp" "u_long cmd" "caddr_t data"
.Ft int
.Fn ieee80211_ioctl "struct ifnet *ifp" "u_long cmd" "caddr_t data"
.Sh DESCRIPTION
The
.Nm
functions are typically invoked by drivers in response to requests
for information or to change settings from the userland.
.Pp
.\"
The
.Fn ieee80211_cfgget
and
.Fn ieee80211_cfgset
functions implement a legacy interface for getting and setting 802.11
interface attributes respectively.
The interface is compatible with the RIDs implemented by the legacy
.Xr owi 4
driver and used by the
.Xr wicontrol 8
utility.
.Pp
.\"
The
.Fn ieee80211_ioctl
function provides a default implementation of the
.Vt SIOCS80211
and
.Vt SIOCG80211
ifioctls commands for 802.11 drivers.
The call signature is identical to that of the
.Vt if_ioctl
member found in
.Vt struct ifnet ,
however, many drivers store attributes such as
.Vt IEEE80211_IOC_STATIONNAME
in the driver's private soft state structure, so driver writers may prefer
to use this as the catch-all in a switch statement to avoid code duplication.
.Pp
.\"
.Sh SEE ALSO
.Xr owi 4 ,
.Xr ifconfig 8 ,
.Xr wicontrol 8 ,
.Xr ieee80211 9 ,
.Xr ifnet 9
.Sh HISTORY
The
.Nm
series of functions first appeared in
.Nx 1.5 ,
and were later ported to
.Fx 4.6 .
.Sh AUTHORS
This man page was written by
.An Bruce M. Simpson Aq bms@FreeBSD.org
and
.An Darron Broad Aq darron@kewl.org .

View File

@ -0,0 +1,91 @@
.\"
.\" 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$
.\" $Id: ieee80211_node.9,v 1.6 2004/03/04 12:33:27 bruce Exp $
.\"
.Dd March 2, 2004
.Dt ieee80211_node 9
.Os
.Sh NAME
.Nm ieee80211_node
.Nd software 802.11 stack node management functions
.Sh SYNOPSIS
.In net80211/ieee80211_var.h
.In net80211/ieee80211_proto.h
.In net80211/ieee80211_node.h
.Ft void
.Fn ieee80211_node_attach "struct ifnet *ifp"
.Ft void
.Fn ieee80211_node_lateattach "struct ifnet *ifp"
.Ft void
.Fn ieee80211_node_detach "struct ifnet *ifp"
.Ft void
.Fn ieee80211_begin_scan "struct ifnet *ifp"
.Ft void
.Fn ieee80211_next_scan "struct ifnet *ifp"
.Ft void
.Fn ieee80211_create_ibss "struct ieee80211com *ic" "struct ieee80211_channel *chan"
.Ft void
.Fn ieee80211_end_scan "struct ifnet *ifp"
.Ft struct ieee80211_node *
.Fn ieee80211_alloc_node "struct ieee80211com *ic" "u_int8_t *macaddr"
.Ft struct ieee80211_node *
.Fn ieee80211_dup_bss "struct ieee80211com *ic" "u_int8_t *macaddr"
.Ft struct ieee80211_node *
.Fn ieee80211_find_node "struct ieee80211com *ic" "u_int8_t *macaddr"
.Ft struct ieee80211_node *
.Fn ieee80211_lookup_node "struct ieee80211com *ic" "u_int8_t *macaddr" "struct ieee80211_channel *chan"
.Ft void
.Fn ieee80211_free_node "struct ieee80211com *ic" "struct ieee80211_node *ni"
.Ft void
.Fn ieee80211_free_allnodes "struct ieee80211com *ic"
.Ft void
.Fn ieee80211_timeout_nodes "struct ieee80211com *ic"
.Ft void
.Fn ieee80211_iterate_nodes "struct ieee80211com *ic" "ieee80211_iter_func *f" "void *arg"
.Sh DESCRIPTION
The
.Nm
collection of functions are used to manage node lists within the software
802.11 stack.
These lists are typically used for implementing host-mode AP functionality,
or providing signal quality information about neighbouring nodes.
.Sh SEE ALSO
.Xr ieee80211 9 ,
.Xr ifnet 9
.Sh HISTORY
The
.Nm
series of functions first appeared in
.Nx 1.5 ,
and were later ported to
.Fx 4.6 .
.Sh AUTHORS
This man page was written by
.An Bruce M. Simpson Aq bms@FreeBSD.org
and
.An Darron Broad Aq darron@kewl.org .

View File

@ -0,0 +1,142 @@
.\"
.\" 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$
.\" $Id: ieee80211_output.9,v 1.5 2004/03/04 12:31:18 bruce Exp $
.\"
.Dd March 2, 2004
.Dt ieee80211_output 9
.Os
.Sh NAME
.Nm ieee80211_output
.Nd software 802.11 stack output functions
.Sh SYNOPSIS
.In net80211/ieee80211_var.h
.In net80211/ieee80211_proto.h
.Ft struct mbuf *
.Fn ieee80211_encap "struct ifnet *ifp" "struct mbuf *m" "struct ieee80211_node **pni"
.Ft u_int8_t *
.Fn ieee80211_add_rates "u_int8_t *frm" "const struct ieee80211_rateset *rs"
.Ft u_int8_t *
.Fn ieee80211_add_xrates "u_int8_t *frm" "const struct ieee80211_rateset *rs"
.Ft int
.Fn ieee80211_send_mgmt "struct ieee80211com *ic" "struct ieee80211_node *ni" "int type" "int arg"
.Sh DESCRIPTION
The
.Nm
series of functions handle the encapsulation and transmission of 802.11 frames
within the software 802.11 stack.
.Pp
The
.Fn ieee80211_encap
function encapsulates an outbound data frame contained within the
mbuf chain
.Fa m
from the interface
.Fa ifp .
The argument
.Fa *pni
is a reference to the destination node.
.Pp
If the function is successful, the mbuf chain is updated with the
802.11 frame header prepended, and a pointer to the head of the chain
is returned.
If an error occurs, NULL will be returned, and
.Fa *pni
is also set to NULL.
The caller is responsible for freeing the node reference if
.Fa *pni
is non-NULL on return.
The convention is that
.Vt ic_bss
is not reference counted; the caller is responsible for maintaining this
reference count.
.Pp
.\"
The
.Fn ieee80211_add_rates
utility function is used to add the rate set element
.Fa *rs
to the frame
.Fa frm .
A pointer to the location in the buffer after the addition of the rate set
is returned.
It is typically used when constructing management frames from within the
software 802.11 stack.
.Pp
.\"
The
.Fn ieee80211_add_xrates
utility function is used to add the extended rate set element
.Fa *rs
to the frame
.Fa frm .
A pointer to the location in the buffer after the addition of the rate set
is returned.
It is typically used when constructing management frames from within the
software 802.11 stack in 802.11g mode.
.Pp
.\"
The
.Fn ieee80211_send_mgmt
function transmits a management frame on the interface
.Fa ic
to the destination node
.Fa ni
of type
.Fa type .
.Pp
The argument
.Fa arg
specifies either a sequence number for authentication operations,
a status code for [re]association operations,
or a reason for deauthentication and deassociation operations.
.Pp
Nodes other than
.Vt ic_bss
have their reference count incremented to reflect their use for an
indeterminate amount of time.
This reference is freed when the function returns.
.Pp
The function returns 0 if successful; if temporary buffer space is not
available, the function returns
.Er ENOMEM .
.\"
.Sh SEE ALSO
.Xr ieee80211 9 ,
.Xr ifnet 9
.Sh HISTORY
The
.Nm
series of functions first appeared in
.Nx 1.5 ,
and were later ported to
.Fx 4.6 .
.Sh AUTHORS
This man page was written by
.An Bruce M. Simpson Aq bms@FreeBSD.org
and
.An Darron Broad Aq darron@kewl.org .

View File

@ -0,0 +1,68 @@
.\"
.\" 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$
.\" $Id: ieee80211_proto.9,v 1.5 2004/03/04 12:33:27 bruce Exp $
.\"
.Dd March 2, 2004
.Dt ieee80211_proto 9
.Os
.Sh NAME
.Nm ieee80211_proto
.Nd software 802.11 stack protocol helper functions
.Sh SYNOPSIS
.In net80211/ieee80211_var.h
.In net80211/ieee80211_proto.h
.Ft void
.Fn ieee80211_proto_attach "struct ifnet *ifp"
.Ft void
.Fn ieee80211_proto_detach "struct ifnet *ifp"
.Ft void
.Fn ieee80211_print_essid "u_int8_t *essid" "int len"
.Ft void
.Fn ieee80211_dump_pkt "u_int8_t *buf" "int len" "int rate" "int rssi"
.Ft int
.Fn ieee80211_fix_rate "struct ieee80211com *ic" "struct ieee80211_node *ni" "int flags"
.Sh DESCRIPTION
The
.Nm
functions are helper functions used throughout the software 802.11 protocol
stack.
.Sh SEE ALSO
.Xr ieee80211 9 ,
.Xr ifnet 9
.Sh HISTORY
The
.Nm
series of functions first appeared in
.Nx 1.5 ,
and were later ported to
.Fx 4.6 .
.Sh AUTHORS
This man page was written by
.An Bruce M. Simpson Aq bms@FreeBSD.org
and
.An Darron Broad Aq darron@kewl.org .

View File

@ -0,0 +1,214 @@
.\"
.\" 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$
.\" $Id: ieee80211_radiotap.9,v 1.3 2004/03/04 11:38:52 bruce Exp $
.\"
.Dd March 2, 2004
.Dt ieee80211_radiotap 9
.Os
.Sh NAME
.Nm ieee80211_radiotap
.Nd software 802.11 stack packet capture definitions
.Sh SYNOPSIS
.In net80211/ieee80211_var.h
.In net80211/ieee80211_ioctl.h
.In net80211/ieee80211_radiotap.h
.In net/bpf.h
.\"
.Sh DESCRIPTION
The
.Nm
definitions provide a device-independent
.Xr bpf 4
attachment for the
capture of information about 802.11 traffic which is not part of
the 802.11 frame structure.
.Pp
This typically includes information such as signal quality and
timestamps.
This information may be used by a variety of user agents, including
.Xr tcpdump 1 .
It is requested by using the
.Xr bpf 4
data-link type
.Vt DLT_IEEE_80211_RADIO .
.Pp
.\"
Each frame using this attachment has the following header prepended to it:
.Bd -literal -offset indent
struct ieee80211_radiotap_header {
u_int8_t it_version; /* set to 0 */
u_int8_t it_pad;
u_int16_t it_len; /* entire length */
u_int32_t it_present; /* fields present */
} __attribute__((__packed__));
.Ed
.Pp
.\"
A device driver implementing
.Vt radiotap
typically defines a packed structure embedding an instance of
.Vt struct ieee80211_radiotap_header
at the beginning,
with subsequent fields in the appropriate order,
and a macro to set the bits of the
.Vt it_present
bitmap to indicate which fields exist and are filled in by the driver.
.\"
.Pp
Radiotap headers are copied to the userland via a separate bpf attachment.
It is necessary for the driver to create this attachment after calling
.Fn ieee80211_ifattach
by calling
.Fn bpfattach2
with the data-link type set to
.Vt DLT_IEEE_80211_RADIO .
.Pp
.\"
When the the information is available,
usually immediately before a link-layer transmission or after a receive,
the driver copies it to the bpf layer using the
.Fn bpf_mtap2
function.
.Pp
.\"
The following extension fields are defined for
.Vt radiotap ,
in the order in which they should appear in the buffer copied to userland:
.Bl -tag -width ".Dv IEEE80211_RADIOTAP_DB_TX_ATTENUATION"
.It Dv IEEE80211_RADIOTAP_TSFT
This field contains the unsigned 64-bit value, in microseconds,
of the MAC's 802.11 Time Synchronization Function timer,
when the first bit of the MPDU arrived at the MAC.
This field should be present for received frames only.
.It Dv IEEE80211_RADIOTAP_FLAGS
This field contains a single unsigned 8-bit value, containing a bitmap
of flags specifying properties of the frame being transmitted or received.
.It Dv IEEE80211_RADIOTAP_RATE
This field contains a single unsigned 8-bit value, which is the data rate in
use in units of 500Kbps.
.It Dv IEEE80211_RADIOTAP_CHANNEL
This field contains two unsigned 16-bit values.
The first value is the frequency upon which this PDU was transmitted
or received.
The second value is a bitmap containing flags which specify properties of
the channel in use.
These are documented within the header file,
.In net80211/ieee80211_radiotap.h .
.It Dv IEEE80211_RADIOTAP_FHSS
This field contains two 8-bit values.
This field should be present for frequency-hopping radios only.
The first byte is the hop set.
The second byte is the pattern in use.
.It Dv IEEE80211_RADIOTAP_DBM_ANTSIGNAL
This field contains a single signed 8-bit value, which indicates the
RF signal power at the antenna, in decibels difference from 1mW.
.It Dv IEEE80211_RADIOTAP_DBM_ANTNOISE
This field contains a single signed 8-bit value, which indicates the
RF noise power at the antenna, in decibels difference from 1mW.
.It Dv IEEE80211_RADIOTAP_LOCK_QUALITY
This field contains a single unsigned 16-bit value, indicating the
quality of the Barker Code lock.
No unit is specified for this field.
There does not appear to be a standard way of measuring this at this time;
this quantity is often referred to as 'Signal Quality' in some datasheets.
.It Dv IEEE80211_RADIOTAP_TX_ATTENUATION
This field contains a single unsigned 16-bit value, expressing transmit
power as unitless distance from maximum power set at factory calibration.
0 indicates maximum transmit power.
Monotonically nondecreasing with lower power levels.
.It Dv IEEE80211_RADIOTAP_DB_TX_ATTENUATION
This field contains a single unsigned 16-bit value, expressing transmit
power as decibel distance from maximum power set at factory calibration.
0 indicates maximum transmit power.
Monotonically nondecreasing with lower power levels.
.It Dv IEEE80211_RADIOTAP_DBM_TX_POWER
Transmit power expressed as decibels from a 1mW reference.
This field is a single signed 8-bit value.
This is the absolute power level measured at the antenna port.
.It Dv IEEE80211_RADIOTAP_ANTENNA
For radios which support antenna diversity, this field contains a single
unsigned 8-bit value specifying which antenna is being used to transmit
or receive this frame.
The first antenna is antenna 0.
.It Dv IEEE80211_RADIOTAP_DB_ANTSIGNAL
This field contains a single unsigned 8-bit value, which indicates the
RF signal power at the antenna, in decibels difference from an
arbitrary, fixed reference.
.It Dv IEEE80211_RADIOTAP_DB_ANTNOISE
This field contains a single unsigned 8-bit value, which indicates the
RF noise power at the antenna, in decibels difference from an
arbitrary, fixed reference.
.It Dv IEEE80211_RADIOTAP_EXT
This bit is reserved for any future extensions to the
.Vt radiotap
structure.
It should not be used at this time.
.El
.Sh EXAMPLE
Radiotap header for the Cisco Aironet driver:
.Bd -literal -offset indent
struct an_rx_radiotap_header {
struct ieee80211_radiotap_header ar_ihdr;
u_int8_t ar_flags;
u_int8_t ar_rate;
u_int16_t ar_chan_freq;
u_int16_t ar_chan_flags;
u_int8_t ar_antsignal;
u_int8_t ar_antnoise;
} __attribute__((__packed__));
.Ed
.Pp
Bitmap indicating which fields are present in the above structure:
.Bd -literal -offset indent
#define AN_RX_RADIOTAP_PRESENT \\
((1 << IEEE80211_RADIOTAP_FLAGS) | \\
(1 << IEEE80211_RADIOTAP_RATE) | \\
(1 << IEEE80211_RADIOTAP_CHANNEL) | \\
(1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) | \\
(1 << IEEE80211_RADIOTAP_DBM_ANTNOISE))
.Ed
.Sh SEE ALSO
.Xr bpf 4 ,
.Xr ieee80211 9
.Sh HISTORY
The
.Nm
definitions first appeared in
.Nx 1.5 ,
and were later ported to
.Fx 4.6 .
.Sh AUTHORS
The
.Nm
interface was designed and implemented by
.An David Young Aq dyoung@pobox.com .
.Pp
This manual page was written by
.An Bruce M. Simpson Aq bms@FreeBSD.org
and
.An Darron Broad Aq darron@kewl.org .