xref: /dflybsd-src/share/man/man9/ieee80211_beacon.9 (revision 17338d27fb653649232f52b760b401caab43bdae)
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.\"
26e4c06619SSascha Wildner.\" $FreeBSD: head/share/man/man9/ieee80211_beacon.9 197300 2009-09-18 00:33:47Z brueffer $
2705ac2d0dSSascha Wildner.\"
28*17338d27SSascha Wildner.Dd May 26, 2016
2905ac2d0dSSascha Wildner.Dt IEEE80211_BEACON 9
3005ac2d0dSSascha Wildner.Os
3105ac2d0dSSascha Wildner.Sh NAME
3205ac2d0dSSascha Wildner.Nm ieee80211_beacon
3305ac2d0dSSascha Wildner.Nd 802.11 beacon 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
3805ac2d0dSSascha Wildner.Pp
3905ac2d0dSSascha Wildner.Ft "struct mbuf *"
4005ac2d0dSSascha Wildner.Fo ieee80211_beacon_alloc
4105ac2d0dSSascha Wildner.Fa "struct ieee80211_node *"
4205ac2d0dSSascha Wildner.Fc
4305ac2d0dSSascha Wildner.\"
4405ac2d0dSSascha Wildner.Ft int
4505ac2d0dSSascha Wildner.Fo ieee80211_beacon_update
4605ac2d0dSSascha Wildner.Fa "struct ieee80211_node *"
4705ac2d0dSSascha Wildner.Fa "struct mbuf *"
4805ac2d0dSSascha Wildner.Fa "int mcast"
4905ac2d0dSSascha Wildner.Fc
5005ac2d0dSSascha Wildner.\"
5105ac2d0dSSascha Wildner.Ft void
5205ac2d0dSSascha Wildner.Fn ieee80211_beacon_notify "struct ieee80211vap *" "int what"
5305ac2d0dSSascha Wildner.Sh DESCRIPTION
5405ac2d0dSSascha WildnerThe
5505ac2d0dSSascha Wildner.Nm net80211
5605ac2d0dSSascha Wildnersoftware layer provides a support framework for drivers that includes
5705ac2d0dSSascha Wildnera template-based mechanism for dynamic update of beacon frames transmit
5805ac2d0dSSascha Wildnerin hostap, adhoc, and mesh operating modes.
5905ac2d0dSSascha WildnerDrivers should use
6005ac2d0dSSascha Wildner.Fn ieee80211_beacon_alloc
6105ac2d0dSSascha Wildnerto create an initial beacon frame.
6205ac2d0dSSascha Wildner.Pp
6305ac2d0dSSascha WildnerUpdate calls should only be done when something changes that
6405ac2d0dSSascha Wildneraffects the contents of the beacon frame.
6505ac2d0dSSascha WildnerWhen this happens the
6605ac2d0dSSascha Wildner.Dv iv_update_beacon
6705ac2d0dSSascha Wildnermethod is invoked and a driver-supplied routine must do the right thing.
6805ac2d0dSSascha WildnerFor devices that involve the host to transmit each
6905ac2d0dSSascha Wildnerbeacon frame this work may be as simple as marking a bit in the
7005ac2d0dSSascha Wildner.Vt ieee80211_beacon_offsets
7105ac2d0dSSascha Wildnerstructure:
7205ac2d0dSSascha Wildner.Bd -literal
7305ac2d0dSSascha Wildnerstatic void
7405ac2d0dSSascha Wildnerath_beacon_update(struct ieee80211vap *vap, int item)
7505ac2d0dSSascha Wildner{
7605ac2d0dSSascha Wildner        struct ieee80211_beacon_offsets *bo = &ATH_VAP(vap)->av_boff;
7705ac2d0dSSascha Wildner	setbit(bo->bo_flags, item);
7805ac2d0dSSascha Wildner}
7905ac2d0dSSascha Wildner.Ed
8005ac2d0dSSascha Wildner.Pp
8105ac2d0dSSascha Wildnerwith the
8205ac2d0dSSascha Wildner.Fn ieee80211_beacon_update
8305ac2d0dSSascha Wildnercall done before the next beacon is to be sent.
8405ac2d0dSSascha Wildner.Pp
8505ac2d0dSSascha WildnerDevices that off-load beacon generation may instead choose to use
8605ac2d0dSSascha Wildnerthis callback to push updates immediately to the device.
8705ac2d0dSSascha WildnerExactly how that is accomplished is unspecified.
8805ac2d0dSSascha WildnerOne possibility is to update the beacon frame contents and extract
8905ac2d0dSSascha Wildnerthe appropriate information element, but other scenarios are possible.
9005ac2d0dSSascha Wildner.Sh MULTI-VAP BEACON SCHEDULING
9105ac2d0dSSascha WildnerDrivers that support multiple vaps that can each beacon need to consider
9205ac2d0dSSascha Wildnerhow to schedule beacon frames.
9305ac2d0dSSascha WildnerThere are two possibilities at the moment:
9405ac2d0dSSascha Wildner.Em burst
9505ac2d0dSSascha Wildnerall beacons at TBTT or
9605ac2d0dSSascha Wildner.Em stagger beacons
9705ac2d0dSSascha Wildnerover the beacon interval.
9805ac2d0dSSascha WildnerBursting beacon frames may result in aperiodic delivery that can affect
9905ac2d0dSSascha Wildnerpower save operation of associated stations.
10005ac2d0dSSascha WildnerApplying some jitter (e.g. by randomly ordering burst frames) may be
10105ac2d0dSSascha Wildnersufficient to combat this and typically this is not an issue unless
10205ac2d0dSSascha Wildnerstations are using aggressive power save techniques
10305ac2d0dSSascha Wildnersuch as U-APSD (sometimes employed by VoIP phones).
10405ac2d0dSSascha WildnerStaggering frames requires more interrupts and device support that
10505ac2d0dSSascha Wildnermay not be available.
10605ac2d0dSSascha WildnerStaggering beacon frames is usually superior to bursting frames, up to
10705ac2d0dSSascha Wildnerabout eight vaps, at which point the overhead becomes significant and
10805ac2d0dSSascha Wildnerthe channel becomes noticeably busy anyway.
10905ac2d0dSSascha Wildner.Sh SEE ALSO
11005ac2d0dSSascha Wildner.Xr ieee80211 9
111