xref: /dflybsd-src/share/man/man9/ieee80211.9 (revision ff66a890e4594f818c3bde7c7740e14fa41fb876)
1*ff66a890SHiten Pandya.\"
2*ff66a890SHiten Pandya.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
3*ff66a890SHiten Pandya.\" Copyright (c) 2004 Darron Broad <darron@kewl.org>
4*ff66a890SHiten Pandya.\" All rights reserved.
5*ff66a890SHiten Pandya.\"
6*ff66a890SHiten Pandya.\" Redistribution and use in source and binary forms, with or without
7*ff66a890SHiten Pandya.\" modification, are permitted provided that the following conditions
8*ff66a890SHiten Pandya.\" are met:
9*ff66a890SHiten Pandya.\" 1. Redistributions of source code must retain the above copyright
10*ff66a890SHiten Pandya.\"    notice, this list of conditions and the following disclaimer.
11*ff66a890SHiten Pandya.\" 2. Redistributions in binary form must reproduce the above copyright
12*ff66a890SHiten Pandya.\"    notice, this list of conditions and the following disclaimer in the
13*ff66a890SHiten Pandya.\"    documentation and/or other materials provided with the distribution.
14*ff66a890SHiten Pandya.\"
15*ff66a890SHiten Pandya.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*ff66a890SHiten Pandya.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*ff66a890SHiten Pandya.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*ff66a890SHiten Pandya.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19*ff66a890SHiten Pandya.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*ff66a890SHiten Pandya.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*ff66a890SHiten Pandya.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*ff66a890SHiten Pandya.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*ff66a890SHiten Pandya.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*ff66a890SHiten Pandya.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*ff66a890SHiten Pandya.\" SUCH DAMAGE.
26*ff66a890SHiten Pandya.\"
27*ff66a890SHiten Pandya.\" $FreeBSD$
28*ff66a890SHiten Pandya.\" $DragonFly: src/share/man/man9/ieee80211.9,v 1.1 2004/07/27 14:50:56 hmp Exp $
29*ff66a890SHiten Pandya.\" $Id: ieee80211.9,v 1.3 2004/07/07 12:59:39 ru Exp $
30*ff66a890SHiten Pandya.\"
31*ff66a890SHiten Pandya.Dd March 2, 2004
32*ff66a890SHiten Pandya.Dt IEEE80211 9
33*ff66a890SHiten Pandya.Os
34*ff66a890SHiten Pandya.Sh NAME
35*ff66a890SHiten Pandya.Nm ieee80211_ifattach , ieee80211_ifdetach ,
36*ff66a890SHiten Pandya.Nm ieee80211_mhz2ieee , ieee80211_chan2ieee , ieee80211_ieee2mhz ,
37*ff66a890SHiten Pandya.Nm ieee80211_media_init , ieee80211_media_change , ieee80211_media_status ,
38*ff66a890SHiten Pandya.Nm ieee80211_watchdog ,
39*ff66a890SHiten Pandya.Nm ieee80211_setmode , ieee80211_chan2mode ,
40*ff66a890SHiten Pandya.Nm ieee80211_rate2media , ieee80211_media2rate
41*ff66a890SHiten Pandya.Nd core 802.11 network stack functions
42*ff66a890SHiten Pandya.Sh SYNOPSIS
43*ff66a890SHiten Pandya.In net80211/ieee80211_var.h
44*ff66a890SHiten Pandya.In net80211/ieee80211_proto.h
45*ff66a890SHiten Pandya.Ft void
46*ff66a890SHiten Pandya.Fn ieee80211_ifattach "struct ifnet *ifp"
47*ff66a890SHiten Pandya.Ft void
48*ff66a890SHiten Pandya.Fn ieee80211_ifdetach "struct ifnet *ifp"
49*ff66a890SHiten Pandya.Ft u_int
50*ff66a890SHiten Pandya.Fn ieee80211_mhz2ieee "u_int freq" "u_int flags"
51*ff66a890SHiten Pandya.Ft u_int
52*ff66a890SHiten Pandya.Fn ieee80211_chan2ieee "struct ieee80211com *ic" "struct ieee80211_channel *c"
53*ff66a890SHiten Pandya.Ft u_int
54*ff66a890SHiten Pandya.Fn ieee80211_ieee2mhz "u_int chan" "u_int flags"
55*ff66a890SHiten Pandya.Ft void
56*ff66a890SHiten Pandya.Fo ieee80211_media_init
57*ff66a890SHiten Pandya.Fa "struct ifnet *ifp" "ifm_change_cb_t media_change"
58*ff66a890SHiten Pandya.Fa "ifm_stat_cb_t media_stat"
59*ff66a890SHiten Pandya.Fc
60*ff66a890SHiten Pandya.Fa int
61*ff66a890SHiten Pandya.Fn ieee80211_media_change "struct ifnet *ifp"
62*ff66a890SHiten Pandya.Fa void
63*ff66a890SHiten Pandya.Fn ieee80211_media_status "struct ifnet *ifp" "struct ifmediareq *imr"
64*ff66a890SHiten Pandya.Ft void
65*ff66a890SHiten Pandya.Fn ieee80211_watchdog "struct ifnet *ifp"
66*ff66a890SHiten Pandya.Ft int
67*ff66a890SHiten Pandya.Fn ieee80211_setmode "struct ieee80211com *ic" "enum ieee80211_phymode mode"
68*ff66a890SHiten Pandya.Ft enum ieee80211_phymode
69*ff66a890SHiten Pandya.Fo ieee80211_chan2mode
70*ff66a890SHiten Pandya.Fa "struct ieee80211com *ic" "struct ieee80211_channel *chan"
71*ff66a890SHiten Pandya.Fc
72*ff66a890SHiten Pandya.Ft int
73*ff66a890SHiten Pandya.Fo ieee80211_rate2media
74*ff66a890SHiten Pandya.Fa "struct ieee80211com *ic" "int rate" "enum ieee80211_phymode mode"
75*ff66a890SHiten Pandya.Fc
76*ff66a890SHiten Pandya.Ft int
77*ff66a890SHiten Pandya.Fn ieee80211_media2rate "int mword"
78*ff66a890SHiten Pandya.Sh DESCRIPTION
79*ff66a890SHiten PandyaThe
80*ff66a890SHiten Pandya.Nm ieee80211
81*ff66a890SHiten Pandyacollection of functions are used to manage wireless network interfaces in the
82*ff66a890SHiten Pandyasystem which use the system's software 802.11 network stack.
83*ff66a890SHiten PandyaMost of these functions require that attachment to the stack is performed
84*ff66a890SHiten Pandyabefore calling.
85*ff66a890SHiten PandyaSeveral utility functions are also provided; these are safe to call from
86*ff66a890SHiten Pandyaany driver without prior initialization.
87*ff66a890SHiten Pandya.Pp
88*ff66a890SHiten Pandya.\"
89*ff66a890SHiten PandyaThe
90*ff66a890SHiten Pandya.Fn ieee80211_ifattach
91*ff66a890SHiten Pandyafunction attaches the network interface
92*ff66a890SHiten Pandya.Fa ifp
93*ff66a890SHiten Pandyato the 802.11 network stack layer.
94*ff66a890SHiten PandyaThis function must be called before using any of the
95*ff66a890SHiten Pandya.Nm ieee80211
96*ff66a890SHiten Pandyafunctions which need to store driver state across invocations;
97*ff66a890SHiten PandyaThe
98*ff66a890SHiten Pandya.Vt struct ifnet
99*ff66a890SHiten Pandyainstance pointed to by
100*ff66a890SHiten Pandya.Fa ifp
101*ff66a890SHiten PandyaMUST be an instance of
102*ff66a890SHiten Pandya.Vt struct ieee80211com ,
103*ff66a890SHiten Pandyawith various fields initialized to tell
104*ff66a890SHiten Pandya.Nm ieee80211
105*ff66a890SHiten Pandyaabout its capabilities.
106*ff66a890SHiten PandyaThis function performs Ethernet and BPF attachment (by calling
107*ff66a890SHiten Pandya.Fn ether_ifattach
108*ff66a890SHiten Pandyaand
109*ff66a890SHiten Pandya.Fn bpfattach2 )
110*ff66a890SHiten Pandyaon behalf of the caller.
111*ff66a890SHiten PandyaIt also implements the
112*ff66a890SHiten Pandya.Vt ifmedia
113*ff66a890SHiten Pandyainterface.
114*ff66a890SHiten Pandya.Pp
115*ff66a890SHiten Pandya.\"
116*ff66a890SHiten PandyaThe
117*ff66a890SHiten Pandya.Fn ieee80211_ifdetach
118*ff66a890SHiten Pandyafunction frees any
119*ff66a890SHiten Pandya.Nm ieee80211
120*ff66a890SHiten Pandyastructures associated with the driver, and performs Ethernet and BPF
121*ff66a890SHiten Pandyadetachment on behalf of the caller.
122*ff66a890SHiten Pandya.Pp
123*ff66a890SHiten Pandya.\"
124*ff66a890SHiten PandyaThe
125*ff66a890SHiten Pandya.Fn ieee80211_mhz2ieee
126*ff66a890SHiten Pandyautility function converts the frequency
127*ff66a890SHiten Pandya.Fa freq
128*ff66a890SHiten Pandya(specified in MHz) to an IEEE 802.11 channel number.
129*ff66a890SHiten PandyaThe
130*ff66a890SHiten Pandya.Fa flags
131*ff66a890SHiten Pandyaargument is a hint which specifies whether the frequency is in
132*ff66a890SHiten Pandyathe 2GHz ISM band
133*ff66a890SHiten Pandya.Pq Vt IEEE80211_CHAN_2GHZ
134*ff66a890SHiten Pandyaor the 5GHz band
135*ff66a890SHiten Pandya.Pq Vt IEEE80211_CHAN_5GHZ ;
136*ff66a890SHiten Pandyaappropriate clipping of the result is then performed.
137*ff66a890SHiten Pandya.Pp
138*ff66a890SHiten Pandya.\"
139*ff66a890SHiten PandyaThe
140*ff66a890SHiten Pandya.Fn ieee80211_chan2ieee
141*ff66a890SHiten Pandyafunction converts the channel specified in
142*ff66a890SHiten Pandya.Fa *c
143*ff66a890SHiten Pandyato an IEEE channel number for the driver
144*ff66a890SHiten Pandya.Fa ic .
145*ff66a890SHiten PandyaIf the conversion would be invalid, an error message is printed to the
146*ff66a890SHiten Pandyasystem console.
147*ff66a890SHiten PandyaThis function REQUIRES that the driver is hooked up to the
148*ff66a890SHiten Pandya.Nm ieee80211
149*ff66a890SHiten Pandyasubsystem.
150*ff66a890SHiten Pandya.Pp
151*ff66a890SHiten Pandya.\"
152*ff66a890SHiten PandyaThe
153*ff66a890SHiten Pandya.Fn ieee80211_ieee2mhz
154*ff66a890SHiten Pandyautility function converts the IEEE channel number
155*ff66a890SHiten Pandya.Ft chan
156*ff66a890SHiten Pandyato a frequency (in MHz).
157*ff66a890SHiten PandyaThe
158*ff66a890SHiten Pandya.Fa flags
159*ff66a890SHiten Pandyaargument is a hint which specifies whether the frequency is in
160*ff66a890SHiten Pandyathe 2GHz ISM band
161*ff66a890SHiten Pandya.Pq Vt IEEE80211_CHAN_2GHZ
162*ff66a890SHiten Pandyaor the 5GHz band
163*ff66a890SHiten Pandya.Pq Vt IEEE80211_CHAN_5GHZ ;
164*ff66a890SHiten Pandyaappropriate clipping of the result is then performed.
165*ff66a890SHiten Pandya.Pp
166*ff66a890SHiten Pandya.\"
167*ff66a890SHiten PandyaThe
168*ff66a890SHiten Pandya.Fn ieee80211_media_init
169*ff66a890SHiten Pandyafunction initializes media data structures used by the
170*ff66a890SHiten Pandya.Vt ifmedia
171*ff66a890SHiten Pandyainterface, for the driver
172*ff66a890SHiten Pandya.Fa ifp .
173*ff66a890SHiten PandyaIt must be called by the driver after calling
174*ff66a890SHiten Pandya.Fn ieee80211_attach
175*ff66a890SHiten Pandyaand before calling most
176*ff66a890SHiten Pandya.Nm ieee80211
177*ff66a890SHiten Pandyafunctions.
178*ff66a890SHiten PandyaThe
179*ff66a890SHiten Pandya.Fa media_change
180*ff66a890SHiten Pandyaand
181*ff66a890SHiten Pandya.Fa media_stat
182*ff66a890SHiten Pandyaarguments specify helper functions which will be invoked by the
183*ff66a890SHiten Pandya.Vt ifmedia
184*ff66a890SHiten Pandyaframework when the user changes or queries media options,
185*ff66a890SHiten Pandyausing a command such as
186*ff66a890SHiten Pandya.Xr ifconfig 8 .
187*ff66a890SHiten Pandya.Pp
188*ff66a890SHiten Pandya.\"
189*ff66a890SHiten PandyaThe
190*ff66a890SHiten Pandya.Fn ieee80211_media_status
191*ff66a890SHiten Pandyaand
192*ff66a890SHiten Pandya.Fn ieee80211_media_change
193*ff66a890SHiten Pandyafunctions are device-independent handlers for
194*ff66a890SHiten Pandya.Vt ifmedia
195*ff66a890SHiten Pandyacommands and are not intended to be called directly.
196*ff66a890SHiten Pandya.Pp
197*ff66a890SHiten Pandya.\"
198*ff66a890SHiten PandyaThe
199*ff66a890SHiten Pandya.Fn ieee80211_watchdog
200*ff66a890SHiten Pandyafunction is intended to be called from a driver's
201*ff66a890SHiten Pandya.Va if_watchdog
202*ff66a890SHiten Pandyaroutine.
203*ff66a890SHiten PandyaIt is used to perform periodic cleanup of state within the software 802.11
204*ff66a890SHiten Pandyastack, as well as timing out scans.
205*ff66a890SHiten Pandya.Pp
206*ff66a890SHiten Pandya.\"
207*ff66a890SHiten PandyaThe
208*ff66a890SHiten Pandya.Fn ieee80211_setmode
209*ff66a890SHiten Pandyafunction is called from within the 802.11 stack to change the mode
210*ff66a890SHiten Pandyaof the driver's PHY; it is not intended to be called directly.
211*ff66a890SHiten Pandya.Pp
212*ff66a890SHiten Pandya.\"
213*ff66a890SHiten PandyaThe
214*ff66a890SHiten Pandya.Fn ieee80211_chan2mode
215*ff66a890SHiten Pandyafunction returns the PHY mode required for use with the channel
216*ff66a890SHiten Pandya.Fa chan
217*ff66a890SHiten Pandyaon the device
218*ff66a890SHiten Pandya.Fa ic .
219*ff66a890SHiten PandyaThis is typically used when selecting a rate set, to be advertised in
220*ff66a890SHiten Pandyabeacons, for example.
221*ff66a890SHiten Pandya.Pp
222*ff66a890SHiten Pandya.\"
223*ff66a890SHiten PandyaThe
224*ff66a890SHiten Pandya.Fn ieee80211_rate2media
225*ff66a890SHiten Pandyafunction converts the bit rate
226*ff66a890SHiten Pandya.Fa rate
227*ff66a890SHiten Pandya(measured in units of 0.5Mbps) to an
228*ff66a890SHiten Pandya.Vt ifmedia
229*ff66a890SHiten Pandyasub-type, for the device
230*ff66a890SHiten Pandya.Fa ic
231*ff66a890SHiten Pandyarunning in PHY mode
232*ff66a890SHiten Pandya.Fa mode .
233*ff66a890SHiten PandyaThe
234*ff66a890SHiten Pandya.Fn ieee80211_media2rate
235*ff66a890SHiten Pandyaperforms the reverse of this conversion, returning the bit rate (in 0.5Mbps
236*ff66a890SHiten Pandyaunits) corresponding to an
237*ff66a890SHiten Pandya.Vt ifmedia
238*ff66a890SHiten Pandyasub-type.
239*ff66a890SHiten Pandya.\"
240*ff66a890SHiten Pandya.Sh SEE ALSO
241*ff66a890SHiten Pandya.Xr ieee80211_crypto 9 ,
242*ff66a890SHiten Pandya.Xr ieee80211_input 9 ,
243*ff66a890SHiten Pandya.Xr ieee80211_ioctl 9 ,
244*ff66a890SHiten Pandya.Xr ieee80211_node 9 ,
245*ff66a890SHiten Pandya.Xr ieee80211_output 9 ,
246*ff66a890SHiten Pandya.Xr ieee80211_proto 9 ,
247*ff66a890SHiten Pandya.Xr ieee80211_radiotap 9 ,
248*ff66a890SHiten Pandya.Xr ifnet 9
249*ff66a890SHiten Pandya.Sh HISTORY
250*ff66a890SHiten PandyaThe
251*ff66a890SHiten Pandya.Nm ieee80211
252*ff66a890SHiten Pandyaseries of functions first appeared in
253*ff66a890SHiten Pandya.Nx 1.5 ,
254*ff66a890SHiten Pandyaand were later ported to
255*ff66a890SHiten Pandya.Fx 4.6 .
256*ff66a890SHiten Pandya.Sh AUTHORS
257*ff66a890SHiten Pandya.An -nosplit
258*ff66a890SHiten PandyaThis man page was written by
259*ff66a890SHiten Pandya.An Bruce M. Simpson Aq bms@FreeBSD.org
260*ff66a890SHiten Pandyaand
261*ff66a890SHiten Pandya.An Darron Broad Aq darron@kewl.org .
262