xref: /dflybsd-src/share/man/man9/ieee80211_regdomain.9 (revision e4c06619483849b6d1d179ae56da763ed720062d)
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