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