\hypertarget{ieee80211__freebsd_8c_source}{}\doxysection{ieee80211\+\_\+freebsd.\+c}
\label{ieee80211__freebsd_8c_source}\index{net80211/ieee80211\_freebsd.c@{net80211/ieee80211\_freebsd.c}}
\mbox{\hyperlink{ieee80211__freebsd_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2003-\/2009 Sam Leffler, Errno Consulting}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00005}00005 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00006}00006 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00007}00007 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00008}00008 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00009}00009 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00010}00010 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00011}00011 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00012}00012 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00013}00013 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00014}00014 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00015}00015 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00016}00016 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00017}00017 \textcolor{comment}{ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00018}00018 \textcolor{comment}{ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00019}00019 \textcolor{comment}{ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00020}00020 \textcolor{comment}{ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00021}00021 \textcolor{comment}{ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00022}00022 \textcolor{comment}{ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00023}00023 \textcolor{comment}{ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00024}00024 \textcolor{comment}{ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00025}00025 \textcolor{comment}{ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00026}00026 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00027}00027 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00028}00028 \textcolor{preprocessor}{\#include <sys/cdefs.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00029}\mbox{\hyperlink{ieee80211__freebsd_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{00029}} \mbox{\hyperlink{ieee80211__freebsd_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\_\_FBSDID}}(\textcolor{stringliteral}{"{}\$FreeBSD\$"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00030}00030 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00031}00031 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00032}00032 \textcolor{comment}{ * IEEE 802.11 support (FreeBSD-\/specific code)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00033}00033 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00034}00034 \textcolor{preprocessor}{\#include "{}opt\_wlan.h"{}}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00035}00035 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00036}00036 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00037}00037 \textcolor{preprocessor}{\#include <sys/systm.h>} }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00038}00038 \textcolor{preprocessor}{\#include <sys/eventhandler.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00039}00039 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00040}00040 \textcolor{preprocessor}{\#include <sys/linker.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00041}00041 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/mbuf.h>}   }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/module.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <sys/priv.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/proc.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00047}00047 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <sys/socket.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00049}00049 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <net/bpf.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <net/debugnet.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <net/if.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <net/if\_var.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <net/if\_dl.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00055}00055 \textcolor{preprocessor}{\#include <net/if\_clone.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <net/if\_media.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00057}00057 \textcolor{preprocessor}{\#include <net/if\_types.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00058}00058 \textcolor{preprocessor}{\#include <net/ethernet.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00059}00059 \textcolor{preprocessor}{\#include <net/route.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00060}00060 \textcolor{preprocessor}{\#include <net/vnet.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00061}00061 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00062}00062 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{ieee80211__var_8h}{net80211/ieee80211\_var.h}}>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00063}00063 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{ieee80211__input_8h}{net80211/ieee80211\_input.h}}>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00064}00064 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00065}\mbox{\hyperlink{ieee80211__freebsd_8c_a948492520d8f871f901bf3f780eb777d}{00065}} \mbox{\hyperlink{ieee80211__freebsd_8c_a948492520d8f871f901bf3f780eb777d}{DEBUGNET\_DEFINE}}(ieee80211);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00066}\mbox{\hyperlink{ieee80211__freebsd_8c_a25b96127b145c2b6b526ed724a34ccdf}{00066}} \mbox{\hyperlink{ieee80211__freebsd_8c_a25b96127b145c2b6b526ed724a34ccdf}{SYSCTL\_NODE}}(\_net, OID\_AUTO, wlan, CTLFLAG\_RD | CTLFLAG\_MPSAFE, 0,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00067}00067     \textcolor{stringliteral}{"{}IEEE 80211 parameters"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00068}00068 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00069}00069 \textcolor{preprocessor}{\#ifdef IEEE80211\_DEBUG}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00070}00070 \textcolor{keyword}{static} \textcolor{keywordtype}{int}      ieee80211\_debug = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00071}00071 \mbox{\hyperlink{ieee80211__alq_8c_aa8206a72921ce1eaa25f50d8312e8714}{SYSCTL\_INT}}(\_net\_wlan, OID\_AUTO, debug, CTLFLAG\_RW, \&ieee80211\_debug,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00072}00072             0, \textcolor{stringliteral}{"{}debugging printfs"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00073}00073 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00074}00074 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00075}\mbox{\hyperlink{ieee80211__freebsd_8c_aee8ab5cc9c8aca0bcee2376fb5a3b174}{00075}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} \mbox{\hyperlink{ieee80211__freebsd_8c_aee8ab5cc9c8aca0bcee2376fb5a3b174}{wlanname}}[] = \textcolor{stringliteral}{"{}wlan"{}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00076}\mbox{\hyperlink{ieee80211__freebsd_8c_ad10be290910d5cfd8cd7fc4043706536}{00076}} \textcolor{keyword}{static} \textcolor{keyword}{struct }if\_clone *\mbox{\hyperlink{ieee80211__freebsd_8c_ad10be290910d5cfd8cd7fc4043706536}{wlan\_cloner}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00077}00077 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00078}00078 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00079}00079 \textcolor{comment}{ * priv(9) NET80211 checks.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00080}00080 \textcolor{comment}{ * Return 0 if operation is allowed, E* (usually EPERM) otherwise.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00081}00081 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00082}00082 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00083}\mbox{\hyperlink{ieee80211__freebsd_8c_a623d35f4ac25b597a3bc60fd4f0b70d2}{00083}} \mbox{\hyperlink{ieee80211__freebsd_8c_a623d35f4ac25b597a3bc60fd4f0b70d2}{ieee80211\_priv\_check\_vap\_getkey}}(u\_long cmd \_\_unused,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00084}00084      \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap \_\_unused, \textcolor{keyword}{struct} ifnet *ifp \_\_unused)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00085}00085 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00086}00086 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00087}00087         \textcolor{keywordflow}{return} (priv\_check(curthread, PRIV\_NET80211\_VAP\_GETKEY));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00088}00088 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00089}00089 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00090}00090 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00091}\mbox{\hyperlink{ieee80211__freebsd_8c_aa1c2b21fb0d72e9758e476eed13335b8}{00091}} \mbox{\hyperlink{ieee80211__freebsd_8c_aa1c2b21fb0d72e9758e476eed13335b8}{ieee80211\_priv\_check\_vap\_manage}}(u\_long cmd \_\_unused,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00092}00092      \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap \_\_unused, \textcolor{keyword}{struct} ifnet *ifp \_\_unused)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00093}00093 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00094}00094 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00095}00095         \textcolor{keywordflow}{return} (priv\_check(curthread, PRIV\_NET80211\_VAP\_MANAGE));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00096}00096 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00097}00097 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00098}00098 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00099}\mbox{\hyperlink{ieee80211__freebsd_8c_a5bb47c58e92b4f53d2bd1725f6cbf059}{00099}} \mbox{\hyperlink{ieee80211__freebsd_8c_a5bb47c58e92b4f53d2bd1725f6cbf059}{ieee80211\_priv\_check\_vap\_setmac}}(u\_long cmd \_\_unused,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00100}00100      \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap \_\_unused, \textcolor{keyword}{struct} ifnet *ifp \_\_unused)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00101}00101 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00102}00102 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00103}00103         \textcolor{keywordflow}{return} (priv\_check(curthread, PRIV\_NET80211\_VAP\_SETMAC));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00104}00104 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00105}00105 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00106}00106 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00107}\mbox{\hyperlink{ieee80211__freebsd_8c_a9dade167311b98736e570f68d3ceec62}{00107}} \mbox{\hyperlink{ieee80211__freebsd_8c_a9dade167311b98736e570f68d3ceec62}{ieee80211\_priv\_check\_create\_vap}}(u\_long cmd \_\_unused,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00108}00108     \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap \_\_unused, \textcolor{keyword}{struct} ifnet *ifp \_\_unused)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00109}00109 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00110}00110 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00111}00111         \textcolor{keywordflow}{return} (priv\_check(curthread, PRIV\_NET80211\_CREATE\_VAP));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00112}00112 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00113}00113 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00114}00114 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00115}\mbox{\hyperlink{ieee80211__freebsd_8c_abadc1cd2ec3d5e2127661ce25ba5fef0}{00115}} \mbox{\hyperlink{ieee80211__freebsd_8c_abadc1cd2ec3d5e2127661ce25ba5fef0}{wlan\_clone\_create}}(\textcolor{keyword}{struct} if\_clone *ifc, \textcolor{keywordtype}{int} unit, caddr\_t params)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00116}00116 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00117}00117         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__clone__params}{ieee80211\_clone\_params}} cp;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00118}00118         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00119}00119         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00120}00120         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00121}00121 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00122}00122         error = \mbox{\hyperlink{ieee80211__freebsd_8c_a9dade167311b98736e570f68d3ceec62}{ieee80211\_priv\_check\_create\_vap}}(0, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00123}00123         \textcolor{keywordflow}{if} (error)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00124}00124                 \textcolor{keywordflow}{return} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00125}00125 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00126}00126         error = copyin(params, \&cp, \textcolor{keyword}{sizeof}(cp));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00127}00127         \textcolor{keywordflow}{if} (error)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00128}00128                 \textcolor{keywordflow}{return} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00129}00129         ic = \mbox{\hyperlink{ieee80211_8c_ab3a212c7907f12058568f9d9b35aa277}{ieee80211\_find\_com}}(cp.\mbox{\hyperlink{structieee80211__clone__params_a064466047df2f1a0634c3cdd14261e31}{icp\_parent}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00130}00130         \textcolor{keywordflow}{if} (ic == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00131}00131                 \textcolor{keywordflow}{return} ENXIO;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00132}00132         \textcolor{keywordflow}{if} (cp.\mbox{\hyperlink{structieee80211__clone__params_aaca75b65aa60196d2153d3b8472567b3}{icp\_opmode}} >= \mbox{\hyperlink{__ieee80211_8h_a6f0bfdb4ae5915d50ee1cce8a5b60722}{IEEE80211\_OPMODE\_MAX}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00133}00133                 \mbox{\hyperlink{ieee80211_8c_a0c43214c53b28fb27ca7407d2e5d9fae}{ic\_printf}}(ic, \textcolor{stringliteral}{"{}\%s: invalid opmode \%d\(\backslash\)n"{}}, \_\_func\_\_,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00134}00134                     cp.\mbox{\hyperlink{structieee80211__clone__params_aaca75b65aa60196d2153d3b8472567b3}{icp\_opmode}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00135}00135                 \textcolor{keywordflow}{return} EINVAL;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00136}00136         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00137}00137         \textcolor{keywordflow}{if} ((ic-\/>\mbox{\hyperlink{structieee80211com_ad2bf0b4b48e5ea1f9aaaf843ed7dae83}{ic\_caps}} \& \mbox{\hyperlink{ieee80211_8c_a512b76d77013e6678deddf7d218ba84c}{ieee80211\_opcap}}[cp.\mbox{\hyperlink{structieee80211__clone__params_aaca75b65aa60196d2153d3b8472567b3}{icp\_opmode}}]) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00138}00138                 \mbox{\hyperlink{ieee80211_8c_a0c43214c53b28fb27ca7407d2e5d9fae}{ic\_printf}}(ic, \textcolor{stringliteral}{"{}\%s mode not supported\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00139}00139                     \mbox{\hyperlink{ieee80211__proto_8c_ae1c1a39f8537e61fcb6a1fc1b8b7c2fe}{ieee80211\_opmode\_name}}[cp.\mbox{\hyperlink{structieee80211__clone__params_aaca75b65aa60196d2153d3b8472567b3}{icp\_opmode}}]);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00140}00140                 \textcolor{keywordflow}{return} EOPNOTSUPP;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00141}00141         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00142}00142         \textcolor{keywordflow}{if} ((cp.\mbox{\hyperlink{structieee80211__clone__params_a8701119bfe70bbeb1f489e11c92e6b10}{icp\_flags}} \& \mbox{\hyperlink{ieee80211__ioctl_8h_addc5f26c5b704ef89e192822b7b8af6a}{IEEE80211\_CLONE\_TDMA}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00143}00143 \#ifdef IEEE80211\_SUPPORT\_TDMA}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00144}00144             (ic-\/>\mbox{\hyperlink{structieee80211com_ad2bf0b4b48e5ea1f9aaaf843ed7dae83}{ic\_caps}} \& \mbox{\hyperlink{__ieee80211_8h_a0bd8307e5113bbb483ad3e5d8d9d91a2}{IEEE80211\_C\_TDMA}}) == 0}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00145}00145 \#else}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00146}00146             (1)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00147}00147 \#endif}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00148}00148         ) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00149}00149                 \mbox{\hyperlink{ieee80211_8c_a0c43214c53b28fb27ca7407d2e5d9fae}{ic\_printf}}(ic, \textcolor{stringliteral}{"{}TDMA not supported\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00150}00150                 \textcolor{keywordflow}{return} EOPNOTSUPP;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00151}00151         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00152}00152         vap = ic-\/>\mbox{\hyperlink{structieee80211com_a03322ed5c31c772f365abc10dd6c1665}{ic\_vap\_create}}(ic, \mbox{\hyperlink{ieee80211__freebsd_8c_aee8ab5cc9c8aca0bcee2376fb5a3b174}{wlanname}}, unit,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00153}00153                         cp.\mbox{\hyperlink{structieee80211__clone__params_aaca75b65aa60196d2153d3b8472567b3}{icp\_opmode}}, cp.\mbox{\hyperlink{structieee80211__clone__params_a8701119bfe70bbeb1f489e11c92e6b10}{icp\_flags}}, cp.\mbox{\hyperlink{structieee80211__clone__params_a3a117fd8918cb64b797842430b9bd376}{icp\_bssid}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00154}00154                         cp.\mbox{\hyperlink{structieee80211__clone__params_a8701119bfe70bbeb1f489e11c92e6b10}{icp\_flags}} \& \mbox{\hyperlink{ieee80211__ioctl_8h_acafaaded726d40d595b32ec02735591d}{IEEE80211\_CLONE\_MACADDR}} ?}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00155}00155                             cp.\mbox{\hyperlink{structieee80211__clone__params_a0c64431b75ea083e439928fb02b2c4c6}{icp\_macaddr}} : ic-\/>\mbox{\hyperlink{structieee80211com_a2142eccdaf96696fa62017ff05020db9}{ic\_macaddr}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00156}00156 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00157}00157         \textcolor{keywordflow}{if} (vap == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00158}00158                 \textcolor{keywordflow}{return} (EIO);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00159}00159 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00160}00160 \textcolor{preprocessor}{\#ifdef DEBUGNET}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00161}00161         \textcolor{keywordflow}{if} (ic-\/>\mbox{\hyperlink{structieee80211com_aee5c0aa2f675d1868ad1d1fa1c8419f7}{ic\_debugnet\_meth}} != NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00162}00162                 DEBUGNET\_SET(vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}}, ieee80211);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00163}00163 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00164}00164         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00165}00165 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00166}00166 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00167}00167 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00168}\mbox{\hyperlink{ieee80211__freebsd_8c_aed14feb0857efe5d0fd4932fd263f26a}{00168}} \mbox{\hyperlink{ieee80211__freebsd_8c_aed14feb0857efe5d0fd4932fd263f26a}{wlan\_clone\_destroy}}(\textcolor{keyword}{struct} ifnet *ifp)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00169}00169 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00170}00170         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ifp-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00171}00171         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00172}00172 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00173}00173         ic-\/>\mbox{\hyperlink{structieee80211com_a37c6a104c84f863d513d79ef2da58da8}{ic\_vap\_delete}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00174}00174 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00175}00175 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00176}00176 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00177}\mbox{\hyperlink{ieee80211__freebsd_8c_aa0b66b1189805827aa6f8cc1a7fb9e6f}{00177}} \mbox{\hyperlink{ieee80211__freebsd_8c_aa0b66b1189805827aa6f8cc1a7fb9e6f}{ieee80211\_vap\_destroy}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00178}00178 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00179}00179         CURVNET\_SET(vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}}-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00180}00180         if\_clone\_destroyif(\mbox{\hyperlink{ieee80211__freebsd_8c_ad10be290910d5cfd8cd7fc4043706536}{wlan\_cloner}}, vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00181}00181         CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00182}00182 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00183}00183 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00184}00184 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00185}\mbox{\hyperlink{ieee80211__freebsd_8c_a23fced5b6ff43e9d6ab5151ef53dfdad}{00185}} \mbox{\hyperlink{ieee80211__freebsd_8c_a23fced5b6ff43e9d6ab5151ef53dfdad}{ieee80211\_sysctl\_msecs\_ticks}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00186}00186 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00187}00187         \textcolor{keywordtype}{int} msecs = \mbox{\hyperlink{ieee80211__freebsd_8h_a88a6254a9798d2ef07a80132cb02a3e7}{ticks\_to\_msecs}}(*(\textcolor{keywordtype}{int} *)arg1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00188}00188         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00189}00189 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00190}00190         error = sysctl\_handle\_int(oidp, \&msecs, 0, req);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00191}00191         \textcolor{keywordflow}{if} (error || !req-\/>newptr)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00192}00192                 \textcolor{keywordflow}{return} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00193}00193         *(\textcolor{keywordtype}{int} *)arg1 = \mbox{\hyperlink{ieee80211__freebsd_8h_a52a17b151dca6a45aec6939d70a234ab}{msecs\_to\_ticks}}(msecs);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00194}00194         \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00195}00195 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00196}00196 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00197}00197 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00198}\mbox{\hyperlink{ieee80211__freebsd_8c_aeb92bbd698243840ab5e4e228c2257fc}{00198}} \mbox{\hyperlink{ieee80211__freebsd_8c_aeb92bbd698243840ab5e4e228c2257fc}{ieee80211\_sysctl\_inact}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00199}00199 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00200}00200         \textcolor{keywordtype}{int} inact = (*(\textcolor{keywordtype}{int} *)arg1) * \mbox{\hyperlink{ieee80211__node_8h_a5e1f70a34c1d5b449d528018291beb69}{IEEE80211\_INACT\_WAIT}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00201}00201         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00202}00202 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00203}00203         error = sysctl\_handle\_int(oidp, \&inact, 0, req);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00204}00204         \textcolor{keywordflow}{if} (error || !req-\/>newptr)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00205}00205                 \textcolor{keywordflow}{return} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00206}00206         *(\textcolor{keywordtype}{int} *)arg1 = inact / \mbox{\hyperlink{ieee80211__node_8h_a5e1f70a34c1d5b449d528018291beb69}{IEEE80211\_INACT\_WAIT}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00207}00207         \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00208}00208 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00209}00209 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00210}00210 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00211}\mbox{\hyperlink{ieee80211__freebsd_8c_ad6e39f388f61132c6c9b50b3c22cd671}{00211}} \mbox{\hyperlink{ieee80211__freebsd_8c_ad6e39f388f61132c6c9b50b3c22cd671}{ieee80211\_sysctl\_parent}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00212}00212 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00213}00213         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = arg1;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00214}00214 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00215}00215         \textcolor{keywordflow}{return} SYSCTL\_OUT\_STR(req, ic-\/>\mbox{\hyperlink{structieee80211com_a21c284f7bf92b967186eaf604c140138}{ic\_name}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00216}00216 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00217}00217 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00218}00218 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00219}\mbox{\hyperlink{ieee80211__freebsd_8c_a8712e061392f1060147c8bd9f8e8d574}{00219}} \mbox{\hyperlink{ieee80211__freebsd_8c_a8712e061392f1060147c8bd9f8e8d574}{ieee80211\_sysctl\_radar}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00220}00220 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00221}00221         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = arg1;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00222}00222         \textcolor{keywordtype}{int} t = 0, error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00223}00223 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00224}00224         error = sysctl\_handle\_int(oidp, \&t, 0, req);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00225}00225         \textcolor{keywordflow}{if} (error || !req-\/>newptr)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00226}00226                 \textcolor{keywordflow}{return} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00227}00227         \mbox{\hyperlink{ieee80211__freebsd_8h_ab3ce87ea4503405dd90019381065c9f6}{IEEE80211\_LOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00228}00228         \mbox{\hyperlink{ieee80211__dfs_8c_a941284f32403c9988309e9338d81333f}{ieee80211\_dfs\_notify\_radar}}(ic, ic-\/>\mbox{\hyperlink{structieee80211com_af4f9f1d4120d065aec7ac8eae28a613a}{ic\_curchan}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00229}00229         \mbox{\hyperlink{ieee80211__freebsd_8h_a58240f22e885f3d421da47c2bc376815}{IEEE80211\_UNLOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00230}00230         \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00231}00231 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00232}00232 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00233}00233 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00234}00234 \textcolor{comment}{ * For now, just restart everything.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00235}00235 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00236}00236 \textcolor{comment}{ * Later on, it'd be nice to have a separate VAP restart to}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00237}00237 \textcolor{comment}{ * full-\/device restart.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00238}00238 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00239}00239 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00240}\mbox{\hyperlink{ieee80211__freebsd_8c_a6c801c1eb648fc4d90b2d94d9214cd8a}{00240}} \mbox{\hyperlink{ieee80211__freebsd_8c_a6c801c1eb648fc4d90b2d94d9214cd8a}{ieee80211\_sysctl\_vap\_restart}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00241}00241 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00242}00242         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = arg1;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00243}00243         \textcolor{keywordtype}{int} t = 0, error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00244}00244 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00245}00245         error = sysctl\_handle\_int(oidp, \&t, 0, req);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00246}00246         \textcolor{keywordflow}{if} (error || !req-\/>newptr)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00247}00247                 \textcolor{keywordflow}{return} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00248}00248 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00249}00249         \mbox{\hyperlink{ieee80211__proto_8c_a124e51036a61d998a3b0c7b54d9fe79f}{ieee80211\_restart\_all}}(vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00250}00250         \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00251}00251 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00252}00252 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00253}00253 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00254}\mbox{\hyperlink{ieee80211__freebsd_8c_a70f226fb48abba1424dbdf1cd4a1c5e0}{00254}} \mbox{\hyperlink{ieee80211__freebsd_8c_a70f226fb48abba1424dbdf1cd4a1c5e0}{ieee80211\_sysctl\_attach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00255}00255 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00256}00256 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00257}00257 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00258}00258 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00259}\mbox{\hyperlink{ieee80211__freebsd_8c_ad0ceb66e3bc96ac7654ac2d8bfa4bd4a}{00259}} \mbox{\hyperlink{ieee80211__freebsd_8c_ad0ceb66e3bc96ac7654ac2d8bfa4bd4a}{ieee80211\_sysctl\_detach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00260}00260 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00261}00261 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00262}00262 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00263}00263 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00264}\mbox{\hyperlink{ieee80211__freebsd_8c_a885f021cc96442ff8c76bd2b1f9a8d54}{00264}} \mbox{\hyperlink{ieee80211__freebsd_8c_a885f021cc96442ff8c76bd2b1f9a8d54}{ieee80211\_sysctl\_vattach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00265}00265 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00266}00266         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00267}00267         \textcolor{keyword}{struct }sysctl\_ctx\_list *ctx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00268}00268         \textcolor{keyword}{struct }sysctl\_oid *oid;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00269}00269         \textcolor{keywordtype}{char} num[14];                   \textcolor{comment}{/* sufficient for 32 bits */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00270}00270 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00271}00271         ctx = (\textcolor{keyword}{struct }sysctl\_ctx\_list *) \mbox{\hyperlink{ieee80211__freebsd_8h_a2ba6d9445259d5eeb6e128dd738ac9f7}{IEEE80211\_MALLOC}}(\textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} sysctl\_ctx\_list),}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00272}00272                 M\_DEVBUF, \mbox{\hyperlink{ieee80211__freebsd_8h_a3bf4b82fe6ffbf87debab76d853cd6d1}{IEEE80211\_M\_NOWAIT}} | \mbox{\hyperlink{ieee80211__freebsd_8h_a07e6d6f0c4b923cd850e506deba45a62}{IEEE80211\_M\_ZERO}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00273}00273         \textcolor{keywordflow}{if} (ctx == NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00274}00274                 if\_printf(ifp, \textcolor{stringliteral}{"{}\%s: cannot allocate sysctl context!\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00275}00275                         \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00276}00276                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00277}00277         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00278}00278         sysctl\_ctx\_init(ctx);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00279}00279         snprintf(num, \textcolor{keyword}{sizeof}(num), \textcolor{stringliteral}{"{}\%u"{}}, ifp-\/>if\_dunit);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00280}00280         oid = SYSCTL\_ADD\_NODE(ctx, \&SYSCTL\_NODE\_CHILDREN(\_net, wlan),}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00281}00281             OID\_AUTO, num, CTLFLAG\_RD | CTLFLAG\_MPSAFE, NULL, \textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00282}00282         SYSCTL\_ADD\_PROC(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00283}00283             \textcolor{stringliteral}{"{}\%parent"{}}, CTLTYPE\_STRING | CTLFLAG\_RD | CTLFLAG\_NEEDGIANT,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00284}00284             vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}}, 0, \mbox{\hyperlink{ieee80211__freebsd_8c_ad6e39f388f61132c6c9b50b3c22cd671}{ieee80211\_sysctl\_parent}}, \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}parent device"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00285}00285         SYSCTL\_ADD\_UINT(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00286}00286                 \textcolor{stringliteral}{"{}driver\_caps"{}}, CTLFLAG\_RW, \&vap-\/>\mbox{\hyperlink{structieee80211vap_a696c02bb169ef5fd37791eab1a9f0535}{iv\_caps}}, 0,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00287}00287                 \textcolor{stringliteral}{"{}driver capabilities"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00288}00288 \textcolor{preprocessor}{\#ifdef IEEE80211\_DEBUG}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00289}00289         vap-\/>\mbox{\hyperlink{structieee80211vap_ab37369073c6c32b4a1eae0007e3d5a9b}{iv\_debug}} = ieee80211\_debug;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00290}00290         SYSCTL\_ADD\_UINT(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00291}00291                 \textcolor{stringliteral}{"{}debug"{}}, CTLFLAG\_RW, \&vap-\/>\mbox{\hyperlink{structieee80211vap_ab37369073c6c32b4a1eae0007e3d5a9b}{iv\_debug}}, 0,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00292}00292                 \textcolor{stringliteral}{"{}control debugging printfs"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00293}00293 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00294}00294         SYSCTL\_ADD\_INT(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00295}00295                 \textcolor{stringliteral}{"{}bmiss\_max"{}}, CTLFLAG\_RW, \&vap-\/>\mbox{\hyperlink{structieee80211vap_ab7b7788cb3d84f8db505430345417d2d}{iv\_bmiss\_max}}, 0,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00296}00296                 \textcolor{stringliteral}{"{}consecutive beacon misses before scanning"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00297}00297         \textcolor{comment}{/* XXX inherit from tunables */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00298}00298         SYSCTL\_ADD\_PROC(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00299}00299             \textcolor{stringliteral}{"{}inact\_run"{}}, CTLTYPE\_INT | CTLFLAG\_RW | CTLFLAG\_NEEDGIANT,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00300}00300             \&vap-\/>\mbox{\hyperlink{structieee80211vap_a8f36752f39e270a5ebce087c105d0261}{iv\_inact\_run}}, 0, \mbox{\hyperlink{ieee80211__freebsd_8c_aeb92bbd698243840ab5e4e228c2257fc}{ieee80211\_sysctl\_inact}}, \textcolor{stringliteral}{"{}I"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00301}00301             \textcolor{stringliteral}{"{}station inactivity timeout (sec)"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00302}00302         SYSCTL\_ADD\_PROC(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00303}00303             \textcolor{stringliteral}{"{}inact\_probe"{}}, CTLTYPE\_INT | CTLFLAG\_RW | CTLFLAG\_NEEDGIANT,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00304}00304             \&vap-\/>\mbox{\hyperlink{structieee80211vap_a877dfe8b6a38b030782afa69b27fe71e}{iv\_inact\_probe}}, 0, \mbox{\hyperlink{ieee80211__freebsd_8c_aeb92bbd698243840ab5e4e228c2257fc}{ieee80211\_sysctl\_inact}}, \textcolor{stringliteral}{"{}I"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00305}00305             \textcolor{stringliteral}{"{}station inactivity probe timeout (sec)"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00306}00306         SYSCTL\_ADD\_PROC(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00307}00307             \textcolor{stringliteral}{"{}inact\_auth"{}}, CTLTYPE\_INT | CTLFLAG\_RW | CTLFLAG\_NEEDGIANT,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00308}00308             \&vap-\/>\mbox{\hyperlink{structieee80211vap_a0a5ed3d4f551970605926eff78512a45}{iv\_inact\_auth}}, 0, \mbox{\hyperlink{ieee80211__freebsd_8c_aeb92bbd698243840ab5e4e228c2257fc}{ieee80211\_sysctl\_inact}}, \textcolor{stringliteral}{"{}I"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00309}00309             \textcolor{stringliteral}{"{}station authentication timeout (sec)"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00310}00310         SYSCTL\_ADD\_PROC(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00311}00311             \textcolor{stringliteral}{"{}inact\_init"{}}, CTLTYPE\_INT | CTLFLAG\_RW | CTLFLAG\_NEEDGIANT,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00312}00312             \&vap-\/>\mbox{\hyperlink{structieee80211vap_a4c3bbc1a2854525e8315616056461670}{iv\_inact\_init}}, 0, \mbox{\hyperlink{ieee80211__freebsd_8c_aeb92bbd698243840ab5e4e228c2257fc}{ieee80211\_sysctl\_inact}}, \textcolor{stringliteral}{"{}I"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00313}00313             \textcolor{stringliteral}{"{}station initial state timeout (sec)"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00314}00314         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a285541fdcfa284e19cc408a63519abb8}{iv\_htcaps}} \& \mbox{\hyperlink{__ieee80211_8h_a5fdf7884397ea6463c4965c7965e418b}{IEEE80211\_HTC\_HT}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00315}00315                 SYSCTL\_ADD\_UINT(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00316}00316                         \textcolor{stringliteral}{"{}ampdu\_mintraffic\_bk"{}}, CTLFLAG\_RW,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00317}00317                         \&vap-\/>\mbox{\hyperlink{structieee80211vap_a8cb64e550519bb4bbf1704410e474950}{iv\_ampdu\_mintraffic}}[\mbox{\hyperlink{ieee80211_8h_a827cc73be89250d150db828c25247665}{WME\_AC\_BK}}], 0,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00318}00318                         \textcolor{stringliteral}{"{}BK traffic tx aggr threshold (pps)"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00319}00319                 SYSCTL\_ADD\_UINT(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00320}00320                         \textcolor{stringliteral}{"{}ampdu\_mintraffic\_be"{}}, CTLFLAG\_RW,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00321}00321                         \&vap-\/>\mbox{\hyperlink{structieee80211vap_a8cb64e550519bb4bbf1704410e474950}{iv\_ampdu\_mintraffic}}[\mbox{\hyperlink{ieee80211_8h_a43e8d85321a8324b94d3cf5c631a1f00}{WME\_AC\_BE}}], 0,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00322}00322                         \textcolor{stringliteral}{"{}BE traffic tx aggr threshold (pps)"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00323}00323                 SYSCTL\_ADD\_UINT(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00324}00324                         \textcolor{stringliteral}{"{}ampdu\_mintraffic\_vo"{}}, CTLFLAG\_RW,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00325}00325                         \&vap-\/>\mbox{\hyperlink{structieee80211vap_a8cb64e550519bb4bbf1704410e474950}{iv\_ampdu\_mintraffic}}[\mbox{\hyperlink{ieee80211_8h_aece90fb62f04f907cf37cdc2d8e7257f}{WME\_AC\_VO}}], 0,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00326}00326                         \textcolor{stringliteral}{"{}VO traffic tx aggr threshold (pps)"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00327}00327                 SYSCTL\_ADD\_UINT(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00328}00328                         \textcolor{stringliteral}{"{}ampdu\_mintraffic\_vi"{}}, CTLFLAG\_RW,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00329}00329                         \&vap-\/>\mbox{\hyperlink{structieee80211vap_a8cb64e550519bb4bbf1704410e474950}{iv\_ampdu\_mintraffic}}[\mbox{\hyperlink{ieee80211_8h_a5c4bfc35baacedd7c710a4a6ec2fbc40}{WME\_AC\_VI}}], 0,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00330}00330                         \textcolor{stringliteral}{"{}VI traffic tx aggr threshold (pps)"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00331}00331         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00332}00332 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00333}00333         SYSCTL\_ADD\_PROC(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00334}00334             \textcolor{stringliteral}{"{}force\_restart"{}}, CTLTYPE\_INT | CTLFLAG\_RW | CTLFLAG\_NEEDGIANT,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00335}00335             vap, 0, \mbox{\hyperlink{ieee80211__freebsd_8c_a6c801c1eb648fc4d90b2d94d9214cd8a}{ieee80211\_sysctl\_vap\_restart}}, \textcolor{stringliteral}{"{}I"{}}, \textcolor{stringliteral}{"{}force a VAP restart"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00336}00336 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00337}00337         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a696c02bb169ef5fd37791eab1a9f0535}{iv\_caps}} \& \mbox{\hyperlink{__ieee80211_8h_a57b412fad68442b7646f779d675f5cd5}{IEEE80211\_C\_DFS}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00338}00338                 SYSCTL\_ADD\_PROC(ctx, SYSCTL\_CHILDREN(oid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00339}00339                     \textcolor{stringliteral}{"{}radar"{}}, CTLTYPE\_INT | CTLFLAG\_RW | CTLFLAG\_NEEDGIANT,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00340}00340                     vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}}, 0, \mbox{\hyperlink{ieee80211__freebsd_8c_a8712e061392f1060147c8bd9f8e8d574}{ieee80211\_sysctl\_radar}}, \textcolor{stringliteral}{"{}I"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00341}00341                     \textcolor{stringliteral}{"{}simulate radar event"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00342}00342         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00343}00343         vap-\/>\mbox{\hyperlink{structieee80211vap_a673c58461c39029270e633e8c4fdbbea}{iv\_sysctl}} = ctx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00344}00344         vap-\/>\mbox{\hyperlink{structieee80211vap_a036d9b6cf580696f66fd1e0c41991d3f}{iv\_oid}} = oid;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00345}00345 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00346}00346 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00347}00347 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00348}\mbox{\hyperlink{ieee80211__freebsd_8c_a082174db067f499ce4aa6d3793ab64f5}{00348}} \mbox{\hyperlink{ieee80211__freebsd_8c_a082174db067f499ce4aa6d3793ab64f5}{ieee80211\_sysctl\_vdetach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00349}00349 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00350}00350 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00351}00351         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a673c58461c39029270e633e8c4fdbbea}{iv\_sysctl}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00352}00352                 sysctl\_ctx\_free(vap-\/>\mbox{\hyperlink{structieee80211vap_a673c58461c39029270e633e8c4fdbbea}{iv\_sysctl}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00353}00353                 \mbox{\hyperlink{ieee80211__freebsd_8h_a6b3b9f57088dc72d85c347037ccfeb59}{IEEE80211\_FREE}}(vap-\/>\mbox{\hyperlink{structieee80211vap_a673c58461c39029270e633e8c4fdbbea}{iv\_sysctl}}, M\_DEVBUF);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00354}00354                 vap-\/>\mbox{\hyperlink{structieee80211vap_a673c58461c39029270e633e8c4fdbbea}{iv\_sysctl}} = NULL;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00355}00355         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00356}00356 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00357}00357 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00358}00358 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00359}\mbox{\hyperlink{ieee80211__freebsd_8c_af6e7c51eb5a0021bb93c49d9d1dca372}{00359}} \mbox{\hyperlink{ieee80211__freebsd_8c_af6e7c51eb5a0021bb93c49d9d1dca372}{ieee80211\_com\_vincref}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00360}00360 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00361}00361         uint32\_t ostate;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00362}00362 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00363}00363         ostate = atomic\_fetchadd\_32(\&vap-\/>\mbox{\hyperlink{structieee80211vap_a01de7c8ac40e8c81ef122012358a520d}{iv\_com\_state}}, \mbox{\hyperlink{ieee80211__var_8h_a3262ff19d2ed0aabf70fdd9273994e18}{IEEE80211\_COM\_REF\_ADD}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00364}00364 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00365}00365         \textcolor{keywordflow}{if} (ostate \& \mbox{\hyperlink{ieee80211__var_8h_a7ad628f973919aa69da9399a0a7c3a4e}{IEEE80211\_COM\_DETACHED}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00366}00366                 atomic\_subtract\_32(\&vap-\/>\mbox{\hyperlink{structieee80211vap_a01de7c8ac40e8c81ef122012358a520d}{iv\_com\_state}}, \mbox{\hyperlink{ieee80211__var_8h_a3262ff19d2ed0aabf70fdd9273994e18}{IEEE80211\_COM\_REF\_ADD}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00367}00367                 \textcolor{keywordflow}{return} (ENETDOWN);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00368}00368         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00369}00369 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00370}00370         \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__var_8h_a45a4f416c5e4323216aba9889aa6471f}{\_IEEE80211\_MASKSHIFT}}(ostate, \mbox{\hyperlink{ieee80211__var_8h_a15188d602d1a7c44c1ee0ea10085faaf}{IEEE80211\_COM\_REF}}) ==}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00371}00371             \mbox{\hyperlink{ieee80211__var_8h_aee3d9d6cda9933e7479f57b378fdc971}{IEEE80211\_COM\_REF\_MAX}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00372}00372                 atomic\_subtract\_32(\&vap-\/>\mbox{\hyperlink{structieee80211vap_a01de7c8ac40e8c81ef122012358a520d}{iv\_com\_state}}, \mbox{\hyperlink{ieee80211__var_8h_a3262ff19d2ed0aabf70fdd9273994e18}{IEEE80211\_COM\_REF\_ADD}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00373}00373                 \textcolor{keywordflow}{return} (EOVERFLOW);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00374}00374         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00375}00375 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00376}00376         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00377}00377 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00378}00378 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00379}00379 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00380}\mbox{\hyperlink{ieee80211__freebsd_8c_a87e5641395e0e391699057b164e09b3e}{00380}} \mbox{\hyperlink{ieee80211__freebsd_8c_a87e5641395e0e391699057b164e09b3e}{ieee80211\_com\_vdecref}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00381}00381 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00382}00382         uint32\_t ostate;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00383}00383 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00384}00384         ostate = atomic\_fetchadd\_32(\&vap-\/>\mbox{\hyperlink{structieee80211vap_a01de7c8ac40e8c81ef122012358a520d}{iv\_com\_state}}, -\/\mbox{\hyperlink{ieee80211__var_8h_a3262ff19d2ed0aabf70fdd9273994e18}{IEEE80211\_COM\_REF\_ADD}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00385}00385 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00386}00386         KASSERT(\mbox{\hyperlink{ieee80211__var_8h_a45a4f416c5e4323216aba9889aa6471f}{\_IEEE80211\_MASKSHIFT}}(ostate, \mbox{\hyperlink{ieee80211__var_8h_a15188d602d1a7c44c1ee0ea10085faaf}{IEEE80211\_COM\_REF}}) != 0,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00387}00387             (\textcolor{stringliteral}{"{}com reference counter underflow"{}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00388}00388 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00389}00389         (void) ostate;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00390}00390 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00391}00391 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00392}00392 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00393}\mbox{\hyperlink{ieee80211__freebsd_8c_a4601e2d1186bbe99ffdac3ac9e615fe7}{00393}} \mbox{\hyperlink{ieee80211__freebsd_8c_a4601e2d1186bbe99ffdac3ac9e615fe7}{ieee80211\_com\_vdetach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00394}00394 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00395}00395         \textcolor{keywordtype}{int} sleep\_time;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00396}00396 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00397}00397         sleep\_time = \mbox{\hyperlink{ieee80211__freebsd_8h_a52a17b151dca6a45aec6939d70a234ab}{msecs\_to\_ticks}}(250);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00398}00398         atomic\_set\_32(\&vap-\/>\mbox{\hyperlink{structieee80211vap_a01de7c8ac40e8c81ef122012358a520d}{iv\_com\_state}}, \mbox{\hyperlink{ieee80211__var_8h_a7ad628f973919aa69da9399a0a7c3a4e}{IEEE80211\_COM\_DETACHED}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00399}00399         \textcolor{keywordflow}{while} (\mbox{\hyperlink{ieee80211__var_8h_a45a4f416c5e4323216aba9889aa6471f}{\_IEEE80211\_MASKSHIFT}}(atomic\_load\_32(\&vap-\/>\mbox{\hyperlink{structieee80211vap_a01de7c8ac40e8c81ef122012358a520d}{iv\_com\_state}}),}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00400}00400             \mbox{\hyperlink{ieee80211__var_8h_a15188d602d1a7c44c1ee0ea10085faaf}{IEEE80211\_COM\_REF}}) != 0)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00401}00401                 pause(\textcolor{stringliteral}{"{}comref"{}}, sleep\_time);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00402}00402 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00403}00403 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00404}00404 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00405}\mbox{\hyperlink{ieee80211__freebsd_8c_a548086fad60a85be8a020cbb7db1ed3b}{00405}} \mbox{\hyperlink{ieee80211__freebsd_8c_a548086fad60a85be8a020cbb7db1ed3b}{ieee80211\_node\_dectestref}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00406}00406 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00407}00407         \textcolor{comment}{/* XXX need equivalent of atomic\_dec\_and\_test */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00408}00408         atomic\_subtract\_int(\&ni-\/>\mbox{\hyperlink{structieee80211__node_af8d1631343e97f91c47f248b1ad7a4cd}{ni\_refcnt}}, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00409}00409         \textcolor{keywordflow}{return} atomic\_cmpset\_int(\&ni-\/>\mbox{\hyperlink{structieee80211__node_af8d1631343e97f91c47f248b1ad7a4cd}{ni\_refcnt}}, 0, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00410}00410 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00411}00411 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00412}00412 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00413}\mbox{\hyperlink{ieee80211__freebsd_8c_ad9e55623c82174fde8c5c7989fb5baf8}{00413}} \mbox{\hyperlink{ieee80211__freebsd_8c_ad9e55623c82174fde8c5c7989fb5baf8}{ieee80211\_drain\_ifq}}(\textcolor{keyword}{struct} ifqueue *ifq)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00414}00414 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00415}00415         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00416}00416         \textcolor{keyword}{struct }mbuf *m;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00417}00417 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00418}00418         \textcolor{keywordflow}{for} (;;) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00419}00419                 IF\_DEQUEUE(ifq, m);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00420}00420                 \textcolor{keywordflow}{if} (m == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00421}00421                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00422}00422 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00423}00423                 ni = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *)m-\/>m\_pkthdr.rcvif;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00424}00424                 KASSERT(ni != NULL, (\textcolor{stringliteral}{"{}frame w/o node"{}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00425}00425                 \mbox{\hyperlink{ieee80211__node_8c_a233be47e72c5ab355a8ee331861beb78}{ieee80211\_free\_node}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00426}00426                 m-\/>m\_pkthdr.rcvif = NULL;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00427}00427 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00428}00428                 m\_freem(m);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00429}00429         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00430}00430 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00431}00431 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00432}00432 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00433}\mbox{\hyperlink{ieee80211__freebsd_8c_a91f8a2a4b83a063ace23550845d76b5d}{00433}} \mbox{\hyperlink{ieee80211__freebsd_8c_a91f8a2a4b83a063ace23550845d76b5d}{ieee80211\_flush\_ifq}}(\textcolor{keyword}{struct} ifqueue *ifq, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00434}00434 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00435}00435         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00436}00436         \textcolor{keyword}{struct }mbuf *m, **mprev;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00437}00437 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00438}00438         IF\_LOCK(ifq);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00439}00439         mprev = \&ifq-\/>ifq\_head;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00440}00440         \textcolor{keywordflow}{while} ((m = *mprev) != NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00441}00441                 ni = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *)m-\/>m\_pkthdr.rcvif;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00442}00442                 if (ni != NULL \&\& ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}} == vap) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00443}00443                         *mprev = m-\/>m\_nextpkt;          \textcolor{comment}{/* remove from list */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00444}00444                         ifq-\/>ifq\_len-\/-\/;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00445}00445 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00446}00446                         m\_freem(m);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00447}00447                         \mbox{\hyperlink{ieee80211__node_8c_a233be47e72c5ab355a8ee331861beb78}{ieee80211\_free\_node}}(ni);     \textcolor{comment}{/* reclaim ref */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00448}00448                 \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00449}00449                         mprev = \&m-\/>m\_nextpkt;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00450}00450         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00451}00451         \textcolor{comment}{/* recalculate tail ptr */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00452}00452         m = ifq-\/>ifq\_head;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00453}00453         \textcolor{keywordflow}{for} (; m != NULL \&\& m-\/>m\_nextpkt != NULL; m = m-\/>m\_nextpkt)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00454}00454                 ;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00455}00455         ifq-\/>ifq\_tail = m;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00456}00456         IF\_UNLOCK(ifq);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00457}00457 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00458}00458 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00459}00459 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00460}00460 \textcolor{comment}{ * As above, for mbufs allocated with m\_gethdr/MGETHDR}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00461}00461 \textcolor{comment}{ * or initialized by M\_COPY\_PKTHDR.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00462}00462 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00463}\mbox{\hyperlink{ieee80211__freebsd_8c_a3a2db0d310e945b3c8baea6c9b34c76e}{00463}} \textcolor{preprocessor}{\#define MC\_ALIGN(m, len)                                                \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00464}00464 \textcolor{preprocessor}{do \{                                                                    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00465}00465 \textcolor{preprocessor}{        (m)-\/>m\_data += rounddown2(MCLBYTES -\/ (len), sizeof(long));      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00466}00466 \textcolor{preprocessor}{\} while (}\textcolor{comment}{/* CONSTCOND */}\textcolor{preprocessor}{ 0)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00467}00467 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00468}00468 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00469}00469 \textcolor{comment}{ * Allocate and setup a management frame of the specified}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00470}00470 \textcolor{comment}{ * size.  We return the mbuf and a pointer to the start}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00471}00471 \textcolor{comment}{ * of the contiguous data area that's been reserved based}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00472}00472 \textcolor{comment}{ * on the packet length.  The data area is forced to 32-\/bit}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00473}00473 \textcolor{comment}{ * alignment and the buffer length to a multiple of 4 bytes.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00474}00474 \textcolor{comment}{ * This is done mainly so beacon frames (that require this)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00475}00475 \textcolor{comment}{ * can use this interface too.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00476}00476 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00477}00477 \textcolor{keyword}{struct }mbuf *}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00478}\mbox{\hyperlink{ieee80211__freebsd_8c_a375e045edada6f7b1554129910ab6398}{00478}} \mbox{\hyperlink{ieee80211__freebsd_8c_a375e045edada6f7b1554129910ab6398}{ieee80211\_getmgtframe}}(uint8\_t **frm, \textcolor{keywordtype}{int} headroom, \textcolor{keywordtype}{int} pktlen)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00479}00479 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00480}00480         \textcolor{keyword}{struct }mbuf *m;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00481}00481         u\_int len;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00482}00482 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00483}00483         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00484}00484 \textcolor{comment}{         * NB: we know the mbuf routines will align the data area}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00485}00485 \textcolor{comment}{         *     so we don't need to do anything special.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00486}00486 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00487}00487         len = roundup2(headroom + pktlen, 4);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00488}00488         KASSERT(len <= MCLBYTES, (\textcolor{stringliteral}{"{}802.11 mgt frame too large: \%u"{}}, len));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00489}00489         \textcolor{keywordflow}{if} (len < MINCLSIZE) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00490}00490                 m = m\_gethdr(M\_NOWAIT, MT\_DATA);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00491}00491                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00492}00492 \textcolor{comment}{                 * Align the data in case additional headers are added.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00493}00493 \textcolor{comment}{                 * This should only happen when a WEP header is added}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00494}00494 \textcolor{comment}{                 * which only happens for shared key authentication mgt}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00495}00495 \textcolor{comment}{                 * frames which all fit in MHLEN.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00496}00496 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00497}00497                 \textcolor{keywordflow}{if} (m != NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00498}00498                         M\_ALIGN(m, len);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00499}00499         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00500}00500                 m = m\_getcl(M\_NOWAIT, MT\_DATA, M\_PKTHDR);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00501}00501                 \textcolor{keywordflow}{if} (m != NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00502}00502                         \mbox{\hyperlink{ieee80211__freebsd_8c_a3a2db0d310e945b3c8baea6c9b34c76e}{MC\_ALIGN}}(m, len);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00503}00503         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00504}00504         \textcolor{keywordflow}{if} (m != NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00505}00505                 m-\/>m\_data += headroom;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00506}00506                 *frm = m-\/>m\_data;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00507}00507         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00508}00508         \textcolor{keywordflow}{return} m;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00509}00509 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00510}00510 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00511}00511 \textcolor{preprocessor}{\#ifndef \_\_NO\_STRICT\_ALIGNMENT}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00512}00512 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00513}00513 \textcolor{comment}{ * Re-\/align the payload in the mbuf.  This is mainly used (right now)}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00514}00514 \textcolor{comment}{ * to handle IP header alignment requirements on certain architectures.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00515}00515 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00516}00516 \textcolor{keyword}{struct }mbuf *}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00517}\mbox{\hyperlink{ieee80211__freebsd_8c_a96a0e6a034bfb606280840f9ff097d4f}{00517}} \mbox{\hyperlink{ieee80211__freebsd_8c_a96a0e6a034bfb606280840f9ff097d4f}{ieee80211\_realign}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap, \textcolor{keyword}{struct} mbuf *m, \textcolor{keywordtype}{size\_t} align)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00518}00518 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00519}00519         \textcolor{keywordtype}{int} pktlen, space;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00520}00520         \textcolor{keyword}{struct }mbuf *n;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00521}00521 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00522}00522         pktlen = m-\/>m\_pkthdr.len;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00523}00523         space = pktlen + align;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00524}00524         \textcolor{keywordflow}{if} (space < MINCLSIZE)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00525}00525                 n = m\_gethdr(M\_NOWAIT, MT\_DATA);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00526}00526         \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00527}00527                 n = m\_getjcl(M\_NOWAIT, MT\_DATA, M\_PKTHDR,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00528}00528                     space <= MCLBYTES ?     MCLBYTES :}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00529}00529 \#\textcolor{keywordflow}{if} MJUMPAGESIZE != MCLBYTES}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00530}00530                     space <= MJUMPAGESIZE ? MJUMPAGESIZE :}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00531}00531 \#endif}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00532}00532                     space <= MJUM9BYTES ?   MJUM9BYTES : MJUM16BYTES);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00533}00533         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00534}00534         \textcolor{keywordflow}{if} (\_\_predict\_true(n != NULL)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00535}00535                 m\_move\_pkthdr(n, m);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00536}00536                 n-\/>m\_data = (caddr\_t)(ALIGN(n-\/>m\_data + align) -\/ align);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00537}00537                 m\_copydata(m, 0, pktlen, mtod(n, caddr\_t));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00538}00538                 n-\/>m\_len = pktlen;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00539}00539         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00540}00540                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a52d4c8ea23b5f09cf1b52af74aa2e0b1}{IEEE80211\_MSG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00541}00541                     mtod(m, \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *), NULL,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00542}00542                     \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}no mbuf to realign"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00543}00543                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ae74d25f7d4e3570917382fa2bc948d97}{is\_rx\_badalign}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00544}00544         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00545}00545         m\_freem(m);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00546}00546         \textcolor{keywordflow}{return} n;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00547}00547 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00548}00548 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* !\_\_NO\_STRICT\_ALIGNMENT */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00549}00549 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00550}00550 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00551}\mbox{\hyperlink{ieee80211__freebsd_8c_a9449da2f096f3655351741291aaa3434}{00551}} \mbox{\hyperlink{ieee80211__freebsd_8c_a9449da2f096f3655351741291aaa3434}{ieee80211\_add\_callback}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00552}00552         \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_8c_source_l00553}00553 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00554}00554         \textcolor{keyword}{struct }m\_tag *mtag;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00555}00555         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__cb}{ieee80211\_cb}} *cb;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00556}00556 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00557}00557         mtag = m\_tag\_alloc(\mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{MTAG\_ABI\_NET80211}}, \mbox{\hyperlink{ieee80211__freebsd_8h_a4530dcae2d7625aebb302533f6fe622b}{NET80211\_TAG\_CALLBACK}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00558}00558                         \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__cb}{ieee80211\_cb}}), M\_NOWAIT);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00559}00559         \textcolor{keywordflow}{if} (mtag == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00560}00560                 \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00561}00561 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00562}00562         cb = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__cb}{ieee80211\_cb}} *)(mtag+1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00563}00563         cb-\/>\mbox{\hyperlink{structieee80211__cb_aca77b15f1f4cf313dde3f003d255cace}{func}} = \mbox{\hyperlink{structieee80211__cb_aca77b15f1f4cf313dde3f003d255cace}{func}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00564}00564         cb-\/>\mbox{\hyperlink{structieee80211__cb_a0ecb4d26e5956495b8ab6cfd205c10f0}{arg}} = \mbox{\hyperlink{structieee80211__cb_a0ecb4d26e5956495b8ab6cfd205c10f0}{arg}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00565}00565         m\_tag\_prepend(m, mtag);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00566}00566         m-\/>m\_flags |= \mbox{\hyperlink{ieee80211__freebsd_8h_a9874e993c774f19210fa2897e761c2ba}{M\_TXCB}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00567}00567         \textcolor{keywordflow}{return} 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00568}00568 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00569}00569 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00570}00570 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00571}\mbox{\hyperlink{ieee80211__freebsd_8c_a82a0e1ca03110aee1ad94312b3a4c33a}{00571}} \mbox{\hyperlink{ieee80211__freebsd_8c_a82a0e1ca03110aee1ad94312b3a4c33a}{ieee80211\_add\_xmit\_params}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00572}00572     \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__bpf__params}{ieee80211\_bpf\_params}} *params)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00573}00573 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00574}00574         \textcolor{keyword}{struct }m\_tag *mtag;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00575}00575         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__tx__params}{ieee80211\_tx\_params}} *tx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00576}00576 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00577}00577         mtag = m\_tag\_alloc(\mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{MTAG\_ABI\_NET80211}}, \mbox{\hyperlink{ieee80211__freebsd_8h_a091494a42df388782d1cae39c6cae8de}{NET80211\_TAG\_XMIT\_PARAMS}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00578}00578             \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__tx__params}{ieee80211\_tx\_params}}), M\_NOWAIT);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00579}00579         \textcolor{keywordflow}{if} (mtag == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00580}00580                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00581}00581 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00582}00582         tx = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__tx__params}{ieee80211\_tx\_params}} *)(mtag+1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00583}00583         memcpy(\&tx-\/>\mbox{\hyperlink{structieee80211__tx__params_a0a3146f61bd46263a4cd32b49621324d}{params}}, \mbox{\hyperlink{structieee80211__tx__params_a0a3146f61bd46263a4cd32b49621324d}{params}}, \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__bpf__params}{ieee80211\_bpf\_params}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00584}00584         m\_tag\_prepend(m, mtag);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00585}00585         \textcolor{keywordflow}{return} (1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00586}00586 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00587}00587 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00588}00588 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00589}\mbox{\hyperlink{ieee80211__freebsd_8c_aa0321dbb907497fae3a0265151890b93}{00589}} \mbox{\hyperlink{ieee80211__freebsd_8c_aa0321dbb907497fae3a0265151890b93}{ieee80211\_get\_xmit\_params}}(\textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00590}00590     \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__bpf__params}{ieee80211\_bpf\_params}} *\mbox{\hyperlink{structieee80211__tx__params_a0a3146f61bd46263a4cd32b49621324d}{params}})}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00591}00591 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00592}00592         \textcolor{keyword}{struct }m\_tag *mtag;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00593}00593         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__tx__params}{ieee80211\_tx\_params}} *tx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00594}00594 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00595}00595         mtag = m\_tag\_locate(m, \mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{MTAG\_ABI\_NET80211}}, \mbox{\hyperlink{ieee80211__freebsd_8h_a091494a42df388782d1cae39c6cae8de}{NET80211\_TAG\_XMIT\_PARAMS}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00596}00596             NULL);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00597}00597         \textcolor{keywordflow}{if} (mtag == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00598}00598                 \textcolor{keywordflow}{return} (-\/1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00599}00599         tx = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__tx__params}{ieee80211\_tx\_params}} *)(mtag + 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00600}00600         memcpy(\mbox{\hyperlink{structieee80211__tx__params_a0a3146f61bd46263a4cd32b49621324d}{params}}, \&tx-\/>\mbox{\hyperlink{structieee80211__tx__params_a0a3146f61bd46263a4cd32b49621324d}{params}}, \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__bpf__params}{ieee80211\_bpf\_params}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00601}00601         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00602}00602 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00603}00603 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00604}00604 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00605}\mbox{\hyperlink{ieee80211__freebsd_8c_a3e2212620ef6ec9360435ce6d8b7f3a2}{00605}} \mbox{\hyperlink{ieee80211__freebsd_8c_a3e2212620ef6ec9360435ce6d8b7f3a2}{ieee80211\_process\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00606}00606         \textcolor{keyword}{struct} mbuf *m, \textcolor{keywordtype}{int} status)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00607}00607 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00608}00608         \textcolor{keyword}{struct }m\_tag *mtag;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00609}00609 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00610}00610         mtag = m\_tag\_locate(m, \mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{MTAG\_ABI\_NET80211}}, \mbox{\hyperlink{ieee80211__freebsd_8h_a4530dcae2d7625aebb302533f6fe622b}{NET80211\_TAG\_CALLBACK}}, NULL);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00611}00611         \textcolor{keywordflow}{if} (mtag != NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00612}00612                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__cb}{ieee80211\_cb}} *cb = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__cb}{ieee80211\_cb}} *)(mtag+1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00613}00613                 cb-\/>\mbox{\hyperlink{structieee80211__cb_aca77b15f1f4cf313dde3f003d255cace}{func}}(ni, cb-\/>\mbox{\hyperlink{structieee80211__cb_a0ecb4d26e5956495b8ab6cfd205c10f0}{arg}}, status);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00614}00614         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00615}00615 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00616}00616 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00617}00617 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00618}00618 \textcolor{comment}{ * Add RX parameters to the given mbuf.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00619}00619 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00620}00620 \textcolor{comment}{ * Returns 1 if OK, 0 on error.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00621}00621 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00622}00622 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00623}\mbox{\hyperlink{ieee80211__freebsd_8c_a80daa206875f3258082ad07c3689e7e0}{00623}} \mbox{\hyperlink{ieee80211__freebsd_8c_a80daa206875f3258082ad07c3689e7e0}{ieee80211\_add\_rx\_params}}(\textcolor{keyword}{struct} mbuf *m, \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} *rxs)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00624}00624 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00625}00625         \textcolor{keyword}{struct }m\_tag *mtag;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00626}00626         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__params}{ieee80211\_rx\_params}} *rx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00627}00627 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00628}00628         mtag = m\_tag\_alloc(\mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{MTAG\_ABI\_NET80211}}, \mbox{\hyperlink{ieee80211__freebsd_8h_a05569616e7f8e50c95268bcf76f10641}{NET80211\_TAG\_RECV\_PARAMS}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00629}00629             \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}}), M\_NOWAIT);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00630}00630         \textcolor{keywordflow}{if} (mtag == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00631}00631                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00632}00632 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00633}00633         rx = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__params}{ieee80211\_rx\_params}} *)(mtag + 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00634}00634         memcpy(\&rx-\/>\mbox{\hyperlink{structieee80211__rx__params_ab5a1643c90b548f90cb5d84edecf885f}{params}}, rxs, \textcolor{keyword}{sizeof}(*rxs));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00635}00635         m\_tag\_prepend(m, mtag);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00636}00636         \textcolor{keywordflow}{return} (1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00637}00637 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00638}00638 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00639}00639 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00640}\mbox{\hyperlink{ieee80211__freebsd_8c_a2b92a08e915bc724da81419ed41cb027}{00640}} \mbox{\hyperlink{ieee80211__freebsd_8c_a2b92a08e915bc724da81419ed41cb027}{ieee80211\_get\_rx\_params}}(\textcolor{keyword}{struct} mbuf *m, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} *rxs)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00641}00641 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00642}00642         \textcolor{keyword}{struct }m\_tag *mtag;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00643}00643         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__params}{ieee80211\_rx\_params}} *rx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00644}00644 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00645}00645         mtag = m\_tag\_locate(m, \mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{MTAG\_ABI\_NET80211}}, \mbox{\hyperlink{ieee80211__freebsd_8h_a05569616e7f8e50c95268bcf76f10641}{NET80211\_TAG\_RECV\_PARAMS}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00646}00646             NULL);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00647}00647         \textcolor{keywordflow}{if} (mtag == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00648}00648                 \textcolor{keywordflow}{return} (-\/1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00649}00649         rx = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__params}{ieee80211\_rx\_params}} *)(mtag + 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00650}00650         memcpy(rxs, \&rx-\/>\mbox{\hyperlink{structieee80211__rx__params_ab5a1643c90b548f90cb5d84edecf885f}{params}}, \textcolor{keyword}{sizeof}(*rxs));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00651}00651         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00652}00652 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00653}00653 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00654}00654 \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} *}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00655}\mbox{\hyperlink{ieee80211__freebsd_8c_ab014e67943197d7377d0265af51d3901}{00655}} \mbox{\hyperlink{ieee80211__freebsd_8c_ab014e67943197d7377d0265af51d3901}{ieee80211\_get\_rx\_params\_ptr}}(\textcolor{keyword}{struct} mbuf *m)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00656}00656 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00657}00657         \textcolor{keyword}{struct }m\_tag *mtag;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00658}00658         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__params}{ieee80211\_rx\_params}} *rx;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00659}00659 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00660}00660         mtag = m\_tag\_locate(m, \mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{MTAG\_ABI\_NET80211}}, \mbox{\hyperlink{ieee80211__freebsd_8h_a05569616e7f8e50c95268bcf76f10641}{NET80211\_TAG\_RECV\_PARAMS}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00661}00661             NULL);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00662}00662         \textcolor{keywordflow}{if} (mtag == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00663}00663                 \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00664}00664         rx = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__rx__params}{ieee80211\_rx\_params}} *)(mtag + 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00665}00665         \textcolor{keywordflow}{return} (\&rx-\/>\mbox{\hyperlink{structieee80211__rx__params_ab5a1643c90b548f90cb5d84edecf885f}{params}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00666}00666 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00667}00667 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00668}00668 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00669}00669 \textcolor{comment}{ * Add TOA parameters to the given mbuf.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00670}00670 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00671}00671 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00672}\mbox{\hyperlink{ieee80211__freebsd_8c_af9a587e119dcbbf37a95b8f2ff22f047}{00672}} \mbox{\hyperlink{ieee80211__freebsd_8c_af9a587e119dcbbf37a95b8f2ff22f047}{ieee80211\_add\_toa\_params}}(\textcolor{keyword}{struct} mbuf *m, \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}} *p)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00673}00673 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00674}00674         \textcolor{keyword}{struct }m\_tag *mtag;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00675}00675         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}} *rp;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00676}00676 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00677}00677         mtag = m\_tag\_alloc(\mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{MTAG\_ABI\_NET80211}}, \mbox{\hyperlink{ieee80211__freebsd_8h_ac544c85231524164439e503015aca361}{NET80211\_TAG\_TOA\_PARAMS}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00678}00678             \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}}), M\_NOWAIT);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00679}00679         \textcolor{keywordflow}{if} (mtag == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00680}00680                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00681}00681 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00682}00682         rp = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}} *)(mtag + 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00683}00683         memcpy(rp, p, \textcolor{keyword}{sizeof}(*rp));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00684}00684         m\_tag\_prepend(m, mtag);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00685}00685         \textcolor{keywordflow}{return} (1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00686}00686 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00687}00687 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00688}00688 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00689}\mbox{\hyperlink{ieee80211__freebsd_8c_af56aaec827b081dd3a4a22b1fcb58787}{00689}} \mbox{\hyperlink{ieee80211__freebsd_8c_af56aaec827b081dd3a4a22b1fcb58787}{ieee80211\_get\_toa\_params}}(\textcolor{keyword}{struct} mbuf *m, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}} *p)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00690}00690 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00691}00691         \textcolor{keyword}{struct }m\_tag *mtag;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00692}00692         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}} *rp;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00693}00693 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00694}00694         mtag = m\_tag\_locate(m, \mbox{\hyperlink{ieee80211__freebsd_8h_ad22cf798ee7ac405bd992243bd838eb9}{MTAG\_ABI\_NET80211}}, \mbox{\hyperlink{ieee80211__freebsd_8h_ac544c85231524164439e503015aca361}{NET80211\_TAG\_TOA\_PARAMS}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00695}00695             NULL);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00696}00696         \textcolor{keywordflow}{if} (mtag == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00697}00697                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00698}00698         rp = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__toa__params}{ieee80211\_toa\_params}} *)(mtag + 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00699}00699         \textcolor{keywordflow}{if} (p != NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00700}00700                 memcpy(p, rp, \textcolor{keyword}{sizeof}(*p));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00701}00701         \textcolor{keywordflow}{return} (1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00702}00702 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00703}00703 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00704}00704 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00705}00705 \textcolor{comment}{ * Transmit a frame to the parent interface.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00706}00706 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00707}00707 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00708}\mbox{\hyperlink{ieee80211__freebsd_8c_ad981b4fbdb493f7deb6d5b71ccc07f54}{00708}} \mbox{\hyperlink{ieee80211__freebsd_8c_ad981b4fbdb493f7deb6d5b71ccc07f54}{ieee80211\_parent\_xmitpkt}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic, \textcolor{keyword}{struct} mbuf *m)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00709}00709 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00710}00710         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00711}00711 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00712}00712         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00713}00713 \textcolor{comment}{         * Assert the IC TX lock is held -\/ this enforces the}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00714}00714 \textcolor{comment}{         * processing -\/> queuing order is maintained}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00715}00715 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00716}00716         \mbox{\hyperlink{ieee80211__freebsd_8h_a064ba276f286f2c86d87388c0e53b6e4}{IEEE80211\_TX\_LOCK\_ASSERT}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00717}00717         error = ic-\/>\mbox{\hyperlink{structieee80211com_a582bcb7d7a5880c9426f5b03078f4077}{ic\_transmit}}(ic, m);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00718}00718         \textcolor{keywordflow}{if} (error) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00719}00719                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00720}00720 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00721}00721                 ni = (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *)m-\/>m\_pkthdr.rcvif;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00722}00722 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00723}00723                 \textcolor{comment}{/* XXX number of fragments */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00724}00724                 if\_inc\_counter(ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}}-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}}, IFCOUNTER\_OERRORS, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00725}00725                 \mbox{\hyperlink{ieee80211__node_8c_a233be47e72c5ab355a8ee331861beb78}{ieee80211\_free\_node}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00726}00726                 \mbox{\hyperlink{ieee80211__output_8c_a10848184c1e6b4ba4a74ca1871c1a527}{ieee80211\_free\_mbuf}}(m);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00727}00727         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00728}00728         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00729}00729 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00730}00730 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00731}00731 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00732}00732 \textcolor{comment}{ * Transmit a frame to the VAP interface.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00733}00733 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00734}00734 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00735}\mbox{\hyperlink{ieee80211__freebsd_8c_aea33fcdd2011f1f479974f064bb993bb}{00735}} \mbox{\hyperlink{ieee80211__freebsd_8c_aea33fcdd2011f1f479974f064bb993bb}{ieee80211\_vap\_xmitpkt}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap, \textcolor{keyword}{struct} mbuf *m)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00736}00736 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00737}00737         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00738}00738 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00739}00739         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00740}00740 \textcolor{comment}{         * When transmitting via the VAP, we shouldn't hold}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00741}00741 \textcolor{comment}{         * any IC TX lock as the VAP TX path will acquire it.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00742}00742 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00743}00743         \mbox{\hyperlink{ieee80211__freebsd_8h_a9ab184570782373744adf0d949f7976c}{IEEE80211\_TX\_UNLOCK\_ASSERT}}(vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00744}00744 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00745}00745         \textcolor{keywordflow}{return} (ifp-\/>if\_transmit(ifp, m));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00746}00746 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00747}00747 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00748}00748 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00749}00749 \textcolor{preprocessor}{\#include <sys/libkern.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00750}00750 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00751}00751 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00752}\mbox{\hyperlink{ieee80211__freebsd_8c_a692f01db2f1dbdacb1ee64004b3778a9}{00752}} \mbox{\hyperlink{ieee80211__freebsd_8c_a692f01db2f1dbdacb1ee64004b3778a9}{net80211\_get\_random\_bytes}}(\textcolor{keywordtype}{void} *p, \textcolor{keywordtype}{size\_t} n)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00753}00753 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00754}00754         uint8\_t *dp = p;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00755}00755 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00756}00756         \textcolor{keywordflow}{while} (n > 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00757}00757                 uint32\_t v = arc4random();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00758}00758                 \textcolor{keywordtype}{size\_t} nb = n > \textcolor{keyword}{sizeof}(uint32\_t) ? \textcolor{keyword}{sizeof}(uint32\_t) : n;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00759}00759                 bcopy(\&v, dp, n > \textcolor{keyword}{sizeof}(uint32\_t) ? \textcolor{keyword}{sizeof}(uint32\_t) : n);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00760}00760                 dp += \textcolor{keyword}{sizeof}(uint32\_t), n -\/= nb;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00761}00761         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00762}00762 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00763}00763 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00764}00764 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00765}00765 \textcolor{comment}{ * Helper function for events that pass just a single mac address.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00766}00766 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00767}00767 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00768}\mbox{\hyperlink{ieee80211__freebsd_8c_aa7ed755e6c5a06e5d489237a9fb78732}{00768}} \mbox{\hyperlink{ieee80211__freebsd_8c_aa7ed755e6c5a06e5d489237a9fb78732}{notify\_macaddr}}(\textcolor{keyword}{struct} ifnet *ifp, \textcolor{keywordtype}{int} op, \textcolor{keyword}{const} uint8\_t \mbox{\hyperlink{ieee80211__acl_8c_a8d4b7a9936dd4f31f717cbd6a9b159bb}{mac}}[\mbox{\hyperlink{ieee80211_8h_a453b082a0e442784729071fa4d844dde}{IEEE80211\_ADDR\_LEN}}])}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00769}00769 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00770}00770         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__join__event}{ieee80211\_join\_event}} iev;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00771}00771 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00772}00772         CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00773}00773         memset(\&iev, 0, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00774}00774         \mbox{\hyperlink{ieee80211__var_8h_a132feedfddec77fa2d89fc0e1c9f25e9}{IEEE80211\_ADDR\_COPY}}(iev.\mbox{\hyperlink{structieee80211__join__event_a1b9eb74c1626d5176bde93d695c6dae3}{iev\_addr}}, \mbox{\hyperlink{ieee80211__acl_8c_a8d4b7a9936dd4f31f717cbd6a9b159bb}{mac}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00775}00775         rt\_ieee80211msg(ifp, op, \&iev, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00776}00776         CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00777}00777 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00778}00778 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00779}00779 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00780}\mbox{\hyperlink{ieee80211__freebsd_8c_a57be79534d6b8be3b219c6ebc5e51b0c}{00780}} \mbox{\hyperlink{ieee80211__freebsd_8c_a57be79534d6b8be3b219c6ebc5e51b0c}{ieee80211\_notify\_node\_join}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni, \textcolor{keywordtype}{int} newassoc)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00781}00781 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00782}00782         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00783}00783         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00784}00784 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00785}00785         CURVNET\_SET\_QUIET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00786}00786         \mbox{\hyperlink{ieee80211__var_8h_a9c90e846ab7773b17fc49706dd551293}{IEEE80211\_NOTE}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a87bcde8aea50348e7f882c47d3f646e7}{IEEE80211\_MSG\_NODE}}, ni, \textcolor{stringliteral}{"{}\%snode join"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00787}00787             (ni == vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}) ? \textcolor{stringliteral}{"{}bss "{}} : \textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00788}00788 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00789}00789         \textcolor{keywordflow}{if} (ni == vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00790}00790                 \mbox{\hyperlink{ieee80211__freebsd_8c_aa7ed755e6c5a06e5d489237a9fb78732}{notify\_macaddr}}(ifp, newassoc ?}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00791}00791                     \mbox{\hyperlink{ieee80211__freebsd_8h_ab4fdb3de2892d8d81559942090a8f36c}{RTM\_IEEE80211\_ASSOC}} : \mbox{\hyperlink{ieee80211__freebsd_8h_a325f9ca6e43ed7fd383bdb60acdafdb3}{RTM\_IEEE80211\_REASSOC}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a45e68c78c549ae07131b2e0912e2f268}{ni\_bssid}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00792}00792                 if\_link\_state\_change(ifp, LINK\_STATE\_UP);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00793}00793         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00794}00794                 \mbox{\hyperlink{ieee80211__freebsd_8c_aa7ed755e6c5a06e5d489237a9fb78732}{notify\_macaddr}}(ifp, newassoc ?}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00795}00795                     \mbox{\hyperlink{ieee80211__freebsd_8h_a9fb6d7b88bbb3d8e83a1893f422fbe40}{RTM\_IEEE80211\_JOIN}} : \mbox{\hyperlink{ieee80211__freebsd_8h_af03eb044afab3979fd195811e313d239}{RTM\_IEEE80211\_REJOIN}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00796}00796         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00797}00797         CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00798}00798 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00799}00799 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00800}00800 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00801}\mbox{\hyperlink{ieee80211__freebsd_8c_a6f4a2a3b81e041da6b1f0a07695d7d1c}{00801}} \mbox{\hyperlink{ieee80211__freebsd_8c_a6f4a2a3b81e041da6b1f0a07695d7d1c}{ieee80211\_notify\_node\_leave}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00802}00802 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00803}00803         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00804}00804         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00805}00805 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00806}00806         CURVNET\_SET\_QUIET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00807}00807         \mbox{\hyperlink{ieee80211__var_8h_a9c90e846ab7773b17fc49706dd551293}{IEEE80211\_NOTE}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a87bcde8aea50348e7f882c47d3f646e7}{IEEE80211\_MSG\_NODE}}, ni, \textcolor{stringliteral}{"{}\%snode leave"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00808}00808             (ni == vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}) ? \textcolor{stringliteral}{"{}bss "{}} : \textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00809}00809 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00810}00810         \textcolor{keywordflow}{if} (ni == vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00811}00811                 rt\_ieee80211msg(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_ad4d1c8363f979cecf8df3b2b0622c09a}{RTM\_IEEE80211\_DISASSOC}}, NULL, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00812}00812                 if\_link\_state\_change(ifp, LINK\_STATE\_DOWN);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00813}00813         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00814}00814                 \textcolor{comment}{/* fire off wireless event station leaving */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00815}00815                 \mbox{\hyperlink{ieee80211__freebsd_8c_aa7ed755e6c5a06e5d489237a9fb78732}{notify\_macaddr}}(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_af5d26358b07a26230d0f42c0dc2e5e43}{RTM\_IEEE80211\_LEAVE}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00816}00816         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00817}00817         CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00818}00818 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00819}00819 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00820}00820 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00821}\mbox{\hyperlink{ieee80211__freebsd_8c_aad3503459ecde2a65ef59923a8f9377a}{00821}} \mbox{\hyperlink{ieee80211__freebsd_8c_aad3503459ecde2a65ef59923a8f9377a}{ieee80211\_notify\_scan\_done}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00822}00822 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00823}00823         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00824}00824 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00825}00825         \mbox{\hyperlink{ieee80211__var_8h_ac185ad5fc3b0a56653d4ea243a100a1c}{IEEE80211\_DPRINTF}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a56858df60c7f1bf52f06ac03cd303545}{IEEE80211\_MSG\_SCAN}}, \textcolor{stringliteral}{"{}\%s\(\backslash\)n"{}}, \textcolor{stringliteral}{"{}notify scan done"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00826}00826 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00827}00827         \textcolor{comment}{/* dispatch wireless event indicating scan completed */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00828}00828         CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00829}00829         rt\_ieee80211msg(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_aede136cf660a7e31c0d927ad64e49f0a}{RTM\_IEEE80211\_SCAN}}, NULL, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00830}00830         CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00831}00831 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00832}00832 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00833}00833 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00834}\mbox{\hyperlink{ieee80211__freebsd_8c_afa2ad5221ca4acbf5b30f11adab68a6e}{00834}} \mbox{\hyperlink{ieee80211__freebsd_8c_afa2ad5221ca4acbf5b30f11adab68a6e}{ieee80211\_notify\_replay\_failure}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00835}00835         \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh, \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__key}{ieee80211\_key}} *k,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00836}00836         u\_int64\_t rsc, \textcolor{keywordtype}{int} tid)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00837}00837 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00838}00838         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00839}00839 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00840}00840         \mbox{\hyperlink{ieee80211__var_8h_a6895488831af45948c8a35da11bba1c6}{IEEE80211\_NOTE\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a50c281c2b65d9e1b9ebfb78fac091fb6}{IEEE80211\_MSG\_CRYPTO}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00841}00841             \textcolor{stringliteral}{"{}\%s replay detected tid \%d <rsc \%ju (\%jx), csc \%ju (\%jx), keyix \%u rxkeyix \%u>"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00842}00842             k-\/>\mbox{\hyperlink{structieee80211__key_a80761c32ff64665c415e277773046ef8}{wk\_cipher}}-\/>\mbox{\hyperlink{structieee80211__cipher_a3d0bbacd42265bbdc506e8dcb75e0d37}{ic\_name}}, tid,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00843}00843             (intmax\_t) rsc,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00844}00844             (intmax\_t) rsc,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00845}00845             (intmax\_t) k-\/>\mbox{\hyperlink{structieee80211__key_a6dd993756c408510a6d01aa935fe307b}{wk\_keyrsc}}[tid],}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00846}00846             (intmax\_t) k-\/>\mbox{\hyperlink{structieee80211__key_a6dd993756c408510a6d01aa935fe307b}{wk\_keyrsc}}[tid],}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00847}00847             k-\/>\mbox{\hyperlink{structieee80211__key_a551a6b66e30ff560f3b68a9576df3466}{wk\_keyix}}, k-\/>\mbox{\hyperlink{structieee80211__key_af801265940301752f55a5d45f0f56b6c}{wk\_rxkeyix}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00848}00848 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00849}00849         \textcolor{keywordflow}{if} (ifp != NULL) \{              \textcolor{comment}{/* NB: for cipher test modules */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00850}00850                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__replay__event}{ieee80211\_replay\_event}} iev;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00851}00851 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00852}00852                 \mbox{\hyperlink{ieee80211__var_8h_a132feedfddec77fa2d89fc0e1c9f25e9}{IEEE80211\_ADDR\_COPY}}(iev.\mbox{\hyperlink{structieee80211__replay__event_a1c0f97bd94bbbcfabe7372518c3ac4d6}{iev\_dst}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00853}00853                 \mbox{\hyperlink{ieee80211__var_8h_a132feedfddec77fa2d89fc0e1c9f25e9}{IEEE80211\_ADDR\_COPY}}(iev.\mbox{\hyperlink{structieee80211__replay__event_a46d07b61bbe58dfaa6a34d6f63da3b5c}{iev\_src}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00854}00854                 iev.\mbox{\hyperlink{structieee80211__replay__event_ace95c1f6bff114cc8e235e2a6b4b6465}{iev\_cipher}} = k-\/>\mbox{\hyperlink{structieee80211__key_a80761c32ff64665c415e277773046ef8}{wk\_cipher}}-\/>\mbox{\hyperlink{structieee80211__cipher_acfe1bc81eabe11928d2f647d44ad2bb7}{ic\_cipher}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00855}00855                 \textcolor{keywordflow}{if} (k-\/>\mbox{\hyperlink{structieee80211__key_af801265940301752f55a5d45f0f56b6c}{wk\_rxkeyix}} != \mbox{\hyperlink{ieee80211__crypto_8h_adadfbf58e9f3f96c01cd857aa6c0a2a6}{IEEE80211\_KEYIX\_NONE}})}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00856}00856                         iev.\mbox{\hyperlink{structieee80211__replay__event_ae92d88454530a89db02e9afc34d909c0}{iev\_keyix}} = k-\/>\mbox{\hyperlink{structieee80211__key_af801265940301752f55a5d45f0f56b6c}{wk\_rxkeyix}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00857}00857                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00858}00858                         iev.\mbox{\hyperlink{structieee80211__replay__event_ae92d88454530a89db02e9afc34d909c0}{iev\_keyix}} = k-\/>\mbox{\hyperlink{structieee80211__key_a551a6b66e30ff560f3b68a9576df3466}{wk\_keyix}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00859}00859                 iev.\mbox{\hyperlink{structieee80211__replay__event_ae21ef497046183f833c520d8412ad80a}{iev\_keyrsc}} = k-\/>\mbox{\hyperlink{structieee80211__key_a6dd993756c408510a6d01aa935fe307b}{wk\_keyrsc}}[tid];}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00860}00860                 iev.\mbox{\hyperlink{structieee80211__replay__event_a6c290aeee028eaa33bc92d343f8ce39f}{iev\_rsc}} = rsc;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00861}00861                 CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00862}00862                 rt\_ieee80211msg(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_a407ddc37a34dd56edf4abd8ee06b63ea}{RTM\_IEEE80211\_REPLAY}}, \&iev, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00863}00863                 CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00864}00864         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00865}00865 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00866}00866 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00867}00867 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00868}\mbox{\hyperlink{ieee80211__crypto_8h_a9ab7236ea10475dc21ce114ab2316424}{00868}} \mbox{\hyperlink{ieee80211__freebsd_8c_afcee1e9c6ddc4bdfb7deaaa241b9a689}{ieee80211\_notify\_michael\_failure}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00869}00869         \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh, u\_int keyix)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00870}00870 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00871}00871         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00872}00872 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00873}00873         \mbox{\hyperlink{ieee80211__var_8h_a6895488831af45948c8a35da11bba1c6}{IEEE80211\_NOTE\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a50c281c2b65d9e1b9ebfb78fac091fb6}{IEEE80211\_MSG\_CRYPTO}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00874}00874             \textcolor{stringliteral}{"{}michael MIC verification failed <keyix \%u>"{}}, keyix);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00875}00875         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a64a9aebd9f861470d9e1e39142f30187}{is\_rx\_tkipmic}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00876}00876 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00877}00877         \textcolor{keywordflow}{if} (ifp != NULL) \{              \textcolor{comment}{/* NB: for cipher test modules */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00878}00878                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__michael__event}{ieee80211\_michael\_event}} iev;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00879}00879 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00880}00880                 \mbox{\hyperlink{ieee80211__var_8h_a132feedfddec77fa2d89fc0e1c9f25e9}{IEEE80211\_ADDR\_COPY}}(iev.\mbox{\hyperlink{structieee80211__michael__event_a402ef6740d87c3f93ea1fc67fafd49c0}{iev\_dst}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00881}00881                 \mbox{\hyperlink{ieee80211__var_8h_a132feedfddec77fa2d89fc0e1c9f25e9}{IEEE80211\_ADDR\_COPY}}(iev.\mbox{\hyperlink{structieee80211__michael__event_a9737b7e8b03e3759a721743ad1ad40ff}{iev\_src}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00882}00882                 iev.\mbox{\hyperlink{structieee80211__michael__event_a0a5f106867dabf89f1f6165426537134}{iev\_cipher}} = \mbox{\hyperlink{ieee80211__crypto_8h_af0fe1203e036fb881060255dde93425f}{IEEE80211\_CIPHER\_TKIP}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00883}00883                 iev.\mbox{\hyperlink{structieee80211__michael__event_ac44a6fd9c50ebda2b63b42490dac0a89}{iev\_keyix}} = keyix;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00884}00884                 CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00885}00885                 rt\_ieee80211msg(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_ab5431a7fdebc71daa77d127e231d297a}{RTM\_IEEE80211\_MICHAEL}}, \&iev, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00886}00886                 CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00887}00887         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00888}00888 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00889}00889 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00890}00890 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00891}\mbox{\hyperlink{ieee80211__freebsd_8c_a5f1d2eb293e18a6143aa8bd85bdc8b01}{00891}} \mbox{\hyperlink{ieee80211__freebsd_8c_a5f1d2eb293e18a6143aa8bd85bdc8b01}{ieee80211\_notify\_wds\_discover}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00892}00892 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00893}00893         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00894}00894         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00895}00895 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00896}00896         \mbox{\hyperlink{ieee80211__freebsd_8c_aa7ed755e6c5a06e5d489237a9fb78732}{notify\_macaddr}}(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_a0de2c12dd5309bf6e6c93ff1d04ce567}{RTM\_IEEE80211\_WDS}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00897}00897 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00898}00898 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00899}00899 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00900}\mbox{\hyperlink{ieee80211__freebsd_8c_a44068685bbc85a52b88317068a7ea356}{00900}} \mbox{\hyperlink{ieee80211__freebsd_8c_a44068685bbc85a52b88317068a7ea356}{ieee80211\_notify\_csa}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00901}00901         \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__channel}{ieee80211\_channel}} *c, \textcolor{keywordtype}{int} mode, \textcolor{keywordtype}{int} count)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00902}00902 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00903}00903         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__csa__event}{ieee80211\_csa\_event}} iev;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00904}00904         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00905}00905         \textcolor{keyword}{struct }ifnet *ifp;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00906}00906 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00907}00907         memset(\&iev, 0, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00908}00908         iev.\mbox{\hyperlink{structieee80211__csa__event_afbc3284734b759b1ff401c751a76de60}{iev\_flags}} = c-\/>\mbox{\hyperlink{structieee80211__channel_a32346d24003d7f5b90c4f2a76896a339}{ic\_flags}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00909}00909         iev.\mbox{\hyperlink{structieee80211__csa__event_ad1d26590c58749cc839fa794b67c505e}{iev\_freq}} = c-\/>\mbox{\hyperlink{structieee80211__channel_a7c3ddf3604165994ddd494d432cdef6d}{ic\_freq}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00910}00910         iev.\mbox{\hyperlink{structieee80211__csa__event_ab3ef56754c7b18f0517a2f0c9d462804}{iev\_ieee}} = c-\/>\mbox{\hyperlink{structieee80211__channel_a83c54c2ac98b83f9dfb2a8c390635bdf}{ic\_ieee}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00911}00911         iev.\mbox{\hyperlink{structieee80211__csa__event_ae12b183f3bc74d364ff4595cf8ba1e51}{iev\_mode}} = mode;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00912}00912         iev.\mbox{\hyperlink{structieee80211__csa__event_ad83d23d509f5dfcc1b22d2af13280245}{iev\_count}} = count;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00913}00913         TAILQ\_FOREACH(vap, \&ic-\/>ic\_vaps, iv\_next) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00914}00914                 ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00915}00915                 CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00916}00916                 rt\_ieee80211msg(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_aaeff6864aac0200d4511c51193977af8}{RTM\_IEEE80211\_CSA}}, \&iev, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00917}00917                 CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00918}00918         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00919}00919 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00920}00920 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00921}00921 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00922}\mbox{\hyperlink{ieee80211__freebsd_8c_a46bf10bb0a61d1459838a03bbe63747d}{00922}} \mbox{\hyperlink{ieee80211__freebsd_8c_a46bf10bb0a61d1459838a03bbe63747d}{ieee80211\_notify\_radar}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00923}00923         \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__channel}{ieee80211\_channel}} *c)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00924}00924 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00925}00925         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__radar__event}{ieee80211\_radar\_event}} iev;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00926}00926         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00927}00927         \textcolor{keyword}{struct }ifnet *ifp;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00928}00928 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00929}00929         memset(\&iev, 0, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00930}00930         iev.\mbox{\hyperlink{structieee80211__radar__event_a05323baf9184d32f951a91709a9bb0f8}{iev\_flags}} = c-\/>\mbox{\hyperlink{structieee80211__channel_a32346d24003d7f5b90c4f2a76896a339}{ic\_flags}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00931}00931         iev.\mbox{\hyperlink{structieee80211__radar__event_a5ae633a49879f2cc4e3b90866eb59948}{iev\_freq}} = c-\/>\mbox{\hyperlink{structieee80211__channel_a7c3ddf3604165994ddd494d432cdef6d}{ic\_freq}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00932}00932         iev.\mbox{\hyperlink{structieee80211__radar__event_abe5ab64adb2c91e490a90561de046411}{iev\_ieee}} = c-\/>\mbox{\hyperlink{structieee80211__channel_a83c54c2ac98b83f9dfb2a8c390635bdf}{ic\_ieee}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00933}00933         TAILQ\_FOREACH(vap, \&ic-\/>ic\_vaps, iv\_next) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00934}00934                 ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00935}00935                 CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00936}00936                 rt\_ieee80211msg(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_afa2f3d3b7d3ae232029a13f97c207342}{RTM\_IEEE80211\_RADAR}}, \&iev, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00937}00937                 CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00938}00938         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00939}00939 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00940}00940 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00941}00941 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00942}\mbox{\hyperlink{ieee80211__freebsd_8c_ab816253086390c9a6ae38defb4d85ee2}{00942}} \mbox{\hyperlink{ieee80211__freebsd_8c_ab816253086390c9a6ae38defb4d85ee2}{ieee80211\_notify\_cac}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00943}00943         \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__channel}{ieee80211\_channel}} *c, \textcolor{keyword}{enum} \mbox{\hyperlink{ieee80211__proto_8h_a0ee40f07d7076dd87ebf1fa68fabd4e0}{ieee80211\_notify\_cac\_event}} type)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00944}00944 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00945}00945         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__cac__event}{ieee80211\_cac\_event}} iev;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00946}00946         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00947}00947         \textcolor{keyword}{struct }ifnet *ifp;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00948}00948 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00949}00949         memset(\&iev, 0, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00950}00950         iev.\mbox{\hyperlink{structieee80211__cac__event_a7de5b2600547ce4596705d3e3907faf4}{iev\_flags}} = c-\/>\mbox{\hyperlink{structieee80211__channel_a32346d24003d7f5b90c4f2a76896a339}{ic\_flags}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00951}00951         iev.\mbox{\hyperlink{structieee80211__cac__event_aab6cb452e5e887f6c02f5f84a8511069}{iev\_freq}} = c-\/>\mbox{\hyperlink{structieee80211__channel_a7c3ddf3604165994ddd494d432cdef6d}{ic\_freq}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00952}00952         iev.\mbox{\hyperlink{structieee80211__cac__event_aa3c73476b207ba98a9a9df84781fbfaa}{iev\_ieee}} = c-\/>\mbox{\hyperlink{structieee80211__channel_a83c54c2ac98b83f9dfb2a8c390635bdf}{ic\_ieee}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00953}00953         iev.\mbox{\hyperlink{structieee80211__cac__event_abb07825261daf53c24eb146f727c9772}{iev\_type}} = type;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00954}00954         TAILQ\_FOREACH(vap, \&ic-\/>ic\_vaps, iv\_next) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00955}00955                 ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00956}00956                 CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00957}00957                 rt\_ieee80211msg(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_a28c94b5ba208ceb7f797c750decc1e17}{RTM\_IEEE80211\_CAC}}, \&iev, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00958}00958                 CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00959}00959         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00960}00960 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00961}00961 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00962}00962 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00963}\mbox{\hyperlink{ieee80211__freebsd_8c_ae3498420b83db7b5fedbeb3467d6297a}{00963}} \mbox{\hyperlink{ieee80211__freebsd_8c_ae3498420b83db7b5fedbeb3467d6297a}{ieee80211\_notify\_node\_deauth}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00964}00964 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00965}00965         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00966}00966         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00967}00967 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00968}00968         \mbox{\hyperlink{ieee80211__var_8h_a9c90e846ab7773b17fc49706dd551293}{IEEE80211\_NOTE}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a87bcde8aea50348e7f882c47d3f646e7}{IEEE80211\_MSG\_NODE}}, ni, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}node deauth"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00969}00969 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00970}00970         \mbox{\hyperlink{ieee80211__freebsd_8c_aa7ed755e6c5a06e5d489237a9fb78732}{notify\_macaddr}}(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_acc2776cabed49bb647f7bc9bd629dc56}{RTM\_IEEE80211\_DEAUTH}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00971}00971 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00972}00972 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00973}00973 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00974}\mbox{\hyperlink{ieee80211__freebsd_8c_a32d0c660ede738294b421da26f9ac974}{00974}} \mbox{\hyperlink{ieee80211__freebsd_8c_a32d0c660ede738294b421da26f9ac974}{ieee80211\_notify\_node\_auth}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00975}00975 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00976}00976         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00977}00977         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00978}00978 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00979}00979         \mbox{\hyperlink{ieee80211__var_8h_a9c90e846ab7773b17fc49706dd551293}{IEEE80211\_NOTE}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a87bcde8aea50348e7f882c47d3f646e7}{IEEE80211\_MSG\_NODE}}, ni, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}node auth"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00980}00980 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00981}00981         \mbox{\hyperlink{ieee80211__freebsd_8c_aa7ed755e6c5a06e5d489237a9fb78732}{notify\_macaddr}}(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_ae00d3dc4b23b71d01f9a55fa2f57abf7}{RTM\_IEEE80211\_AUTH}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00982}00982 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00983}00983 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00984}00984 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00985}\mbox{\hyperlink{ieee80211__freebsd_8c_a5091351922fca368d85d5af124cf5719}{00985}} \mbox{\hyperlink{ieee80211__freebsd_8c_a5091351922fca368d85d5af124cf5719}{ieee80211\_notify\_country}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00986}00986         \textcolor{keyword}{const} uint8\_t bssid[\mbox{\hyperlink{ieee80211_8h_a453b082a0e442784729071fa4d844dde}{IEEE80211\_ADDR\_LEN}}], \textcolor{keyword}{const} uint8\_t cc[2])}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00987}00987 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00988}00988         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00989}00989         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__country__event}{ieee80211\_country\_event}} iev;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00990}00990 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00991}00991         memset(\&iev, 0, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00992}00992         \mbox{\hyperlink{ieee80211__var_8h_a132feedfddec77fa2d89fc0e1c9f25e9}{IEEE80211\_ADDR\_COPY}}(iev.\mbox{\hyperlink{structieee80211__country__event_a45086adc888976543c9a91cc34fbbeef}{iev\_addr}}, bssid);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00993}00993         iev.\mbox{\hyperlink{structieee80211__country__event_a37fa14793296f04724206c32b24b6f57}{iev\_cc}}[0] = cc[0];}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00994}00994         iev.\mbox{\hyperlink{structieee80211__country__event_a37fa14793296f04724206c32b24b6f57}{iev\_cc}}[1] = cc[1];}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00995}00995         CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00996}00996         rt\_ieee80211msg(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_a45e6bc795c7bfdbbdfa0e1ba2836e61d}{RTM\_IEEE80211\_COUNTRY}}, \&iev, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00997}00997         CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00998}00998 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l00999}00999 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01000}01000 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01001}\mbox{\hyperlink{ieee80211__freebsd_8c_ae1b897ff4cf12fd00e660a54d90111c6}{01001}} \mbox{\hyperlink{ieee80211__freebsd_8c_ae1b897ff4cf12fd00e660a54d90111c6}{ieee80211\_notify\_radio}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic, \textcolor{keywordtype}{int} state)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01002}01002 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01003}01003         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__radio__event}{ieee80211\_radio\_event}} iev;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01004}01004         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01005}01005         \textcolor{keyword}{struct }ifnet *ifp;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01006}01006 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01007}01007         memset(\&iev, 0, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01008}01008         iev.\mbox{\hyperlink{structieee80211__radio__event_a2ff1e386d40cfca084d23265d218928b}{iev\_state}} = state;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01009}01009         TAILQ\_FOREACH(vap, \&ic-\/>ic\_vaps, iv\_next) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01010}01010                 ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01011}01011                 CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01012}01012                 rt\_ieee80211msg(ifp, \mbox{\hyperlink{ieee80211__freebsd_8h_a780ebb3ed9c15d0724a6ab573590ab6f}{RTM\_IEEE80211\_RADIO}}, \&iev, \textcolor{keyword}{sizeof}(iev));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01013}01013                 CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01014}01014         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01015}01015 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01016}01016 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01017}01017 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01018}\mbox{\hyperlink{ieee80211__freebsd_8c_acf972fa0269ce0cdd7a1ea7fa605ab7a}{01018}} \mbox{\hyperlink{ieee80211__freebsd_8c_acf972fa0269ce0cdd7a1ea7fa605ab7a}{ieee80211\_notify\_ifnet\_change}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01019}01019 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01020}01020         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01021}01021 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01022}01022         \mbox{\hyperlink{ieee80211__var_8h_ac185ad5fc3b0a56653d4ea243a100a1c}{IEEE80211\_DPRINTF}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a96778153b3cff35e199a6212db70b5ac}{IEEE80211\_MSG\_DEBUG}}, \textcolor{stringliteral}{"{}\%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01023}01023             \textcolor{stringliteral}{"{}interface state change"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01024}01024 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01025}01025         CURVNET\_SET(ifp-\/>if\_vnet);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01026}01026         rt\_ifmsg(ifp);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01027}01027         CURVNET\_RESTORE();}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01028}01028 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01029}01029 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01030}01030 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01031}\mbox{\hyperlink{ieee80211__freebsd_8c_af39f349913d20831cec79a3d39b05588}{01031}} \mbox{\hyperlink{ieee80211__freebsd_8c_af39f349913d20831cec79a3d39b05588}{ieee80211\_load\_module}}(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *modname)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01032}01032 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01033}01033 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01034}01034 \textcolor{preprocessor}{\#ifdef notyet}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01035}01035         (void)kern\_kldload(curthread, modname, NULL);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01036}01036 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01037}01037         printf(\textcolor{stringliteral}{"{}\%s: load the \%s module by hand for now.\(\backslash\)n"{}}, \_\_func\_\_, modname);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01038}01038 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01039}01039 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01040}01040 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01041}\mbox{\hyperlink{ieee80211__freebsd_8c_a6dc748f7f559c2ccebda79b920ba06e3}{01041}} \textcolor{keyword}{static} eventhandler\_tag \mbox{\hyperlink{ieee80211__freebsd_8c_a6dc748f7f559c2ccebda79b920ba06e3}{wlan\_bpfevent}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01042}\mbox{\hyperlink{ieee80211__freebsd_8c_abae929225f6b4698fe19cdc3e54df0a9}{01042}} \textcolor{keyword}{static} eventhandler\_tag \mbox{\hyperlink{ieee80211__freebsd_8c_abae929225f6b4698fe19cdc3e54df0a9}{wlan\_ifllevent}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01043}01043 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01044}01044 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01045}\mbox{\hyperlink{ieee80211__freebsd_8c_a2d7d8dd3d97dce635e16c2c78aeb058c}{01045}} \mbox{\hyperlink{ieee80211__freebsd_8c_a2d7d8dd3d97dce635e16c2c78aeb058c}{bpf\_track}}(\textcolor{keywordtype}{void} *arg, \textcolor{keyword}{struct} ifnet *ifp, \textcolor{keywordtype}{int} dlt, \textcolor{keywordtype}{int} attach)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01046}01046 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01047}01047         \textcolor{comment}{/* NB: identify vap's by if\_init */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01048}01048         \textcolor{keywordflow}{if} (dlt == \mbox{\hyperlink{ieee80211__radiotap_8h_a04bcbf4bcef89eb8e13884d7fca257bc}{DLT\_IEEE802\_11\_RADIO}} \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01049}01049             ifp-\/>if\_init == \mbox{\hyperlink{ieee80211__proto_8c_aa243266a15865004bddaaedc0868fb7d}{ieee80211\_init}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01050}01050                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ifp-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01051}01051                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01052}01052 \textcolor{comment}{                 * Track bpf radiotap listener state.  We mark the vap}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01053}01053 \textcolor{comment}{                 * to indicate if any listener is present and the com}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01054}01054 \textcolor{comment}{                 * to indicate if any listener exists on any associated}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01055}01055 \textcolor{comment}{                 * vap.  This flag is used by drivers to prepare radiotap}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01056}01056 \textcolor{comment}{                 * state only when needed.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01057}01057 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01058}01058                 \textcolor{keywordflow}{if} (attach) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01059}01059                         \mbox{\hyperlink{ieee80211_8c_a6471271a4b3c4ed6ddd778c2b9e2c939}{ieee80211\_syncflag\_ext}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a9e8fab06ed2df0960f18e4afc77908e9}{IEEE80211\_FEXT\_BPF}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01060}01060                         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a22de8996244412911c0015d499eab3fb}{iv\_opmode}} == \mbox{\hyperlink{__ieee80211_8h_ab624e38122a844713ca48c7307772ed1af8306ebf9aeeade67a9f1f9d1acaa80f}{IEEE80211\_M\_MONITOR}})}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01061}01061                                 atomic\_add\_int(\&vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}}-\/>\mbox{\hyperlink{structieee80211com_a46f7f58b91b2de5c5d9d0edf044d70bb}{ic\_montaps}}, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01062}01062                 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (!bpf\_peers\_present(vap-\/>\mbox{\hyperlink{structieee80211vap_ad111a7178e9757a3bd2405b46a927ebf}{iv\_rawbpf}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01063}01063                         \mbox{\hyperlink{ieee80211_8c_a6471271a4b3c4ed6ddd778c2b9e2c939}{ieee80211\_syncflag\_ext}}(vap, -\/\mbox{\hyperlink{ieee80211__var_8h_a9e8fab06ed2df0960f18e4afc77908e9}{IEEE80211\_FEXT\_BPF}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01064}01064                         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a22de8996244412911c0015d499eab3fb}{iv\_opmode}} == \mbox{\hyperlink{__ieee80211_8h_ab624e38122a844713ca48c7307772ed1af8306ebf9aeeade67a9f1f9d1acaa80f}{IEEE80211\_M\_MONITOR}})}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01065}01065                                 atomic\_subtract\_int(\&vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}}-\/>\mbox{\hyperlink{structieee80211com_a46f7f58b91b2de5c5d9d0edf044d70bb}{ic\_montaps}}, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01066}01066                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01067}01067         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01068}01068 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01069}01069 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01070}01070 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01071}01071 \textcolor{comment}{ * Change MAC address on the vap (if was not started).}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01072}01072 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01073}01073 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01074}\mbox{\hyperlink{ieee80211__freebsd_8c_a974b1e70499f27079f80ef04420bfd50}{01074}} \mbox{\hyperlink{ieee80211__freebsd_8c_a974b1e70499f27079f80ef04420bfd50}{wlan\_iflladdr}}(\textcolor{keywordtype}{void} *arg \_\_unused, \textcolor{keyword}{struct} ifnet *ifp)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01075}01075 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01076}01076         \textcolor{comment}{/* NB: identify vap's by if\_init */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01077}01077         \textcolor{keywordflow}{if} (ifp-\/>if\_init == \mbox{\hyperlink{ieee80211__proto_8c_aa243266a15865004bddaaedc0868fb7d}{ieee80211\_init}} \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01078}01078             (ifp-\/>if\_flags \& IFF\_UP) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01079}01079                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ifp-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01080}01080 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01081}01081                 \mbox{\hyperlink{ieee80211__var_8h_a132feedfddec77fa2d89fc0e1c9f25e9}{IEEE80211\_ADDR\_COPY}}(vap-\/>\mbox{\hyperlink{structieee80211vap_a31bbdbec1c2fd8f9aba7146d23cbc895}{iv\_myaddr}}, IF\_LLADDR(ifp));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01082}01082         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01083}01083 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01084}01084 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01085}01085 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01086}01086 \textcolor{comment}{ * Fetch the VAP name.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01087}01087 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01088}01088 \textcolor{comment}{ * This returns a const char pointer suitable for debugging,}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01089}01089 \textcolor{comment}{ * but don't expect it to stick around for much longer.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01090}01090 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01091}01091 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01092}\mbox{\hyperlink{ieee80211__freebsd_8c_aea26d86d1f447b44c5c6226725d6f03a}{01092}} \mbox{\hyperlink{ieee80211__freebsd_8c_aea26d86d1f447b44c5c6226725d6f03a}{ieee80211\_get\_vap\_ifname}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01093}01093 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01094}01094         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}} == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01095}01095                 \textcolor{keywordflow}{return} \textcolor{stringliteral}{"{}(none)"{}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01096}01096         \textcolor{keywordflow}{return} vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}}-\/>if\_xname;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01097}01097 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01098}01098 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01099}01099 \textcolor{preprocessor}{\#ifdef DEBUGNET}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01100}01100 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01101}01101 ieee80211\_debugnet\_init(\textcolor{keyword}{struct} ifnet *ifp, \textcolor{keywordtype}{int} *nrxr, \textcolor{keywordtype}{int} *ncl, \textcolor{keywordtype}{int} *clsize)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01102}01102 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01103}01103         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01104}01104         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01105}01105 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01106}01106         vap = if\_getsoftc(ifp);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01107}01107         ic = vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01108}01108 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01109}01109         \mbox{\hyperlink{ieee80211__freebsd_8h_ab3ce87ea4503405dd90019381065c9f6}{IEEE80211\_LOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01110}01110         ic-\/>\mbox{\hyperlink{structieee80211com_aee5c0aa2f675d1868ad1d1fa1c8419f7}{ic\_debugnet\_meth}}-\/>dn8\_init(ic, nrxr, ncl, clsize);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01111}01111         \mbox{\hyperlink{ieee80211__freebsd_8h_a58240f22e885f3d421da47c2bc376815}{IEEE80211\_UNLOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01112}01112 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01113}01113 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01114}01114 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01115}01115 ieee80211\_debugnet\_event(\textcolor{keyword}{struct} ifnet *ifp, \textcolor{keyword}{enum} debugnet\_ev ev)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01116}01116 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01117}01117         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01118}01118         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01119}01119 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01120}01120         vap = if\_getsoftc(ifp);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01121}01121         ic = vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01122}01122 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01123}01123         \mbox{\hyperlink{ieee80211__freebsd_8h_ab3ce87ea4503405dd90019381065c9f6}{IEEE80211\_LOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01124}01124         ic-\/>\mbox{\hyperlink{structieee80211com_aee5c0aa2f675d1868ad1d1fa1c8419f7}{ic\_debugnet\_meth}}-\/>dn8\_event(ic, ev);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01125}01125         \mbox{\hyperlink{ieee80211__freebsd_8h_a58240f22e885f3d421da47c2bc376815}{IEEE80211\_UNLOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01126}01126 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01127}01127 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01128}01128 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01129}01129 ieee80211\_debugnet\_transmit(\textcolor{keyword}{struct} ifnet *ifp, \textcolor{keyword}{struct} mbuf *m)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01130}01130 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01131}01131         \textcolor{keywordflow}{return} (\mbox{\hyperlink{ieee80211__output_8c_aaf8ed0d3be4bb85784584757d9349ada}{ieee80211\_vap\_transmit}}(ifp, m));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01132}01132 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01133}01133 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01134}01134 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01135}01135 ieee80211\_debugnet\_poll(\textcolor{keyword}{struct} ifnet *ifp, \textcolor{keywordtype}{int} count)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01136}01136 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01137}01137         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01138}01138         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01139}01139 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01140}01140         vap = if\_getsoftc(ifp);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01141}01141         ic = vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01142}01142 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01143}01143         \textcolor{keywordflow}{return} (ic-\/>\mbox{\hyperlink{structieee80211com_aee5c0aa2f675d1868ad1d1fa1c8419f7}{ic\_debugnet\_meth}}-\/>dn8\_poll(ic, count));}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01144}01144 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01145}01145 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01146}01146 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01147}01147 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01148}01148 \textcolor{comment}{ * Module glue.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01149}01149 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01150}01150 \textcolor{comment}{ * NB: the module name is "{}wlan"{} for compatibility with NetBSD.}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01151}01151 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01152}01152 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01153}\mbox{\hyperlink{ieee80211__freebsd_8c_ae823211f039aa31ee27c7d8a1be7b5a9}{01153}} \mbox{\hyperlink{ieee80211__freebsd_8c_ae823211f039aa31ee27c7d8a1be7b5a9}{wlan\_modevent}}(module\_t mod, \textcolor{keywordtype}{int} type, \textcolor{keywordtype}{void} *unused)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01154}01154 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01155}01155         \textcolor{keywordflow}{switch} (type) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01156}01156         \textcolor{keywordflow}{case} MOD\_LOAD:}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01157}01157                 \textcolor{keywordflow}{if} (bootverbose)}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01158}01158                         printf(\textcolor{stringliteral}{"{}wlan: <802.11 Link Layer>\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01159}01159                 \mbox{\hyperlink{ieee80211__freebsd_8c_a6dc748f7f559c2ccebda79b920ba06e3}{wlan\_bpfevent}} = EVENTHANDLER\_REGISTER(\mbox{\hyperlink{ieee80211__freebsd_8c_a2d7d8dd3d97dce635e16c2c78aeb058c}{bpf\_track}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01160}01160                     \mbox{\hyperlink{ieee80211__freebsd_8c_a2d7d8dd3d97dce635e16c2c78aeb058c}{bpf\_track}}, 0, EVENTHANDLER\_PRI\_ANY);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01161}01161                 \mbox{\hyperlink{ieee80211__freebsd_8c_abae929225f6b4698fe19cdc3e54df0a9}{wlan\_ifllevent}} = EVENTHANDLER\_REGISTER(iflladdr\_event,}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01162}01162                     \mbox{\hyperlink{ieee80211__freebsd_8c_a974b1e70499f27079f80ef04420bfd50}{wlan\_iflladdr}}, NULL, EVENTHANDLER\_PRI\_ANY);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01163}01163                 \mbox{\hyperlink{ieee80211__freebsd_8c_ad10be290910d5cfd8cd7fc4043706536}{wlan\_cloner}} = if\_clone\_simple(\mbox{\hyperlink{ieee80211__freebsd_8c_aee8ab5cc9c8aca0bcee2376fb5a3b174}{wlanname}}, \mbox{\hyperlink{ieee80211__freebsd_8c_abadc1cd2ec3d5e2127661ce25ba5fef0}{wlan\_clone\_create}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01164}01164                     \mbox{\hyperlink{ieee80211__freebsd_8c_aed14feb0857efe5d0fd4932fd263f26a}{wlan\_clone\_destroy}}, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01165}01165                 \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01166}01166         \textcolor{keywordflow}{case} MOD\_UNLOAD:}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01167}01167                 if\_clone\_detach(\mbox{\hyperlink{ieee80211__freebsd_8c_ad10be290910d5cfd8cd7fc4043706536}{wlan\_cloner}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01168}01168                 EVENTHANDLER\_DEREGISTER(\mbox{\hyperlink{ieee80211__freebsd_8c_a2d7d8dd3d97dce635e16c2c78aeb058c}{bpf\_track}}, \mbox{\hyperlink{ieee80211__freebsd_8c_a6dc748f7f559c2ccebda79b920ba06e3}{wlan\_bpfevent}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01169}01169                 EVENTHANDLER\_DEREGISTER(iflladdr\_event, \mbox{\hyperlink{ieee80211__freebsd_8c_abae929225f6b4698fe19cdc3e54df0a9}{wlan\_ifllevent}});}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01170}01170                 \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01171}01171         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01172}01172         \textcolor{keywordflow}{return} EINVAL;}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01173}01173 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01174}01174 }
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01175}\mbox{\hyperlink{ieee80211__freebsd_8c_aaf06a08f99293335b486c8736e6f52a9}{01175}} \textcolor{keyword}{static} moduledata\_t \mbox{\hyperlink{ieee80211__freebsd_8c_aaf06a08f99293335b486c8736e6f52a9}{wlan\_mod}} = \{}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01176}01176         \mbox{\hyperlink{ieee80211__freebsd_8c_aee8ab5cc9c8aca0bcee2376fb5a3b174}{wlanname}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01177}01177         \mbox{\hyperlink{ieee80211__freebsd_8c_ae823211f039aa31ee27c7d8a1be7b5a9}{wlan\_modevent}},}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01178}01178         0}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01179}01179 \};}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01180}\mbox{\hyperlink{ieee80211__freebsd_8c_abb7a832cd1d771a89f48d4064d4935c8}{01180}} \mbox{\hyperlink{ieee80211__freebsd_8c_abb7a832cd1d771a89f48d4064d4935c8}{DECLARE\_MODULE}}(wlan, \mbox{\hyperlink{ieee80211__freebsd_8c_aaf06a08f99293335b486c8736e6f52a9}{wlan\_mod}}, SI\_SUB\_DRIVERS, SI\_ORDER\_FIRST);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01181}\mbox{\hyperlink{ieee80211__freebsd_8c_a1343effb1b0a9e922f3bc6ff7622ff20}{01181}} \mbox{\hyperlink{ieee80211__freebsd_8c_a1343effb1b0a9e922f3bc6ff7622ff20}{MODULE\_VERSION}}(wlan, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01182}\mbox{\hyperlink{ieee80211__freebsd_8c_ae3bbd9f7342f71466ae1c3640976520c}{01182}} \mbox{\hyperlink{ieee80211__freebsd_8c_ae3bbd9f7342f71466ae1c3640976520c}{MODULE\_DEPEND}}(wlan, ether, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01183}01183 \textcolor{preprocessor}{\#ifdef  IEEE80211\_ALQ}}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01184}01184 \mbox{\hyperlink{ieee80211__freebsd_8c_ae3bbd9f7342f71466ae1c3640976520c}{MODULE\_DEPEND}}(wlan, alq, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__freebsd_8c_source_l01185}01185 \textcolor{preprocessor}{\#endif  }\textcolor{comment}{/* IEEE80211\_ALQ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
