105ac2d0dSSascha Wildner.\" 205ac2d0dSSascha Wildner.\" Copyright (c) 2009 Sam Leffler, Errno Consulting 305ac2d0dSSascha Wildner.\" All rights reserved. 405ac2d0dSSascha Wildner.\" 505ac2d0dSSascha Wildner.\" Redistribution and use in source and binary forms, with or without 605ac2d0dSSascha Wildner.\" modification, are permitted provided that the following conditions 705ac2d0dSSascha Wildner.\" are met: 805ac2d0dSSascha Wildner.\" 1. Redistributions of source code must retain the above copyright 905ac2d0dSSascha Wildner.\" notice, this list of conditions and the following disclaimer. 1005ac2d0dSSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright 1105ac2d0dSSascha Wildner.\" notice, this list of conditions and the following disclaimer in the 1205ac2d0dSSascha Wildner.\" documentation and/or other materials provided with the distribution. 1305ac2d0dSSascha Wildner.\" 1405ac2d0dSSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1505ac2d0dSSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1605ac2d0dSSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1705ac2d0dSSascha Wildner.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1805ac2d0dSSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1905ac2d0dSSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2005ac2d0dSSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2105ac2d0dSSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2205ac2d0dSSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2305ac2d0dSSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2405ac2d0dSSascha Wildner.\" SUCH DAMAGE. 2505ac2d0dSSascha Wildner.\" 26*e4c06619SSascha Wildner.\" $FreeBSD: head/share/man/man9/ieee80211_regdomain.9 233648 2012-03-29 05:02:12Z eadler $ 2705ac2d0dSSascha Wildner.\" 2805ac2d0dSSascha Wildner.Dd April 28, 2010 2905ac2d0dSSascha Wildner.Dt IEEE80211_REGDOMAIN 9 3005ac2d0dSSascha Wildner.Os 3105ac2d0dSSascha Wildner.Sh NAME 3205ac2d0dSSascha Wildner.Nm ieee80211_regdomain 3305ac2d0dSSascha Wildner.Nd 802.11 regulatory support 3405ac2d0dSSascha Wildner.Sh SYNOPSIS 357d9c9280SSascha Wildner.In net/if.h 367d9c9280SSascha Wildner.In net/if_media.h 37737edb20SSascha Wildner.In netproto/802_11/ieee80211_var.h 38737edb20SSascha Wildner.In netproto/802_11/ieee80211_regdomain.h 3905ac2d0dSSascha Wildner.Pp 4005ac2d0dSSascha Wildner.Ft int 4105ac2d0dSSascha Wildner.Fo ieee80211_init_channels 4205ac2d0dSSascha Wildner.Fa "struct ieee80211com *" 4305ac2d0dSSascha Wildner.Fa "const struct ieee80211_regdomain *" 4405ac2d0dSSascha Wildner.Fa "const uint8_t bands[]" 4505ac2d0dSSascha Wildner.Fc 4605ac2d0dSSascha Wildner.\" 4705ac2d0dSSascha Wildner.Ft void 4805ac2d0dSSascha Wildner.Fo ieee80211_sort_channels 4905ac2d0dSSascha Wildner.Fa "struct ieee80211_channel *" 5005ac2d0dSSascha Wildner.Fa "int nchans" 5105ac2d0dSSascha Wildner.Fc 5205ac2d0dSSascha Wildner.\" 5305ac2d0dSSascha Wildner.Ft "struct ieee80211_appie *" 5405ac2d0dSSascha Wildner.Fn ieee80211_alloc_countryie "struct ieee80211com *" 5505ac2d0dSSascha Wildner.Sh DESCRIPTION 5605ac2d0dSSascha WildnerThe 5705ac2d0dSSascha Wildner.Nm net80211 5805ac2d0dSSascha Wildnersoftware layer provides a support framework for drivers that includes 5905ac2d0dSSascha Wildnercomprehensive regulatory support. 6005ac2d0dSSascha Wildner.Nm net80211 6105ac2d0dSSascha Wildnerprovides mechanisms that enforce 6205ac2d0dSSascha Wildner.Em "regulatory policy" 6305ac2d0dSSascha Wildnerby privileged user applications. 6405ac2d0dSSascha Wildner.Pp 6505ac2d0dSSascha WildnerDrivers define a device's capabilities and can 6605ac2d0dSSascha Wildnerintercept and control regulatory changes requested through 6705ac2d0dSSascha Wildner.Nm net80211 . 6805ac2d0dSSascha WildnerThe initial regulatory state, including the channel list, must be 6905ac2d0dSSascha Wildnerfilled in by the driver before calling 7005ac2d0dSSascha Wildner.Fn ieee80211_ifattach . 7105ac2d0dSSascha WildnerThe channel list should reflect the set of channels the device is 7205ac2d0dSSascha Wildner.Em calibrated 7305ac2d0dSSascha Wildnerfor use on. 7405ac2d0dSSascha WildnerThis list may also be requested later through the 7505ac2d0dSSascha Wildner.Vt ic_getradiocaps 7605ac2d0dSSascha Wildnermethod in the 7705ac2d0dSSascha Wildner.Vt ieee80211com 7805ac2d0dSSascha Wildnerstructure. 7905ac2d0dSSascha WildnerThe 8005ac2d0dSSascha Wildner.Fn ieee80211_init_channels 8105ac2d0dSSascha Wildnerfunction is provided as a rudimentary fallback for drivers that do not 8205ac2d0dSSascha Wildner(or cannot) fill in a proper channel list. 8305ac2d0dSSascha WildnerDefault regulatory state is supplied such as the regulatory SKU, 8405ac2d0dSSascha WildnerISO country code, location (e.g. indoor, outdoor), and a set of 8505ac2d0dSSascha Wildnerfrequency bands the device is capable of operating on. 8605ac2d0dSSascha Wildner.Nm net80211 8705ac2d0dSSascha Wildnerpopulates the channel table in 8805ac2d0dSSascha Wildner.Vt ic_channels 8905ac2d0dSSascha Wildnerwith a default set of channels and capabilities. 9005ac2d0dSSascha WildnerNote this mechanism should be used with care as any mismatch between 9105ac2d0dSSascha Wildnerthe channel list created and the device's capabilities can result 9205ac2d0dSSascha Wildnerin runtime errors (e.g. a request to operate on a channel the device 9305ac2d0dSSascha Wildnerdoes not support). 9405ac2d0dSSascha WildnerThe SKU and country information are used for generating 802.11h protocol 9505ac2d0dSSascha Wildnerelements and related operation such as for 802.11d; mis-setup by a 9605ac2d0dSSascha Wildnerdriver is not fatal, only potentially confusing. 9705ac2d0dSSascha Wildner.Pp 9805ac2d0dSSascha WildnerDevices that do not have a fixed/default regulatory state can set 9905ac2d0dSSascha Wildnerthe regulatory SKU to 10005ac2d0dSSascha Wildner.Dv SKU_DEBUG 10105ac2d0dSSascha Wildnerand country code to 10205ac2d0dSSascha Wildner.Dv CTRY_DEFAULT 10305ac2d0dSSascha Wildnerand leave proper setup to user applications. 10405ac2d0dSSascha WildnerIf default settings are known they can be installed and/or an event 10505ac2d0dSSascha Wildnercan be dispatched to user space using 10605ac2d0dSSascha Wildner.Fn ieee80211_notify_country 10705ac2d0dSSascha Wildnerso that 10805ac2d0dSSascha Wildner.Xr devd 8 10905ac2d0dSSascha Wildnerwill do the appropriate setup work at system boot (or device insertion). 11005ac2d0dSSascha Wildner.Pp 11105ac2d0dSSascha WildnerThe channel table is sorted to optimize lookups using the 11205ac2d0dSSascha Wildner.Fn ieee80211_sort_channels 11305ac2d0dSSascha Wildnerroutine. 11405ac2d0dSSascha WildnerThis should be done whenever the channel table contents are modified. 11505ac2d0dSSascha Wildner.Pp 11605ac2d0dSSascha WildnerThe 11705ac2d0dSSascha Wildner.Fn ieee80211_alloc_countryie 11805ac2d0dSSascha Wildnerfunction allocates an information element as specified by 802.11h. 11905ac2d0dSSascha WildnerBecause this is expensive to generate it is cached in 12005ac2d0dSSascha Wildner.Vt ic_countryie 12105ac2d0dSSascha Wildnerand generated only when regulatory state changes. 12205ac2d0dSSascha WildnerDrivers that call 12305ac2d0dSSascha Wildner.Fn ieee80211_alloc_countryie 12405ac2d0dSSascha Wildnerdirectly should not help with this caching; doing so may confuse the 12505ac2d0dSSascha Wildner.Nm net80211 12605ac2d0dSSascha Wildnerlayer. 12705ac2d0dSSascha Wildner.Sh DRIVER REGULATORY CONTROL 12805ac2d0dSSascha WildnerDrivers can control regulatory change requests by overriding the 12905ac2d0dSSascha Wildner.Vt ic_setregdomain 13005ac2d0dSSascha Wildnermethod that checks change requests. 13105ac2d0dSSascha WildnerWhile drivers can reject any request that does not meet its requirements 13205ac2d0dSSascha Wildnerit is recommended that one be lenient in what is accepted and, whenever 13305ac2d0dSSascha Wildnerpossible, instead of rejecting a request, alter it to be correct. 13405ac2d0dSSascha WildnerFor example, if the transmit power cap for a channel is too high the 13505ac2d0dSSascha Wildnerdriver can either reject the request or (better) reduce the cap to be 13605ac2d0dSSascha Wildnercompliant. 13705ac2d0dSSascha WildnerRequests that include unacceptable channels should cause the request 13805ac2d0dSSascha Wildnerto be rejected as otherwise a mismatch may be created between application 13905ac2d0dSSascha Wildnerstate and the state managed by 14005ac2d0dSSascha Wildner.Nm net80211 . 14105ac2d0dSSascha WildnerThe exact rules by which to operate are still being codified. 14205ac2d0dSSascha Wildner.Sh SEE ALSO 14305ac2d0dSSascha Wildner.Xr regdomain 5 , 14405ac2d0dSSascha Wildner.Xr ifconfig 8 , 14505ac2d0dSSascha Wildner.Xr ieee80211 9 146