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