\hypertarget{ieee80211__freebsd_8h_source}{}\doxysection{ieee80211\+\_\+freebsd.\+h}
\label{ieee80211__freebsd_8h_source}\index{net80211/ieee80211\_freebsd.h@{net80211/ieee80211\_freebsd.h}}
\mbox{\hyperlink{ieee80211__freebsd_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2003-\/2008 Sam Leffler, Errno Consulting}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00005}00005 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00006}00006 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00007}00007 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00008}00008 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00009}00009 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00010}00010 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00011}00011 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00012}00012 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00013}00013 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00014}00014 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00015}00015 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00016}00016 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00017}00017 \textcolor{comment}{ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00018}00018 \textcolor{comment}{ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00019}00019 \textcolor{comment}{ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00020}00020 \textcolor{comment}{ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00021}00021 \textcolor{comment}{ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00022}00022 \textcolor{comment}{ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00023}00023 \textcolor{comment}{ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00024}00024 \textcolor{comment}{ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00025}00025 \textcolor{comment}{ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00026}00026 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00027}00027 \textcolor{comment}{ * \$FreeBSD\$}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00028}00028 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00029}00029 \textcolor{preprocessor}{\#ifndef \_NET80211\_IEEE80211\_FREEBSD\_H\_}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00030}00030 \textcolor{preprocessor}{\#define \_NET80211\_IEEE80211\_FREEBSD\_H\_}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00031}00031 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00032}00032 \textcolor{preprocessor}{\#ifdef \_KERNEL}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00033}00033 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00034}00034 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00035}00035 \textcolor{preprocessor}{\#include <sys/counter.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00036}00036 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00037}00037 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00038}00038 \textcolor{preprocessor}{\#include <sys/rwlock.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00039}00039 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00040}00040 \textcolor{preprocessor}{\#include <sys/taskqueue.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00041}00041 \textcolor{preprocessor}{\#include <sys/time.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00042}00042 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00043}00043 \textcolor{preprocessor}{\#include <net/debugnet.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00044}00044 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00045}00045 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00046}00046 \textcolor{comment}{ * priv(9) NET80211 checks.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00047}00047 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00048}00048 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00049}\mbox{\hyperlink{ieee80211__freebsd_8h_ad337f604b5c471ece18708de3194b1f0}{00049}} \textcolor{keywordtype}{int} \mbox{\hyperlink{ieee80211__freebsd_8h_ad337f604b5c471ece18708de3194b1f0}{ieee80211\_priv\_check\_vap\_getkey}}(u\_long, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00050}00050     \textcolor{keyword}{struct} ifnet *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00051}\mbox{\hyperlink{ieee80211__freebsd_8h_a9b602310de8e30a1ff1d19f6d7b371d1}{00051}} \textcolor{keywordtype}{int} \mbox{\hyperlink{ieee80211__freebsd_8h_a9b602310de8e30a1ff1d19f6d7b371d1}{ieee80211\_priv\_check\_vap\_manage}}(u\_long, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00052}00052     \textcolor{keyword}{struct} ifnet *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00053}\mbox{\hyperlink{ieee80211__freebsd_8h_a1814c914a45e77994546706030e9103f}{00053}} \textcolor{keywordtype}{int} \mbox{\hyperlink{ieee80211__freebsd_8h_a1814c914a45e77994546706030e9103f}{ieee80211\_priv\_check\_vap\_setmac}}(u\_long, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00054}00054     \textcolor{keyword}{struct} ifnet *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00055}\mbox{\hyperlink{ieee80211__freebsd_8h_a3ded52b037648335f51e700efb0234f6}{00055}} \textcolor{keywordtype}{int} \mbox{\hyperlink{ieee80211__freebsd_8h_a3ded52b037648335f51e700efb0234f6}{ieee80211\_priv\_check\_create\_vap}}(u\_long, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00056}00056     \textcolor{keyword}{struct} ifnet *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00057}00057 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00058}00058 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00059}00059 \textcolor{comment}{ * Common state locking definitions.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00060}00060 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00061}\mbox{\hyperlink{structieee80211__com__lock__t}{00061}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00062}\mbox{\hyperlink{structieee80211__com__lock__t_aa7bedfdf8b7f381cd8036bd3865caf58}{00062}}         \textcolor{keywordtype}{char}            name[16];               \textcolor{comment}{/* e.g. "{}ath0\_com\_lock"{} */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00063}\mbox{\hyperlink{structieee80211__com__lock__t_a00fe46c9d74bae62d7fe6f41858878c4}{00063}}         \textcolor{keyword}{struct }mtx      mtx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00064}00064 \} \mbox{\hyperlink{structieee80211__com__lock__t}{ieee80211\_com\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00065}\mbox{\hyperlink{ieee80211__freebsd_8h_aa1e21bfd92b4db60ed242c1313ff298c}{00065}} \textcolor{preprocessor}{\#define IEEE80211\_LOCK\_INIT(\_ic, \_name) do \{                            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00066}00066 \textcolor{preprocessor}{        ieee80211\_com\_lock\_t *cl = \&(\_ic)-\/>ic\_comlock;                  \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00067}00067 \textcolor{preprocessor}{        snprintf(cl-\/>name, sizeof(cl-\/>name), "{}\%s\_com\_lock"{}}, \_name);     \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00068}00068         mtx\_init(\&cl-\/>mtx, cl-\/>name, NULL, MTX\_DEF | MTX\_RECURSE);      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00069}00069 \} while (0)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00070}\mbox{\hyperlink{ieee80211__freebsd_8h_ab7edb223f01e5de24b6afa66de56cb2a}{00070}} \textcolor{preprocessor}{\#define IEEE80211\_LOCK\_OBJ(\_ic) (\&(\_ic)-\/>ic\_comlock.mtx)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00071}\mbox{\hyperlink{ieee80211__freebsd_8h_a53bf3d30dac416c5b25e2678678a088a}{00071}} \textcolor{preprocessor}{\#define IEEE80211\_LOCK\_DESTROY(\_ic) mtx\_destroy(IEEE80211\_LOCK\_OBJ(\_ic))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00072}\mbox{\hyperlink{ieee80211__freebsd_8h_ab3ce87ea4503405dd90019381065c9f6}{00072}} \textcolor{preprocessor}{\#define IEEE80211\_LOCK(\_ic)        mtx\_lock(IEEE80211\_LOCK\_OBJ(\_ic))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00073}\mbox{\hyperlink{ieee80211__freebsd_8h_a58240f22e885f3d421da47c2bc376815}{00073}} \textcolor{preprocessor}{\#define IEEE80211\_UNLOCK(\_ic)      mtx\_unlock(IEEE80211\_LOCK\_OBJ(\_ic))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00074}\mbox{\hyperlink{ieee80211__freebsd_8h_a92da71d7f298d51a339c7d06a610b947}{00074}} \textcolor{preprocessor}{\#define IEEE80211\_LOCK\_ASSERT(\_ic) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00075}00075 \textcolor{preprocessor}{        mtx\_assert(IEEE80211\_LOCK\_OBJ(\_ic), MA\_OWNED)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00076}\mbox{\hyperlink{ieee80211__freebsd_8h_abef0b28a45b4341430e358dcf80e65dc}{00076}} \textcolor{preprocessor}{\#define IEEE80211\_UNLOCK\_ASSERT(\_ic) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00077}00077 \textcolor{preprocessor}{        mtx\_assert(IEEE80211\_LOCK\_OBJ(\_ic), MA\_NOTOWNED)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00078}00078 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00079}00079 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00080}00080 \textcolor{comment}{ * Transmit lock.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00081}00081 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00082}00082 \textcolor{comment}{ * This is a (mostly) temporary lock designed to serialise all of the}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00083}00083 \textcolor{comment}{ * transmission operations throughout the stack.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00084}00084 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00085}\mbox{\hyperlink{structieee80211__tx__lock__t}{00085}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00086}\mbox{\hyperlink{structieee80211__tx__lock__t_aefb882f31f97b21219b9400677c18290}{00086}}         \textcolor{keywordtype}{char}            name[16];               \textcolor{comment}{/* e.g. "{}ath0\_tx\_lock"{} */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00087}\mbox{\hyperlink{structieee80211__tx__lock__t_a84229a6295b302b027cb731e023843ec}{00087}}         \textcolor{keyword}{struct }mtx      mtx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00088}00088 \} \mbox{\hyperlink{structieee80211__tx__lock__t}{ieee80211\_tx\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00089}\mbox{\hyperlink{ieee80211__freebsd_8h_a7d1c422e47408adb8156953c17415eac}{00089}} \textcolor{preprocessor}{\#define IEEE80211\_TX\_LOCK\_INIT(\_ic, \_name) do \{                         \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00090}00090 \textcolor{preprocessor}{        ieee80211\_tx\_lock\_t *cl = \&(\_ic)-\/>ic\_txlock;                    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00091}00091 \textcolor{preprocessor}{        snprintf(cl-\/>name, sizeof(cl-\/>name), "{}\%s\_tx\_lock"{}}, \_name);      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00092}00092         mtx\_init(\&cl-\/>mtx, cl-\/>name, NULL, MTX\_DEF);    \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00093}00093 \} while (0)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00094}\mbox{\hyperlink{ieee80211__freebsd_8h_a92d7bd0a65ad336c4d0082ab3ae7af7e}{00094}} \textcolor{preprocessor}{\#define IEEE80211\_TX\_LOCK\_OBJ(\_ic)      (\&(\_ic)-\/>ic\_txlock.mtx)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00095}\mbox{\hyperlink{ieee80211__freebsd_8h_a9c086d537d357571ba77c638e9f1cf8b}{00095}} \textcolor{preprocessor}{\#define IEEE80211\_TX\_LOCK\_DESTROY(\_ic) mtx\_destroy(IEEE80211\_TX\_LOCK\_OBJ(\_ic))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00096}\mbox{\hyperlink{ieee80211__freebsd_8h_a542468f23bf9459e7918d70293af846f}{00096}} \textcolor{preprocessor}{\#define IEEE80211\_TX\_LOCK(\_ic)     mtx\_lock(IEEE80211\_TX\_LOCK\_OBJ(\_ic))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00097}\mbox{\hyperlink{ieee80211__freebsd_8h_aae4ff96c05ead2bfe76fa94298b821ed}{00097}} \textcolor{preprocessor}{\#define IEEE80211\_TX\_UNLOCK(\_ic)           mtx\_unlock(IEEE80211\_TX\_LOCK\_OBJ(\_ic))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00098}\mbox{\hyperlink{ieee80211__freebsd_8h_a064ba276f286f2c86d87388c0e53b6e4}{00098}} \textcolor{preprocessor}{\#define IEEE80211\_TX\_LOCK\_ASSERT(\_ic) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00099}00099 \textcolor{preprocessor}{        mtx\_assert(IEEE80211\_TX\_LOCK\_OBJ(\_ic), MA\_OWNED)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00100}\mbox{\hyperlink{ieee80211__freebsd_8h_a9ab184570782373744adf0d949f7976c}{00100}} \textcolor{preprocessor}{\#define IEEE80211\_TX\_UNLOCK\_ASSERT(\_ic) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00101}00101 \textcolor{preprocessor}{        mtx\_assert(IEEE80211\_TX\_LOCK\_OBJ(\_ic), MA\_NOTOWNED)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00102}00102 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00103}00103 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00104}00104 \textcolor{comment}{ * Stageq / ni\_tx\_superg lock}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00105}00105 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00106}\mbox{\hyperlink{structieee80211__ff__lock__t}{00106}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00107}\mbox{\hyperlink{structieee80211__ff__lock__t_afe08cf3ad4b162cf6c3ddf2f4ea793a1}{00107}}         \textcolor{keywordtype}{char}            name[16];               \textcolor{comment}{/* e.g. "{}ath0\_ff\_lock"{} */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00108}\mbox{\hyperlink{structieee80211__ff__lock__t_afd2aab7b88ac16a2d1744b30327f35f9}{00108}}         \textcolor{keyword}{struct }mtx      mtx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00109}00109 \} \mbox{\hyperlink{structieee80211__ff__lock__t}{ieee80211\_ff\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00110}\mbox{\hyperlink{ieee80211__freebsd_8h_a40030504c45b294e261974a25da69aba}{00110}} \textcolor{preprocessor}{\#define IEEE80211\_FF\_LOCK\_INIT(\_ic, \_name) do \{                         \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00111}00111 \textcolor{preprocessor}{        ieee80211\_ff\_lock\_t *fl = \&(\_ic)-\/>ic\_fflock;                    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00112}00112 \textcolor{preprocessor}{        snprintf(fl-\/>name, sizeof(fl-\/>name), "{}\%s\_ff\_lock"{}}, \_name);      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00113}00113         mtx\_init(\&fl-\/>mtx, fl-\/>name, NULL, MTX\_DEF);                    \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00114}00114 \} while (0)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00115}\mbox{\hyperlink{ieee80211__freebsd_8h_ad698b3683dea53f763d05db25b3cbffb}{00115}} \textcolor{preprocessor}{\#define IEEE80211\_FF\_LOCK\_OBJ(\_ic)      (\&(\_ic)-\/>ic\_fflock.mtx)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00116}\mbox{\hyperlink{ieee80211__freebsd_8h_a8ea724c7cc4dc51ecb0dd24a312ae9bc}{00116}} \textcolor{preprocessor}{\#define IEEE80211\_FF\_LOCK\_DESTROY(\_ic)  mtx\_destroy(IEEE80211\_FF\_LOCK\_OBJ(\_ic))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00117}\mbox{\hyperlink{ieee80211__freebsd_8h_a6ab0b4b8ca358b1ee293bb4b7b7591de}{00117}} \textcolor{preprocessor}{\#define IEEE80211\_FF\_LOCK(\_ic)          mtx\_lock(IEEE80211\_FF\_LOCK\_OBJ(\_ic))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00118}\mbox{\hyperlink{ieee80211__freebsd_8h_aa8144ed4633faff60f472add9cfbed34}{00118}} \textcolor{preprocessor}{\#define IEEE80211\_FF\_UNLOCK(\_ic)        mtx\_unlock(IEEE80211\_FF\_LOCK\_OBJ(\_ic))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00119}\mbox{\hyperlink{ieee80211__freebsd_8h_a8b69fcaa032e5ab2949019520d933fdc}{00119}} \textcolor{preprocessor}{\#define IEEE80211\_FF\_LOCK\_ASSERT(\_ic) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00120}00120 \textcolor{preprocessor}{        mtx\_assert(IEEE80211\_FF\_LOCK\_OBJ(\_ic), MA\_OWNED)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00121}00121 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00122}00122 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00123}00123 \textcolor{comment}{ * Node locking definitions.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00124}00124 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00125}\mbox{\hyperlink{structieee80211__node__lock__t}{00125}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00126}\mbox{\hyperlink{structieee80211__node__lock__t_af7c9cd7dd8e232fb4c9d929dc4cb185d}{00126}}         \textcolor{keywordtype}{char}            name[16];               \textcolor{comment}{/* e.g. "{}ath0\_node\_lock"{} */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00127}\mbox{\hyperlink{structieee80211__node__lock__t_a6cec588322dc24763cbc304c13c791f1}{00127}}         \textcolor{keyword}{struct }mtx      mtx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00128}00128 \} \mbox{\hyperlink{structieee80211__node__lock__t}{ieee80211\_node\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00129}\mbox{\hyperlink{ieee80211__freebsd_8h_a6b3757c147606b229ec36268727b72e5}{00129}} \textcolor{preprocessor}{\#define IEEE80211\_NODE\_LOCK\_INIT(\_nt, \_name) do \{                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00130}00130 \textcolor{preprocessor}{        ieee80211\_node\_lock\_t *nl = \&(\_nt)-\/>nt\_nodelock;                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00131}00131 \textcolor{preprocessor}{        snprintf(nl-\/>name, sizeof(nl-\/>name), "{}\%s\_node\_lock"{}}, \_name);    \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00132}00132         mtx\_init(\&nl-\/>mtx, nl-\/>name, NULL, MTX\_DEF | MTX\_RECURSE);      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00133}00133 \} while (0)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00134}\mbox{\hyperlink{ieee80211__freebsd_8h_a20b2c77f8cef3f5120bf31cf6f8cc3a9}{00134}} \textcolor{preprocessor}{\#define IEEE80211\_NODE\_LOCK\_OBJ(\_nt)    (\&(\_nt)-\/>nt\_nodelock.mtx)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00135}\mbox{\hyperlink{ieee80211__freebsd_8h_a34544a4b281822a4d6aaf3d46c2eb1ce}{00135}} \textcolor{preprocessor}{\#define IEEE80211\_NODE\_LOCK\_DESTROY(\_nt) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00136}00136 \textcolor{preprocessor}{        mtx\_destroy(IEEE80211\_NODE\_LOCK\_OBJ(\_nt))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00137}\mbox{\hyperlink{ieee80211__freebsd_8h_acbf4e83e3551eb8f3a8e6dbc3ce836f5}{00137}} \textcolor{preprocessor}{\#define IEEE80211\_NODE\_LOCK(\_nt) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00138}00138 \textcolor{preprocessor}{        mtx\_lock(IEEE80211\_NODE\_LOCK\_OBJ(\_nt))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00139}\mbox{\hyperlink{ieee80211__freebsd_8h_aca86f3ae2b47b1f24f67f3d0cbd81772}{00139}} \textcolor{preprocessor}{\#define IEEE80211\_NODE\_IS\_LOCKED(\_nt) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00140}00140 \textcolor{preprocessor}{        mtx\_owned(IEEE80211\_NODE\_LOCK\_OBJ(\_nt))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00141}\mbox{\hyperlink{ieee80211__freebsd_8h_ae1544c71cd730128306dbb3bae6feed8}{00141}} \textcolor{preprocessor}{\#define IEEE80211\_NODE\_UNLOCK(\_nt) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00142}00142 \textcolor{preprocessor}{        mtx\_unlock(IEEE80211\_NODE\_LOCK\_OBJ(\_nt))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00143}\mbox{\hyperlink{ieee80211__freebsd_8h_afe362ba597f230abf2e2dace10ebe64e}{00143}} \textcolor{preprocessor}{\#define IEEE80211\_NODE\_LOCK\_ASSERT(\_nt) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00144}00144 \textcolor{preprocessor}{        mtx\_assert(IEEE80211\_NODE\_LOCK\_OBJ(\_nt), MA\_OWNED)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00145}00145 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00146}00146 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00147}00147 \textcolor{comment}{ * Power-\/save queue definitions. }}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00148}00148 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00149}\mbox{\hyperlink{ieee80211__freebsd_8h_aa90e6fabe5da5c9fed7028c7ca4ba09c}{00149}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }mtx \mbox{\hyperlink{ieee80211__freebsd_8h_aa90e6fabe5da5c9fed7028c7ca4ba09c}{ieee80211\_psq\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00150}\mbox{\hyperlink{ieee80211__freebsd_8h_a3eb18ef78709616905fccfbca9e215a7}{00150}} \textcolor{preprocessor}{\#define IEEE80211\_PSQ\_INIT(\_psq, \_name) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00151}00151 \textcolor{preprocessor}{        mtx\_init(\&(\_psq)-\/>psq\_lock, \_name, "{}802.11 ps q"{}}, MTX\_DEF)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00152}\mbox{\hyperlink{ieee80211__freebsd_8h_adfb44e307538a4dba0b5460e6e44b854}{00152}} \textcolor{preprocessor}{\#define IEEE80211\_PSQ\_DESTROY(\_psq)     mtx\_destroy(\&(\_psq)-\/>psq\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00153}\mbox{\hyperlink{ieee80211__freebsd_8h_add86c829b7b4d7f5455eb306ea59cdb7}{00153}} \textcolor{preprocessor}{\#define IEEE80211\_PSQ\_LOCK(\_psq)        mtx\_lock(\&(\_psq)-\/>psq\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00154}\mbox{\hyperlink{ieee80211__freebsd_8h_aebfc22f2cc5e70af87d2657d3d2ccc80}{00154}} \textcolor{preprocessor}{\#define IEEE80211\_PSQ\_UNLOCK(\_psq)      mtx\_unlock(\&(\_psq)-\/>psq\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00155}00155 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00156}00156 \textcolor{preprocessor}{\#ifndef IF\_PREPEND\_LIST}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00157}\mbox{\hyperlink{ieee80211__freebsd_8h_adb5bdef04a273499f2f68b4dce8c1bd1}{00157}} \textcolor{preprocessor}{\#define \_IF\_PREPEND\_LIST(ifq, mhead, mtail, mcount) do \{        \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00158}00158 \textcolor{preprocessor}{        (mtail)-\/>m\_nextpkt = (ifq)-\/>ifq\_head;                   \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00159}00159 \textcolor{preprocessor}{        if ((ifq)-\/>ifq\_tail == NULL)                            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00160}00160 \textcolor{preprocessor}{                (ifq)-\/>ifq\_tail = (mtail);                      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00161}00161 \textcolor{preprocessor}{        (ifq)-\/>ifq\_head = (mhead);                              \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00162}00162 \textcolor{preprocessor}{        (ifq)-\/>ifq\_len += (mcount);                             \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00163}00163 \textcolor{preprocessor}{\} while (0)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00164}\mbox{\hyperlink{ieee80211__freebsd_8h_ac7fd867421fb7132838a7f22735ff919}{00164}} \textcolor{preprocessor}{\#define IF\_PREPEND\_LIST(ifq, mhead, mtail, mcount) do \{         \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00165}00165 \textcolor{preprocessor}{        IF\_LOCK(ifq);                                           \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00166}00166 \textcolor{preprocessor}{        \_IF\_PREPEND\_LIST(ifq, mhead, mtail, mcount);            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00167}00167 \textcolor{preprocessor}{        IF\_UNLOCK(ifq);                                         \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00168}00168 \textcolor{preprocessor}{\} while (0)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00169}00169 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* IF\_PREPEND\_LIST */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00170}00170 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00171}00171 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00172}00172 \textcolor{comment}{ * Age queue definitions.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00173}00173 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00174}\mbox{\hyperlink{ieee80211__freebsd_8h_a33fda94d7594b8a1db89647f872d283e}{00174}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }mtx \mbox{\hyperlink{ieee80211__freebsd_8h_a33fda94d7594b8a1db89647f872d283e}{ieee80211\_ageq\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00175}\mbox{\hyperlink{ieee80211__freebsd_8h_a777b656cf2452c9d43241fce8d00f267}{00175}} \textcolor{preprocessor}{\#define IEEE80211\_AGEQ\_INIT(\_aq, \_name) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00176}00176 \textcolor{preprocessor}{        mtx\_init(\&(\_aq)-\/>aq\_lock, \_name, "{}802.11 age q"{}}, MTX\_DEF)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00177}\mbox{\hyperlink{ieee80211__freebsd_8h_aa316b25720b4541baf262ac0cda9cf41}{00177}} \textcolor{preprocessor}{\#define IEEE80211\_AGEQ\_DESTROY(\_aq)     mtx\_destroy(\&(\_aq)-\/>aq\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00178}\mbox{\hyperlink{ieee80211__freebsd_8h_aecc07e247470fbd540c03e6bc55d92e0}{00178}} \textcolor{preprocessor}{\#define IEEE80211\_AGEQ\_LOCK(\_aq)        mtx\_lock(\&(\_aq)-\/>aq\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00179}\mbox{\hyperlink{ieee80211__freebsd_8h_a04ae9f0fe746253887218da35853997e}{00179}} \textcolor{preprocessor}{\#define IEEE80211\_AGEQ\_UNLOCK(\_aq)      mtx\_unlock(\&(\_aq)-\/>aq\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00180}00180 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00181}00181 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00182}00182 \textcolor{comment}{ * 802.1x MAC ACL database locking definitions.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00183}00183 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00184}\mbox{\hyperlink{ieee80211__freebsd_8h_ab97eeeff0da56e8e8640009bc0a02a1a}{00184}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }mtx \mbox{\hyperlink{ieee80211__freebsd_8h_ab97eeeff0da56e8e8640009bc0a02a1a}{acl\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00185}\mbox{\hyperlink{ieee80211__freebsd_8h_a9728d34d82964fb8b75c56eea6e7401a}{00185}} \textcolor{preprocessor}{\#define ACL\_LOCK\_INIT(\_as, \_name) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00186}00186 \textcolor{preprocessor}{        mtx\_init(\&(\_as)-\/>as\_lock, \_name, "{}802.11 ACL"{}}, MTX\_DEF)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00187}\mbox{\hyperlink{ieee80211__freebsd_8h_a0e60c6910792aca0eda6df1b73c159e7}{00187}} \textcolor{preprocessor}{\#define ACL\_LOCK\_DESTROY(\_as)           mtx\_destroy(\&(\_as)-\/>as\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00188}\mbox{\hyperlink{ieee80211__freebsd_8h_a1b3e29e01841d5337e3ee821bccafc91}{00188}} \textcolor{preprocessor}{\#define ACL\_LOCK(\_as)                   mtx\_lock(\&(\_as)-\/>as\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00189}\mbox{\hyperlink{ieee80211__freebsd_8h_ae10545a73313fc6734c68546f76499d9}{00189}} \textcolor{preprocessor}{\#define ACL\_UNLOCK(\_as)                 mtx\_unlock(\&(\_as)-\/>as\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00190}\mbox{\hyperlink{ieee80211__freebsd_8h_ab872117bc1e813f0cfb5989f85a01894}{00190}} \textcolor{preprocessor}{\#define ACL\_LOCK\_ASSERT(\_as) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00191}00191 \textcolor{preprocessor}{        mtx\_assert((\&(\_as)-\/>as\_lock), MA\_OWNED)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00192}00192 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00193}00193 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00194}00194 \textcolor{comment}{ * Scan table definitions.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00195}00195 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00196}\mbox{\hyperlink{ieee80211__freebsd_8h_ae56892361e5b14c43260946613a3816e}{00196}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }mtx \mbox{\hyperlink{ieee80211__freebsd_8h_ae56892361e5b14c43260946613a3816e}{ieee80211\_scan\_table\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00197}\mbox{\hyperlink{ieee80211__freebsd_8h_a5683681c63ba838b095a43e70343fbf4}{00197}} \textcolor{preprocessor}{\#define IEEE80211\_SCAN\_TABLE\_LOCK\_INIT(\_st, \_name) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00198}00198 \textcolor{preprocessor}{        mtx\_init(\&(\_st)-\/>st\_lock, \_name, "{}802.11 scan table"{}}, MTX\_DEF)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00199}\mbox{\hyperlink{ieee80211__freebsd_8h_a112b393fb67319a0d5ab5ff8f0aeb9e0}{00199}} \textcolor{preprocessor}{\#define IEEE80211\_SCAN\_TABLE\_LOCK\_DESTROY(\_st)  mtx\_destroy(\&(\_st)-\/>st\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00200}\mbox{\hyperlink{ieee80211__freebsd_8h_af5326504a65ab3b19c3246d7d2421ba2}{00200}} \textcolor{preprocessor}{\#define IEEE80211\_SCAN\_TABLE\_LOCK(\_st)          mtx\_lock(\&(\_st)-\/>st\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00201}\mbox{\hyperlink{ieee80211__freebsd_8h_ac7b2c2b1c42ee98c2850231193b90e67}{00201}} \textcolor{preprocessor}{\#define IEEE80211\_SCAN\_TABLE\_UNLOCK(\_st)        mtx\_unlock(\&(\_st)-\/>st\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00202}00202 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00203}\mbox{\hyperlink{ieee80211__freebsd_8h_ac1938390843329f1c3a789c5386d2822}{00203}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }mtx \mbox{\hyperlink{ieee80211__freebsd_8h_ac1938390843329f1c3a789c5386d2822}{ieee80211\_scan\_iter\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00204}\mbox{\hyperlink{ieee80211__freebsd_8h_a551808268b388d6d700cd71a88d6aa59}{00204}} \textcolor{preprocessor}{\#define IEEE80211\_SCAN\_ITER\_LOCK\_INIT(\_st, \_name) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00205}00205 \textcolor{preprocessor}{        mtx\_init(\&(\_st)-\/>st\_scanlock, \_name, "{}802.11 scangen"{}}, MTX\_DEF)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00206}\mbox{\hyperlink{ieee80211__freebsd_8h_a9c7da5fca7bfbe087234681624e7e2a8}{00206}} \textcolor{preprocessor}{\#define IEEE80211\_SCAN\_ITER\_LOCK\_DESTROY(\_st)   mtx\_destroy(\&(\_st)-\/>st\_scanlock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00207}\mbox{\hyperlink{ieee80211__freebsd_8h_a96ce8c72df193bd71918c077bdf80fd9}{00207}} \textcolor{preprocessor}{\#define IEEE80211\_SCAN\_ITER\_LOCK(\_st)           mtx\_lock(\&(\_st)-\/>st\_scanlock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00208}\mbox{\hyperlink{ieee80211__freebsd_8h_ac0f774e6a1dbed1165da2093ce32d990}{00208}} \textcolor{preprocessor}{\#define IEEE80211\_SCAN\_ITER\_UNLOCK(\_st) mtx\_unlock(\&(\_st)-\/>st\_scanlock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00209}00209 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00210}00210 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00211}00211 \textcolor{comment}{ * Mesh node/routing definitions.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00212}00212 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00213}\mbox{\hyperlink{ieee80211__freebsd_8h_a04885eb166047885623edc4dcfe89ec0}{00213}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }mtx \mbox{\hyperlink{ieee80211__freebsd_8h_a04885eb166047885623edc4dcfe89ec0}{ieee80211\_rte\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00214}\mbox{\hyperlink{ieee80211__freebsd_8h_a2238fd807e3738ea9ad649c49c538232}{00214}} \textcolor{preprocessor}{\#define MESH\_RT\_ENTRY\_LOCK\_INIT(\_rt, \_name) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00215}00215 \textcolor{preprocessor}{        mtx\_init(\&(rt)-\/>rt\_lock, \_name, "{}802.11s route entry"{}}, MTX\_DEF)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00216}\mbox{\hyperlink{ieee80211__freebsd_8h_aa542f1b8ad4b8fb50b2af15101b8d5fd}{00216}} \textcolor{preprocessor}{\#define MESH\_RT\_ENTRY\_LOCK\_DESTROY(\_rt) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00217}00217 \textcolor{preprocessor}{        mtx\_destroy(\&(\_rt)-\/>rt\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00218}\mbox{\hyperlink{ieee80211__freebsd_8h_aff8373171747d4a9d9b4ccf80f2178c1}{00218}} \textcolor{preprocessor}{\#define MESH\_RT\_ENTRY\_LOCK(rt)  mtx\_lock(\&(rt)-\/>rt\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00219}\mbox{\hyperlink{ieee80211__freebsd_8h_a6144944be0d9767401e475d52d501354}{00219}} \textcolor{preprocessor}{\#define MESH\_RT\_ENTRY\_LOCK\_ASSERT(rt) mtx\_assert(\&(rt)-\/>rt\_lock, MA\_OWNED)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00220}\mbox{\hyperlink{ieee80211__freebsd_8h_af669d383e34c606b33074a6ad64cf05c}{00220}} \textcolor{preprocessor}{\#define MESH\_RT\_ENTRY\_UNLOCK(rt)        mtx\_unlock(\&(rt)-\/>rt\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00221}00221 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00222}\mbox{\hyperlink{ieee80211__freebsd_8h_aefc5e128e15d6c5595a3c7b21f76536b}{00222}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }mtx \mbox{\hyperlink{ieee80211__freebsd_8h_aefc5e128e15d6c5595a3c7b21f76536b}{ieee80211\_rt\_lock\_t}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00223}\mbox{\hyperlink{ieee80211__freebsd_8h_a583855b07a04536d44cdd1ce85dbe3ea}{00223}} \textcolor{preprocessor}{\#define MESH\_RT\_LOCK(ms)        mtx\_lock(\&(ms)-\/>ms\_rt\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00224}\mbox{\hyperlink{ieee80211__freebsd_8h_ac3b4be05cfbec798f21683a755860d0f}{00224}} \textcolor{preprocessor}{\#define MESH\_RT\_LOCK\_ASSERT(ms) mtx\_assert(\&(ms)-\/>ms\_rt\_lock, MA\_OWNED)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00225}\mbox{\hyperlink{ieee80211__freebsd_8h_a822c5b6c786494778cb469a12cf47d8b}{00225}} \textcolor{preprocessor}{\#define MESH\_RT\_UNLOCK(ms)      mtx\_unlock(\&(ms)-\/>ms\_rt\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00226}\mbox{\hyperlink{ieee80211__freebsd_8h_a86a0a48344812bda466131b01f1f6ec2}{00226}} \textcolor{preprocessor}{\#define MESH\_RT\_LOCK\_INIT(ms, name) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00227}00227 \textcolor{preprocessor}{        mtx\_init(\&(ms)-\/>ms\_rt\_lock, name, "{}802.11s routing table"{}}, MTX\_DEF)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00228}\mbox{\hyperlink{ieee80211__freebsd_8h_af2d7b781a1802c88e5c4ff760b456943}{00228}} \textcolor{preprocessor}{\#define MESH\_RT\_LOCK\_DESTROY(ms) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00229}00229 \textcolor{preprocessor}{        mtx\_destroy(\&(ms)-\/>ms\_rt\_lock)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00230}00230 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00231}00231 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00232}00232 \textcolor{comment}{ * Node reference counting definitions.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00233}00233 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00234}00234 \textcolor{comment}{ * ieee80211\_node\_initref       initialize the reference count to 1}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00235}00235 \textcolor{comment}{ * ieee80211\_node\_incref        add a reference}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00236}00236 \textcolor{comment}{ * ieee80211\_node\_decref        remove a reference}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00237}00237 \textcolor{comment}{ * ieee80211\_node\_dectestref    remove a reference and return 1 if this}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00238}00238 \textcolor{comment}{ *                              is the last reference, otherwise 0}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00239}00239 \textcolor{comment}{ * ieee80211\_node\_refcnt        reference count for printing (only)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00240}00240 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00241}00241 \textcolor{preprocessor}{\#include <machine/atomic.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00242}00242 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00243}00243 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00244}00244 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a9e9edf11ae2ad26637035fe8667e4b15}{ieee80211\_com\_vincref}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00245}00245 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_a816765a3943aa623d09b6971e2fed0b3}{ieee80211\_com\_vdecref}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00246}00246 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_af74f27f9766206688df92e440d6d61d3}{ieee80211\_com\_vdetach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00247}00247 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00248}\mbox{\hyperlink{ieee80211__freebsd_8h_a13d61d5817a4c62a282fc3f936d6cbfa}{00248}} \textcolor{preprocessor}{\#define ieee80211\_node\_initref(\_ni) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00249}00249 \textcolor{preprocessor}{        do \{ ((\_ni)-\/>ni\_refcnt = 1); \} while (0)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00250}\mbox{\hyperlink{ieee80211__freebsd_8h_a5d7f676b82ad480622d5fbd5db6c59cb}{00250}} \textcolor{preprocessor}{\#define ieee80211\_node\_incref(\_ni) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00251}00251 \textcolor{preprocessor}{        atomic\_add\_int(\&(\_ni)-\/>ni\_refcnt, 1)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00252}\mbox{\hyperlink{ieee80211__freebsd_8h_a0a30a8c3da3b91bb47e7b28e83c21615}{00252}} \textcolor{preprocessor}{\#define ieee80211\_node\_decref(\_ni) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00253}00253 \textcolor{preprocessor}{        atomic\_subtract\_int(\&(\_ni)-\/>ni\_refcnt, 1)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00254}00254 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__node}{ieee80211\_node}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00255}00255 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a548086fad60a85be8a020cbb7db1ed3b}{ieee80211\_node\_dectestref}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00256}\mbox{\hyperlink{ieee80211__freebsd_8h_a85fdc122e071a1274ca8000de659356a}{00256}} \textcolor{preprocessor}{\#define ieee80211\_node\_refcnt(\_ni)      (\_ni)-\/>ni\_refcnt}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00257}00257 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00258}00258 \textcolor{keyword}{struct }ifqueue;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00259}00259 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_aeff07482cf60471b029ba8e25699f401}{ieee80211\_drain\_ifq}}(\textcolor{keyword}{struct} ifqueue *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00260}00260 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_a940fdf231d3596a59121b00bdd9a033a}{ieee80211\_flush\_ifq}}(\textcolor{keyword}{struct} ifqueue *, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00261}00261 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00262}00262 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_ab260763f5bd4f18cddc29e002c818734}{ieee80211\_vap\_destroy}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00263}00263 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *    \mbox{\hyperlink{ieee80211__freebsd_8h_a71caa9173440a6bfe9ca9ba8c24dffeb}{ieee80211\_get\_vap\_ifname}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00264}00264 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00265}\mbox{\hyperlink{ieee80211__freebsd_8h_a3694a1f2647496ffbff04d0a6f37b9eb}{00265}} \textcolor{preprocessor}{\#define IFNET\_IS\_UP\_RUNNING(\_ifp) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00266}00266 \textcolor{preprocessor}{        (((\_ifp)-\/>if\_flags \& IFF\_UP) \&\& \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00267}00267 \textcolor{preprocessor}{         ((\_ifp)-\/>if\_drv\_flags \& IFF\_DRV\_RUNNING))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00268}00268 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00269}\mbox{\hyperlink{ieee80211__freebsd_8h_a52a17b151dca6a45aec6939d70a234ab}{00269}} \textcolor{preprocessor}{\#define msecs\_to\_ticks(ms)      MSEC\_2\_TICKS(ms)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00270}\mbox{\hyperlink{ieee80211__freebsd_8h_a88a6254a9798d2ef07a80132cb02a3e7}{00270}} \textcolor{preprocessor}{\#define ticks\_to\_msecs(t)       TICKS\_2\_MSEC(t)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00271}\mbox{\hyperlink{ieee80211__freebsd_8h_aabcb83027851b54847986773ba2107fd}{00271}} \textcolor{preprocessor}{\#define ticks\_to\_secs(t)        ((t) / hz)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00272}00272 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00273}\mbox{\hyperlink{ieee80211__freebsd_8h_a1ebc8a9b26914213d5493956b91f428e}{00273}} \textcolor{preprocessor}{\#define ieee80211\_time\_after(a,b)       ((int)(b) -\/ (int)(a) < 0)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00274}\mbox{\hyperlink{ieee80211__freebsd_8h_aa04b43fca29cf4fd61e8b5290a17a96a}{00274}} \textcolor{preprocessor}{\#define ieee80211\_time\_before(a,b)      ieee80211\_time\_after(b,a)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00275}\mbox{\hyperlink{ieee80211__freebsd_8h_a38f42d8348b00883c71e71ec57d5c7d1}{00275}} \textcolor{preprocessor}{\#define ieee80211\_time\_after\_eq(a,b)    ((int)(a) -\/ (int)(b) >= 0)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00276}\mbox{\hyperlink{ieee80211__freebsd_8h_a8d4249fbe6816f554bc3d4fef4f9fda6}{00276}} \textcolor{preprocessor}{\#define ieee80211\_time\_before\_eq(a,b)   ieee80211\_time\_after\_eq(b,a)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00277}00277 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00278}00278 \textcolor{keyword}{struct }mbuf *\mbox{\hyperlink{ieee80211__freebsd_8h_a375e045edada6f7b1554129910ab6398}{ieee80211\_getmgtframe}}(uint8\_t **frm, \textcolor{keywordtype}{int} headroom, \textcolor{keywordtype}{int} pktlen);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00279}00279 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00280}00280 \textcolor{comment}{/* tx path usage */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00281}\mbox{\hyperlink{ieee80211__freebsd_8h_a859809fa5a36b194cad84e72a671cb89}{00281}} \textcolor{preprocessor}{\#define M\_ENCAP         M\_PROTO1                }\textcolor{comment}{/* 802.11 encap done */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00282}\mbox{\hyperlink{ieee80211__freebsd_8h_a7e83013201da7997bdfe0082fcf4c6db}{00282}} \textcolor{preprocessor}{\#define M\_EAPOL         M\_PROTO3                }\textcolor{comment}{/* PAE/EAPOL frame */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00283}\mbox{\hyperlink{ieee80211__freebsd_8h_aeeb2c1cb6e20f035a5b0edc7d9ebe5a3}{00283}} \textcolor{preprocessor}{\#define M\_PWR\_SAV       M\_PROTO4                }\textcolor{comment}{/* bypass PS handling */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00284}\mbox{\hyperlink{ieee80211__freebsd_8h_a1bbc49c43049bbd8c1fe1f0bb398a986}{00284}} \textcolor{preprocessor}{\#define M\_MORE\_DATA     M\_PROTO5                }\textcolor{comment}{/* more data frames to follow */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00285}\mbox{\hyperlink{ieee80211__freebsd_8h_aeecfe297ce3a63b423dbf3e0902152b6}{00285}} \textcolor{preprocessor}{\#define M\_FF            M\_PROTO6                }\textcolor{comment}{/* fast frame / A-\/MSDU */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00286}\mbox{\hyperlink{ieee80211__freebsd_8h_a9874e993c774f19210fa2897e761c2ba}{00286}} \textcolor{preprocessor}{\#define M\_TXCB          M\_PROTO7                }\textcolor{comment}{/* do tx complete callback */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00287}\mbox{\hyperlink{ieee80211__freebsd_8h_ae6eabe6bed459e58103e7ca2e64ea7c1}{00287}} \textcolor{preprocessor}{\#define M\_AMPDU\_MPDU    M\_PROTO8                }\textcolor{comment}{/* ok for A-\/MPDU aggregation */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00288}\mbox{\hyperlink{ieee80211__freebsd_8h_ad36b290a3de056aa09aa885c6617455e}{00288}} \textcolor{preprocessor}{\#define M\_FRAG          M\_PROTO9                }\textcolor{comment}{/* frame fragmentation */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00289}\mbox{\hyperlink{ieee80211__freebsd_8h_ac7348fee645bbf7c7b4f6c2aef3bc749}{00289}} \textcolor{preprocessor}{\#define M\_FIRSTFRAG     M\_PROTO10               }\textcolor{comment}{/* first frame fragment */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00290}\mbox{\hyperlink{ieee80211__freebsd_8h_aa67a8811c4b07b17e1427ef4b2fd25dc}{00290}} \textcolor{preprocessor}{\#define M\_LASTFRAG      M\_PROTO11               }\textcolor{comment}{/* last frame fragment */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00291}00291 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00292}\mbox{\hyperlink{ieee80211__freebsd_8h_aef6fdeb5124af802e250de87d854a42a}{00292}} \textcolor{preprocessor}{\#define M\_80211\_TX \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00293}00293 \textcolor{preprocessor}{        (M\_ENCAP|M\_EAPOL|M\_PWR\_SAV|M\_MORE\_DATA|M\_FF|M\_TXCB| \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00294}00294 \textcolor{preprocessor}{         M\_AMPDU\_MPDU|M\_FRAG|M\_FIRSTFRAG|M\_LASTFRAG)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00295}00295 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00296}00296 \textcolor{comment}{/* rx path usage */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00297}\mbox{\hyperlink{ieee80211__freebsd_8h_afcaef6ffd452e4f6e210886fae1c7a2f}{00297}} \textcolor{preprocessor}{\#define M\_AMPDU         M\_PROTO1                }\textcolor{comment}{/* A-\/MPDU subframe */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00298}\mbox{\hyperlink{ieee80211__freebsd_8h_a68cb3206ffe0cd84e3b151bf4af56f08}{00298}} \textcolor{preprocessor}{\#define M\_WEP           M\_PROTO2                }\textcolor{comment}{/* WEP done by hardware */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00299}00299 \textcolor{preprocessor}{\#if 0}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00300}00300 \textcolor{preprocessor}{\#define M\_AMPDU\_MPDU    M\_PROTO8                }\textcolor{comment}{/* A-\/MPDU re-\/order done */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00301}00301 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00302}\mbox{\hyperlink{ieee80211__freebsd_8h_a17cb82716549093d896660422fc62944}{00302}} \textcolor{preprocessor}{\#define M\_80211\_RX      (M\_AMPDU|M\_WEP|M\_AMPDU\_MPDU)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00303}00303 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00304}\mbox{\hyperlink{ieee80211__freebsd_8h_a5ea46abfdf82faf398fb38aedecee861}{00304}} \textcolor{preprocessor}{\#define IEEE80211\_MBUF\_TX\_FLAG\_BITS \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00305}00305 \textcolor{preprocessor}{        M\_FLAG\_BITS \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00306}00306 \textcolor{preprocessor}{        "{}\(\backslash\)15M\_ENCAP\(\backslash\)17M\_EAPOL\(\backslash\)20M\_PWR\_SAV\(\backslash\)21M\_MORE\_DATA\(\backslash\)22M\_FF\(\backslash\)23M\_TXCB"{}} \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00307}00307         "{}\(\backslash\)24M\_AMPDU\_MPDU\(\backslash\)25M\_FRAG\(\backslash\)26M\_FIRSTFRAG\(\backslash\)27M\_LASTFRAG"{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00308}00308 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00309}\mbox{\hyperlink{ieee80211__freebsd_8h_adc0086e1a1ccd7f1896de25aaf38e2bb}{00309}} \textcolor{preprocessor}{\#define IEEE80211\_MBUF\_RX\_FLAG\_BITS \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00310}00310 \textcolor{preprocessor}{        M\_FLAG\_BITS \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00311}00311 \textcolor{preprocessor}{        "{}\(\backslash\)15M\_AMPDU\(\backslash\)16M\_WEP\(\backslash\)24M\_AMPDU\_MPDU"{}}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00312}00312 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00313}00313 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00314}00314 \textcolor{comment}{ * Store WME access control bits in the vlan tag.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00315}00315 \textcolor{comment}{ * This is safe since it's done after the packet is classified}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00316}00316 \textcolor{comment}{ * (where we use any previous tag) and because it's passed}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00317}00317 \textcolor{comment}{ * directly in to the driver and there's no chance someone}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00318}00318 \textcolor{comment}{ * else will clobber them on us.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00319}00319 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00320}\mbox{\hyperlink{ieee80211__freebsd_8h_a73d00c5f488496e1860074ae1c3549a1}{00320}} \textcolor{preprocessor}{\#define M\_WME\_SETAC(m, ac) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00321}00321 \textcolor{preprocessor}{        ((m)-\/>m\_pkthdr.ether\_vtag = (ac))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00322}\mbox{\hyperlink{ieee80211__freebsd_8h_a8fee023964c47878fcf704578934ac9d}{00322}} \textcolor{preprocessor}{\#define M\_WME\_GETAC(m)  ((m)-\/>m\_pkthdr.ether\_vtag)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00323}00323 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00324}00324 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00325}00325 \textcolor{comment}{ * Mbufs on the power save queue are tagged with an age and}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00326}00326 \textcolor{comment}{ * timed out.  We reuse the hardware checksum field in the}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00327}00327 \textcolor{comment}{ * mbuf packet header to store this data.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00328}00328 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00329}\mbox{\hyperlink{ieee80211__freebsd_8h_a3223a91cf9f6d8ddbd3541957f91a40d}{00329}} \textcolor{preprocessor}{\#define M\_AGE\_SET(m,v)          (m-\/>m\_pkthdr.csum\_data = v)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00330}\mbox{\hyperlink{ieee80211__freebsd_8h_a838665648291382b5b17a588a598d592}{00330}} \textcolor{preprocessor}{\#define M\_AGE\_GET(m)            (m-\/>m\_pkthdr.csum\_data)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00331}\mbox{\hyperlink{ieee80211__freebsd_8h_a2321453464acb14ab1cf2458716e2663}{00331}} \textcolor{preprocessor}{\#define M\_AGE\_SUB(m,adj)        (m-\/>m\_pkthdr.csum\_data -\/= adj)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00332}00332 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00333}00333 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00334}00334 \textcolor{comment}{ * Store the sequence number.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00335}00335 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00336}\mbox{\hyperlink{ieee80211__freebsd_8h_a873e572f77220e3ebbe2018798680dac}{00336}} \textcolor{preprocessor}{\#define M\_SEQNO\_SET(m, seqno) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00337}00337 \textcolor{preprocessor}{        ((m)-\/>m\_pkthdr.tso\_segsz = (seqno))}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00338}\mbox{\hyperlink{ieee80211__freebsd_8h_a3de80ec7e7b95bc2c067be2a9f7a4f6c}{00338}} \textcolor{preprocessor}{\#define M\_SEQNO\_GET(m)  ((m)-\/>m\_pkthdr.tso\_segsz)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00339}00339 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00340}\mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{00340}} \textcolor{preprocessor}{\#define MTAG\_ABI\_NET80211       1132948340      }\textcolor{comment}{/* net80211 ABI */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00341}00341 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00342}\mbox{\hyperlink{structieee80211__cb}{00342}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__cb}{ieee80211\_cb}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00343}\mbox{\hyperlink{structieee80211__cb_aca77b15f1f4cf313dde3f003d255cace}{00343}}         void    (*\mbox{\hyperlink{structieee80211__cb_aca77b15f1f4cf313dde3f003d255cace}{func}})(\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *, \textcolor{keywordtype}{void} *, \textcolor{keywordtype}{int} status);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00344}\mbox{\hyperlink{structieee80211__cb_a0ecb4d26e5956495b8ab6cfd205c10f0}{00344}}         \textcolor{keywordtype}{void}    *\mbox{\hyperlink{structieee80211__cb_a0ecb4d26e5956495b8ab6cfd205c10f0}{arg}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00345}00345 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00346}\mbox{\hyperlink{ieee80211__freebsd_8h_a4530dcae2d7625aebb302533f6fe622b}{00346}} \textcolor{preprocessor}{\#define NET80211\_TAG\_CALLBACK   0       }\textcolor{comment}{/* xmit complete callback */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00347}00347 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a9449da2f096f3655351741291aaa3434}{ieee80211\_add\_callback}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00348}00348                 \textcolor{keywordtype}{void} (*func)(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *, \textcolor{keywordtype}{void} *, \textcolor{keywordtype}{int}), \textcolor{keywordtype}{void} *arg);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00349}00349 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_a6a8c9c12cadc4ce0130b934f9433f2eb}{ieee80211\_process\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *, \textcolor{keyword}{struct} mbuf *, \textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00350}00350 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00351}\mbox{\hyperlink{ieee80211__freebsd_8h_a091494a42df388782d1cae39c6cae8de}{00351}} \textcolor{preprocessor}{\#define NET80211\_TAG\_XMIT\_PARAMS        1}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00352}00352 \textcolor{comment}{/* See below; this is after the bpf\_params definition */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00353}00353 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00354}\mbox{\hyperlink{ieee80211__freebsd_8h_a05569616e7f8e50c95268bcf76f10641}{00354}} \textcolor{preprocessor}{\#define NET80211\_TAG\_RECV\_PARAMS        2}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00355}00355 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00356}\mbox{\hyperlink{ieee80211__freebsd_8h_ac544c85231524164439e503015aca361}{00356}} \textcolor{preprocessor}{\#define NET80211\_TAG\_TOA\_PARAMS         3}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00357}00357 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00358}00358 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00359}00359 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a7587539fc81014cdaa6a897a69abe8a2}{ieee80211\_parent\_xmitpkt}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *, \textcolor{keyword}{struct} mbuf *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00360}00360 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a7b13b7337318d1aa8a8f4286fac61361}{ieee80211\_vap\_xmitpkt}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *, \textcolor{keyword}{struct} mbuf *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00361}00361 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00362}00362 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_af3a1dd5f0cee3f07379f2bb4339f4f3f}{net80211\_get\_random\_bytes}}(\textcolor{keywordtype}{void} *, \textcolor{keywordtype}{size\_t});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00363}00363 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00364}00364 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_a8c60e59e3db478530a9bb9d4e6acc64a}{ieee80211\_sysctl\_attach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00365}00365 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_acc8decbdcb7c3991ddfa5943e9f06ddd}{ieee80211\_sysctl\_detach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00366}00366 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_ab0822ce6869779353109d630786c2b7c}{ieee80211\_sysctl\_vattach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00367}00367 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_a6985b1efce731368b652dc7bb20132ec}{ieee80211\_sysctl\_vdetach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00368}00368 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00369}\mbox{\hyperlink{ieee80211__freebsd_8h_ac0d1b79cd3c9b6d505eb339885781e1b}{00369}} \mbox{\hyperlink{ieee80211__freebsd_8h_ac0d1b79cd3c9b6d505eb339885781e1b}{SYSCTL\_DECL}}(\_net\_wlan);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00370}00370 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a23fced5b6ff43e9d6ab5151ef53dfdad}{ieee80211\_sysctl\_msecs\_ticks}}(SYSCTL\_HANDLER\_ARGS);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00371}00371 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00372}00372 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ieee80211__freebsd_8h_a3fb223864838efb46264b29488eb0583}{ieee80211\_load\_module}}(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00373}00373 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00374}00374 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00375}00375 \textcolor{comment}{ * A "{}policy module"{} is an adjunct module to net80211 that provides}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00376}00376 \textcolor{comment}{ * functionality that typically includes policy decisions.  This}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00377}00377 \textcolor{comment}{ * modularity enables extensibility and vendor-\/supplied functionality.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00378}00378 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00379}\mbox{\hyperlink{ieee80211__freebsd_8h_aae0b73bf96fb582be2c54c65d8ac2b7a}{00379}} \textcolor{preprocessor}{\#define \_IEEE80211\_POLICY\_MODULE(policy, name, version)                 \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00380}00380 \textcolor{preprocessor}{typedef void (*policy\#\#\_setup)(int);                                    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00381}00381 \textcolor{preprocessor}{SET\_DECLARE(policy\#\#\_set, policy\#\#\_setup);                              \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00382}00382 \textcolor{preprocessor}{static int                                                              \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00383}00383 \textcolor{preprocessor}{wlan\_\#\#name\#\#\_modevent(module\_t mod, int type, void *unused)            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00384}00384 \textcolor{preprocessor}{\{                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00385}00385 \textcolor{preprocessor}{        policy\#\#\_setup * const *iter, f;                                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00386}00386 \textcolor{preprocessor}{        switch (type) \{                                                 \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00387}00387 \textcolor{preprocessor}{        case MOD\_LOAD:                                                  \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00388}00388 \textcolor{preprocessor}{                SET\_FOREACH(iter, policy\#\#\_set) \{                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00389}00389 \textcolor{preprocessor}{                        f = (void*) *iter;                              \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00390}00390 \textcolor{preprocessor}{                        f(type);                                        \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00391}00391 \textcolor{preprocessor}{                \}                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00392}00392 \textcolor{preprocessor}{                return 0;                                               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00393}00393 \textcolor{preprocessor}{        case MOD\_UNLOAD:                                                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00394}00394 \textcolor{preprocessor}{        case MOD\_QUIESCE:                                               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00395}00395 \textcolor{preprocessor}{                if (nrefs) \{                                            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00396}00396 \textcolor{preprocessor}{                        printf("{}wlan\_"{}} \#name "{}: still in use "{}          \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00397}00397                                 "{}(\%u dynamic refs)\(\backslash\)n"{}, nrefs);          \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00398}00398                         return EBUSY;                                   \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00399}00399                 \}                                                       \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00400}00400                 if (type == MOD\_UNLOAD) \{                               \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00401}00401                         SET\_FOREACH(iter, policy\#\#\_set) \{               \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00402}00402                                 f = (void*) *iter;                      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00403}00403                                 f(type);                                \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00404}00404                         \}                                               \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00405}00405                 \}                                                       \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00406}00406                 return 0;                                               \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00407}00407         \}                                                               \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00408}00408         return EINVAL;                                                  \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00409}00409 \}                                                                       \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00410}00410 static moduledata\_t name\#\#\_mod = \{                                      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00411}00411         "{}wlan\_"{} \#name,                                                  \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00412}00412         wlan\_\#\#name\#\#\_modevent,                                         \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00413}00413         0                                                               \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00414}00414 \};                                                                      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00415}00415 DECLARE\_MODULE(wlan\_\#\#name, name\#\#\_mod, SI\_SUB\_DRIVERS, SI\_ORDER\_FIRST);\(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00416}00416 MODULE\_VERSION(wlan\_\#\#name, version);                                   \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00417}00417 MODULE\_DEPEND(wlan\_\#\#name, wlan, 1, 1, 1)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00418}00418 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00419}00419 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00420}00420 \textcolor{comment}{ * Crypto modules implement cipher support.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00421}00421 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00422}\mbox{\hyperlink{ieee80211__freebsd_8h_a57c0ff156cf5f56bb06fa9ae85d9dd26}{00422}} \textcolor{preprocessor}{\#define IEEE80211\_CRYPTO\_MODULE(name, version)                          \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00423}00423 \textcolor{preprocessor}{\_IEEE80211\_POLICY\_MODULE(crypto, name, version);                        \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00424}00424 \textcolor{preprocessor}{static void                                                             \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00425}00425 \textcolor{preprocessor}{name\#\#\_modevent(int type)                                               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00426}00426 \textcolor{preprocessor}{\{                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00427}00427 \textcolor{preprocessor}{        if (type == MOD\_LOAD)                                           \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00428}00428 \textcolor{preprocessor}{                ieee80211\_crypto\_register(\&name);                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00429}00429 \textcolor{preprocessor}{        else                                                            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00430}00430 \textcolor{preprocessor}{                ieee80211\_crypto\_unregister(\&name);                     \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00431}00431 \textcolor{preprocessor}{\}                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00432}00432 \textcolor{preprocessor}{TEXT\_SET(crypto\#\#\_set, name\#\#\_modevent)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00433}00433 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00434}00434 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00435}00435 \textcolor{comment}{ * Scanner modules provide scanning policy.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00436}00436 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00437}\mbox{\hyperlink{ieee80211__freebsd_8h_a2bfbf49adace0848bb07b22571b83317}{00437}} \textcolor{preprocessor}{\#define IEEE80211\_SCANNER\_MODULE(name, version)                         \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00438}00438 \textcolor{preprocessor}{        \_IEEE80211\_POLICY\_MODULE(scanner, name, version)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00439}00439 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00440}\mbox{\hyperlink{ieee80211__freebsd_8h_afabadbba911bb1153a6086cd1775c81c}{00440}} \textcolor{preprocessor}{\#define IEEE80211\_SCANNER\_ALG(name, alg, v)                             \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00441}00441 \textcolor{preprocessor}{static void                                                             \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00442}00442 \textcolor{preprocessor}{name\#\#\_modevent(int type)                                               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00443}00443 \textcolor{preprocessor}{\{                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00444}00444 \textcolor{preprocessor}{        if (type == MOD\_LOAD)                                           \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00445}00445 \textcolor{preprocessor}{                ieee80211\_scanner\_register(alg, \&v);                    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00446}00446 \textcolor{preprocessor}{        else                                                            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00447}00447 \textcolor{preprocessor}{                ieee80211\_scanner\_unregister(alg, \&v);                  \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00448}00448 \textcolor{preprocessor}{\}                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00449}00449 \textcolor{preprocessor}{TEXT\_SET(scanner\_set, name\#\#\_modevent);                                 \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00450}00450 \textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00451}00451 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00452}00452 \textcolor{comment}{ * ACL modules implement acl policy.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00453}00453 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00454}\mbox{\hyperlink{ieee80211__freebsd_8h_af7c54a30395f9c98cb4e65377c520f9c}{00454}} \textcolor{preprocessor}{\#define IEEE80211\_ACL\_MODULE(name, alg, version)                        \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00455}00455 \textcolor{preprocessor}{\_IEEE80211\_POLICY\_MODULE(acl, name, version);                           \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00456}00456 \textcolor{preprocessor}{static void                                                             \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00457}00457 \textcolor{preprocessor}{alg\#\#\_modevent(int type)                                                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00458}00458 \textcolor{preprocessor}{\{                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00459}00459 \textcolor{preprocessor}{        if (type == MOD\_LOAD)                                           \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00460}00460 \textcolor{preprocessor}{                ieee80211\_aclator\_register(\&alg);                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00461}00461 \textcolor{preprocessor}{        else                                                            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00462}00462 \textcolor{preprocessor}{                ieee80211\_aclator\_unregister(\&alg);                     \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00463}00463 \textcolor{preprocessor}{\}                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00464}00464 \textcolor{preprocessor}{TEXT\_SET(acl\_set, alg\#\#\_modevent);                                      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00465}00465 \textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00466}00466 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00467}00467 \textcolor{comment}{ * Authenticator modules handle 802.1x/WPA authentication.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00468}00468 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00469}\mbox{\hyperlink{ieee80211__freebsd_8h_acb1eadb7ee375ed27414c6a14807543e}{00469}} \textcolor{preprocessor}{\#define IEEE80211\_AUTH\_MODULE(name, version)                            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00470}00470 \textcolor{preprocessor}{        \_IEEE80211\_POLICY\_MODULE(auth, name, version)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00471}00471 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00472}\mbox{\hyperlink{ieee80211__freebsd_8h_a5e7d5779f183e7681dc10018ddbdeca2}{00472}} \textcolor{preprocessor}{\#define IEEE80211\_AUTH\_ALG(name, alg, v)                                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00473}00473 \textcolor{preprocessor}{static void                                                             \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00474}00474 \textcolor{preprocessor}{name\#\#\_modevent(int type)                                               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00475}00475 \textcolor{preprocessor}{\{                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00476}00476 \textcolor{preprocessor}{        if (type == MOD\_LOAD)                                           \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00477}00477 \textcolor{preprocessor}{                ieee80211\_authenticator\_register(alg, \&v);              \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00478}00478 \textcolor{preprocessor}{        else                                                            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00479}00479 \textcolor{preprocessor}{                ieee80211\_authenticator\_unregister(alg);                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00480}00480 \textcolor{preprocessor}{\}                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00481}00481 \textcolor{preprocessor}{TEXT\_SET(auth\_set, name\#\#\_modevent)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00482}00482 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00483}00483 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00484}00484 \textcolor{comment}{ * Rate control modules provide tx rate control support.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00485}00485 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00486}\mbox{\hyperlink{ieee80211__freebsd_8h_a739cf67cacb7f1118830b954d9cabd6f}{00486}} \textcolor{preprocessor}{\#define IEEE80211\_RATECTL\_MODULE(alg, version)                          \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00487}00487 \textcolor{preprocessor}{        \_IEEE80211\_POLICY\_MODULE(ratectl, alg, version);                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00488}00488 \textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00489}\mbox{\hyperlink{ieee80211__freebsd_8h_ae3f8acfb00ebf552ef7116d1fa48f8db}{00489}} \textcolor{preprocessor}{\#define IEEE80211\_RATECTL\_ALG(name, alg, v)                             \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00490}00490 \textcolor{preprocessor}{static void                                                             \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00491}00491 \textcolor{preprocessor}{alg\#\#\_modevent(int type)                                                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00492}00492 \textcolor{preprocessor}{\{                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00493}00493 \textcolor{preprocessor}{        if (type == MOD\_LOAD)                                           \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00494}00494 \textcolor{preprocessor}{                ieee80211\_ratectl\_register(alg, \&v);                    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00495}00495 \textcolor{preprocessor}{        else                                                            \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00496}00496 \textcolor{preprocessor}{                ieee80211\_ratectl\_unregister(alg);                      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00497}00497 \textcolor{preprocessor}{\}                                                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00498}00498 \textcolor{preprocessor}{TEXT\_SET(ratectl\#\#\_set, alg\#\#\_modevent)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00499}00499 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00500}00500 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211req}{ieee80211req}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00501}\mbox{\hyperlink{ieee80211__freebsd_8h_a6a263c69d6e0efcc5dc52133f8b58a04}{00501}} \textcolor{keyword}{typedef} \textcolor{keywordtype}{int} \mbox{\hyperlink{ieee80211__freebsd_8h_a6a263c69d6e0efcc5dc52133f8b58a04}{ieee80211\_ioctl\_getfunc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00502}00502     \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211req}{ieee80211req}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00503}\mbox{\hyperlink{ieee80211__freebsd_8h_af987e54a1f37582408e5b20877282f91}{00503}} \mbox{\hyperlink{ieee80211__freebsd_8h_af987e54a1f37582408e5b20877282f91}{SET\_DECLARE}}(ieee80211\_ioctl\_getset, \mbox{\hyperlink{ieee80211__freebsd_8h_a6a263c69d6e0efcc5dc52133f8b58a04}{ieee80211\_ioctl\_getfunc}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00504}\mbox{\hyperlink{ieee80211__freebsd_8h_ac78223fc3513e5d21be9dddfc38aca91}{00504}} \textcolor{preprocessor}{\#define IEEE80211\_IOCTL\_GET(\_name, \_get) TEXT\_SET(ieee80211\_ioctl\_getset, \_get)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00505}00505 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00506}\mbox{\hyperlink{ieee80211__freebsd_8h_a1c2f3c45b1eddc058dcd7d319da58af8}{00506}} \textcolor{keyword}{typedef} \textcolor{keywordtype}{int} \mbox{\hyperlink{ieee80211__freebsd_8h_a1c2f3c45b1eddc058dcd7d319da58af8}{ieee80211\_ioctl\_setfunc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00507}00507     \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211req}{ieee80211req}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00508}\mbox{\hyperlink{ieee80211__freebsd_8h_a62fc979003381e97da9239211da4b750}{00508}} \mbox{\hyperlink{ieee80211__freebsd_8h_af987e54a1f37582408e5b20877282f91}{SET\_DECLARE}}(ieee80211\_ioctl\_setset, \mbox{\hyperlink{ieee80211__freebsd_8h_a1c2f3c45b1eddc058dcd7d319da58af8}{ieee80211\_ioctl\_setfunc}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00509}\mbox{\hyperlink{ieee80211__freebsd_8h_a78581160791b5b53cd4e2ca365464c28}{00509}} \textcolor{preprocessor}{\#define IEEE80211\_IOCTL\_SET(\_name, \_set) TEXT\_SET(ieee80211\_ioctl\_setset, \_set)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00510}00510 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00511}00511 \textcolor{preprocessor}{\#ifdef DEBUGNET}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00512}00512 \textcolor{keyword}{typedef} \textcolor{keywordtype}{void} debugnet80211\_init\_t(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *, \textcolor{keywordtype}{int} *nrxr, \textcolor{keywordtype}{int} *ncl,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00513}00513     \textcolor{keywordtype}{int} *clsize);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00514}00514 \textcolor{keyword}{typedef} \textcolor{keywordtype}{void} debugnet80211\_event\_t(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *, \textcolor{keyword}{enum} debugnet\_ev);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00515}00515 \textcolor{keyword}{typedef} \textcolor{keywordtype}{int} debugnet80211\_poll\_t(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *, \textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00516}00516 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00517}00517 \textcolor{keyword}{struct }debugnet80211\_methods \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00518}00518         debugnet80211\_init\_t            *dn8\_init;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00519}00519         debugnet80211\_event\_t           *dn8\_event;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00520}00520         debugnet80211\_poll\_t            *dn8\_poll;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00521}00521 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00522}00522 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00523}00523 \textcolor{preprocessor}{\#define DEBUGNET80211\_DEFINE(driver)                                    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00524}00524 \textcolor{preprocessor}{        static debugnet80211\_init\_t driver\#\#\_debugnet80211\_init;                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00525}00525 \textcolor{preprocessor}{        static debugnet80211\_event\_t driver\#\#\_debugnet80211\_event;      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00526}00526 \textcolor{preprocessor}{        static debugnet80211\_poll\_t driver\#\#\_debugnet80211\_poll;                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00527}00527 \textcolor{preprocessor}{                                                                        \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00528}00528 \textcolor{preprocessor}{        static struct debugnet80211\_methods driver\#\#\_debugnet80211\_methods = \{ \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00529}00529 \textcolor{preprocessor}{                .dn8\_init = driver\#\#\_debugnet80211\_init,                        \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00530}00530 \textcolor{preprocessor}{                .dn8\_event = driver\#\#\_debugnet80211\_event,              \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00531}00531 \textcolor{preprocessor}{                .dn8\_poll = driver\#\#\_debugnet80211\_poll,                        \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00532}00532 \textcolor{preprocessor}{        \}}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00533}00533 \textcolor{preprocessor}{\#define DEBUGNET80211\_SET(ic, driver)                                   \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00534}00534 \textcolor{preprocessor}{        (ic)-\/>ic\_debugnet\_meth = \&driver\#\#\_debugnet80211\_methods}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00535}00535 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00536}\mbox{\hyperlink{ieee80211__freebsd_8h_a2dd604071f66827e6d96e7bc0e235a08}{00536}} \textcolor{preprocessor}{\#define DEBUGNET80211\_DEFINE(driver)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00537}\mbox{\hyperlink{ieee80211__freebsd_8h_a54a895aa47ef9502c530232055716fb9}{00537}} \textcolor{preprocessor}{\#define DEBUGNET80211\_SET(ic, driver)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00538}00538 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* DEBUGNET */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00539}00539 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00540}00540 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_KERNEL */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00541}00541 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00542}00542 \textcolor{comment}{/* XXX this stuff belongs elsewhere */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00543}00543 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00544}00544 \textcolor{comment}{ * Message formats for messages from the net80211 layer to user}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00545}00545 \textcolor{comment}{ * applications via the routing socket.  These messages are appended}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00546}00546 \textcolor{comment}{ * to an if\_announcemsghdr structure.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00547}00547 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00548}\mbox{\hyperlink{structieee80211__join__event}{00548}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__join__event}{ieee80211\_join\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00549}\mbox{\hyperlink{structieee80211__join__event_a1b9eb74c1626d5176bde93d695c6dae3}{00549}}         uint8\_t         \mbox{\hyperlink{structieee80211__join__event_a1b9eb74c1626d5176bde93d695c6dae3}{iev\_addr}}[6];}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00550}00550 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00551}00551 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00552}\mbox{\hyperlink{structieee80211__leave__event}{00552}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__leave__event}{ieee80211\_leave\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00553}\mbox{\hyperlink{structieee80211__leave__event_a9cb10eebed354c289fe14f5d1e6d4f12}{00553}}         uint8\_t         \mbox{\hyperlink{structieee80211__leave__event_a9cb10eebed354c289fe14f5d1e6d4f12}{iev\_addr}}[6];}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00554}00554 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00555}00555 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00556}\mbox{\hyperlink{structieee80211__replay__event}{00556}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__replay__event}{ieee80211\_replay\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00557}\mbox{\hyperlink{structieee80211__replay__event_a46d07b61bbe58dfaa6a34d6f63da3b5c}{00557}}         uint8\_t         \mbox{\hyperlink{structieee80211__replay__event_a46d07b61bbe58dfaa6a34d6f63da3b5c}{iev\_src}}[6];      \textcolor{comment}{/* src MAC */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00558}\mbox{\hyperlink{structieee80211__replay__event_a1c0f97bd94bbbcfabe7372518c3ac4d6}{00558}}         uint8\_t         \mbox{\hyperlink{structieee80211__replay__event_a1c0f97bd94bbbcfabe7372518c3ac4d6}{iev\_dst}}[6];      \textcolor{comment}{/* dst MAC */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00559}\mbox{\hyperlink{structieee80211__replay__event_ace95c1f6bff114cc8e235e2a6b4b6465}{00559}}         uint8\_t         \mbox{\hyperlink{structieee80211__replay__event_ace95c1f6bff114cc8e235e2a6b4b6465}{iev\_cipher}};   \textcolor{comment}{/* cipher type */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00560}\mbox{\hyperlink{structieee80211__replay__event_ae92d88454530a89db02e9afc34d909c0}{00560}}         uint8\_t         \mbox{\hyperlink{structieee80211__replay__event_ae92d88454530a89db02e9afc34d909c0}{iev\_keyix}};     \textcolor{comment}{/* key id/index */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00561}\mbox{\hyperlink{structieee80211__replay__event_ae21ef497046183f833c520d8412ad80a}{00561}}         uint64\_t        \mbox{\hyperlink{structieee80211__replay__event_ae21ef497046183f833c520d8412ad80a}{iev\_keyrsc}};   \textcolor{comment}{/* RSC from key */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00562}\mbox{\hyperlink{structieee80211__replay__event_a6c290aeee028eaa33bc92d343f8ce39f}{00562}}         uint64\_t        \mbox{\hyperlink{structieee80211__replay__event_a6c290aeee028eaa33bc92d343f8ce39f}{iev\_rsc}}; \textcolor{comment}{/* RSC from frame */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00563}00563 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00564}00564 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00565}\mbox{\hyperlink{structieee80211__michael__event}{00565}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__michael__event}{ieee80211\_michael\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00566}\mbox{\hyperlink{structieee80211__michael__event_a9737b7e8b03e3759a721743ad1ad40ff}{00566}}         uint8\_t         \mbox{\hyperlink{structieee80211__michael__event_a9737b7e8b03e3759a721743ad1ad40ff}{iev\_src}}[6];      \textcolor{comment}{/* src MAC */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00567}\mbox{\hyperlink{structieee80211__michael__event_a402ef6740d87c3f93ea1fc67fafd49c0}{00567}}         uint8\_t         \mbox{\hyperlink{structieee80211__michael__event_a402ef6740d87c3f93ea1fc67fafd49c0}{iev\_dst}}[6];      \textcolor{comment}{/* dst MAC */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00568}\mbox{\hyperlink{structieee80211__michael__event_a0a5f106867dabf89f1f6165426537134}{00568}}         uint8\_t         \mbox{\hyperlink{structieee80211__michael__event_a0a5f106867dabf89f1f6165426537134}{iev\_cipher}};   \textcolor{comment}{/* cipher type */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00569}\mbox{\hyperlink{structieee80211__michael__event_ac44a6fd9c50ebda2b63b42490dac0a89}{00569}}         uint8\_t         \mbox{\hyperlink{structieee80211__michael__event_ac44a6fd9c50ebda2b63b42490dac0a89}{iev\_keyix}};     \textcolor{comment}{/* key id/index */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00570}00570 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00571}00571 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00572}\mbox{\hyperlink{structieee80211__wds__event}{00572}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__wds__event}{ieee80211\_wds\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00573}\mbox{\hyperlink{structieee80211__wds__event_a6936b0ca43186b96c29a120f77f91a97}{00573}}         uint8\_t         \mbox{\hyperlink{structieee80211__wds__event_a6936b0ca43186b96c29a120f77f91a97}{iev\_addr}}[6];}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00574}00574 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00575}00575 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00576}\mbox{\hyperlink{structieee80211__csa__event}{00576}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__csa__event}{ieee80211\_csa\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00577}\mbox{\hyperlink{structieee80211__csa__event_afbc3284734b759b1ff401c751a76de60}{00577}}         uint32\_t        \mbox{\hyperlink{structieee80211__csa__event_afbc3284734b759b1ff401c751a76de60}{iev\_flags}};     \textcolor{comment}{/* channel flags */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00578}\mbox{\hyperlink{structieee80211__csa__event_ad1d26590c58749cc839fa794b67c505e}{00578}}         uint16\_t        \mbox{\hyperlink{structieee80211__csa__event_ad1d26590c58749cc839fa794b67c505e}{iev\_freq}};       \textcolor{comment}{/* setting in Mhz */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00579}\mbox{\hyperlink{structieee80211__csa__event_ab3ef56754c7b18f0517a2f0c9d462804}{00579}}         uint8\_t         \mbox{\hyperlink{structieee80211__csa__event_ab3ef56754c7b18f0517a2f0c9d462804}{iev\_ieee}};       \textcolor{comment}{/* IEEE channel number */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00580}\mbox{\hyperlink{structieee80211__csa__event_ae12b183f3bc74d364ff4595cf8ba1e51}{00580}}         uint8\_t         \mbox{\hyperlink{structieee80211__csa__event_ae12b183f3bc74d364ff4595cf8ba1e51}{iev\_mode}};       \textcolor{comment}{/* CSA mode */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00581}\mbox{\hyperlink{structieee80211__csa__event_ad83d23d509f5dfcc1b22d2af13280245}{00581}}         uint8\_t         \mbox{\hyperlink{structieee80211__csa__event_ad83d23d509f5dfcc1b22d2af13280245}{iev\_count}};     \textcolor{comment}{/* CSA count */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00582}00582 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00583}00583 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00584}\mbox{\hyperlink{structieee80211__cac__event}{00584}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__cac__event}{ieee80211\_cac\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00585}\mbox{\hyperlink{structieee80211__cac__event_a7de5b2600547ce4596705d3e3907faf4}{00585}}         uint32\_t        \mbox{\hyperlink{structieee80211__cac__event_a7de5b2600547ce4596705d3e3907faf4}{iev\_flags}};     \textcolor{comment}{/* channel flags */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00586}\mbox{\hyperlink{structieee80211__cac__event_aab6cb452e5e887f6c02f5f84a8511069}{00586}}         uint16\_t        \mbox{\hyperlink{structieee80211__cac__event_aab6cb452e5e887f6c02f5f84a8511069}{iev\_freq}};       \textcolor{comment}{/* setting in Mhz */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00587}\mbox{\hyperlink{structieee80211__cac__event_aa3c73476b207ba98a9a9df84781fbfaa}{00587}}         uint8\_t         \mbox{\hyperlink{structieee80211__cac__event_aa3c73476b207ba98a9a9df84781fbfaa}{iev\_ieee}};       \textcolor{comment}{/* IEEE channel number */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00588}00588         \textcolor{comment}{/* XXX timestamp? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00589}\mbox{\hyperlink{structieee80211__cac__event_abb07825261daf53c24eb146f727c9772}{00589}}         uint8\_t         \mbox{\hyperlink{structieee80211__cac__event_abb07825261daf53c24eb146f727c9772}{iev\_type}};       \textcolor{comment}{/* IEEE80211\_NOTIFY\_CAC\_* */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00590}00590 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00591}00591 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00592}\mbox{\hyperlink{structieee80211__radar__event}{00592}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__radar__event}{ieee80211\_radar\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00593}\mbox{\hyperlink{structieee80211__radar__event_a05323baf9184d32f951a91709a9bb0f8}{00593}}         uint32\_t        \mbox{\hyperlink{structieee80211__radar__event_a05323baf9184d32f951a91709a9bb0f8}{iev\_flags}};     \textcolor{comment}{/* channel flags */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00594}\mbox{\hyperlink{structieee80211__radar__event_a5ae633a49879f2cc4e3b90866eb59948}{00594}}         uint16\_t        \mbox{\hyperlink{structieee80211__radar__event_a5ae633a49879f2cc4e3b90866eb59948}{iev\_freq}};       \textcolor{comment}{/* setting in Mhz */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00595}\mbox{\hyperlink{structieee80211__radar__event_abe5ab64adb2c91e490a90561de046411}{00595}}         uint8\_t         \mbox{\hyperlink{structieee80211__radar__event_abe5ab64adb2c91e490a90561de046411}{iev\_ieee}};       \textcolor{comment}{/* IEEE channel number */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00596}00596         \textcolor{comment}{/* XXX timestamp? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00597}00597 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00598}00598 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00599}\mbox{\hyperlink{structieee80211__auth__event}{00599}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__auth__event}{ieee80211\_auth\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00600}\mbox{\hyperlink{structieee80211__auth__event_a846d6494aca309f0f9440e14f4a96ed5}{00600}}         uint8\_t         \mbox{\hyperlink{structieee80211__auth__event_a846d6494aca309f0f9440e14f4a96ed5}{iev\_addr}}[6];}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00601}00601 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00602}00602 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00603}\mbox{\hyperlink{structieee80211__deauth__event}{00603}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__deauth__event}{ieee80211\_deauth\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00604}\mbox{\hyperlink{structieee80211__deauth__event_ab01f8521e45fa46754838e154b2a8091}{00604}}         uint8\_t         \mbox{\hyperlink{structieee80211__deauth__event_ab01f8521e45fa46754838e154b2a8091}{iev\_addr}}[6];}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00605}00605 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00606}00606 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00607}\mbox{\hyperlink{structieee80211__country__event}{00607}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__country__event}{ieee80211\_country\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00608}\mbox{\hyperlink{structieee80211__country__event_a45086adc888976543c9a91cc34fbbeef}{00608}}         uint8\_t         \mbox{\hyperlink{structieee80211__country__event_a45086adc888976543c9a91cc34fbbeef}{iev\_addr}}[6];}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00609}\mbox{\hyperlink{structieee80211__country__event_a37fa14793296f04724206c32b24b6f57}{00609}}         uint8\_t         \mbox{\hyperlink{structieee80211__country__event_a37fa14793296f04724206c32b24b6f57}{iev\_cc}}[2];        \textcolor{comment}{/* ISO country code */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00610}00610 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00611}00611 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00612}\mbox{\hyperlink{structieee80211__radio__event}{00612}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__radio__event}{ieee80211\_radio\_event}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00613}\mbox{\hyperlink{structieee80211__radio__event_a2ff1e386d40cfca084d23265d218928b}{00613}}         uint8\_t         \mbox{\hyperlink{structieee80211__radio__event_a2ff1e386d40cfca084d23265d218928b}{iev\_state}};     \textcolor{comment}{/* 1 on, 0 off */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00614}00614 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00615}00615 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00616}\mbox{\hyperlink{ieee80211__freebsd_8h_ab4fdb3de2892d8d81559942090a8f36c}{00616}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_ASSOC     100     }\textcolor{comment}{/* station associate (bss mode) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00617}\mbox{\hyperlink{ieee80211__freebsd_8h_a325f9ca6e43ed7fd383bdb60acdafdb3}{00617}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_REASSOC   101     }\textcolor{comment}{/* station re-\/associate (bss mode) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00618}\mbox{\hyperlink{ieee80211__freebsd_8h_ad4d1c8363f979cecf8df3b2b0622c09a}{00618}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_DISASSOC  102     }\textcolor{comment}{/* station disassociate (bss mode) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00619}\mbox{\hyperlink{ieee80211__freebsd_8h_a9fb6d7b88bbb3d8e83a1893f422fbe40}{00619}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_JOIN      103     }\textcolor{comment}{/* station join (ap mode) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00620}\mbox{\hyperlink{ieee80211__freebsd_8h_af5d26358b07a26230d0f42c0dc2e5e43}{00620}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_LEAVE     104     }\textcolor{comment}{/* station leave (ap mode) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00621}\mbox{\hyperlink{ieee80211__freebsd_8h_aede136cf660a7e31c0d927ad64e49f0a}{00621}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_SCAN      105     }\textcolor{comment}{/* scan complete, results available */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00622}\mbox{\hyperlink{ieee80211__freebsd_8h_a407ddc37a34dd56edf4abd8ee06b63ea}{00622}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_REPLAY    106     }\textcolor{comment}{/* sequence counter replay detected */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00623}\mbox{\hyperlink{ieee80211__freebsd_8h_ab5431a7fdebc71daa77d127e231d297a}{00623}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_MICHAEL   107     }\textcolor{comment}{/* Michael MIC failure detected */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00624}\mbox{\hyperlink{ieee80211__freebsd_8h_af03eb044afab3979fd195811e313d239}{00624}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_REJOIN    108     }\textcolor{comment}{/* station re-\/associate (ap mode) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00625}\mbox{\hyperlink{ieee80211__freebsd_8h_a0de2c12dd5309bf6e6c93ff1d04ce567}{00625}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_WDS       109     }\textcolor{comment}{/* WDS discovery (ap mode) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00626}\mbox{\hyperlink{ieee80211__freebsd_8h_aaeff6864aac0200d4511c51193977af8}{00626}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_CSA       110     }\textcolor{comment}{/* Channel Switch Announcement event */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00627}\mbox{\hyperlink{ieee80211__freebsd_8h_afa2f3d3b7d3ae232029a13f97c207342}{00627}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_RADAR     111     }\textcolor{comment}{/* radar event */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00628}\mbox{\hyperlink{ieee80211__freebsd_8h_a28c94b5ba208ceb7f797c750decc1e17}{00628}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_CAC       112     }\textcolor{comment}{/* Channel Availability Check event */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00629}\mbox{\hyperlink{ieee80211__freebsd_8h_acc2776cabed49bb647f7bc9bd629dc56}{00629}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_DEAUTH    113     }\textcolor{comment}{/* station deauthenticate */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00630}\mbox{\hyperlink{ieee80211__freebsd_8h_ae00d3dc4b23b71d01f9a55fa2f57abf7}{00630}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_AUTH      114     }\textcolor{comment}{/* station authenticate (ap mode) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00631}\mbox{\hyperlink{ieee80211__freebsd_8h_a45e6bc795c7bfdbbdfa0e1ba2836e61d}{00631}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_COUNTRY   115     }\textcolor{comment}{/* discovered country code (sta mode) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00632}\mbox{\hyperlink{ieee80211__freebsd_8h_a780ebb3ed9c15d0724a6ab573590ab6f}{00632}} \textcolor{preprocessor}{\#define RTM\_IEEE80211\_RADIO     116     }\textcolor{comment}{/* RF kill switch state change */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00633}00633 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00634}00634 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00635}00635 \textcolor{comment}{ * Structure prepended to raw packets sent through the bpf}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00636}00636 \textcolor{comment}{ * interface when set to DLT\_IEEE802\_11\_RADIO.  This allows}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00637}00637 \textcolor{comment}{ * user applications to specify pretty much everything in}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00638}00638 \textcolor{comment}{ * an Atheros tx descriptor.  XXX need to generalize.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00639}00639 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00640}00640 \textcolor{comment}{ * XXX cannot be more than 14 bytes as it is copied to a sockaddr's}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00641}00641 \textcolor{comment}{ * XXX sa\_data area.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00642}00642 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00643}\mbox{\hyperlink{structieee80211__bpf__params}{00643}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__bpf__params}{ieee80211\_bpf\_params}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00644}\mbox{\hyperlink{structieee80211__bpf__params_ac6588a6cc2a9e02cef9510e241431438}{00644}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_ac6588a6cc2a9e02cef9510e241431438}{ibp\_vers}};       \textcolor{comment}{/* version */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00645}\mbox{\hyperlink{ieee80211__freebsd_8h_a5737e34c7fe8761facfe3c0a36f9f83b}{00645}} \textcolor{preprocessor}{\#define IEEE80211\_BPF\_VERSION   0}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00646}\mbox{\hyperlink{structieee80211__bpf__params_a049891c211ed3cd35a8a664fdddeeed0}{00646}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_a049891c211ed3cd35a8a664fdddeeed0}{ibp\_len}}; \textcolor{comment}{/* header length in bytes */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00647}\mbox{\hyperlink{structieee80211__bpf__params_a1ecc6b00de858285128091e93134c3b0}{00647}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_a1ecc6b00de858285128091e93134c3b0}{ibp\_flags}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00648}\mbox{\hyperlink{ieee80211__freebsd_8h_abe19a34f6ce5bef778717dfc2a469fe8}{00648}} \textcolor{preprocessor}{\#define IEEE80211\_BPF\_SHORTPRE  0x01    }\textcolor{comment}{/* tx with short preamble */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00649}\mbox{\hyperlink{ieee80211__freebsd_8h_a42174d80980405ee1a057b8cf19e2b13}{00649}} \textcolor{preprocessor}{\#define IEEE80211\_BPF\_NOACK     0x02    }\textcolor{comment}{/* tx with no ack */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00650}\mbox{\hyperlink{ieee80211__freebsd_8h_ad4d500fc5c2b62ec5c1fc57a4bdb4f0e}{00650}} \textcolor{preprocessor}{\#define IEEE80211\_BPF\_CRYPTO    0x04    }\textcolor{comment}{/* tx with h/w encryption */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00651}\mbox{\hyperlink{ieee80211__freebsd_8h_abbb011f5d43b87eafe541f6be8c78870}{00651}} \textcolor{preprocessor}{\#define IEEE80211\_BPF\_FCS       0x10    }\textcolor{comment}{/* frame incldues FCS */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00652}\mbox{\hyperlink{ieee80211__freebsd_8h_a4dad8bbd15ecf47857ae782ff829ac73}{00652}} \textcolor{preprocessor}{\#define IEEE80211\_BPF\_DATAPAD   0x20    }\textcolor{comment}{/* frame includes data padding */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00653}\mbox{\hyperlink{ieee80211__freebsd_8h_a918f9d1bb56b11870f99c7ec6e57fa03}{00653}} \textcolor{preprocessor}{\#define IEEE80211\_BPF\_RTS       0x40    }\textcolor{comment}{/* tx with RTS/CTS */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00654}\mbox{\hyperlink{ieee80211__freebsd_8h_a498a513c4f7375080ca8cb0ae92cf47e}{00654}} \textcolor{preprocessor}{\#define IEEE80211\_BPF\_CTS       0x80    }\textcolor{comment}{/* tx with CTS only */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00655}\mbox{\hyperlink{structieee80211__bpf__params_a2f5109a15a86bf6291377dff8ad0b004}{00655}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_a2f5109a15a86bf6291377dff8ad0b004}{ibp\_pri}}; \textcolor{comment}{/* WME/WMM AC+tx antenna */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00656}\mbox{\hyperlink{structieee80211__bpf__params_a2bba6ccb86947fa890f426389527b305}{00656}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_a2bba6ccb86947fa890f426389527b305}{ibp\_try0}};       \textcolor{comment}{/* series 1 try count */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00657}\mbox{\hyperlink{structieee80211__bpf__params_afcdf518371f92d72b9630502ec11fa5f}{00657}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_afcdf518371f92d72b9630502ec11fa5f}{ibp\_rate0}};     \textcolor{comment}{/* series 1 IEEE tx rate */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00658}\mbox{\hyperlink{structieee80211__bpf__params_a39ca2b4671d129988a4ac2580c0c58c9}{00658}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_a39ca2b4671d129988a4ac2580c0c58c9}{ibp\_power}};     \textcolor{comment}{/* tx power (device units) */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00659}\mbox{\hyperlink{structieee80211__bpf__params_a61261378d3961ff6738843ccb3cd050c}{00659}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_a61261378d3961ff6738843ccb3cd050c}{ibp\_ctsrate}}; \textcolor{comment}{/* IEEE tx rate for CTS */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00660}\mbox{\hyperlink{structieee80211__bpf__params_a24fb538dbc38a4ff8b347461fd57406e}{00660}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_a24fb538dbc38a4ff8b347461fd57406e}{ibp\_try1}};       \textcolor{comment}{/* series 2 try count */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00661}\mbox{\hyperlink{structieee80211__bpf__params_a53dfdce7d0c3681abf18c13276e12e62}{00661}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_a53dfdce7d0c3681abf18c13276e12e62}{ibp\_rate1}};     \textcolor{comment}{/* series 2 IEEE tx rate */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00662}\mbox{\hyperlink{structieee80211__bpf__params_a71147cbd715ae317da94c5a50598e1be}{00662}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_a71147cbd715ae317da94c5a50598e1be}{ibp\_try2}};       \textcolor{comment}{/* series 3 try count */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00663}\mbox{\hyperlink{structieee80211__bpf__params_acdcb7459a7d51f0afa65345b6d65067d}{00663}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_acdcb7459a7d51f0afa65345b6d65067d}{ibp\_rate2}};     \textcolor{comment}{/* series 3 IEEE tx rate */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00664}\mbox{\hyperlink{structieee80211__bpf__params_abb83d0f1fdcf962a57b21e60707de8e4}{00664}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_abb83d0f1fdcf962a57b21e60707de8e4}{ibp\_try3}};       \textcolor{comment}{/* series 4 try count */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00665}\mbox{\hyperlink{structieee80211__bpf__params_aecd1b8f12b5d55f91a1ad467b98e7a63}{00665}}         uint8\_t         \mbox{\hyperlink{structieee80211__bpf__params_aecd1b8f12b5d55f91a1ad467b98e7a63}{ibp\_rate3}};     \textcolor{comment}{/* series 4 IEEE tx rate */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00666}00666 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00667}00667 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00668}00668 \textcolor{preprocessor}{\#ifdef \_KERNEL}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00669}\mbox{\hyperlink{structieee80211__tx__params}{00669}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__tx__params}{ieee80211\_tx\_params}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00670}\mbox{\hyperlink{structieee80211__tx__params_a0a3146f61bd46263a4cd32b49621324d}{00670}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__bpf__params}{ieee80211\_bpf\_params}} \mbox{\hyperlink{structieee80211__tx__params_a0a3146f61bd46263a4cd32b49621324d}{params}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00671}00671 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00672}00672 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a09acc30f0b9752c7957e0dae040c9532}{ieee80211\_add\_xmit\_params}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00673}00673             \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__bpf__params}{ieee80211\_bpf\_params}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00674}00674 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a4a18cdb6e3d25390a2813aa9eb9bf094}{ieee80211\_get\_xmit\_params}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00675}00675             \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__bpf__params}{ieee80211\_bpf\_params}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00676}00676 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00677}00677 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__params}{ieee80211\_rx\_params}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00678}00678 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00679}00679 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00680}00680 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a80daa206875f3258082ad07c3689e7e0}{ieee80211\_add\_rx\_params}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00681}00681             \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} *rxs);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00682}00682 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_a2b92a08e915bc724da81419ed41cb027}{ieee80211\_get\_rx\_params}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00683}00683             \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} *rxs);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00684}00684 \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} * \mbox{\hyperlink{ieee80211__freebsd_8h_ab014e67943197d7377d0265af51d3901}{ieee80211\_get\_rx\_params\_ptr}}(\textcolor{keyword}{struct} mbuf *m);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00685}00685 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00686}\mbox{\hyperlink{structieee80211__toa__params}{00686}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00687}\mbox{\hyperlink{structieee80211__toa__params_a3af4807964f78d7429d678b22acb24ee}{00687}}         \textcolor{keywordtype}{int} \mbox{\hyperlink{structieee80211__toa__params_a3af4807964f78d7429d678b22acb24ee}{request\_id}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00688}00688 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00689}00689 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_af9a587e119dcbbf37a95b8f2ff22f047}{ieee80211\_add\_toa\_params}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00690}00690             \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}} *p);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00691}00691 \textcolor{keywordtype}{int}     \mbox{\hyperlink{ieee80211__freebsd_8h_af56aaec827b081dd3a4a22b1fcb58787}{ieee80211\_get\_toa\_params}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00692}00692             \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}} *p);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00693}00693 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00694}\mbox{\hyperlink{ieee80211__freebsd_8h_a8a28fafa616a06cdc285c29ead9a645f}{00694}} \textcolor{preprocessor}{\#define IEEE80211\_F\_SURVEY\_TIME         0x00000001}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00695}\mbox{\hyperlink{ieee80211__freebsd_8h_ab5e271dd56e69d5663ca92c4714e519d}{00695}} \textcolor{preprocessor}{\#define IEEE80211\_F\_SURVEY\_TIME\_BUSY    0x00000002}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00696}\mbox{\hyperlink{ieee80211__freebsd_8h_a2730565d3af2f1403360ae8226059bbe}{00696}} \textcolor{preprocessor}{\#define IEEE80211\_F\_SURVEY\_NOISE\_DBM    0x00000004}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00697}\mbox{\hyperlink{ieee80211__freebsd_8h_ae3f3f6df21cde558631ff48513486457}{00697}} \textcolor{preprocessor}{\#define IEEE80211\_F\_SURVEY\_TSC          0x00000008}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00698}\mbox{\hyperlink{structieee80211__channel__survey}{00698}} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__channel__survey}{ieee80211\_channel\_survey}} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00699}\mbox{\hyperlink{structieee80211__channel__survey_a6af6b696e4ccde3b684f7cfdd18dc0e7}{00699}}         uint32\_t \mbox{\hyperlink{structieee80211__channel__survey_a6af6b696e4ccde3b684f7cfdd18dc0e7}{s\_flags}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00700}\mbox{\hyperlink{structieee80211__channel__survey_aff7ac9d65b4100fd43a114ba3a74c097}{00700}}         uint32\_t \mbox{\hyperlink{structieee80211__channel__survey_aff7ac9d65b4100fd43a114ba3a74c097}{s\_time}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00701}\mbox{\hyperlink{structieee80211__channel__survey_a77219a2ac75eb8d4cb62e47c15dfcbfc}{00701}}         uint32\_t \mbox{\hyperlink{structieee80211__channel__survey_a77219a2ac75eb8d4cb62e47c15dfcbfc}{s\_time\_busy}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00702}\mbox{\hyperlink{structieee80211__channel__survey_af22a37242301efe8b99293227b4e7633}{00702}}         int32\_t \mbox{\hyperlink{structieee80211__channel__survey_af22a37242301efe8b99293227b4e7633}{s\_noise}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00703}\mbox{\hyperlink{structieee80211__channel__survey_a7ce8aaec8d7c52c51031f3e051a1c07c}{00703}}         uint64\_t \mbox{\hyperlink{structieee80211__channel__survey_a7ce8aaec8d7c52c51031f3e051a1c07c}{s\_tsc}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00704}00704 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00705}00705 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00706}00706 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_KERNEL */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00707}00707 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00708}00708 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00709}00709 \textcolor{comment}{ * Malloc API.  Other BSD operating systems have slightly}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00710}00710 \textcolor{comment}{ * different malloc/free namings (eg DragonflyBSD.)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00711}00711 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00712}\mbox{\hyperlink{ieee80211__freebsd_8h_a2ba6d9445259d5eeb6e128dd738ac9f7}{00712}} \textcolor{preprocessor}{\#define IEEE80211\_MALLOC        malloc}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00713}\mbox{\hyperlink{ieee80211__freebsd_8h_a6b3b9f57088dc72d85c347037ccfeb59}{00713}} \textcolor{preprocessor}{\#define IEEE80211\_FREE          free}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00714}00714 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00715}00715 \textcolor{comment}{/* XXX TODO: get rid of WAITOK, fix all the users of it? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00716}\mbox{\hyperlink{ieee80211__freebsd_8h_a3bf4b82fe6ffbf87debab76d853cd6d1}{00716}} \textcolor{preprocessor}{\#define IEEE80211\_M\_NOWAIT      M\_NOWAIT}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00717}\mbox{\hyperlink{ieee80211__freebsd_8h_afd15226033efedd369f024a1a1c780f5}{00717}} \textcolor{preprocessor}{\#define IEEE80211\_M\_WAITOK      M\_WAITOK}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00718}\mbox{\hyperlink{ieee80211__freebsd_8h_a07e6d6f0c4b923cd850e506deba45a62}{00718}} \textcolor{preprocessor}{\#define IEEE80211\_M\_ZERO        M\_ZERO}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00719}00719 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00720}00720 \textcolor{comment}{/* XXX TODO: the type fields */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00721}00721 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8h_source_l00722}00722 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_NET80211\_IEEE80211\_FREEBSD\_H\_ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
