\hypertarget{ieee80211__sta_8c_source}{}\doxysection{ieee80211\+\_\+sta.\+c}
\label{ieee80211__sta_8c_source}\index{net80211/ieee80211\_sta.c@{net80211/ieee80211\_sta.c}}
\mbox{\hyperlink{ieee80211__sta_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2007-\/2008 Sam Leffler, Errno Consulting}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00005}00005 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00006}00006 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00007}00007 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00008}00008 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00009}00009 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00010}00010 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00011}00011 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00012}00012 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00013}00013 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00014}00014 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00015}00015 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00016}00016 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00017}00017 \textcolor{comment}{ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00018}00018 \textcolor{comment}{ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00019}00019 \textcolor{comment}{ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00020}00020 \textcolor{comment}{ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00021}00021 \textcolor{comment}{ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00022}00022 \textcolor{comment}{ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00023}00023 \textcolor{comment}{ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00024}00024 \textcolor{comment}{ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00025}00025 \textcolor{comment}{ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00026}00026 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00027}00027 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00028}00028 \textcolor{preprocessor}{\#include <sys/cdefs.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00029}00029 \textcolor{preprocessor}{\#ifdef \_\_FreeBSD\_\_}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00030}\mbox{\hyperlink{ieee80211__sta_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{00030}} \mbox{\hyperlink{ieee80211__sta_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\_\_FBSDID}}(\textcolor{stringliteral}{"{}\$FreeBSD\$"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00031}00031 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00032}00032 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00033}00033 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00034}00034 \textcolor{comment}{ * IEEE 802.11 Station mode support.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00035}00035 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00036}00036 \textcolor{preprocessor}{\#include "{}opt\_inet.h"{}}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00037}00037 \textcolor{preprocessor}{\#include "{}opt\_wlan.h"{}}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00039}00039 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00040}00040 \textcolor{preprocessor}{\#include <sys/systm.h>} }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00041}00041 \textcolor{preprocessor}{\#include <sys/mbuf.h>}   }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00044}00044 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/socket.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/sockio.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <sys/endian.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <sys/errno.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00049}00049 \textcolor{preprocessor}{\#include <sys/proc.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00051}00051 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <net/if.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <net/if\_media.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <net/if\_llc.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00055}00055 \textcolor{preprocessor}{\#include <net/if\_dl.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <net/if\_var.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00057}00057 \textcolor{preprocessor}{\#include <net/ethernet.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00058}00058 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00059}00059 \textcolor{preprocessor}{\#include <net/bpf.h>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00060}00060 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00061}00061 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{ieee80211__var_8h}{net80211/ieee80211\_var.h}}>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00062}00062 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{ieee80211__sta_8h}{net80211/ieee80211\_sta.h}}>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00063}00063 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{ieee80211__input_8h}{net80211/ieee80211\_input.h}}>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00064}00064 \textcolor{preprocessor}{\#ifdef IEEE80211\_SUPPORT\_SUPERG}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00065}00065 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{ieee80211__superg_8h}{net80211/ieee80211\_superg.h}}>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00066}00066 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00067}00067 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{ieee80211__ratectl_8h}{net80211/ieee80211\_ratectl.h}}>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00068}00068 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{ieee80211__sta_8h}{net80211/ieee80211\_sta.h}}>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00069}00069 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{ieee80211__vht_8h}{net80211/ieee80211\_vht.h}}>}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00070}00070 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00071}\mbox{\hyperlink{ieee80211__sta_8c_a8be34b24b74d8d6073297c97bf06eff7}{00071}} \textcolor{preprocessor}{\#define IEEE80211\_RATE2MBS(r)   (((r) \& IEEE80211\_RATE\_VAL) / 2)}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00072}00072 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00073}00073 \textcolor{keyword}{static}  \textcolor{keywordtype}{void} \mbox{\hyperlink{ieee80211__sta_8c_a8ab4763086d5bb1895b33177766f1a51}{sta\_vattach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00074}00074 \textcolor{keyword}{static}  \textcolor{keywordtype}{void} \mbox{\hyperlink{ieee80211__sta_8c_a813ef6eee33f3f711df34db55abf4b95}{sta\_beacon\_miss}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00075}00075 \textcolor{keyword}{static}  \textcolor{keywordtype}{int} \mbox{\hyperlink{ieee80211__sta_8c_a96b1202bc23f8806aa95ee4c2e5af30b}{sta\_newstate}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *, \textcolor{keyword}{enum} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944}{ieee80211\_state}}, \textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00076}00076 \textcolor{keyword}{static}  \textcolor{keywordtype}{int} \mbox{\hyperlink{ieee80211__sta_8c_a7b7d3a01485a11a2962642b7220f68a6}{sta\_input}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *, \textcolor{keyword}{struct} mbuf *,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00077}00077             \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} *, \textcolor{keywordtype}{int}, \textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00078}00078 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{ieee80211__sta_8c_a4a628f1b17c94c80828a3dc019d50ee7}{sta\_recv\_mgmt}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *, \textcolor{keyword}{struct} mbuf *,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00079}00079             \textcolor{keywordtype}{int} subtype, \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} *, \textcolor{keywordtype}{int} rssi, \textcolor{keywordtype}{int} nf);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00080}00080 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{ieee80211__sta_8c_acd22b45840a3ca42f7832d494cd1b832}{sta\_recv\_ctl}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *, \textcolor{keyword}{struct} mbuf *, \textcolor{keywordtype}{int} subtype);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00081}00081 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00082}00082 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00083}\mbox{\hyperlink{ieee80211__sta_8c_a581a11e06fc771bf04b50c453145f13b}{00083}} \mbox{\hyperlink{ieee80211__sta_8c_a581a11e06fc771bf04b50c453145f13b}{ieee80211\_sta\_attach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00084}00084 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00085}00085         ic-\/>\mbox{\hyperlink{structieee80211com_a310b0d3a36b0d5c9a322e6a291d9652f}{ic\_vattach}}[\mbox{\hyperlink{__ieee80211_8h_ab624e38122a844713ca48c7307772ed1a6322fdc3044a505e723f3da37f9a6653}{IEEE80211\_M\_STA}}] = \mbox{\hyperlink{ieee80211__sta_8c_a8ab4763086d5bb1895b33177766f1a51}{sta\_vattach}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00086}00086 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00087}00087 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00088}00088 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00089}\mbox{\hyperlink{ieee80211__sta_8c_a11b190716ba77b17b53e164cd4401401}{00089}} \mbox{\hyperlink{ieee80211__sta_8c_a11b190716ba77b17b53e164cd4401401}{ieee80211\_sta\_detach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00090}00090 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00091}00091 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00092}00092 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00093}00093 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00094}\mbox{\hyperlink{ieee80211__sta_8c_aee13062799fa8b2ea616cdbce586a0ec}{00094}} \mbox{\hyperlink{ieee80211__sta_8c_aee13062799fa8b2ea616cdbce586a0ec}{sta\_vdetach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00095}00095 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00096}00096 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00097}00097 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00098}00098 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00099}\mbox{\hyperlink{ieee80211__sta_8c_a8ab4763086d5bb1895b33177766f1a51}{00099}} \mbox{\hyperlink{ieee80211__sta_8c_a8ab4763086d5bb1895b33177766f1a51}{sta\_vattach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00100}00100 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00101}00101         vap-\/>\mbox{\hyperlink{structieee80211vap_afb26bef583b00e4d02e4854676a80cc1}{iv\_newstate}} = \mbox{\hyperlink{ieee80211__sta_8c_a96b1202bc23f8806aa95ee4c2e5af30b}{sta\_newstate}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00102}00102         vap-\/>\mbox{\hyperlink{structieee80211vap_ab225a61914234523f0f1f26e4759b3c5}{iv\_input}} = \mbox{\hyperlink{ieee80211__sta_8c_a7b7d3a01485a11a2962642b7220f68a6}{sta\_input}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00103}00103         vap-\/>\mbox{\hyperlink{structieee80211vap_a5079a18ecb374649e03dd6a858193316}{iv\_recv\_mgmt}} = \mbox{\hyperlink{ieee80211__sta_8c_a4a628f1b17c94c80828a3dc019d50ee7}{sta\_recv\_mgmt}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00104}00104         vap-\/>\mbox{\hyperlink{structieee80211vap_aae790d681e7c405a15179ec7f9b386d7}{iv\_recv\_ctl}} = \mbox{\hyperlink{ieee80211__sta_8c_acd22b45840a3ca42f7832d494cd1b832}{sta\_recv\_ctl}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00105}00105         vap-\/>\mbox{\hyperlink{structieee80211vap_a8bbc49a111f65bc934689b0d97beaf19}{iv\_opdetach}} = \mbox{\hyperlink{ieee80211__sta_8c_aee13062799fa8b2ea616cdbce586a0ec}{sta\_vdetach}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00106}00106         vap-\/>\mbox{\hyperlink{structieee80211vap_a980e90734b0aa358f83bfba8ec2c8019}{iv\_bmiss}} = \mbox{\hyperlink{ieee80211__sta_8c_a813ef6eee33f3f711df34db55abf4b95}{sta\_beacon\_miss}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00107}00107 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00108}00108 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00109}00109 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00110}00110 \textcolor{comment}{ * Handle a beacon miss event.  The common code filters out}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00111}00111 \textcolor{comment}{ * spurious events that can happen when scanning and/or before}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00112}00112 \textcolor{comment}{ * reaching RUN state.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00113}00113 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00114}00114 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00115}\mbox{\hyperlink{ieee80211__sta_8c_a813ef6eee33f3f711df34db55abf4b95}{00115}} \mbox{\hyperlink{ieee80211__sta_8c_a813ef6eee33f3f711df34db55abf4b95}{sta\_beacon\_miss}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00116}00116 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00117}00117         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00118}00118 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00119}00119         \mbox{\hyperlink{ieee80211__freebsd_8h_a92da71d7f298d51a339c7d06a610b947}{IEEE80211\_LOCK\_ASSERT}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00120}00120 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00121}00121         KASSERT((ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a3c8d69c1fb5cadc6d9f00e9832355e6d}{IEEE80211\_F\_SCAN}}) == 0, (\textcolor{stringliteral}{"{}scanning"{}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00122}00122         KASSERT(vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} >= \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00123}00123             (\textcolor{stringliteral}{"{}wrong state \%s"{}}, \mbox{\hyperlink{ieee80211__proto_8c_a7743c46d5b77e40c7abac1417ee35dd8}{ieee80211\_state\_name}}[vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}}]));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00124}00124 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00125}00125         \mbox{\hyperlink{ieee80211__var_8h_ac185ad5fc3b0a56653d4ea243a100a1c}{IEEE80211\_DPRINTF}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0b669672e833a8e854063e445080fb59}{IEEE80211\_MSG\_STATE}} | \mbox{\hyperlink{ieee80211__var_8h_a96778153b3cff35e199a6212db70b5ac}{IEEE80211\_MSG\_DEBUG}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00126}00126             \textcolor{stringliteral}{"{}beacon miss, mode \%s state \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00127}00127             \mbox{\hyperlink{ieee80211__proto_8c_ae1c1a39f8537e61fcb6a1fc1b8b7c2fe}{ieee80211\_opmode\_name}}[vap-\/>\mbox{\hyperlink{structieee80211vap_a22de8996244412911c0015d499eab3fb}{iv\_opmode}}],}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00128}00128             \mbox{\hyperlink{ieee80211__proto_8c_a7743c46d5b77e40c7abac1417ee35dd8}{ieee80211\_state\_name}}[vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}}]);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00129}00129 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00130}00130         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} == \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a33b722312714d2b28d10cc6d8ccb5d2d}{IEEE80211\_S\_CSA}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00131}00131                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00132}00132 \textcolor{comment}{                 * A Channel Switch is pending; assume we missed the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00133}00133 \textcolor{comment}{                 * beacon that would've completed the process and just}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00134}00134 \textcolor{comment}{                 * force the switch.  If we made a mistake we'll not}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00135}00135 \textcolor{comment}{                 * find the AP on the new channel and fall back to a}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00136}00136 \textcolor{comment}{                 * normal scan.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00137}00137 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00138}00138                 \mbox{\hyperlink{ieee80211__proto_8c_a9ea341668eefce2701e145f8763b3980}{ieee80211\_csa\_completeswitch}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00139}00139                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00140}00140         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00141}00141         \textcolor{keywordflow}{if} (++vap-\/>\mbox{\hyperlink{structieee80211vap_a6faad160b0fb7dee58f4cb9fd06282d0}{iv\_bmiss\_count}} < vap-\/>\mbox{\hyperlink{structieee80211vap_ab7b7788cb3d84f8db505430345417d2d}{iv\_bmiss\_max}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00142}00142                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00143}00143 \textcolor{comment}{                 * Send a directed probe req before falling back to a}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00144}00144 \textcolor{comment}{                 * scan; if we receive a response ic\_bmiss\_count will}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00145}00145 \textcolor{comment}{                 * be reset.  Some cards mistakenly report beacon miss}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00146}00146 \textcolor{comment}{                 * so this avoids the expensive scan if the ap is}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00147}00147 \textcolor{comment}{                 * still there.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00148}00148 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00149}00149                 \mbox{\hyperlink{ieee80211__output_8c_a6d9bd6522095e2bec01e8683a9705860}{ieee80211\_send\_probereq}}(vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}, vap-\/>\mbox{\hyperlink{structieee80211vap_a31bbdbec1c2fd8f9aba7146d23cbc895}{iv\_myaddr}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00150}00150                         vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}-\/>\mbox{\hyperlink{structieee80211__node_a45e68c78c549ae07131b2e0912e2f268}{ni\_bssid}}, vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}-\/>\mbox{\hyperlink{structieee80211__node_a45e68c78c549ae07131b2e0912e2f268}{ni\_bssid}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00151}00151                         vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}-\/>\mbox{\hyperlink{structieee80211__node_afbd7e0849ef7b5eef7e21b668c0d694e}{ni\_essid}}, vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}-\/>\mbox{\hyperlink{structieee80211__node_a42a99e59d304a1864e679edb6a9820b5}{ni\_esslen}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00152}00152                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00153}00153         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00154}00154 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00155}00155         callout\_stop(\&vap-\/>\mbox{\hyperlink{structieee80211vap_aa702c7c8a4e11cba20ca270a087467e4}{iv\_swbmiss}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00156}00156         vap-\/>\mbox{\hyperlink{structieee80211vap_a6faad160b0fb7dee58f4cb9fd06282d0}{iv\_bmiss\_count}} = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00157}00157         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_af6758ddb2c64839aa7ddea9f7f04cb85}{is\_beacon\_miss}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00158}00158         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a1c0af83005a3526af3c08237a4bbefb8}{iv\_roaming}} == \mbox{\hyperlink{__ieee80211_8h_a7b440d2c71f273e206865245ccc261c6ac9dfc177be70ca7732ec3559a1aa063a}{IEEE80211\_ROAMING\_AUTO}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00159}00159 \textcolor{preprocessor}{\#ifdef IEEE80211\_SUPPORT\_SUPERG}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00160}00160 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00161}00161                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00162}00162 \textcolor{comment}{                 * If we receive a beacon miss interrupt when using}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00163}00163 \textcolor{comment}{                 * dynamic turbo, attempt to switch modes before}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00164}00164 \textcolor{comment}{                 * reassociating.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00165}00165 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00166}00166                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__var_8h_ac35631c14b70b6c6496781310224b730}{IEEE80211\_ATH\_CAP}}(vap, vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}, \mbox{\hyperlink{ieee80211__node_8h_a4efd919f28e3820b015b40fd9d640bfb}{IEEE80211\_NODE\_TURBOP}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00167}00167                         \mbox{\hyperlink{ieee80211__proto_8h_a1ce4f5ac65ca6a487e99b9771e64f044}{ieee80211\_dturbo\_switch}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00168}00168                             ic-\/>\mbox{\hyperlink{structieee80211com_a02f3e4873209009edbcdb3bc890ae87d}{ic\_bsschan}}-\/>\mbox{\hyperlink{structieee80211__channel_a32346d24003d7f5b90c4f2a76896a339}{ic\_flags}} \string^ \mbox{\hyperlink{__ieee80211_8h_aa04444d585a500c96210ff6a1c6b2a53}{IEEE80211\_CHAN\_TURBO}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00169}00169 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00170}00170                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00171}00171 \textcolor{comment}{                 * Try to reassociate before scanning for a new ap.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00172}00172 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00173}00173                 \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00174}00174         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00175}00175                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00176}00176 \textcolor{comment}{                 * Somebody else is controlling state changes (e.g.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00177}00177 \textcolor{comment}{                 * a user-\/mode app) don't do anything that would}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00178}00178 \textcolor{comment}{                 * confuse them; just drop into scan mode so they'll}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00179}00179 \textcolor{comment}{                 * notified of the state change and given control.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00180}00180 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00181}00181                 \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}}, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00182}00182         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00183}00183 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00184}00184 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00185}00185 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00186}00186 \textcolor{comment}{ * Handle deauth with reason.  We retry only for}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00187}00187 \textcolor{comment}{ * the cases where we might succeed.  Otherwise}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00188}00188 \textcolor{comment}{ * we downgrade the ap and scan.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00189}00189 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00190}00190 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00191}\mbox{\hyperlink{ieee80211__sta_8c_a5d230b48a4de81a4e7304dc66b95552e}{00191}} \mbox{\hyperlink{ieee80211__sta_8c_a5d230b48a4de81a4e7304dc66b95552e}{sta\_authretry}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni, \textcolor{keywordtype}{int} reason)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00192}00192 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00193}00193         \textcolor{keywordflow}{switch} (reason) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00194}00194         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06ca82b2ea44419daeb82dbc7b8e46eb48af}{IEEE80211\_STATUS\_SUCCESS}}:          \textcolor{comment}{/* NB: MLME assoc */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00195}00195         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06ca111df9a28a9c6e78794ab38d05296fd0}{IEEE80211\_STATUS\_TIMEOUT}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00196}00196         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06caf759aad77374a271c55a86813ad36b25}{IEEE80211\_REASON\_ASSOC\_EXPIRE}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00197}00197         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06caa081627b8412af3e3c18a4a972a6e1ff}{IEEE80211\_REASON\_NOT\_AUTHED}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00198}00198         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06cab95158c75cf0f11c44cb32d35eeb6350}{IEEE80211\_REASON\_NOT\_ASSOCED}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00199}00199         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06cae78300fe68190ee84c3633c2fcb02426}{IEEE80211\_REASON\_ASSOC\_LEAVE}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00200}00200         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06ca9764e6aa53e43fa426af9371d33771a6}{IEEE80211\_REASON\_ASSOC\_NOT\_AUTHED}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00201}00201                 \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni, \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00202}00202                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00203}00203         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00204}00204                 \mbox{\hyperlink{ieee80211__scan_8c_a8937a3274e54b1d589b3ebd783a8b27f}{ieee80211\_scan\_assoc\_fail}}(vap, vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, reason);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00205}00205                 \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a1c0af83005a3526af3c08237a4bbefb8}{iv\_roaming}} == \mbox{\hyperlink{__ieee80211_8h_a7b440d2c71f273e206865245ccc261c6ac9dfc177be70ca7732ec3559a1aa063a}{IEEE80211\_ROAMING\_AUTO}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00206}00206                         \mbox{\hyperlink{ieee80211__scan_8c_ac5865fafa48f64b02212fb561735ef28}{ieee80211\_check\_scan\_current}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00207}00207                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00208}00208         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00209}00209 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00210}00210 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00211}00211 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00212}\mbox{\hyperlink{ieee80211__sta_8c_ad257da619bf8cbd46775aff662abbf1b}{00212}} \mbox{\hyperlink{ieee80211__sta_8c_ad257da619bf8cbd46775aff662abbf1b}{sta\_swbmiss\_start}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00213}00213 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00214}00214 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00215}00215         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a74aac287d91c2dd2da91ba4539d5fd43}{iv\_flags\_ext}} \& \mbox{\hyperlink{ieee80211__var_8h_a7bc792d3858f084dbc93fb7ff68adc46}{IEEE80211\_FEXT\_SWBMISS}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00216}00216                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00217}00217 \textcolor{comment}{                 * Start s/w beacon miss timer for devices w/o}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00218}00218 \textcolor{comment}{                 * hardware support.  We fudge a bit here since}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00219}00219 \textcolor{comment}{                 * we're doing this in software.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00220}00220 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00221}00221                 vap-\/>\mbox{\hyperlink{structieee80211vap_ad53a0a99e741fa8695ed5aaf54f91fae}{iv\_swbmiss\_period}} = \mbox{\hyperlink{ieee80211__var_8h_a66b79b497749c15e14faefd214268916}{IEEE80211\_TU\_TO\_TICKS}}(}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00222}00222                     2 * vap-\/>\mbox{\hyperlink{structieee80211vap_a15864e30343fc45e3bf7c059eaa7a9c1}{iv\_bmissthreshold}} * vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}-\/>\mbox{\hyperlink{structieee80211__node_a7549f5f54f1cb8edbf40fc0af17aa9e2}{ni\_intval}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00223}00223                 vap-\/>\mbox{\hyperlink{structieee80211vap_a261d2105dde9edc8760516680d5061cc}{iv\_swbmiss\_count}} = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00224}00224                 callout\_reset(\&vap-\/>\mbox{\hyperlink{structieee80211vap_aa702c7c8a4e11cba20ca270a087467e4}{iv\_swbmiss}}, vap-\/>\mbox{\hyperlink{structieee80211vap_ad53a0a99e741fa8695ed5aaf54f91fae}{iv\_swbmiss\_period}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00225}00225                     \mbox{\hyperlink{ieee80211__proto_8c_a2a3ee4a3c393f763728c022ff5c767bb}{ieee80211\_swbmiss}}, vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00226}00226         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00227}00227 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00228}00228 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00229}00229 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00230}00230 \textcolor{comment}{ * IEEE80211\_M\_STA vap state machine handler.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00231}00231 \textcolor{comment}{ * This routine handles the main states in the 802.11 protocol.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00232}00232 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00233}00233 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00234}\mbox{\hyperlink{ieee80211__sta_8c_a96b1202bc23f8806aa95ee4c2e5af30b}{00234}} \mbox{\hyperlink{ieee80211__sta_8c_a96b1202bc23f8806aa95ee4c2e5af30b}{sta\_newstate}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap, \textcolor{keyword}{enum} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944}{ieee80211\_state}} nstate, \textcolor{keywordtype}{int} arg)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00235}00235 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00236}00236         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00237}00237         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00238}00238         \textcolor{keyword}{enum} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944}{ieee80211\_state}} ostate;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00239}00239 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00240}00240         \mbox{\hyperlink{ieee80211__freebsd_8h_a92da71d7f298d51a339c7d06a610b947}{IEEE80211\_LOCK\_ASSERT}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00241}00241 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00242}00242         ostate = vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00243}00243         \mbox{\hyperlink{ieee80211__var_8h_ac185ad5fc3b0a56653d4ea243a100a1c}{IEEE80211\_DPRINTF}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0b669672e833a8e854063e445080fb59}{IEEE80211\_MSG\_STATE}}, \textcolor{stringliteral}{"{}\%s: \%s -\/> \%s (\%d)\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00244}00244             \_\_func\_\_, \mbox{\hyperlink{ieee80211__proto_8c_a7743c46d5b77e40c7abac1417ee35dd8}{ieee80211\_state\_name}}[ostate],}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00245}00245             \mbox{\hyperlink{ieee80211__proto_8c_a7743c46d5b77e40c7abac1417ee35dd8}{ieee80211\_state\_name}}[nstate], arg);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00246}00246         vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} = nstate;                 \textcolor{comment}{/* state transition */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00247}00247         callout\_stop(\&vap-\/>\mbox{\hyperlink{structieee80211vap_aceb4e6c70ea3a018bd73938e08188240}{iv\_mgtsend}});               \textcolor{comment}{/* XXX callout\_drain */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00248}00248         \textcolor{keywordflow}{if} (ostate != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00249}00249                 \mbox{\hyperlink{ieee80211__scan_8c_a99ddc07128337822b73b5fec195d411e}{ieee80211\_cancel\_scan}}(vap);        \textcolor{comment}{/* background scan */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00250}00250         ni = vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}};                 \textcolor{comment}{/* NB: no reference held */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00251}00251         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a74aac287d91c2dd2da91ba4539d5fd43}{iv\_flags\_ext}} \& \mbox{\hyperlink{ieee80211__var_8h_a7bc792d3858f084dbc93fb7ff68adc46}{IEEE80211\_FEXT\_SWBMISS}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00252}00252                 callout\_stop(\&vap-\/>\mbox{\hyperlink{structieee80211vap_aa702c7c8a4e11cba20ca270a087467e4}{iv\_swbmiss}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00253}00253         \textcolor{keywordflow}{switch} (nstate) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00254}00254         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a5ddfd615e2f7a05d83ae61a24fa84692}{IEEE80211\_S\_INIT}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00255}00255                 \textcolor{keywordflow}{switch} (ostate) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00256}00256                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a01d2e70dad4633ccb3141939f84889e1}{IEEE80211\_S\_SLEEP}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00257}00257                         \textcolor{comment}{/* XXX wakeup */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00258}00258                         \textcolor{comment}{/* XXX driver hook to wakeup the hardware? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00259}00259                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00260}00260                         \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00261}00261                             \mbox{\hyperlink{ieee80211_8h_a9b0e856b2c53fdeddbbb847592e88870}{IEEE80211\_FC0\_SUBTYPE\_DISASSOC}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00262}00262                             \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06cae78300fe68190ee84c3633c2fcb02426}{IEEE80211\_REASON\_ASSOC\_LEAVE}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00263}00263                         \mbox{\hyperlink{ieee80211__node_8c_a96dec57676eeffa40867d49fd26d6d1a}{ieee80211\_sta\_leave}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00264}00264                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00265}00265                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00266}00266                         \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00267}00267                             \mbox{\hyperlink{ieee80211_8h_a6c0622234f2ebb2645aa47d02fe44ea2}{IEEE80211\_FC0\_SUBTYPE\_DEAUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00268}00268                             \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06ca166e016a6404c0f920e10139d317dd0c}{IEEE80211\_REASON\_AUTH\_LEAVE}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00269}00269                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00270}00270                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00271}00271                         \mbox{\hyperlink{ieee80211__scan_8c_a99ddc07128337822b73b5fec195d411e}{ieee80211\_cancel\_scan}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00272}00272                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00273}00273                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00274}00274                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00275}00275                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00276}00276                 \textcolor{keywordflow}{if} (ostate != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a5ddfd615e2f7a05d83ae61a24fa84692}{IEEE80211\_S\_INIT}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00277}00277                         \textcolor{comment}{/* NB: optimize INIT -\/> INIT case */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00278}00278                         \mbox{\hyperlink{ieee80211__node_8c_a48d9f97b3e2c622be71188b9a9a54a88}{ieee80211\_reset\_bss}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00279}00279                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00280}00280                 \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a66310fc2572a3507ed4679e612ab3500}{iv\_auth}}-\/>\mbox{\hyperlink{structieee80211__authenticator_ab2e006b95e32e8918feff81d4f4d4bc5}{ia\_detach}} != NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00281}00281                         vap-\/>\mbox{\hyperlink{structieee80211vap_a66310fc2572a3507ed4679e612ab3500}{iv\_auth}}-\/>\mbox{\hyperlink{structieee80211__authenticator_ab2e006b95e32e8918feff81d4f4d4bc5}{ia\_detach}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00282}00282                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00283}00283         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00284}00284                 \textcolor{keywordflow}{switch} (ostate) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00285}00285                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a5ddfd615e2f7a05d83ae61a24fa84692}{IEEE80211\_S\_INIT}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00286}00286                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00287}00287 \textcolor{comment}{                         * Initiate a scan.  We can come here as a result}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00288}00288 \textcolor{comment}{                         * of an IEEE80211\_IOC\_SCAN\_REQ too in which case}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00289}00289 \textcolor{comment}{                         * the vap will be marked with IEEE80211\_FEXT\_SCANREQ}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00290}00290 \textcolor{comment}{                         * and the scan request parameters will be present}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00291}00291 \textcolor{comment}{                         * in iv\_scanreq.  Otherwise we do the default.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00292}00292 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00293}00293                         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a74aac287d91c2dd2da91ba4539d5fd43}{iv\_flags\_ext}} \& \mbox{\hyperlink{ieee80211__var_8h_af2b548ac21e79ac406f4c7127170c142}{IEEE80211\_FEXT\_SCANREQ}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00294}00294                                 \mbox{\hyperlink{ieee80211__scan_8c_aac9c48ee43abedf2858768ad516620ad}{ieee80211\_check\_scan}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00295}00295                                     vap-\/>\mbox{\hyperlink{structieee80211vap_a8c7c2987e45c00563b08674a237b75ec}{iv\_scanreq\_flags}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00296}00296                                     vap-\/>\mbox{\hyperlink{structieee80211vap_ade61a4b6d31c60afa8a5e63faa3e5b3c}{iv\_scanreq\_duration}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00297}00297                                     vap-\/>\mbox{\hyperlink{structieee80211vap_a5f386adcba2a9daf9274ac1c2b20e656}{iv\_scanreq\_mindwell}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00298}00298                                     vap-\/>\mbox{\hyperlink{structieee80211vap_a85a9da2d8e4bbd8eb7ada72d0aa2d5ec}{iv\_scanreq\_maxdwell}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00299}00299                                     vap-\/>\mbox{\hyperlink{structieee80211vap_af3e5312a60c3bd451624cbf82883fc84}{iv\_scanreq\_nssid}}, vap-\/>\mbox{\hyperlink{structieee80211vap_abb464aad70a54338181a02a837a5d500}{iv\_scanreq\_ssid}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00300}00300                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a74aac287d91c2dd2da91ba4539d5fd43}{iv\_flags\_ext}} \&= \string~IEEE80211\_FEXT\_SCANREQ;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00301}00301                         \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00302}00302                                 \mbox{\hyperlink{ieee80211__scan_8c_ac5865fafa48f64b02212fb561735ef28}{ieee80211\_check\_scan\_current}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00303}00303                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00304}00304                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00305}00305                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00306}00306                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00307}00307                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00308}00308 \textcolor{comment}{                         * These can happen either because of a timeout}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00309}00309 \textcolor{comment}{                         * on an assoc/auth response or because of a}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00310}00310 \textcolor{comment}{                         * change in state that requires a reset.  For}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00311}00311 \textcolor{comment}{                         * the former we're called with a non-\/zero arg}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00312}00312 \textcolor{comment}{                         * that is the cause for the failure; pass this}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00313}00313 \textcolor{comment}{                         * to the scan code so it can update state.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00314}00314 \textcolor{comment}{                         * Otherwise trigger a new scan unless we're in}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00315}00315 \textcolor{comment}{                         * manual roaming mode in which case an application}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00316}00316 \textcolor{comment}{                         * must issue an explicit scan request.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00317}00317 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00318}00318                         \textcolor{keywordflow}{if} (arg != 0)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00319}00319                                 \mbox{\hyperlink{ieee80211__scan_8c_a8937a3274e54b1d589b3ebd783a8b27f}{ieee80211\_scan\_assoc\_fail}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00320}00320                                         vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, arg);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00321}00321                         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a1c0af83005a3526af3c08237a4bbefb8}{iv\_roaming}} == \mbox{\hyperlink{__ieee80211_8h_a7b440d2c71f273e206865245ccc261c6ac9dfc177be70ca7732ec3559a1aa063a}{IEEE80211\_ROAMING\_AUTO}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00322}00322                                 \mbox{\hyperlink{ieee80211__scan_8c_ac5865fafa48f64b02212fb561735ef28}{ieee80211\_check\_scan\_current}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00323}00323                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00324}00324                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a01d2e70dad4633ccb3141939f84889e1}{IEEE80211\_S\_SLEEP}}:                \textcolor{comment}{/* beacon miss */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00325}00325                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00326}00326 \textcolor{comment}{                         * XXX if in sleep we need to wakeup the hardware.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00327}00327 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00328}00328                         \textcolor{comment}{/* FALLTHROUGH */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00329}00329                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}:            \textcolor{comment}{/* beacon miss */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00330}00330                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00331}00331 \textcolor{comment}{                         * Beacon miss.  Notify user space and if not}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00332}00332 \textcolor{comment}{                         * under control of a user application (roaming}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00333}00333 \textcolor{comment}{                         * manual) kick off a scan to re-\/connect.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00334}00334 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00335}00335 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00336}00336                         \mbox{\hyperlink{ieee80211__node_8c_a96dec57676eeffa40867d49fd26d6d1a}{ieee80211\_sta\_leave}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00337}00337                         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a1c0af83005a3526af3c08237a4bbefb8}{iv\_roaming}} == \mbox{\hyperlink{__ieee80211_8h_a7b440d2c71f273e206865245ccc261c6ac9dfc177be70ca7732ec3559a1aa063a}{IEEE80211\_ROAMING\_AUTO}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00338}00338                                 \mbox{\hyperlink{ieee80211__scan_8c_ac5865fafa48f64b02212fb561735ef28}{ieee80211\_check\_scan\_current}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00339}00339                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00340}00340                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00341}00341                         \textcolor{keywordflow}{goto} invalid;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00342}00342                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00343}00343                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00344}00344         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00345}00345                 \textcolor{keywordflow}{switch} (ostate) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00346}00346                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a5ddfd615e2f7a05d83ae61a24fa84692}{IEEE80211\_S\_INIT}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00347}00347                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00348}00348                         \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00349}00349                             \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00350}00350                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00351}00351                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00352}00352                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00353}00353                         \textcolor{keywordflow}{switch} (arg \& 0xff) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00354}00354                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00355}00355                                 \textcolor{comment}{/* ??? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00356}00356                                 \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00357}00357                                     \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}, 2);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00358}00358                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00359}00359                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a6c0622234f2ebb2645aa47d02fe44ea2}{IEEE80211\_FC0\_SUBTYPE\_DEAUTH}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00360}00360                                 \mbox{\hyperlink{ieee80211__sta_8c_a5d230b48a4de81a4e7304dc66b95552e}{sta\_authretry}}(vap, ni, arg>>8);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00361}00361                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00362}00362                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00363}00363                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00364}00364                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a01d2e70dad4633ccb3141939f84889e1}{IEEE80211\_S\_SLEEP}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00365}00365                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00366}00366                         \textcolor{keywordflow}{switch} (arg \& 0xff) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00367}00367                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00368}00368                                 \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00369}00369                                     \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}, 2);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00370}00370                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} = \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}; \textcolor{comment}{/* stay RUN */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00371}00371                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00372}00372                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a6c0622234f2ebb2645aa47d02fe44ea2}{IEEE80211\_FC0\_SUBTYPE\_DEAUTH}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00373}00373                                 \mbox{\hyperlink{ieee80211__node_8c_a96dec57676eeffa40867d49fd26d6d1a}{ieee80211\_sta\_leave}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00374}00374                                 \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a1c0af83005a3526af3c08237a4bbefb8}{iv\_roaming}} == \mbox{\hyperlink{__ieee80211_8h_a7b440d2c71f273e206865245ccc261c6ac9dfc177be70ca7732ec3559a1aa063a}{IEEE80211\_ROAMING\_AUTO}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00375}00375                                         \textcolor{comment}{/* try to reauth */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00376}00376                                         \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00377}00377                                             \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00378}00378                                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00379}00379                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00380}00380                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00381}00381                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00382}00382                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00383}00383                         \textcolor{keywordflow}{goto} invalid;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00384}00384                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00385}00385                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00386}00386         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00387}00387                 \textcolor{keywordflow}{switch} (ostate) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00388}00388                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00389}00389                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00390}00390                         \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00391}00391                             \mbox{\hyperlink{ieee80211_8h_a06e49951f70b198bce43e8cc2c0e47bb}{IEEE80211\_FC0\_SUBTYPE\_ASSOC\_REQ}}, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00392}00392                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00393}00393                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a01d2e70dad4633ccb3141939f84889e1}{IEEE80211\_S\_SLEEP}}:                \textcolor{comment}{/* cannot happen */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00394}00394                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00395}00395                         \mbox{\hyperlink{ieee80211__node_8c_a96dec57676eeffa40867d49fd26d6d1a}{ieee80211\_sta\_leave}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00396}00396                         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a1c0af83005a3526af3c08237a4bbefb8}{iv\_roaming}} == \mbox{\hyperlink{__ieee80211_8h_a7b440d2c71f273e206865245ccc261c6ac9dfc177be70ca7732ec3559a1aa063a}{IEEE80211\_ROAMING\_AUTO}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00397}00397                                 \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni, arg ?}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00398}00398                                     \mbox{\hyperlink{ieee80211_8h_a48b4a2b5eef11ce5a68762425bb39a97}{IEEE80211\_FC0\_SUBTYPE\_REASSOC\_REQ}} :}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00399}00399                                     \mbox{\hyperlink{ieee80211_8h_a06e49951f70b198bce43e8cc2c0e47bb}{IEEE80211\_FC0\_SUBTYPE\_ASSOC\_REQ}}, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00400}00400                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00401}00401                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00402}00402                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00403}00403                         \textcolor{keywordflow}{goto} invalid;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00404}00404                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00405}00405                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00406}00406         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00407}00407                 \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a9b76bb3567cb2eca3e750f9329d3ecd2}{IEEE80211\_F\_WPA}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00408}00408                         \textcolor{comment}{/* XXX validate prerequisites */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00409}00409                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00410}00410                 \textcolor{keywordflow}{switch} (ostate) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00411}00411                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00412}00412                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a33b722312714d2b28d10cc6d8ccb5d2d}{IEEE80211\_S\_CSA}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00413}00413                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00414}00414                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}}:          \textcolor{comment}{/* when join is done in fw */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00415}00415                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00416}00416 \textcolor{preprocessor}{\#ifdef IEEE80211\_DEBUG}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00417}00417                         \textcolor{keywordflow}{if} (ieee80211\_msg\_debug(vap)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00418}00418                                 ieee80211\_note(vap, \textcolor{stringliteral}{"{}\%s with \%s ssid "{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00419}00419                                     (vap-\/>\mbox{\hyperlink{structieee80211vap_a22de8996244412911c0015d499eab3fb}{iv\_opmode}} == \mbox{\hyperlink{__ieee80211_8h_ab624e38122a844713ca48c7307772ed1a6322fdc3044a505e723f3da37f9a6653}{IEEE80211\_M\_STA}} ?}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00420}00420                                     \textcolor{stringliteral}{"{}associated"{}} : \textcolor{stringliteral}{"{}synchronized"{}}),}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00421}00421                                     ether\_sprintf(ni-\/>\mbox{\hyperlink{structieee80211__node_a45e68c78c549ae07131b2e0912e2f268}{ni\_bssid}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00422}00422                                 \mbox{\hyperlink{ieee80211__proto_8c_a74aba194996af7fb2f323eb5490b9ebc}{ieee80211\_print\_essid}}(vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}-\/>\mbox{\hyperlink{structieee80211__node_afbd7e0849ef7b5eef7e21b668c0d694e}{ni\_essid}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00423}00423                                     ni-\/>\mbox{\hyperlink{structieee80211__node_a42a99e59d304a1864e679edb6a9820b5}{ni\_esslen}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00424}00424                                 \textcolor{comment}{/* XXX MCS/HT */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00425}00425                                 printf(\textcolor{stringliteral}{"{} channel \%d start \%uMb\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00426}00426                                     \mbox{\hyperlink{ieee80211_8c_a0f2ce75abd2d6add7f014be6d9305980}{ieee80211\_chan2ieee}}(ic, ic-\/>\mbox{\hyperlink{structieee80211com_af4f9f1d4120d065aec7ac8eae28a613a}{ic\_curchan}}),}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00427}00427                                     \mbox{\hyperlink{ieee80211__sta_8c_a8be34b24b74d8d6073297c97bf06eff7}{IEEE80211\_RATE2MBS}}(ni-\/>\mbox{\hyperlink{structieee80211__node_aa1dfa705ca397c0459194785fcec3a23}{ni\_txrate}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00428}00428                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00429}00429 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00430}00430                         \mbox{\hyperlink{ieee80211__scan_8c_afd3f351ec0e72a48f42bdc8b47d4b3ac}{ieee80211\_scan\_assoc\_success}}(vap, ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00431}00431                         \mbox{\hyperlink{ieee80211__freebsd_8c_a57be79534d6b8be3b219c6ebc5e51b0c}{ieee80211\_notify\_node\_join}}(ni, }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00432}00432                             arg == \mbox{\hyperlink{ieee80211_8h_a680bb07072e7bda5cb709b3b2ce24190}{IEEE80211\_FC0\_SUBTYPE\_ASSOC\_RESP}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00433}00433                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00434}00434                 \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a01d2e70dad4633ccb3141939f84889e1}{IEEE80211\_S\_SLEEP}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00435}00435                         \textcolor{comment}{/* Wake up from sleep */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00436}00436                         vap-\/>\mbox{\hyperlink{structieee80211vap_accf1952d0e4b3e34dc7d7c5c21dd72dd}{iv\_sta\_ps}}(vap, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00437}00437                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00438}00438                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00439}00439                         \textcolor{keywordflow}{goto} invalid;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00440}00440                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00441}00441                 \mbox{\hyperlink{ieee80211__node_8c_ae4311fd4daf78b68decfb56984a0cccb}{ieee80211\_sync\_curchan}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00442}00442                 \textcolor{keywordflow}{if} (ostate != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00443}00443                         \mbox{\hyperlink{ieee80211__sta_8c_ad257da619bf8cbd46775aff662abbf1b}{sta\_swbmiss\_start}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00444}00444                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00445}00445 \textcolor{comment}{                 * When 802.1x is not in use mark the port authorized}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00446}00446 \textcolor{comment}{                 * at this point so traffic can flow.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00447}00447 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00448}00448                 \textcolor{keywordflow}{if} (ni-\/>\mbox{\hyperlink{structieee80211__node_a36e48112ddea919d19c898bee0d18eb5}{ni\_authmode}} != \mbox{\hyperlink{__ieee80211_8h_a831eabb053cc096dbcdc6d6264e2074da1b9ca7ab10ac2394acc8af90268a061d}{IEEE80211\_AUTH\_8021X}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00449}00449                         \mbox{\hyperlink{ieee80211__node_8c_a7744a49edcaebd18271f87d24dd62a2e}{ieee80211\_node\_authorize}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00450}00450                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00451}00451 \textcolor{comment}{                 * Fake association when joining an existing bss.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00452}00452 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00453}00453 \textcolor{comment}{                 * Don't do this if we're doing SLEEP-\/>RUN.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00454}00454 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00455}00455                 \textcolor{keywordflow}{if} (ic-\/>\mbox{\hyperlink{structieee80211com_af8f74a56898ec611a0c3443e55a71284}{ic\_newassoc}} != NULL \&\& ostate != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a01d2e70dad4633ccb3141939f84889e1}{IEEE80211\_S\_SLEEP}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00456}00456                         ic-\/>\mbox{\hyperlink{structieee80211com_af8f74a56898ec611a0c3443e55a71284}{ic\_newassoc}}(vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}}, (ostate != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00457}00457                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00458}00458         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a33b722312714d2b28d10cc6d8ccb5d2d}{IEEE80211\_S\_CSA}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00459}00459                 \textcolor{keywordflow}{if} (ostate != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00460}00460                         \textcolor{keywordflow}{goto} invalid;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00461}00461                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00462}00462         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a01d2e70dad4633ccb3141939f84889e1}{IEEE80211\_S\_SLEEP}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00463}00463                 \mbox{\hyperlink{ieee80211__sta_8c_ad257da619bf8cbd46775aff662abbf1b}{sta\_swbmiss\_start}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00464}00464                 vap-\/>\mbox{\hyperlink{structieee80211vap_accf1952d0e4b3e34dc7d7c5c21dd72dd}{iv\_sta\_ps}}(vap, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00465}00465                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00466}00466         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00467}00467         invalid:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00468}00468                 \mbox{\hyperlink{ieee80211__var_8h_ac185ad5fc3b0a56653d4ea243a100a1c}{IEEE80211\_DPRINTF}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0b669672e833a8e854063e445080fb59}{IEEE80211\_MSG\_STATE}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00469}00469                     \textcolor{stringliteral}{"{}\%s: unexpected state transition \%s -\/> \%s\(\backslash\)n"{}}, \_\_func\_\_,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00470}00470                     \mbox{\hyperlink{ieee80211__proto_8c_a7743c46d5b77e40c7abac1417ee35dd8}{ieee80211\_state\_name}}[ostate], \mbox{\hyperlink{ieee80211__proto_8c_a7743c46d5b77e40c7abac1417ee35dd8}{ieee80211\_state\_name}}[nstate]);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00471}00471                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00472}00472         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00473}00473         \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00474}00474 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00475}00475 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00476}00476 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00477}00477 \textcolor{comment}{ * Return non-\/zero if the frame is an echo of a multicast}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00478}00478 \textcolor{comment}{ * frame sent by ourself.  The dir is known to be DSTODS.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00479}00479 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00480}00480 \textcolor{keyword}{static} \_\_inline \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00481}\mbox{\hyperlink{ieee80211__sta_8c_a76fad334840c8bf0f1e3276da2f3118a}{00481}} \mbox{\hyperlink{ieee80211__sta_8c_a76fad334840c8bf0f1e3276da2f3118a}{isdstods\_mcastecho}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap, \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00482}00482 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00483}00483 \textcolor{preprocessor}{\#define QWH4(wh)        ((const struct ieee80211\_qosframe\_addr4 *)wh)}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00484}00484 \textcolor{preprocessor}{\#define WH4(wh)         ((const struct ieee80211\_frame\_addr4 *)wh)}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00485}00485         \textcolor{keyword}{const} uint8\_t *sa;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00486}00486 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00487}00487         KASSERT(vap-\/>\mbox{\hyperlink{structieee80211vap_a22de8996244412911c0015d499eab3fb}{iv\_opmode}} == \mbox{\hyperlink{__ieee80211_8h_ab624e38122a844713ca48c7307772ed1a6322fdc3044a505e723f3da37f9a6653}{IEEE80211\_M\_STA}}, (\textcolor{stringliteral}{"{}wrong mode"{}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00488}00488 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00489}00489         \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211_8h_a9065be563ef28f85f286f04d757c1c2d}{IEEE80211\_IS\_MULTICAST}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a604d2daf1685ca701110f73149a86a05}{i\_addr3}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00490}00490                 \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00491}00491         sa = \mbox{\hyperlink{ieee80211_8h_a9543b40af17f2e7a9e57989b20d9f218}{IEEE80211\_QOS\_HAS\_SEQ}}(wh) ? \mbox{\hyperlink{ieee80211__sta_8c_a48d691e78d53348163f65559b0362ec7}{QWH4}}(wh)-\/>i\_addr4 : \mbox{\hyperlink{ieee80211__sta_8c_a2a201dba4b90fe7b8a7bbfe8c05324d7}{WH4}}(wh)-\/>i\_addr4;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00492}00492         \textcolor{keywordflow}{return} \mbox{\hyperlink{ieee80211__var_8h_a87fba5bb95c383ed07ae42774b80386f}{IEEE80211\_ADDR\_EQ}}(sa, vap-\/>\mbox{\hyperlink{structieee80211vap_a31bbdbec1c2fd8f9aba7146d23cbc895}{iv\_myaddr}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00493}00493 \textcolor{preprocessor}{\#undef WH4}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00494}00494 \textcolor{preprocessor}{\#undef QWH4}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00495}00495 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00496}00496 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00497}00497 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00498}00498 \textcolor{comment}{ * Return non-\/zero if the frame is an echo of a multicast}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00499}00499 \textcolor{comment}{ * frame sent by ourself.  The dir is known to be FROMDS.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00500}00500 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00501}00501 \textcolor{keyword}{static} \_\_inline \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00502}\mbox{\hyperlink{ieee80211__sta_8c_a61fa5581cd068793380978f27360fe39}{00502}} \mbox{\hyperlink{ieee80211__sta_8c_a61fa5581cd068793380978f27360fe39}{isfromds\_mcastecho}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap, \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00503}00503 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00504}00504         KASSERT(vap-\/>\mbox{\hyperlink{structieee80211vap_a22de8996244412911c0015d499eab3fb}{iv\_opmode}} == \mbox{\hyperlink{__ieee80211_8h_ab624e38122a844713ca48c7307772ed1a6322fdc3044a505e723f3da37f9a6653}{IEEE80211\_M\_STA}}, (\textcolor{stringliteral}{"{}wrong mode"{}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00505}00505 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00506}00506         \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211_8h_a9065be563ef28f85f286f04d757c1c2d}{IEEE80211\_IS\_MULTICAST}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00507}00507                 \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00508}00508         \textcolor{keywordflow}{return} \mbox{\hyperlink{ieee80211__var_8h_a87fba5bb95c383ed07ae42774b80386f}{IEEE80211\_ADDR\_EQ}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a604d2daf1685ca701110f73149a86a05}{i\_addr3}}, vap-\/>\mbox{\hyperlink{structieee80211vap_a31bbdbec1c2fd8f9aba7146d23cbc895}{iv\_myaddr}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00509}00509 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00510}00510 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00511}00511 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00512}00512 \textcolor{comment}{ * Decide if a received management frame should be}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00513}00513 \textcolor{comment}{ * printed when debugging is enabled.  This filters some}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00514}00514 \textcolor{comment}{ * of the less interesting frames that come frequently}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00515}00515 \textcolor{comment}{ * (e.g. beacons).}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00516}00516 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00517}00517 \textcolor{keyword}{static} \_\_inline \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00518}\mbox{\hyperlink{ieee80211__sta_8c_a8791709cc4c437adf2ce5b27fad602c3}{00518}} \mbox{\hyperlink{ieee80211__sta_8c_a8791709cc4c437adf2ce5b27fad602c3}{doprint}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap, \textcolor{keywordtype}{int} subtype)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00519}00519 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00520}00520         \textcolor{keywordflow}{switch} (subtype) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00521}00521         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_aefaac0be730932e1085aee40abdb7bfb}{IEEE80211\_FC0\_SUBTYPE\_BEACON}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00522}00522                 \textcolor{keywordflow}{return} (vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}}-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a3c8d69c1fb5cadc6d9f00e9832355e6d}{IEEE80211\_F\_SCAN}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00523}00523         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a51791ebe35da5e79a89df6782786fa91}{IEEE80211\_FC0\_SUBTYPE\_PROBE\_REQ}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00524}00524                 \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00525}00525         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00526}00526         \textcolor{keywordflow}{return} 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00527}00527 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00528}00528 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00529}00529 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00530}00530 \textcolor{comment}{ * Process a received frame.  The node associated with the sender}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00531}00531 \textcolor{comment}{ * should be supplied.  If nothing was found in the node table then}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00532}00532 \textcolor{comment}{ * the caller is assumed to supply a reference to iv\_bss instead.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00533}00533 \textcolor{comment}{ * The RSSI and a timestamp are also supplied.  The RSSI data is used}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00534}00534 \textcolor{comment}{ * during AP scanning to select a AP to associate with; it can have}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00535}00535 \textcolor{comment}{ * any units so long as values have consistent units and higher values}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00536}00536 \textcolor{comment}{ * mean ``better signal''.  The receive timestamp is currently not used}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00537}00537 \textcolor{comment}{ * by the 802.11 layer.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00538}00538 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00539}00539 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00540}\mbox{\hyperlink{ieee80211__sta_8c_a7b7d3a01485a11a2962642b7220f68a6}{00540}} \mbox{\hyperlink{ieee80211__sta_8c_a7b7d3a01485a11a2962642b7220f68a6}{sta\_input}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni, \textcolor{keyword}{struct} mbuf *m,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00541}00541     \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} *rxs, \textcolor{keywordtype}{int} rssi, \textcolor{keywordtype}{int} nf)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00542}00542 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00543}00543         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00544}00544         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = ni-\/>\mbox{\hyperlink{structieee80211__node_a2510619138beb9911b3cf058cc4991a6}{ni\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00545}00545         \textcolor{keyword}{struct }ifnet *ifp = vap-\/>\mbox{\hyperlink{structieee80211vap_aca4f7d70404f3fafac925ee534bf5c5f}{iv\_ifp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00546}00546         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00547}00547         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__key}{ieee80211\_key}} *key;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00548}00548         \textcolor{keyword}{struct }ether\_header *eh;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00549}00549         \textcolor{keywordtype}{int} hdrspace, need\_tap = 1;     \textcolor{comment}{/* mbuf need to be tapped. */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00550}00550         uint8\_t dir, type, subtype, qos;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00551}00551         uint8\_t *bssid;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00552}00552         \textcolor{keywordtype}{int} is\_hw\_decrypted = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00553}00553         \textcolor{keywordtype}{int} has\_decrypted = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00554}00554 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00555}00555         KASSERT(ni != NULL, (\textcolor{stringliteral}{"{}\%s: null node, mbuf \%p"{}}, \_\_func\_\_, m));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00556}00556 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00557}00557         \textcolor{comment}{/* Early init in case of early error case. */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00558}00558         type = -\/1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00559}00559 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00560}00560         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00561}00561 \textcolor{comment}{         * Bit of a cheat here, we use a pointer for a 3-\/address}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00562}00562 \textcolor{comment}{         * frame format but don't reference fields past outside}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00563}00563 \textcolor{comment}{         * ieee80211\_frame\_min (or other shorter frames) w/o first}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00564}00564 \textcolor{comment}{         * validating the data is present.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00565}00565 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00566}00566         wh = mtod(m, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00567}00567 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00568}00568         \textcolor{keywordflow}{if} (m-\/>m\_pkthdr.len < 2 || m-\/>m\_pkthdr.len < \mbox{\hyperlink{ieee80211__proto_8h_add6dae17da0d4bf1a447f5f53cfac70c}{ieee80211\_anyhdrsize}}(wh)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00569}00569                 \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a52d4c8ea23b5f09cf1b52af74aa2e0b1}{IEEE80211\_MSG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00570}00570                     ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, NULL,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00571}00571                     \textcolor{stringliteral}{"{}too short (1): len \%u"{}}, m-\/>m\_pkthdr.len);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00572}00572                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a01568652b0c95b47a40f6477876d8d6b}{is\_rx\_tooshort}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00573}00573                 \textcolor{keywordflow}{goto} err;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00574}00574         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00575}00575         \textcolor{keywordflow}{if} ((wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[0] \& \mbox{\hyperlink{ieee80211_8h_a6bc9eac6082c6d030af2b73eb48eb1ea}{IEEE80211\_FC0\_VERSION\_MASK}}) !=}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00576}00576             \mbox{\hyperlink{ieee80211_8h_ab5ac1e7eacc5abae4cb6b7506d17bd45}{IEEE80211\_FC0\_VERSION\_0}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00577}00577                 \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a52d4c8ea23b5f09cf1b52af74aa2e0b1}{IEEE80211\_MSG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00578}00578                     ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, NULL, \textcolor{stringliteral}{"{}wrong version, fc \%02x:\%02x"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00579}00579                     wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[0], wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[1]);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00580}00580                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a0b0ae17e4af5cc735d1d2321e507ea9b}{is\_rx\_badversion}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00581}00581                 \textcolor{keywordflow}{goto} err;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00582}00582         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00583}00583 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00584}00584         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00585}00585 \textcolor{comment}{         * Some devices do hardware decryption all the way through}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00586}00586 \textcolor{comment}{         * to pretending the frame wasn't encrypted in the first place.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00587}00587 \textcolor{comment}{         * So, tag it appropriately so it isn't discarded inappropriately.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00588}00588 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00589}00589         \textcolor{keywordflow}{if} ((rxs != NULL) \&\& (rxs-\/>\mbox{\hyperlink{structieee80211__rx__stats_ae991ec93c1a6947179e7c1ad04bd39a7}{c\_pktflags}} \& \mbox{\hyperlink{__ieee80211_8h_a22e866f1645ef672e40c943f388de39d}{IEEE80211\_RX\_F\_DECRYPTED}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00590}00590                 is\_hw\_decrypted = 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00591}00591 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00592}00592         \textcolor{keywordflow}{if} (m-\/>m\_flags \& \mbox{\hyperlink{ieee80211__freebsd_8h_ae6eabe6bed459e58103e7ca2e64ea7c1}{M\_AMPDU\_MPDU}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00593}00593                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00594}00594 \textcolor{comment}{                 * Fastpath for A-\/MPDU reorder q resubmission.  Frames}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00595}00595 \textcolor{comment}{                 * w/ M\_AMPDU\_MPDU marked have already passed through}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00596}00596 \textcolor{comment}{                 * here but were received out of order and been held on}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00597}00597 \textcolor{comment}{                 * the reorder queue.  When resubmitted they are marked}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00598}00598 \textcolor{comment}{                 * with the M\_AMPDU\_MPDU flag and we can bypass most of}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00599}00599 \textcolor{comment}{                 * the normal processing.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00600}00600 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00601}00601                 type = \mbox{\hyperlink{ieee80211_8h_a84fadc719a3ea4f27a789aee52d19a95}{IEEE80211\_FC0\_TYPE\_DATA}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00602}00602                 dir = wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[1] \& \mbox{\hyperlink{ieee80211_8h_aaeeacbf8cb6fcb873f0f54e387cd34a1}{IEEE80211\_FC1\_DIR\_MASK}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00603}00603                 subtype = \mbox{\hyperlink{ieee80211_8h_ac26139da93766957cd82ff793a7bf28b}{IEEE80211\_FC0\_SUBTYPE\_QOS}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00604}00604                 hdrspace = \mbox{\hyperlink{ieee80211__var_8h_a3bb455a4e2448d830252821256de3111}{ieee80211\_hdrspace}}(ic, wh);        \textcolor{comment}{/* XXX optimize? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00605}00605                 \textcolor{keywordflow}{goto} resubmit\_ampdu;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00606}00606         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00607}00607 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00608}00608         ni-\/>\mbox{\hyperlink{structieee80211__node_aca869131c91ab98a661d8dc8cbb83fd4}{ni\_inact}} = ni-\/>\mbox{\hyperlink{structieee80211__node_a6940b9c8d51d4a1a075969b97d121717}{ni\_inact\_reload}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00609}00609 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00610}00610         dir = wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[1] \& \mbox{\hyperlink{ieee80211_8h_aaeeacbf8cb6fcb873f0f54e387cd34a1}{IEEE80211\_FC1\_DIR\_MASK}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00611}00611         type = wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[0] \& \mbox{\hyperlink{ieee80211_8h_a25db43f225d4802140bdf903d3a9fb12}{IEEE80211\_FC0\_TYPE\_MASK}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00612}00612         subtype = wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[0] \& \mbox{\hyperlink{ieee80211_8h_ae7203cff6b1b5405dd10e187928b44ca}{IEEE80211\_FC0\_SUBTYPE\_MASK}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00613}00613         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00614}00614 \textcolor{comment}{         * Control frames are not folowing the header scheme of data and mgmt}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00615}00615 \textcolor{comment}{         * frames so we do not apply extra checks here.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00616}00616 \textcolor{comment}{         * We probably should do checks on RA (+TA) where available for those}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00617}00617 \textcolor{comment}{         * too, but for now do not drop them.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00618}00618 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00619}00619         \textcolor{keywordflow}{if} (type != \mbox{\hyperlink{ieee80211_8h_a1af5d6a0636cbfa7019ee5f5325f0ddc}{IEEE80211\_FC0\_TYPE\_CTL}} \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00620}00620             (ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a3c8d69c1fb5cadc6d9f00e9832355e6d}{IEEE80211\_F\_SCAN}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00621}00621                 bssid = wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00622}00622                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211__var_8h_a87fba5bb95c383ed07ae42774b80386f}{IEEE80211\_ADDR\_EQ}}(bssid, ni-\/>\mbox{\hyperlink{structieee80211__node_a45e68c78c549ae07131b2e0912e2f268}{ni\_bssid}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00623}00623                         \textcolor{comment}{/* not interested in */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00624}00624                         \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00625}00625                             bssid, NULL, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}not to bss"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00626}00626                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ab740d656bc162096f8ec0a4537973210}{is\_rx\_wrongbss}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00627}00627                         \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00628}00628                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00629}00629 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00630}00630                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00631}00631 \textcolor{comment}{                 * Some devices may be in a promiscuous mode}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00632}00632 \textcolor{comment}{                 * where they receive frames for multiple station}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00633}00633 \textcolor{comment}{                 * addresses.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00634}00634 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00635}00635 \textcolor{comment}{                 * If we receive a data frame that isn't}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00636}00636 \textcolor{comment}{                 * destined to our VAP MAC, drop it.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00637}00637 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00638}00638 \textcolor{comment}{                 * XXX TODO: This is only enforced when not scanning;}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00639}00639 \textcolor{comment}{                 * XXX it assumes a software-\/driven scan will put the NIC}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00640}00640 \textcolor{comment}{                 * XXX into a "{}no data frames"{} mode before setting this}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00641}00641 \textcolor{comment}{                 * XXX flag. Otherwise it may be possible that we'll still}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00642}00642 \textcolor{comment}{                 * XXX process data frames whilst scanning.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00643}00643 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00644}00644                 \textcolor{keywordflow}{if} ((! \mbox{\hyperlink{ieee80211_8h_a9065be563ef28f85f286f04d757c1c2d}{IEEE80211\_IS\_MULTICAST}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00645}00645                     \&\& (! \mbox{\hyperlink{ieee80211__var_8h_a87fba5bb95c383ed07ae42774b80386f}{IEEE80211\_ADDR\_EQ}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}}, IF\_LLADDR(ifp)))) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00646}00646                         \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00647}00647                             bssid, NULL, \textcolor{stringliteral}{"{}not to cur sta: lladdr=\%6D, addr1=\%6D"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00648}00648                             IF\_LLADDR(ifp), \textcolor{stringliteral}{"{}:"{}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}}, \textcolor{stringliteral}{"{}:"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00649}00649                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ab740d656bc162096f8ec0a4537973210}{is\_rx\_wrongbss}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00650}00650                         \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00651}00651                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00652}00652 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00653}00653                 \mbox{\hyperlink{ieee80211__node_8h_a49aa77fccc658184c2e1cb0423d26603}{IEEE80211\_RSSI\_LPF}}(ni-\/>\mbox{\hyperlink{structieee80211__node_acd9b896973634fdc13b62e5c52e45170}{ni\_avgrssi}}, rssi);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00654}00654                 ni-\/>\mbox{\hyperlink{structieee80211__node_ab6ecd05a0c0e6dfc4f33e2ad58335299}{ni\_noise}} = nf;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00655}00655                 \textcolor{keywordflow}{if} ( \mbox{\hyperlink{ieee80211_8h_a678f5f4d092b12d3ad18de3b6c2797c0}{IEEE80211\_HAS\_SEQ}}(type, subtype) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00656}00656                     !\mbox{\hyperlink{ieee80211_8h_a9065be563ef28f85f286f04d757c1c2d}{IEEE80211\_IS\_MULTICAST}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00657}00657                         uint8\_t tid = \mbox{\hyperlink{ieee80211__proto_8h_a759e791de78edfc8c7e2681e36d5d4b9}{ieee80211\_gettid}}(wh);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00658}00658                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211_8h_a9543b40af17f2e7a9e57989b20d9f218}{IEEE80211\_QOS\_HAS\_SEQ}}(wh) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00659}00659                             \mbox{\hyperlink{ieee80211_8h_aaa22c1724f31c7ec10ac8ef846cabe37}{TID\_TO\_WME\_AC}}(tid) >= \mbox{\hyperlink{ieee80211_8h_a5c4bfc35baacedd7c710a4a6ec2fbc40}{WME\_AC\_VI}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00660}00660                                 ic-\/>\mbox{\hyperlink{structieee80211com_aa2c5e7565465fa4a5a75843c5abfddab}{ic\_wme}}.\mbox{\hyperlink{structieee80211__wme__state_ad258c8feb1872b228ccbbc9c0f931b8e}{wme\_hipri\_traffic}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00661}00661                         \textcolor{keywordflow}{if} (! \mbox{\hyperlink{ieee80211__input_8h_a1c496cffaf6ec8fd28229557512036c9}{ieee80211\_check\_rxseq}}(ni, wh, bssid, rxs))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00662}00662                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00663}00663                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00664}00664         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00665}00665 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00666}00666         \textcolor{keywordflow}{switch} (type) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00667}00667         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a84fadc719a3ea4f27a789aee52d19a95}{IEEE80211\_FC0\_TYPE\_DATA}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00668}00668                 hdrspace = \mbox{\hyperlink{ieee80211__var_8h_a3bb455a4e2448d830252821256de3111}{ieee80211\_hdrspace}}(ic, wh);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00669}00669                 \textcolor{keywordflow}{if} (m-\/>m\_len < hdrspace \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00670}00670                     (m = m\_pullup(m, hdrspace)) == NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00671}00671                         \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a52d4c8ea23b5f09cf1b52af74aa2e0b1}{IEEE80211\_MSG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00672}00672                             ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, NULL,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00673}00673                             \textcolor{stringliteral}{"{}data too short: expecting \%u"{}}, hdrspace);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00674}00674                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a01568652b0c95b47a40f6477876d8d6b}{is\_rx\_tooshort}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00675}00675                         \textcolor{keywordflow}{goto} out;               \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00676}00676                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00677}00677                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00678}00678 \textcolor{comment}{                 * Handle A-\/MPDU re-\/ordering.  If the frame is to be}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00679}00679 \textcolor{comment}{                 * processed directly then ieee80211\_ampdu\_reorder}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00680}00680 \textcolor{comment}{                 * will return 0; otherwise it has consumed the mbuf}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00681}00681 \textcolor{comment}{                 * and we should do nothing more with it.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00682}00682 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00683}00683                 \textcolor{keywordflow}{if} ((m-\/>m\_flags \& \mbox{\hyperlink{ieee80211__freebsd_8h_afcaef6ffd452e4f6e210886fae1c7a2f}{M\_AMPDU}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00684}00684                     (dir == \mbox{\hyperlink{ieee80211_8h_aca10b612f9ceb5d2b81a035499fe833a}{IEEE80211\_FC1\_DIR\_FROMDS}} ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00685}00685                      dir == \mbox{\hyperlink{ieee80211_8h_a6f548c74a3fa1d3cf21c4e49ca2bc92b}{IEEE80211\_FC1\_DIR\_DSTODS}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00686}00686                     \mbox{\hyperlink{ieee80211__ht_8c_a7fc03de3fcd5698e252b7aafe0b9d84f}{ieee80211\_ampdu\_reorder}}(ni, m, rxs) != 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00687}00687                         m = NULL;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00688}00688                         \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00689}00689                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00690}00690         resubmit\_ampdu:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00691}00691                 \textcolor{keywordflow}{if} (dir == \mbox{\hyperlink{ieee80211_8h_aca10b612f9ceb5d2b81a035499fe833a}{IEEE80211\_FC1\_DIR\_FROMDS}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00692}00692                         \textcolor{keywordflow}{if} ((ifp-\/>if\_flags \& IFF\_SIMPLEX) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00693}00693                             \mbox{\hyperlink{ieee80211__sta_8c_a61fa5581cd068793380978f27360fe39}{isfromds\_mcastecho}}(vap, wh)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00694}00694                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00695}00695 \textcolor{comment}{                                 * In IEEE802.11 network, multicast}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00696}00696 \textcolor{comment}{                                 * packets sent from "{}me"{} are broadcast}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00697}00697 \textcolor{comment}{                                 * from the AP; silently discard for}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00698}00698 \textcolor{comment}{                                 * SIMPLEX interface.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00699}00699 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00700}00700                                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00701}00701                                     wh, \textcolor{stringliteral}{"{}data"{}}, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}multicast echo"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00702}00702                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a7a03992ade9450ad8fa264e84e61d20f}{is\_rx\_mcastecho}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00703}00703                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00704}00704                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00705}00705                         \textcolor{keywordflow}{if} ((vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_abadcd83cb41d5e67b83b0e23565cb808}{IEEE80211\_F\_DWDS}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00706}00706                             \mbox{\hyperlink{ieee80211_8h_a9065be563ef28f85f286f04d757c1c2d}{IEEE80211\_IS\_MULTICAST}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00707}00707                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00708}00708 \textcolor{comment}{                                 * DWDS sta's must drop 3-\/address mcast frames}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00709}00709 \textcolor{comment}{                                 * as they will be sent separately as a 4-\/addr}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00710}00710 \textcolor{comment}{                                 * frame.  Accepting the 3-\/addr frame will}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00711}00711 \textcolor{comment}{                                 * confuse the bridge into thinking the sending}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00712}00712 \textcolor{comment}{                                 * sta is located at the end of WDS link.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00713}00713 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00714}00714                                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}}, wh,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00715}00715                                     \textcolor{stringliteral}{"{}3-\/address data"{}}, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}DWDS enabled"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00716}00716                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a7a03992ade9450ad8fa264e84e61d20f}{is\_rx\_mcastecho}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00717}00717                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00718}00718                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00719}00719                 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (dir == \mbox{\hyperlink{ieee80211_8h_a6f548c74a3fa1d3cf21c4e49ca2bc92b}{IEEE80211\_FC1\_DIR\_DSTODS}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00720}00720                         \textcolor{keywordflow}{if} ((vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_abadcd83cb41d5e67b83b0e23565cb808}{IEEE80211\_F\_DWDS}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00721}00721                                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00722}00722                                     \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}}, wh, \textcolor{stringliteral}{"{}4-\/address data"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00723}00723                                     \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}DWDS not enabled"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00724}00724                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ac3dc389e9288b5b0176639c9242c7999}{is\_rx\_wrongdir}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00725}00725                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00726}00726                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00727}00727                         \textcolor{keywordflow}{if} ((ifp-\/>if\_flags \& IFF\_SIMPLEX) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00728}00728                             \mbox{\hyperlink{ieee80211__sta_8c_a76fad334840c8bf0f1e3276da2f3118a}{isdstods\_mcastecho}}(vap, wh)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00729}00729                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00730}00730 \textcolor{comment}{                                 * In IEEE802.11 network, multicast}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00731}00731 \textcolor{comment}{                                 * packets sent from "{}me"{} are broadcast}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00732}00732 \textcolor{comment}{                                 * from the AP; silently discard for}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00733}00733 \textcolor{comment}{                                 * SIMPLEX interface.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00734}00734 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00735}00735                                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}}, wh,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00736}00736                                     \textcolor{stringliteral}{"{}4-\/address data"{}}, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}multicast echo"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00737}00737                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a7a03992ade9450ad8fa264e84e61d20f}{is\_rx\_mcastecho}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00738}00738                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00739}00739                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00740}00740                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00741}00741                         \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}}, wh,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00742}00742                             \textcolor{stringliteral}{"{}data"{}}, \textcolor{stringliteral}{"{}incorrect dir 0x\%x"{}}, dir);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00743}00743                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ac3dc389e9288b5b0176639c9242c7999}{is\_rx\_wrongdir}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00744}00744                         \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00745}00745                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00746}00746 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00747}00747                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00748}00748 \textcolor{comment}{                 * Handle privacy requirements for hardware decryption}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00749}00749 \textcolor{comment}{                 * devices.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00750}00750 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00751}00751 \textcolor{comment}{                 * For those devices, a handful of things happen.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00752}00752 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00753}00753 \textcolor{comment}{                 * + If IV has been stripped, then we can't run}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00754}00754 \textcolor{comment}{                 *   ieee80211\_crypto\_decap() -\/ none of the key}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00755}00755 \textcolor{comment}{                 * + If MIC has been stripped, we can't validate}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00756}00756 \textcolor{comment}{                 *   MIC here.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00757}00757 \textcolor{comment}{                 * + If MIC fails, then we need to communicate a}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00758}00758 \textcolor{comment}{                 *   MIC failure up to the stack -\/ but we don't know}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00759}00759 \textcolor{comment}{                 *   which key was used.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00760}00760 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00761}00761 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00762}00762                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00763}00763 \textcolor{comment}{                 * Handle privacy requirements.  Note that we}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00764}00764 \textcolor{comment}{                 * must not be preempted from here until after}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00765}00765 \textcolor{comment}{                 * we (potentially) call ieee80211\_crypto\_demic;}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00766}00766 \textcolor{comment}{                 * otherwise we may violate assumptions in the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00767}00767 \textcolor{comment}{                 * crypto cipher modules used to do delayed update}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00768}00768 \textcolor{comment}{                 * of replay sequence numbers.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00769}00769 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00770}00770                 \textcolor{keywordflow}{if} (is\_hw\_decrypted || wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[1] \& \mbox{\hyperlink{ieee80211_8h_a625e18ed01fdcb5f069288f10ac122fb}{IEEE80211\_FC1\_PROTECTED}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00771}00771                         \textcolor{keywordflow}{if} ((vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a8e6ba0e0dbcec72f0aac72575726c888}{IEEE80211\_F\_PRIVACY}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00772}00772                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00773}00773 \textcolor{comment}{                                 * Discard encrypted frames when privacy is off.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00774}00774 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00775}00775                                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00776}00776                                     wh, \textcolor{stringliteral}{"{}WEP"{}}, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}PRIVACY off"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00777}00777                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_afb833a632f5995315c768e345a9b7a11}{is\_rx\_noprivacy}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00778}00778                                 \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_noprivacy);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00779}00779                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00780}00780                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00781}00781                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__crypto_8c_a645a352b4424f6dbaf444ce7cc777220}{ieee80211\_crypto\_decap}}(ni, m, hdrspace, \&key) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00782}00782                                 \textcolor{comment}{/* NB: stats+msgs handled in crypto\_decap */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00783}00783                                 \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_wepfail);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00784}00784                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00785}00785                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00786}00786                         wh = mtod(m, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00787}00787                         wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[1] \&= \string~IEEE80211\_FC1\_PROTECTED;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00788}00788                         has\_decrypted = 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00789}00789                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00790}00790                         \textcolor{comment}{/* XXX M\_WEP and IEEE80211\_F\_PRIVACY */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00791}00791                         key = NULL;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00792}00792                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00793}00793 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00794}00794                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00795}00795 \textcolor{comment}{                 * Save QoS bits for use below-\/-\/before we strip the header.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00796}00796 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00797}00797                 \textcolor{keywordflow}{if} (subtype == \mbox{\hyperlink{ieee80211_8h_ac26139da93766957cd82ff793a7bf28b}{IEEE80211\_FC0\_SUBTYPE\_QOS}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00798}00798                         qos = \mbox{\hyperlink{ieee80211__proto_8h_a90cb6df8b0871f84afd691ff56ee292d}{ieee80211\_getqos}}(wh)[0];}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00799}00799                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00800}00800                         qos = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00801}00801 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00802}00802                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00803}00803 \textcolor{comment}{                 * Next up, any fragmentation.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00804}00804 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00805}00805                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211_8h_a9065be563ef28f85f286f04d757c1c2d}{IEEE80211\_IS\_MULTICAST}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00806}00806                         m = \mbox{\hyperlink{ieee80211__input_8c_af6d4edf9cbdd292ae2c5c4e0e9571ef7}{ieee80211\_defrag}}(ni, m, hdrspace, has\_decrypted);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00807}00807                         \textcolor{keywordflow}{if} (m == NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00808}00808                                 \textcolor{comment}{/* Fragment dropped or frame not complete yet */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00809}00809                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00810}00810                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00811}00811                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00812}00812                 wh = NULL;              \textcolor{comment}{/* no longer valid, catch any uses */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00813}00813 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00814}00814                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00815}00815 \textcolor{comment}{                 * Next strip any MSDU crypto bits.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00816}00816 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00817}00817 \textcolor{comment}{                 * Note: we can't do MIC stripping/verification if the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00818}00818 \textcolor{comment}{                 * upper layer has stripped it.  We have to check MIC}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00819}00819 \textcolor{comment}{                 * ourselves.  So, key may be NULL, but we have to check}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00820}00820 \textcolor{comment}{                 * the RX status.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00821}00821 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00822}00822                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211__crypto_8c_af6418bef4c519b883ea48d0177936aa3}{ieee80211\_crypto\_demic}}(vap, key, m, 0)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00823}00823                         \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00824}00824                             ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}data"{}}, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}demic error"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00825}00825                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a9f032b105241a07f47b43ad93d583a2c}{is\_rx\_demicfail}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00826}00826                         \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_demicfail);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00827}00827                         \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00828}00828                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00829}00829 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00830}00830                 \textcolor{comment}{/* copy to listener after decrypt */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00831}00831                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__var_8h_a052b21b650fae37b3d8e0e4e3616a3b4}{ieee80211\_radiotap\_active\_vap}}(vap))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00832}00832                         \mbox{\hyperlink{ieee80211__radiotap_8c_ab5d57e466b7edf51a6b46d8eda9f0da1}{ieee80211\_radiotap\_rx}}(vap, m);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00833}00833                 need\_tap = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00834}00834 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00835}00835                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00836}00836 \textcolor{comment}{                 * Finally, strip the 802.11 header.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00837}00837 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00838}00838                 m = \mbox{\hyperlink{ieee80211__input_8c_a3978af73adcc1fe1cc35f920a9ef926e}{ieee80211\_decap}}(vap, m, hdrspace, qos);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00839}00839                 \textcolor{keywordflow}{if} (m == NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00840}00840                         \textcolor{comment}{/* XXX mask bit to check for both */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00841}00841                         \textcolor{comment}{/* don't count Null data frames as errors */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00842}00842                         \textcolor{keywordflow}{if} (subtype == \mbox{\hyperlink{ieee80211_8h_abcb0aeaf5e37c815858f913f34948a38}{IEEE80211\_FC0\_SUBTYPE\_NODATA}} ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00843}00843                             subtype == \mbox{\hyperlink{ieee80211_8h_ad81cc3b9a4c651b737bd3d84a515e659}{IEEE80211\_FC0\_SUBTYPE\_QOS\_NULL}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00844}00844                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00845}00845                         \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00846}00846                             ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}data"{}}, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}decap error"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00847}00847                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_acce042378bddbe6fdfcc84ef35a8bbbe}{is\_rx\_decap}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00848}00848                         \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_decap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00849}00849                         \textcolor{keywordflow}{goto} err;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00850}00850                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00851}00851                 \textcolor{keywordflow}{if} (!(qos \& \mbox{\hyperlink{ieee80211_8h_adc3505e2b709ed96293529e199d3bb77}{IEEE80211\_QOS\_AMSDU}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00852}00852                         eh = mtod(m, \textcolor{keyword}{struct} ether\_header *);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00853}00853                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00854}00854                         eh = NULL;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00855}00855                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211__node_8h_a58a18d1f7d52ffefab4fb82a60d217a8}{ieee80211\_node\_is\_authorized}}(ni)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00856}00856                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00857}00857 \textcolor{comment}{                         * Deny any non-\/PAE frames received prior to}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00858}00858 \textcolor{comment}{                         * authorization.  For open/shared-\/key}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00859}00859 \textcolor{comment}{                         * authentication the port is mark authorized}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00860}00860 \textcolor{comment}{                         * after authentication completes.  For 802.1x}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00861}00861 \textcolor{comment}{                         * the port is not marked authorized by the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00862}00862 \textcolor{comment}{                         * authenticator until the handshake has completed.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00863}00863 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00864}00864                         \textcolor{keywordflow}{if} (eh == NULL ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00865}00865                             eh-\/>ether\_type != htons(ETHERTYPE\_PAE)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00866}00866                                 \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00867}00867                                     ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}data"{}}, \textcolor{stringliteral}{"{}unauthorized or "{}}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00868}00868                                     \textcolor{stringliteral}{"{}unknown port: ether type 0x\%x len \%u"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00869}00869                                     eh == NULL ? -\/1 : eh-\/>ether\_type,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00870}00870                                     m-\/>m\_pkthdr.len);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00871}00871                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a2d4dc739dca1b2eea63a6a8f24d38f9c}{is\_rx\_unauth}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00872}00872                                 \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_unauth);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00873}00873                                 \textcolor{keywordflow}{goto} err;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00874}00874                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00875}00875                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00876}00876                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00877}00877 \textcolor{comment}{                         * When denying unencrypted frames, discard}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00878}00878 \textcolor{comment}{                         * any non-\/PAE frames received without encryption.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00879}00879 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00880}00880                         \textcolor{keywordflow}{if} ((vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_afb8a151a74d8a9ec24ad6044d6035b28}{IEEE80211\_F\_DROPUNENC}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00881}00881                             ((has\_decrypted == 0) \&\& (m-\/>m\_flags \& \mbox{\hyperlink{ieee80211__freebsd_8h_a68cb3206ffe0cd84e3b151bf4af56f08}{M\_WEP}}) == 0) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00882}00882                             (is\_hw\_decrypted == 0) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00883}00883                             (eh == NULL ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00884}00884                              eh-\/>ether\_type != htons(ETHERTYPE\_PAE))) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00885}00885                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00886}00886 \textcolor{comment}{                                 * Drop unencrypted frames.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00887}00887 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00888}00888                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_afd218f0092712a3e1e101b6f59540da8}{is\_rx\_unencrypted}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00889}00889                                 \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_unencrypted);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00890}00890                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00891}00891                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00892}00892                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00893}00893                 \textcolor{comment}{/* XXX require HT? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00894}00894                 \textcolor{keywordflow}{if} (qos \& \mbox{\hyperlink{ieee80211_8h_adc3505e2b709ed96293529e199d3bb77}{IEEE80211\_QOS\_AMSDU}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00895}00895                         m = \mbox{\hyperlink{ieee80211__ht_8c_abdd3758220251c1d98a3247ffbb7cb74}{ieee80211\_decap\_amsdu}}(ni, m);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00896}00896                         \textcolor{keywordflow}{if} (m == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00897}00897                                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ieee80211_8h_a84fadc719a3ea4f27a789aee52d19a95}{IEEE80211\_FC0\_TYPE\_DATA}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00898}00898                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00899}00899 \textcolor{preprocessor}{\#ifdef IEEE80211\_SUPPORT\_SUPERG}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00900}00900                         m = \mbox{\hyperlink{ieee80211__superg_8h_a8ae3649e9166a38efca8738eeae6f7ac}{ieee80211\_decap\_fastframe}}(vap, ni, m);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00901}00901                         \textcolor{keywordflow}{if} (m == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00902}00902                                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ieee80211_8h_a84fadc719a3ea4f27a789aee52d19a95}{IEEE80211\_FC0\_TYPE\_DATA}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00903}00903 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00904}00904                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00905}00905                 \mbox{\hyperlink{ieee80211__input_8c_a45097fca17667ec2758ab669b6dfb8a8}{ieee80211\_deliver\_data}}(vap, ni, m);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00906}00906                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ieee80211_8h_a84fadc719a3ea4f27a789aee52d19a95}{IEEE80211\_FC0\_TYPE\_DATA}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00907}00907 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00908}00908         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a7fb8a8d6c5db6500162f51327f036f40}{IEEE80211\_FC0\_TYPE\_MGT}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00909}00909                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_aa028fb795e293d89afd6201a8ad5611a}{is\_rx\_mgmt}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00910}00910                 \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_mgmt);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00911}00911                 \textcolor{keywordflow}{if} (dir != \mbox{\hyperlink{ieee80211_8h_aae938ba74f00c978fa095e62d04ceeea}{IEEE80211\_FC1\_DIR\_NODS}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00912}00912                         \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00913}00913                             wh, \textcolor{stringliteral}{"{}data"{}}, \textcolor{stringliteral}{"{}incorrect dir 0x\%x"{}}, dir);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00914}00914                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ac3dc389e9288b5b0176639c9242c7999}{is\_rx\_wrongdir}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00915}00915                         \textcolor{keywordflow}{goto} err;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00916}00916                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00917}00917                 \textcolor{keywordflow}{if} (m-\/>m\_pkthdr.len < \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00918}00918                         \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a52d4c8ea23b5f09cf1b52af74aa2e0b1}{IEEE80211\_MSG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00919}00919                             ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}mgt"{}}, \textcolor{stringliteral}{"{}too short: len \%u"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00920}00920                             m-\/>m\_pkthdr.len);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00921}00921                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a01568652b0c95b47a40f6477876d8d6b}{is\_rx\_tooshort}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00922}00922                         \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00923}00923                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00924}00924 \textcolor{preprocessor}{\#ifdef IEEE80211\_DEBUG}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00925}00925                 \textcolor{keywordflow}{if} ((ieee80211\_msg\_debug(vap) \&\& \mbox{\hyperlink{ieee80211__sta_8c_a8791709cc4c437adf2ce5b27fad602c3}{doprint}}(vap, subtype)) ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00926}00926                     \mbox{\hyperlink{ieee80211__var_8h_ae736725a076d792ddc945966a249036d}{ieee80211\_msg\_dumppkts}}(vap)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00927}00927                         if\_printf(ifp, \textcolor{stringliteral}{"{}received \%s from \%s rssi \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00928}00928                             \mbox{\hyperlink{ieee80211__proto_8h_ab05e53677ec322fef90f47dbe18ac564}{ieee80211\_mgt\_subtype\_name}}(subtype),}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00929}00929                             ether\_sprintf(wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}}), rssi);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00930}00930                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00931}00931 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00932}00932 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00933}00933                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00934}00934 \textcolor{comment}{                 * Note: See above for hardware offload privacy requirements.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00935}00935 \textcolor{comment}{                 *       It also applies here.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00936}00936 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00937}00937 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00938}00938                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00939}00939 \textcolor{comment}{                 * Again, having encrypted flag set check would be good, but}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00940}00940 \textcolor{comment}{                 * then we have to also handle crypto\_decap() like above.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00941}00941 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00942}00942                 \textcolor{keywordflow}{if} (wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[1] \& \mbox{\hyperlink{ieee80211_8h_a625e18ed01fdcb5f069288f10ac122fb}{IEEE80211\_FC1\_PROTECTED}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00943}00943                         \textcolor{keywordflow}{if} (subtype != \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00944}00944                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00945}00945 \textcolor{comment}{                                 * Only shared key auth frames with a challenge}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00946}00946 \textcolor{comment}{                                 * should be encrypted, discard all others.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00947}00947 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00948}00948                                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00949}00949                                     wh, \mbox{\hyperlink{ieee80211__proto_8h_ab05e53677ec322fef90f47dbe18ac564}{ieee80211\_mgt\_subtype\_name}}(subtype),}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00950}00950                                     \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}WEP set but not permitted"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00951}00951                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++; \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00952}00952                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00953}00953                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00954}00954                         \textcolor{keywordflow}{if} ((vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a8e6ba0e0dbcec72f0aac72575726c888}{IEEE80211\_F\_PRIVACY}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00955}00955                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00956}00956 \textcolor{comment}{                                 * Discard encrypted frames when privacy is off.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00957}00957 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00958}00958                                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00959}00959                                     wh, \textcolor{stringliteral}{"{}mgt"{}}, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}WEP set but PRIVACY off"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00960}00960                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_afb833a632f5995315c768e345a9b7a11}{is\_rx\_noprivacy}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00961}00961                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00962}00962                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00963}00963                         hdrspace = \mbox{\hyperlink{ieee80211__var_8h_a3bb455a4e2448d830252821256de3111}{ieee80211\_hdrspace}}(ic, wh);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00964}00964 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00965}00965                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00966}00966 \textcolor{comment}{                         * Again, if IV/MIC was stripped, then this whole}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00967}00967 \textcolor{comment}{                         * setup will fail.  That's going to need some poking.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00968}00968 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00969}00969                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__crypto_8c_a645a352b4424f6dbaf444ce7cc777220}{ieee80211\_crypto\_decap}}(ni, m, hdrspace, \&key) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00970}00970                                 \textcolor{comment}{/* NB: stats+msgs handled in crypto\_decap */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00971}00971                                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00972}00972                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00973}00973                         has\_decrypted = 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00974}00974                         wh = mtod(m, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00975}00975                         wh-\/>\mbox{\hyperlink{structieee80211__frame_a4dbe6cbfce631e8083ac87a56b42f4f4}{i\_fc}}[1] \&= \string~IEEE80211\_FC1\_PROTECTED;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00976}00976                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00977}00977                 vap-\/>\mbox{\hyperlink{structieee80211vap_a5079a18ecb374649e03dd6a858193316}{iv\_recv\_mgmt}}(ni, m, subtype, rxs, rssi, nf);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00978}00978                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00979}00979 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00980}00980         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a1af5d6a0636cbfa7019ee5f5325f0ddc}{IEEE80211\_FC0\_TYPE\_CTL}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00981}00981                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a5bef1435f5f0430b2fecb73cc3e88201}{is\_rx\_ctl}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00982}00982                 \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_ctrl);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00983}00983                 vap-\/>\mbox{\hyperlink{structieee80211vap_aae790d681e7c405a15179ec7f9b386d7}{iv\_recv\_ctl}}(ni, m, subtype);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00984}00984                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00985}00985 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00986}00986         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00987}00987                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a52d4c8ea23b5f09cf1b52af74aa2e0b1}{IEEE80211\_MSG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00988}00988                     wh, NULL, \textcolor{stringliteral}{"{}bad frame type 0x\%x"{}}, type);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00989}00989                 \textcolor{comment}{/* should not come here */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00990}00990                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00991}00991         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00992}00992 err:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00993}00993         if\_inc\_counter(ifp, IFCOUNTER\_IERRORS, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00994}00994 out:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00995}00995         \textcolor{keywordflow}{if} (m != NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00996}00996                 \textcolor{keywordflow}{if} (need\_tap \&\& \mbox{\hyperlink{ieee80211__var_8h_a052b21b650fae37b3d8e0e4e3616a3b4}{ieee80211\_radiotap\_active\_vap}}(vap))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00997}00997                         \mbox{\hyperlink{ieee80211__radiotap_8c_ab5d57e466b7edf51a6b46d8eda9f0da1}{ieee80211\_radiotap\_rx}}(vap, m);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00998}00998                 m\_freem(m);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l00999}00999         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01000}01000         \textcolor{keywordflow}{return} type;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01001}01001 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01002}01002 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01003}01003 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01004}\mbox{\hyperlink{ieee80211__sta_8c_aee2237a8715c4f20f1a02cafe1a5c335}{01004}} \mbox{\hyperlink{ieee80211__sta_8c_aee2237a8715c4f20f1a02cafe1a5c335}{sta\_auth\_open}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01005}01005     \textcolor{keywordtype}{int} rssi, \textcolor{keywordtype}{int} nf, uint16\_t seq, uint16\_t status)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01006}01006 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01007}01007         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01008}01008 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01009}01009         \textcolor{keywordflow}{if} (ni-\/>\mbox{\hyperlink{structieee80211__node_a36e48112ddea919d19c898bee0d18eb5}{ni\_authmode}} == \mbox{\hyperlink{__ieee80211_8h_a831eabb053cc096dbcdc6d6264e2074da0b6e1e758b580d2d9282a56d6607692f}{IEEE80211\_AUTH\_SHARED}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01010}01010                 \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01011}01011                     ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}open auth"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01012}01012                     \textcolor{stringliteral}{"{}bad sta auth mode \%u"{}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a36e48112ddea919d19c898bee0d18eb5}{ni\_authmode}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01013}01013                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a5935753f88402c3bdd4de61557ce3c4a}{is\_rx\_bad\_auth}}++;   \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01014}01014                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01015}01015         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01016}01016         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}} ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01017}01017             seq != \mbox{\hyperlink{ieee80211_8h_a99fb83031ce9923c84392b4e92f956b5ad0be3b0c500e640b15fb7b53d2e28d79}{IEEE80211\_AUTH\_OPEN\_RESPONSE}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01018}01018                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a5935753f88402c3bdd4de61557ce3c4a}{is\_rx\_bad\_auth}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01019}01019                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01020}01020         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01021}01021         \textcolor{keywordflow}{if} (status != 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01022}01022                 \mbox{\hyperlink{ieee80211__var_8h_a9c90e846ab7773b17fc49706dd551293}{IEEE80211\_NOTE}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a96778153b3cff35e199a6212db70b5ac}{IEEE80211\_MSG\_DEBUG}} | \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01023}01023                     ni, \textcolor{stringliteral}{"{}open auth failed (reason \%d)"{}}, status);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01024}01024                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a88853fc3b7c45319c7d87a60ef16c59b}{is\_rx\_auth\_fail}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01025}01025                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_af198d9ddbb27a5c7d1bbbfd4da4530b9}{is\_rx\_authfail\_code}} = status;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01026}01026                 \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01027}01027                     \mbox{\hyperlink{ieee80211__scan_8h_aabfcbcb5ac86a1edac4035264bc7d2b8a001403e93d75d297cd6a3513e71cd634}{IEEE80211\_SCAN\_FAIL\_STATUS}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01028}01028         \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01029}01029                 \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01030}01030 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01031}01031 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01032}01032 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01033}\mbox{\hyperlink{ieee80211__sta_8c_a4b607f0f5e3d6f7c699455fdb79f4376}{01033}} \mbox{\hyperlink{ieee80211__sta_8c_a4b607f0f5e3d6f7c699455fdb79f4376}{sta\_auth\_shared}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01034}01034     uint8\_t *frm, uint8\_t *efrm, \textcolor{keywordtype}{int} rssi, \textcolor{keywordtype}{int} nf,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01035}01035     uint16\_t seq, uint16\_t status)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01036}01036 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01037}01037         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01038}01038         uint8\_t *challenge;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01039}01039 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01040}01040         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01041}01041 \textcolor{comment}{         * NB: this can happen as we allow pre-\/shared key}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01042}01042 \textcolor{comment}{         * authentication to be enabled w/o wep being turned}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01043}01043 \textcolor{comment}{         * on so that configuration of these can be done}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01044}01044 \textcolor{comment}{         * in any order.  It may be better to enforce the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01045}01045 \textcolor{comment}{         * ordering in which case this check would just be}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01046}01046 \textcolor{comment}{         * for sanity/consistency.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01047}01047 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01048}01048         \textcolor{keywordflow}{if} ((vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a8e6ba0e0dbcec72f0aac72575726c888}{IEEE80211\_F\_PRIVACY}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01049}01049                 \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01050}01050                     ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}shared key auth"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01051}01051                     \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{} PRIVACY is disabled"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01052}01052                 \textcolor{keywordflow}{goto} bad;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01053}01053         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01054}01054         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01055}01055 \textcolor{comment}{         * Pre-\/shared key authentication is evil; accept}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01056}01056 \textcolor{comment}{         * it only if explicitly configured (it is supported}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01057}01057 \textcolor{comment}{         * mainly for compatibility with clients like OS X).}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01058}01058 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01059}01059         \textcolor{keywordflow}{if} (ni-\/>\mbox{\hyperlink{structieee80211__node_a36e48112ddea919d19c898bee0d18eb5}{ni\_authmode}} != \mbox{\hyperlink{__ieee80211_8h_a831eabb053cc096dbcdc6d6264e2074da32513ea31ae44ccf930dd22553810523}{IEEE80211\_AUTH\_AUTO}} \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01060}01060             ni-\/>\mbox{\hyperlink{structieee80211__node_a36e48112ddea919d19c898bee0d18eb5}{ni\_authmode}} != \mbox{\hyperlink{__ieee80211_8h_a831eabb053cc096dbcdc6d6264e2074da0b6e1e758b580d2d9282a56d6607692f}{IEEE80211\_AUTH\_SHARED}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01061}01061                 \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01062}01062                     ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}shared key auth"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01063}01063                     \textcolor{stringliteral}{"{}bad sta auth mode \%u"{}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a36e48112ddea919d19c898bee0d18eb5}{ni\_authmode}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01064}01064                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a5935753f88402c3bdd4de61557ce3c4a}{is\_rx\_bad\_auth}}++;   \textcolor{comment}{/* XXX maybe a unique error? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01065}01065                 \textcolor{keywordflow}{goto} bad;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01066}01066         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01067}01067 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01068}01068         challenge = NULL;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01069}01069         \textcolor{keywordflow}{if} (frm + 1 < efrm) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01070}01070                 \textcolor{keywordflow}{if} ((frm[1] + 2) > (efrm -\/ frm)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01071}01071                         \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01072}01072                             ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}shared key auth"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01073}01073                             \textcolor{stringliteral}{"{}ie \%d/\%d too long"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01074}01074                             frm[0], (frm[1] + 2) -\/ (efrm -\/ frm));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01075}01075                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a5935753f88402c3bdd4de61557ce3c4a}{is\_rx\_bad\_auth}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01076}01076                         \textcolor{keywordflow}{goto} bad;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01077}01077                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01078}01078                 \textcolor{keywordflow}{if} (*frm == \mbox{\hyperlink{ieee80211_8h_adf764cbdea00d65edcd07bb9953ad2b7a5362d3d34dd931e5adb76e7c53f39dd3}{IEEE80211\_ELEMID\_CHALLENGE}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01079}01079                         challenge = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01080}01080                 frm += frm[1] + 2;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01081}01081         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01082}01082         \textcolor{keywordflow}{switch} (seq) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01083}01083         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_abc6126af1d45847bc59afa0aa3216b04a9e959ac915a62ba88003d0ea53074110}{IEEE80211\_AUTH\_SHARED\_CHALLENGE}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01084}01084         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_abc6126af1d45847bc59afa0aa3216b04aaddce973dd0f044f7a7c152547956c7c}{IEEE80211\_AUTH\_SHARED\_RESPONSE}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01085}01085                 \textcolor{keywordflow}{if} (challenge == NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01086}01086                         \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01087}01087                             ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}shared key auth"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01088}01088                             \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}no challenge"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01089}01089                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a5935753f88402c3bdd4de61557ce3c4a}{is\_rx\_bad\_auth}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01090}01090                         \textcolor{keywordflow}{goto} bad;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01091}01091                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01092}01092                 \textcolor{keywordflow}{if} (challenge[1] != \mbox{\hyperlink{ieee80211_8h_af6533fdc36c8dd6a42d3c3bf40fbae8f}{IEEE80211\_CHALLENGE\_LEN}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01093}01093                         \mbox{\hyperlink{ieee80211__var_8h_aad7ad14d0875572425fb5aae7b6aa7fc}{IEEE80211\_DISCARD\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01094}01094                             ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}}, \textcolor{stringliteral}{"{}shared key auth"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01095}01095                             \textcolor{stringliteral}{"{}bad challenge len \%d"{}}, challenge[1]);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01096}01096                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a5935753f88402c3bdd4de61557ce3c4a}{is\_rx\_bad\_auth}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01097}01097                         \textcolor{keywordflow}{goto} bad;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01098}01098                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01099}01099         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01100}01100                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01101}01101         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01102}01102         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01103}01103                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01104}01104         \textcolor{keywordflow}{switch} (seq) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01105}01105         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_abc6126af1d45847bc59afa0aa3216b04aa32df8f735775feb4472cb14c93b24ba}{IEEE80211\_AUTH\_SHARED\_PASS}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01106}01106                 \textcolor{keywordflow}{if} (ni-\/>\mbox{\hyperlink{structieee80211__node_a0e9252a49eab193c3c3cc6510805ce79}{ni\_challenge}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01107}01107                         \mbox{\hyperlink{ieee80211__freebsd_8h_a6b3b9f57088dc72d85c347037ccfeb59}{IEEE80211\_FREE}}(ni-\/>\mbox{\hyperlink{structieee80211__node_a0e9252a49eab193c3c3cc6510805ce79}{ni\_challenge}}, M\_80211\_NODE);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01108}01108                         ni-\/>\mbox{\hyperlink{structieee80211__node_a0e9252a49eab193c3c3cc6510805ce79}{ni\_challenge}} = NULL;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01109}01109                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01110}01110                 \textcolor{keywordflow}{if} (status != 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01111}01111                         \mbox{\hyperlink{ieee80211__var_8h_a425e17c97669476b1ea7ac710885cb16}{IEEE80211\_NOTE\_FRAME}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01112}01112                             \mbox{\hyperlink{ieee80211__var_8h_a96778153b3cff35e199a6212db70b5ac}{IEEE80211\_MSG\_DEBUG}} | \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}}, wh,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01113}01113                             \textcolor{stringliteral}{"{}shared key auth failed (reason \%d)"{}}, status);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01114}01114                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a88853fc3b7c45319c7d87a60ef16c59b}{is\_rx\_auth\_fail}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01115}01115                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_af198d9ddbb27a5c7d1bbbfd4da4530b9}{is\_rx\_authfail\_code}} = status;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01116}01116                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01117}01117                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01118}01118                 \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01119}01119                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01120}01120         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_abc6126af1d45847bc59afa0aa3216b04a9e959ac915a62ba88003d0ea53074110}{IEEE80211\_AUTH\_SHARED\_CHALLENGE}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01121}01121                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211__input_8c_aa389c21c08b82078168134fbfc0059d5}{ieee80211\_alloc\_challenge}}(ni))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01122}01122                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01123}01123                 \textcolor{comment}{/* XXX could optimize by passing recvd challenge */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01124}01124                 memcpy(ni-\/>\mbox{\hyperlink{structieee80211__node_a0e9252a49eab193c3c3cc6510805ce79}{ni\_challenge}}, \&challenge[2], challenge[1]);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01125}01125                 \mbox{\hyperlink{ieee80211__proto_8h_abb7794d1edd22af7d994a614bd56bcb3}{IEEE80211\_SEND\_MGMT}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01126}01126                         \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}, seq + 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01127}01127                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01128}01128         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01129}01129                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01130}01130                     wh, \textcolor{stringliteral}{"{}shared key auth"{}}, \textcolor{stringliteral}{"{}bad seq \%d"{}}, seq);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01131}01131                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a5935753f88402c3bdd4de61557ce3c4a}{is\_rx\_bad\_auth}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01132}01132                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01133}01133         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01134}01134         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01135}01135 bad:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01136}01136         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01137}01137 \textcolor{comment}{         * Kick the state machine.  This short-\/circuits}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01138}01138 \textcolor{comment}{         * using the mgt frame timeout to trigger the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01139}01139 \textcolor{comment}{         * state transition.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01140}01140 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01141}01141         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} == \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01142}01142                 \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01143}01143                     \mbox{\hyperlink{ieee80211__scan_8h_aabfcbcb5ac86a1edac4035264bc7d2b8a001403e93d75d297cd6a3513e71cd634}{IEEE80211\_SCAN\_FAIL\_STATUS}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01144}01144 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01145}01145 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01146}01146 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01147}01147 \textcolor{comment}{ * Parse the WME IE for QoS and U-\/APSD information.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01148}01148 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01149}01149 \textcolor{comment}{ * Returns -\/1 if the IE isn't found, 1 if it's found.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01150}01150 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01151}01151 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01152}\mbox{\hyperlink{ieee80211__sta_8c_a7d5c1f9a4164fd18327f5579a4ceb8ab}{01152}} \mbox{\hyperlink{ieee80211__sta_8c_a7d5c1f9a4164fd18327f5579a4ceb8ab}{ieee80211\_parse\_wmeie}}(uint8\_t *frm, \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01153}01153     \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01154}01154 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01155}01155         u\_int len = frm[1];}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01156}01156 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01157}01157         ni-\/>\mbox{\hyperlink{structieee80211__node_a58ff0e8f5d8e877b9e6a64092b41892a}{ni\_uapsd}} = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01158}01158 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01159}01159         \textcolor{keywordflow}{if} (len < \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__wme__param}{ieee80211\_wme\_param}})-\/2) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01160}01160                 \mbox{\hyperlink{ieee80211__var_8h_a0f3170d02954b6477b188c541623da5b}{IEEE80211\_DISCARD\_IE}}(ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01161}01161                     \mbox{\hyperlink{ieee80211__var_8h_a6211f86515ef5a36d7fbbdc43a2861b2}{IEEE80211\_MSG\_ELEMID}} | \mbox{\hyperlink{ieee80211__var_8h_abd27120e8db05a494dbc7424a3ca109d}{IEEE80211\_MSG\_WME}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01162}01162                     wh, \textcolor{stringliteral}{"{}WME"{}}, \textcolor{stringliteral}{"{}too short, len \%u"{}}, len);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01163}01163                 \textcolor{keywordflow}{return} -\/1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01164}01164         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01165}01165 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01166}01166         ni-\/>\mbox{\hyperlink{structieee80211__node_a58ff0e8f5d8e877b9e6a64092b41892a}{ni\_uapsd}} = frm[\mbox{\hyperlink{ieee80211_8h_a8c15e19e3310b14f1d7a1f226e36e247}{WME\_CAPINFO\_IE\_OFFSET}}];}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01167}01167 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01168}01168         \mbox{\hyperlink{ieee80211__var_8h_a9c90e846ab7773b17fc49706dd551293}{IEEE80211\_NOTE}}(ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}}, \mbox{\hyperlink{ieee80211__var_8h_aa1463de2e791e657730eb9de7373d511}{IEEE80211\_MSG\_POWER}} | \mbox{\hyperlink{ieee80211__var_8h_af34afd95dcfbd1c0ed27cfcff1fb5642}{IEEE80211\_MSG\_ASSOC}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01169}01169             ni, \textcolor{stringliteral}{"{}U-\/APSD settings from STA: 0x\%02x"{}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a58ff0e8f5d8e877b9e6a64092b41892a}{ni\_uapsd}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01170}01170 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01171}01171         \textcolor{keywordflow}{return} 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01172}01172 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01173}01173 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01174}01174 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01175}\mbox{\hyperlink{ieee80211__sta_8c_a9f98daefca96f7e291fef2b1821c39af}{01175}} \mbox{\hyperlink{ieee80211__sta_8c_a9f98daefca96f7e291fef2b1821c39af}{ieee80211\_parse\_wmeparams}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap, uint8\_t *frm,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01176}01176         \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh, uint8\_t *qosinfo)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01177}01177 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01178}01178         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__wme__state}{ieee80211\_wme\_state}} *wme = \&vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}}-\/>\mbox{\hyperlink{structieee80211com_aa2c5e7565465fa4a5a75843c5abfddab}{ic\_wme}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01179}01179         u\_int len = frm[1], qosinfo\_count;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01180}01180         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01181}01181 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01182}01182         *qosinfo = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01183}01183 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01184}01184         \textcolor{keywordflow}{if} (len < \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__wme__param}{ieee80211\_wme\_param}})-\/2) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01185}01185                 \mbox{\hyperlink{ieee80211__var_8h_a0f3170d02954b6477b188c541623da5b}{IEEE80211\_DISCARD\_IE}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01186}01186                     \mbox{\hyperlink{ieee80211__var_8h_a6211f86515ef5a36d7fbbdc43a2861b2}{IEEE80211\_MSG\_ELEMID}} | \mbox{\hyperlink{ieee80211__var_8h_abd27120e8db05a494dbc7424a3ca109d}{IEEE80211\_MSG\_WME}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01187}01187                     wh, \textcolor{stringliteral}{"{}WME"{}}, \textcolor{stringliteral}{"{}too short, len \%u"{}}, len);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01188}01188                 \textcolor{keywordflow}{return} -\/1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01189}01189         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01190}01190         *qosinfo = frm[\_\_offsetof(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__wme__param}{ieee80211\_wme\_param}}, param\_qosInfo)];}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01191}01191         qosinfo\_count = *qosinfo \& \mbox{\hyperlink{ieee80211_8h_a9302526e62362d5df7be24991be1ca51}{WME\_QOSINFO\_COUNT}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01192}01192 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01193}01193         \textcolor{comment}{/* XXX do proper check for wraparound */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01194}01194         \textcolor{keywordflow}{if} (qosinfo\_count == wme-\/>\mbox{\hyperlink{structieee80211__wme__state_a7d9fe8c5d681e189bf3231deaa1574e8}{wme\_wmeChanParams}}.\mbox{\hyperlink{structchanAccParams_aae41955d5f0e4ab47ecd3d6363a5cd27}{cap\_info}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01195}01195                 \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01196}01196         frm += \_\_offsetof(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__wme__param}{ieee80211\_wme\_param}}, params\_acParams);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01197}01197         \textcolor{keywordflow}{for} (i = 0; i < \mbox{\hyperlink{ieee80211_8h_a4c0be821ab4c84337b7cc49f0d9f714c}{WME\_NUM\_AC}}; i++) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01198}01198                 \textcolor{keyword}{struct }\mbox{\hyperlink{structwmeParams}{wmeParams}} *wmep =}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01199}01199                         \&wme-\/>\mbox{\hyperlink{structieee80211__wme__state_a7d9fe8c5d681e189bf3231deaa1574e8}{wme\_wmeChanParams}}.\mbox{\hyperlink{structchanAccParams_a6a190177cc71fb3d40e246d7b0d293f5}{cap\_wmeParams}}[i];}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01200}01200                 \textcolor{comment}{/* NB: ACI not used */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01201}01201                 wmep-\/>\mbox{\hyperlink{structwmeParams_a24a04b9dcfb55aca9d98dfe0c5dd5a7e}{wmep\_acm}} = \mbox{\hyperlink{ieee80211__var_8h_a45a4f416c5e4323216aba9889aa6471f}{\_IEEE80211\_MASKSHIFT}}(frm[0], \mbox{\hyperlink{ieee80211_8h_a3f804934df6a45899fa04a5543c279b9}{WME\_PARAM\_ACM}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01202}01202                 wmep-\/>\mbox{\hyperlink{structwmeParams_aa059f563d8c3c914b1069f93f5dec452}{wmep\_aifsn}} =}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01203}01203                     \mbox{\hyperlink{ieee80211__var_8h_a45a4f416c5e4323216aba9889aa6471f}{\_IEEE80211\_MASKSHIFT}}(frm[0], \mbox{\hyperlink{ieee80211_8h_a269c3e05b22f86011869251230660fd3}{WME\_PARAM\_AIFSN}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01204}01204                 wmep-\/>\mbox{\hyperlink{structwmeParams_acd0f2d3c96d8d20a079f695412a7a50e}{wmep\_logcwmin}} =}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01205}01205                      \mbox{\hyperlink{ieee80211__var_8h_a45a4f416c5e4323216aba9889aa6471f}{\_IEEE80211\_MASKSHIFT}}(frm[1], \mbox{\hyperlink{ieee80211_8h_a6db6018a9837a1d4277b9c2ee6bdaf4f}{WME\_PARAM\_LOGCWMIN}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01206}01206                 wmep-\/>\mbox{\hyperlink{structwmeParams_a55d6a579c3edf46401e0dfc26d0e20e4}{wmep\_logcwmax}} =}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01207}01207                      \mbox{\hyperlink{ieee80211__var_8h_a45a4f416c5e4323216aba9889aa6471f}{\_IEEE80211\_MASKSHIFT}}(frm[1], \mbox{\hyperlink{ieee80211_8h_a233ef6055bc046cd93f71eff86eebf24}{WME\_PARAM\_LOGCWMAX}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01208}01208                 wmep-\/>\mbox{\hyperlink{structwmeParams_a88b49ae8e80b44602597bf8d5e54f797}{wmep\_txopLimit}} = le16dec(frm+2);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01209}01209                 \mbox{\hyperlink{ieee80211__var_8h_ac185ad5fc3b0a56653d4ea243a100a1c}{IEEE80211\_DPRINTF}}(vap, \mbox{\hyperlink{ieee80211__var_8h_abd27120e8db05a494dbc7424a3ca109d}{IEEE80211\_MSG\_WME}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01210}01210                     \textcolor{stringliteral}{"{}\%s: WME: \%d: acm=\%d aifsn=\%d logcwmin=\%d logcwmax=\%d txopLimit=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01211}01211                     \_\_func\_\_,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01212}01212                     i,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01213}01213                     wmep-\/>\mbox{\hyperlink{structwmeParams_a24a04b9dcfb55aca9d98dfe0c5dd5a7e}{wmep\_acm}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01214}01214                     wmep-\/>\mbox{\hyperlink{structwmeParams_aa059f563d8c3c914b1069f93f5dec452}{wmep\_aifsn}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01215}01215                     wmep-\/>\mbox{\hyperlink{structwmeParams_acd0f2d3c96d8d20a079f695412a7a50e}{wmep\_logcwmin}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01216}01216                     wmep-\/>\mbox{\hyperlink{structwmeParams_a55d6a579c3edf46401e0dfc26d0e20e4}{wmep\_logcwmax}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01217}01217                     wmep-\/>\mbox{\hyperlink{structwmeParams_a88b49ae8e80b44602597bf8d5e54f797}{wmep\_txopLimit}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01218}01218                 frm += 4;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01219}01219         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01220}01220         wme-\/>\mbox{\hyperlink{structieee80211__wme__state_a7d9fe8c5d681e189bf3231deaa1574e8}{wme\_wmeChanParams}}.\mbox{\hyperlink{structchanAccParams_aae41955d5f0e4ab47ecd3d6363a5cd27}{cap\_info}} = qosinfo\_count;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01221}01221         \textcolor{keywordflow}{return} 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01222}01222 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01223}01223 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01224}01224 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01225}01225 \textcolor{comment}{ * Process 11h Channel Switch Announcement (CSA) ie.  If this}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01226}01226 \textcolor{comment}{ * is the first CSA then initiate the switch.  Otherwise we}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01227}01227 \textcolor{comment}{ * track state and trigger completion and/or cancel of the switch.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01228}01228 \textcolor{comment}{ * XXX should be public for IBSS use}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01229}01229 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01230}01230 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01231}\mbox{\hyperlink{ieee80211__sta_8c_aa9da835862114ce75b714850716e253d}{01231}} \mbox{\hyperlink{ieee80211__sta_8c_aa9da835862114ce75b714850716e253d}{ieee80211\_parse\_csaparams}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap, uint8\_t *frm,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01232}01232         \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01233}01233 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01234}01234         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01235}01235         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__csa__ie}{ieee80211\_csa\_ie}} *csa =}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01236}01236             (\textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__csa__ie}{ieee80211\_csa\_ie}} *) frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01237}01237 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01238}01238         KASSERT(vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} >= \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01239}01239             (\textcolor{stringliteral}{"{}state \%s"{}}, \mbox{\hyperlink{ieee80211__proto_8c_a7743c46d5b77e40c7abac1417ee35dd8}{ieee80211\_state\_name}}[vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}}]));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01240}01240 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01241}01241         \textcolor{keywordflow}{if} (csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ad67700b6a047c01a99df004659f116ad}{csa\_mode}} > 1) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01242}01242                 \mbox{\hyperlink{ieee80211__var_8h_a0f3170d02954b6477b188c541623da5b}{IEEE80211\_DISCARD\_IE}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01243}01243                     \mbox{\hyperlink{ieee80211__var_8h_a6211f86515ef5a36d7fbbdc43a2861b2}{IEEE80211\_MSG\_ELEMID}} | \mbox{\hyperlink{ieee80211__var_8h_a8b89f0d20848cf5f70711ec96bc44a3c}{IEEE80211\_MSG\_DOTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01244}01244                     wh, \textcolor{stringliteral}{"{}CSA"{}}, \textcolor{stringliteral}{"{}invalid mode \%u"{}}, csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ad67700b6a047c01a99df004659f116ad}{csa\_mode}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01245}01245                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01246}01246         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01247}01247         \mbox{\hyperlink{ieee80211__freebsd_8h_ab3ce87ea4503405dd90019381065c9f6}{IEEE80211\_LOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01248}01248         \textcolor{keywordflow}{if} ((ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a78a9584f226ad4967275c54bdd2f8a34}{IEEE80211\_F\_CSAPENDING}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01249}01249                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01250}01250 \textcolor{comment}{                 * Convert the channel number to a channel reference.  We}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01251}01251 \textcolor{comment}{                 * try first to preserve turbo attribute of the current}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01252}01252 \textcolor{comment}{                 * channel then fallback.  Note this will not work if the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01253}01253 \textcolor{comment}{                 * CSA specifies a channel that requires a band switch (e.g.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01254}01254 \textcolor{comment}{                 * 11a => 11g).  This is intentional as 11h is defined only}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01255}01255 \textcolor{comment}{                 * for 5GHz/11a and because the switch does not involve a}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01256}01256 \textcolor{comment}{                 * reassociation, protocol state (capabilities, negotated}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01257}01257 \textcolor{comment}{                 * rates, etc) may/will be wrong.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01258}01258 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01259}01259                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__channel}{ieee80211\_channel}} *c =}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01260}01260                     \mbox{\hyperlink{ieee80211_8c_a2f10ae7ab20c9f85d33ae8b17e531b04}{ieee80211\_find\_channel\_byieee}}(ic, csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ae4a0a40110a54b26147dff4374592f69}{csa\_newchan}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01261}01261                         (ic-\/>\mbox{\hyperlink{structieee80211com_a02f3e4873209009edbcdb3bc890ae87d}{ic\_bsschan}}-\/>\mbox{\hyperlink{structieee80211__channel_a32346d24003d7f5b90c4f2a76896a339}{ic\_flags}} \& \mbox{\hyperlink{__ieee80211_8h_a987340a38f67528f99c7f2b5d37178b3}{IEEE80211\_CHAN\_ALLTURBO}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01262}01262                 \textcolor{keywordflow}{if} (c == NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01263}01263                         c = \mbox{\hyperlink{ieee80211_8c_a2f10ae7ab20c9f85d33ae8b17e531b04}{ieee80211\_find\_channel\_byieee}}(ic,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01264}01264                             csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ae4a0a40110a54b26147dff4374592f69}{csa\_newchan}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01265}01265                             (ic-\/>\mbox{\hyperlink{structieee80211com_a02f3e4873209009edbcdb3bc890ae87d}{ic\_bsschan}}-\/>\mbox{\hyperlink{structieee80211__channel_a32346d24003d7f5b90c4f2a76896a339}{ic\_flags}} \& \mbox{\hyperlink{__ieee80211_8h_a20fae53ec845f6d9ee924d9f5cdeb21b}{IEEE80211\_CHAN\_ALL}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01266}01266                         \textcolor{keywordflow}{if} (c == NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01267}01267                                 \mbox{\hyperlink{ieee80211__var_8h_a0f3170d02954b6477b188c541623da5b}{IEEE80211\_DISCARD\_IE}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01268}01268                                     \mbox{\hyperlink{ieee80211__var_8h_a6211f86515ef5a36d7fbbdc43a2861b2}{IEEE80211\_MSG\_ELEMID}} | \mbox{\hyperlink{ieee80211__var_8h_a8b89f0d20848cf5f70711ec96bc44a3c}{IEEE80211\_MSG\_DOTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01269}01269                                     wh, \textcolor{stringliteral}{"{}CSA"{}}, \textcolor{stringliteral}{"{}invalid channel \%u"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01270}01270                                     csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ae4a0a40110a54b26147dff4374592f69}{csa\_newchan}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01271}01271                                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01272}01272                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01273}01273                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01274}01274 \textcolor{preprocessor}{\#if IEEE80211\_CSA\_COUNT\_MIN > 0}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01275}01275                 \textcolor{keywordflow}{if} (csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_a8447193ddc8beb9622214825b91371b8}{csa\_count}} < \mbox{\hyperlink{ieee80211_8h_a4f6c1f151955b7be4c7ba345cfb2dec6}{IEEE80211\_CSA\_COUNT\_MIN}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01276}01276                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01277}01277 \textcolor{comment}{                         * Require at least IEEE80211\_CSA\_COUNT\_MIN count to}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01278}01278 \textcolor{comment}{                         * reduce the risk of being redirected by a fabricated}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01279}01279 \textcolor{comment}{                         * CSA.  If a valid CSA is dropped we'll still get a}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01280}01280 \textcolor{comment}{                         * beacon miss when the AP leaves the channel so we'll}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01281}01281 \textcolor{comment}{                         * eventually follow to the new channel.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01282}01282 \textcolor{comment}{                         *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01283}01283 \textcolor{comment}{                         * NOTE: this violates the 11h spec that states that}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01284}01284 \textcolor{comment}{                         * count may be any value and if 0 then a switch}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01285}01285 \textcolor{comment}{                         * should happen asap.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01286}01286 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01287}01287                         \mbox{\hyperlink{ieee80211__var_8h_a0f3170d02954b6477b188c541623da5b}{IEEE80211\_DISCARD\_IE}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01288}01288                             \mbox{\hyperlink{ieee80211__var_8h_a6211f86515ef5a36d7fbbdc43a2861b2}{IEEE80211\_MSG\_ELEMID}} | \mbox{\hyperlink{ieee80211__var_8h_a8b89f0d20848cf5f70711ec96bc44a3c}{IEEE80211\_MSG\_DOTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01289}01289                             wh, \textcolor{stringliteral}{"{}CSA"{}}, \textcolor{stringliteral}{"{}count \%u too small, must be >= \%u"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01290}01290                             csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_a8447193ddc8beb9622214825b91371b8}{csa\_count}}, \mbox{\hyperlink{ieee80211_8h_a4f6c1f151955b7be4c7ba345cfb2dec6}{IEEE80211\_CSA\_COUNT\_MIN}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01291}01291                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01292}01292                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01293}01293 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01294}01294                 \mbox{\hyperlink{ieee80211__proto_8c_a3cc6adc3145c167938b15e8771f2e95b}{ieee80211\_csa\_startswitch}}(ic, c, csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ad67700b6a047c01a99df004659f116ad}{csa\_mode}}, csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_a8447193ddc8beb9622214825b91371b8}{csa\_count}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01295}01295         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01296}01296                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01297}01297 \textcolor{comment}{                 * Validate this ie against the initial CSA.  We require}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01298}01298 \textcolor{comment}{                 * mode and channel not change and the count must be}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01299}01299 \textcolor{comment}{                 * monotonically decreasing.  This may be pointless and}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01300}01300 \textcolor{comment}{                 * canceling the switch as a result may be too paranoid but}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01301}01301 \textcolor{comment}{                 * in the worst case if we drop out of CSA because of this}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01302}01302 \textcolor{comment}{                 * and the AP does move then we'll just end up taking a}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01303}01303 \textcolor{comment}{                 * beacon miss and scan to find the AP.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01304}01304 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01305}01305 \textcolor{comment}{                 * XXX may want <= on count as we also process ProbeResp}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01306}01306 \textcolor{comment}{                 * frames and those may come in w/ the same count as the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01307}01307 \textcolor{comment}{                 * previous beacon; but doing so leaves us open to a stuck}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01308}01308 \textcolor{comment}{                 * count until we add a dead-\/man timer}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01309}01309 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01310}01310                 \textcolor{keywordflow}{if} (!(csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_a8447193ddc8beb9622214825b91371b8}{csa\_count}} < ic-\/>\mbox{\hyperlink{structieee80211com_adb79ddca37adfad2d7f51af850e3b0d6}{ic\_csa\_count}} \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01311}01311                       csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ad67700b6a047c01a99df004659f116ad}{csa\_mode}} == ic-\/>\mbox{\hyperlink{structieee80211com_a9717d2f2d8557478d8ba13b44f0cfe5a}{ic\_csa\_mode}} \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01312}01312                       csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ae4a0a40110a54b26147dff4374592f69}{csa\_newchan}} == \mbox{\hyperlink{ieee80211_8c_a0f2ce75abd2d6add7f014be6d9305980}{ieee80211\_chan2ieee}}(ic, ic-\/>\mbox{\hyperlink{structieee80211com_a084802d285cc8949c70f69b4b3998c8f}{ic\_csa\_newchan}}))) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01313}01313                         \mbox{\hyperlink{ieee80211__var_8h_a425e17c97669476b1ea7ac710885cb16}{IEEE80211\_NOTE\_FRAME}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a8b89f0d20848cf5f70711ec96bc44a3c}{IEEE80211\_MSG\_DOTH}}, wh,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01314}01314                             \textcolor{stringliteral}{"{}CSA ie mismatch, initial ie <\%d,\%d,\%d>, "{}}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01315}01315                             \textcolor{stringliteral}{"{}this ie <\%d,\%d,\%d>"{}}, ic-\/>\mbox{\hyperlink{structieee80211com_a9717d2f2d8557478d8ba13b44f0cfe5a}{ic\_csa\_mode}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01316}01316                             ic-\/>\mbox{\hyperlink{structieee80211com_a084802d285cc8949c70f69b4b3998c8f}{ic\_csa\_newchan}}, ic-\/>\mbox{\hyperlink{structieee80211com_adb79ddca37adfad2d7f51af850e3b0d6}{ic\_csa\_count}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01317}01317                             csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ad67700b6a047c01a99df004659f116ad}{csa\_mode}}, csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_ae4a0a40110a54b26147dff4374592f69}{csa\_newchan}}, csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_a8447193ddc8beb9622214825b91371b8}{csa\_count}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01318}01318                         \mbox{\hyperlink{ieee80211__proto_8c_a7abccc1fd103c58b4d32942bc5dfb03e}{ieee80211\_csa\_cancelswitch}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01319}01319                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01320}01320                         \textcolor{keywordflow}{if} (csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_a8447193ddc8beb9622214825b91371b8}{csa\_count}} <= 1)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01321}01321                                 \mbox{\hyperlink{ieee80211__proto_8c_a9ea341668eefce2701e145f8763b3980}{ieee80211\_csa\_completeswitch}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01322}01322                         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01323}01323                                 ic-\/>\mbox{\hyperlink{structieee80211com_adb79ddca37adfad2d7f51af850e3b0d6}{ic\_csa\_count}} = csa-\/>\mbox{\hyperlink{structieee80211__csa__ie_a8447193ddc8beb9622214825b91371b8}{csa\_count}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01324}01324                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01325}01325         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01326}01326 done:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01327}01327         \mbox{\hyperlink{ieee80211__freebsd_8h_a58240f22e885f3d421da47c2bc376815}{IEEE80211\_UNLOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01328}01328 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01329}01329 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01330}01330 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01331}01331 \textcolor{comment}{ * Return non-\/zero if a background scan may be continued:}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01332}01332 \textcolor{comment}{ * o bg scan is active}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01333}01333 \textcolor{comment}{ * o no channel switch is pending}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01334}01334 \textcolor{comment}{ * o there has not been any traffic recently}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01335}01335 \textcolor{comment}{ * o no full-\/offload scan support (no need for explicitly continuing scan then)}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01336}01336 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01337}01337 \textcolor{comment}{ * Note we do not check if there is an administrative enable;}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01338}01338 \textcolor{comment}{ * this is only done to start the scan.  We assume that any}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01339}01339 \textcolor{comment}{ * change in state will be accompanied by a request to cancel}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01340}01340 \textcolor{comment}{ * active scans which will otherwise cause this test to fail.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01341}01341 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01342}01342 \textcolor{keyword}{static} \_\_inline \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01343}\mbox{\hyperlink{ieee80211__sta_8c_ada3d8831712b83abf7d0de3b38538df7}{01343}} \mbox{\hyperlink{ieee80211__sta_8c_ada3d8831712b83abf7d0de3b38538df7}{contbgscan}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01344}01344 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01345}01345         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01346}01346 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01347}01347         \textcolor{keywordflow}{return} ((ic-\/>\mbox{\hyperlink{structieee80211com_a279e83719ad4b4b66e6ac8b052e42722}{ic\_flags\_ext}} \& \mbox{\hyperlink{ieee80211__var_8h_a459be0f95a995e5b681feddeefa5200b}{IEEE80211\_FEXT\_BGSCAN}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01348}01348             (ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a78a9584f226ad4967275c54bdd2f8a34}{IEEE80211\_F\_CSAPENDING}}) == 0 \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01349}01349             !(vap-\/>\mbox{\hyperlink{structieee80211vap_a74aac287d91c2dd2da91ba4539d5fd43}{iv\_flags\_ext}} \& \mbox{\hyperlink{ieee80211__var_8h_ac1bbd7121efdfc198a6bf1dff4cc1cb5}{IEEE80211\_FEXT\_SCAN\_OFFLOAD}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01350}01350             vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} == \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}} \&\&          \textcolor{comment}{/* XXX? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01351}01351             \mbox{\hyperlink{ieee80211__freebsd_8h_a1ebc8a9b26914213d5493956b91f428e}{ieee80211\_time\_after}}(ticks, ic-\/>\mbox{\hyperlink{structieee80211com_a8536fa7e359d07503a5c8750eed0481a}{ic\_lastdata}} + vap-\/>\mbox{\hyperlink{structieee80211vap_a4719fc6ebe7d66fec2eab38054aacf46}{iv\_bgscanidle}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01352}01352 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01353}01353 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01354}01354 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01355}01355 \textcolor{comment}{ * Return non-\/zero if a backgrond scan may be started:}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01356}01356 \textcolor{comment}{ * o bg scanning is administratively enabled}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01357}01357 \textcolor{comment}{ * o no channel switch is pending}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01358}01358 \textcolor{comment}{ * o we are not boosted on a dynamic turbo channel}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01359}01359 \textcolor{comment}{ * o there has not been a scan recently}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01360}01360 \textcolor{comment}{ * o there has not been any traffic recently (don't check if full-\/offload scan)}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01361}01361 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01362}01362 \textcolor{keyword}{static} \_\_inline \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01363}\mbox{\hyperlink{ieee80211__sta_8c_a88e3b2147ff7d9a870e47bd7f67b15cd}{01363}} \mbox{\hyperlink{ieee80211__sta_8c_a88e3b2147ff7d9a870e47bd7f67b15cd}{startbgscan}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01364}01364 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01365}01365         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = vap-\/>\mbox{\hyperlink{structieee80211vap_a043409de0850043e3574182889cdaac0}{iv\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01366}01366 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01367}01367         \textcolor{keywordflow}{return} ((vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_ae93b89224c67563ca8ff02383e9d21b6}{IEEE80211\_F\_BGSCAN}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01368}01368             (ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a78a9584f226ad4967275c54bdd2f8a34}{IEEE80211\_F\_CSAPENDING}}) == 0 \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01369}01369 \#ifdef IEEE80211\_SUPPORT\_SUPERG}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01370}01370             !\mbox{\hyperlink{__ieee80211_8h_a47093e9a3b67c999287cdaa3f32e3a57}{IEEE80211\_IS\_CHAN\_DTURBO}}(ic-\/>\mbox{\hyperlink{structieee80211com_af4f9f1d4120d065aec7ac8eae28a613a}{ic\_curchan}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01371}01371 \#endif}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01372}01372             \mbox{\hyperlink{ieee80211__freebsd_8h_a1ebc8a9b26914213d5493956b91f428e}{ieee80211\_time\_after}}(ticks, ic-\/>\mbox{\hyperlink{structieee80211com_a2ef1fc332753b5872a8d84c93acb5279}{ic\_lastscan}} + vap-\/>\mbox{\hyperlink{structieee80211vap_aba05e0380c28e03a660be9e63c1a4924}{iv\_bgscanintvl}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01373}01373             ((vap-\/>\mbox{\hyperlink{structieee80211vap_a74aac287d91c2dd2da91ba4539d5fd43}{iv\_flags\_ext}} \& \mbox{\hyperlink{ieee80211__var_8h_ac1bbd7121efdfc198a6bf1dff4cc1cb5}{IEEE80211\_FEXT\_SCAN\_OFFLOAD}}) ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01374}01374              \mbox{\hyperlink{ieee80211__freebsd_8h_a1ebc8a9b26914213d5493956b91f428e}{ieee80211\_time\_after}}(ticks, ic-\/>\mbox{\hyperlink{structieee80211com_a8536fa7e359d07503a5c8750eed0481a}{ic\_lastdata}} + vap-\/>\mbox{\hyperlink{structieee80211vap_a4719fc6ebe7d66fec2eab38054aacf46}{iv\_bgscanidle}})));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01375}01375 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01376}01376 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01377}01377 \textcolor{preprocessor}{\#ifdef  notyet}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01378}01378 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01379}01379 \textcolor{comment}{ * Compare two quiet IEs and return if they are equivalent.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01380}01380 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01381}01381 \textcolor{comment}{ * The tbttcount isnt checked -\/ that's not part of the configuration.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01382}01382 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01383}01383 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01384}01384 compare\_quiet\_ie(\textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__quiet__ie}{ieee80211\_quiet\_ie}} *q1,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01385}01385     \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__quiet__ie}{ieee80211\_quiet\_ie}} *q2)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01386}01386 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01387}01387 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01388}01388         \textcolor{keywordflow}{if} (q1-\/>\mbox{\hyperlink{structieee80211__quiet__ie_afb6993791804a3ff2cac97f64092ff0b}{period}} != q2-\/>\mbox{\hyperlink{structieee80211__quiet__ie_afb6993791804a3ff2cac97f64092ff0b}{period}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01389}01389                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01390}01390         \textcolor{keywordflow}{if} (le16dec(\&q1-\/>\mbox{\hyperlink{structieee80211__quiet__ie_afe0be8e7caa9306eacba5c32c87a367f}{duration}}) != le16dec(\&q2-\/>\mbox{\hyperlink{structieee80211__quiet__ie_afe0be8e7caa9306eacba5c32c87a367f}{duration}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01391}01391                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01392}01392         \textcolor{keywordflow}{if} (le16dec(\&q1-\/>\mbox{\hyperlink{structieee80211__quiet__ie_ac53a02cf2b90a6157cf88937c99453ca}{offset}}) != le16dec(\&q2-\/>\mbox{\hyperlink{structieee80211__quiet__ie_ac53a02cf2b90a6157cf88937c99453ca}{offset}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01393}01393                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01394}01394         \textcolor{keywordflow}{return} (1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01395}01395 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01396}01396 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01397}01397 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01398}01398 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01399}\mbox{\hyperlink{ieee80211__sta_8c_a4a628f1b17c94c80828a3dc019d50ee7}{01399}} \mbox{\hyperlink{ieee80211__sta_8c_a4a628f1b17c94c80828a3dc019d50ee7}{sta\_recv\_mgmt}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni, \textcolor{keyword}{struct} mbuf *m0, \textcolor{keywordtype}{int} subtype,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01400}01400     \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__rx__stats}{ieee80211\_rx\_stats}} *rxs,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01401}01401     \textcolor{keywordtype}{int} rssi, \textcolor{keywordtype}{int} nf)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01402}01402 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01403}01403 \textcolor{preprocessor}{\#define ISREASSOC(\_st)  ((\_st) == IEEE80211\_FC0\_SUBTYPE\_REASSOC\_RESP)}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01404}01404         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211vap}{ieee80211vap}} *vap = ni-\/>\mbox{\hyperlink{structieee80211__node_a6adce9156cd9d0e45eaa499acdef5092}{ni\_vap}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01405}01405         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211com}{ieee80211com}} *ic = ni-\/>\mbox{\hyperlink{structieee80211__node_a2510619138beb9911b3cf058cc4991a6}{ni\_ic}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01406}01406         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__channel}{ieee80211\_channel}} *rxchan = ic-\/>\mbox{\hyperlink{structieee80211com_af4f9f1d4120d065aec7ac8eae28a613a}{ic\_curchan}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01407}01407         \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *wh;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01408}01408         \textcolor{keywordtype}{int} ht\_state\_change = 0, do\_ht = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01409}01409         uint8\_t *frm, *efrm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01410}01410         uint8\_t *rates, *xrates, *wme, *htcap, *htinfo;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01411}01411         uint8\_t *vhtcap, *vhtopmode;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01412}01412         uint8\_t rate;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01413}01413         uint8\_t qosinfo;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01414}01414 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01415}01415         wh = mtod(m0, \textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__frame}{ieee80211\_frame}} *);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01416}01416         frm = (uint8\_t *)\&wh[1];}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01417}01417         efrm = mtod(m0, uint8\_t *) + m0-\/>m\_len;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01418}01418         \textcolor{keywordflow}{switch} (subtype) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01419}01419         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a82766a47c3f0b6956ec4ecb5ac8fc509}{IEEE80211\_FC0\_SUBTYPE\_PROBE\_RESP}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01420}01420         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_aefaac0be730932e1085aee40abdb7bfb}{IEEE80211\_FC0\_SUBTYPE\_BEACON}}: \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01421}01421                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__scanparams}{ieee80211\_scanparams}} scan;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01422}01422                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__channel}{ieee80211\_channel}} *c;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01423}01423                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01424}01424 \textcolor{comment}{                 * We process beacon/probe response frames:}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01425}01425 \textcolor{comment}{                 *    o when scanning, or}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01426}01426 \textcolor{comment}{                 *    o station mode when associated (to collect state}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01427}01427 \textcolor{comment}{                 *      updates such as 802.11g slot time)}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01428}01428 \textcolor{comment}{                 * Frames otherwise received are discarded.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01429}01429 \textcolor{comment}{                 */} }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01430}01430                 \textcolor{keywordflow}{if} (!((ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a3c8d69c1fb5cadc6d9f00e9832355e6d}{IEEE80211\_F\_SCAN}}) || ni-\/>\mbox{\hyperlink{structieee80211__node_af3b0bfceba724a350e2b4f0bc2ddb528}{ni\_associd}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01431}01431                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01432}01432                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01433}01433                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01434}01434 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01435}01435                 \textcolor{comment}{/* Override RX channel as appropriate */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01436}01436                 \textcolor{keywordflow}{if} (rxs != NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01437}01437                         c = \mbox{\hyperlink{ieee80211_8c_ab8fae47e25a4c1d4c35c09b89ca0929f}{ieee80211\_lookup\_channel\_rxstatus}}(vap, rxs);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01438}01438                         \textcolor{keywordflow}{if} (c != NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01439}01439                                 rxchan = c;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01440}01440                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01441}01441 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01442}01442                 \textcolor{comment}{/* XXX probe response in sta mode when !scanning? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01443}01443                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__input_8c_ac598dcfcbfa05b6c1733156e599d59e7}{ieee80211\_parse\_beacon}}(ni, m0, rxchan, \&scan) != 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01444}01444                         \textcolor{keywordflow}{if} (! (ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a3c8d69c1fb5cadc6d9f00e9832355e6d}{IEEE80211\_F\_SCAN}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01445}01445                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ac0363b2c2026c591a2b784c10859aac8}{is\_beacon\_bad}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01446}01446                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01447}01447                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01448}01448 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01449}01449                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01450}01450 \textcolor{comment}{                 * Count frame now that we know it's to be processed.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01451}01451 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01452}01452                 \textcolor{keywordflow}{if} (subtype == \mbox{\hyperlink{ieee80211_8h_aefaac0be730932e1085aee40abdb7bfb}{IEEE80211\_FC0\_SUBTYPE\_BEACON}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01453}01453                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a225ecea1cb7eabe6bef3da53330972ca}{is\_rx\_beacon}}++;               \textcolor{comment}{/* XXX remove */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01454}01454                         \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_beacons);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01455}01455                 \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01456}01456                         \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_proberesp);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01457}01457                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01458}01458 \textcolor{comment}{                 * When operating in station mode, check for state updates.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01459}01459 \textcolor{comment}{                 * Be careful to ignore beacons received while doing a}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01460}01460 \textcolor{comment}{                 * background scan.  We consider only 11g/WMM stuff right now.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01461}01461 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01462}01462                 \textcolor{keywordflow}{if} (ni-\/>\mbox{\hyperlink{structieee80211__node_af3b0bfceba724a350e2b4f0bc2ddb528}{ni\_associd}} != 0 \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01463}01463                     ((ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a3c8d69c1fb5cadc6d9f00e9832355e6d}{IEEE80211\_F\_SCAN}}) == 0 ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01464}01464                      \mbox{\hyperlink{ieee80211__var_8h_a87fba5bb95c383ed07ae42774b80386f}{IEEE80211\_ADDR\_EQ}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}}, ni-\/>\mbox{\hyperlink{structieee80211__node_a45e68c78c549ae07131b2e0912e2f268}{ni\_bssid}}))) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01465}01465                         \textcolor{comment}{/* record tsf of last beacon */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01466}01466                         memcpy(ni-\/>\mbox{\hyperlink{structieee80211__node_ac07c92de78e1f25c751f284409459af6}{ni\_tstamp}}.\mbox{\hyperlink{structieee80211__node_aa1c854df5b6d5b98df1d48aad882ae34}{data}}, scan.\mbox{\hyperlink{structieee80211__scanparams_a67ce3195cf716a103c461a4cf6af6629}{tstamp}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01467}01467                                 \textcolor{keyword}{sizeof}(ni-\/>\mbox{\hyperlink{structieee80211__node_ac07c92de78e1f25c751f284409459af6}{ni\_tstamp}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01468}01468                         \textcolor{comment}{/* count beacon frame for s/w bmiss handling */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01469}01469                         vap-\/>\mbox{\hyperlink{structieee80211vap_a261d2105dde9edc8760516680d5061cc}{iv\_swbmiss\_count}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01470}01470                         vap-\/>\mbox{\hyperlink{structieee80211vap_a6faad160b0fb7dee58f4cb9fd06282d0}{iv\_bmiss\_count}} = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01471}01471                         \textcolor{keywordflow}{if} (ni-\/>\mbox{\hyperlink{structieee80211__node_a3f0401e2f7a097875d26b91b0f6f18d8}{ni\_erp}} != scan.\mbox{\hyperlink{structieee80211__scanparams_a809ad6374b57c6e2ccb44fa14f3b17de}{erp}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01472}01472                                 \mbox{\hyperlink{ieee80211__var_8h_a6895488831af45948c8a35da11bba1c6}{IEEE80211\_NOTE\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_af34afd95dcfbd1c0ed27cfcff1fb5642}{IEEE80211\_MSG\_ASSOC}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01473}01473                                     wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01474}01474                                     \textcolor{stringliteral}{"{}erp change: was 0x\%x, now 0x\%x"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01475}01475                                     ni-\/>\mbox{\hyperlink{structieee80211__node_a3f0401e2f7a097875d26b91b0f6f18d8}{ni\_erp}}, scan.\mbox{\hyperlink{structieee80211__scanparams_a809ad6374b57c6e2ccb44fa14f3b17de}{erp}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01476}01476                                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{__ieee80211_8h_ad36be329f5026e25093cf54c04354ef5}{IEEE80211\_IS\_CHAN\_ANYG}}(ic-\/>\mbox{\hyperlink{structieee80211com_af4f9f1d4120d065aec7ac8eae28a613a}{ic\_curchan}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01477}01477                                     (ni-\/>\mbox{\hyperlink{structieee80211__node_a3f0401e2f7a097875d26b91b0f6f18d8}{ni\_erp}} \& \mbox{\hyperlink{ieee80211_8h_af0604230ab2a281af452d6941a1e5b49}{IEEE80211\_ERP\_USE\_PROTECTION}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01478}01478                                         vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} |= \mbox{\hyperlink{ieee80211__var_8h_abf78990660332db941d6fcee8313cfe4}{IEEE80211\_F\_USEPROT}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01479}01479                                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01480}01480                                         vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \&= \string~IEEE80211\_F\_USEPROT;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01481}01481                                 ni-\/>\mbox{\hyperlink{structieee80211__node_a3f0401e2f7a097875d26b91b0f6f18d8}{ni\_erp}} = scan.\mbox{\hyperlink{structieee80211__scanparams_a809ad6374b57c6e2ccb44fa14f3b17de}{erp}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01482}01482                                 \textcolor{comment}{/* XXX statistic */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01483}01483                                 \textcolor{comment}{/* driver notification */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01484}01484                                 \mbox{\hyperlink{ieee80211__proto_8c_aa48aec47695103a59b415825e805c411}{ieee80211\_vap\_update\_erp\_protmode}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01485}01485                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01486}01486                         \textcolor{keywordflow}{if} ((ni-\/>\mbox{\hyperlink{structieee80211__node_a93ecbc1e605843a367c1f44fe3c6d127}{ni\_capinfo}} \string^ scan.\mbox{\hyperlink{structieee80211__scanparams_a4d83e176f74436ea518756bd91258ef3}{capinfo}}) \& \mbox{\hyperlink{ieee80211_8h_a62aa26e192ea70006a52d69a86a03888}{IEEE80211\_CAPINFO\_SHORT\_SLOTTIME}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01487}01487                                 \mbox{\hyperlink{ieee80211__var_8h_a6895488831af45948c8a35da11bba1c6}{IEEE80211\_NOTE\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_af34afd95dcfbd1c0ed27cfcff1fb5642}{IEEE80211\_MSG\_ASSOC}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01488}01488                                     wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01489}01489                                     \textcolor{stringliteral}{"{}capabilities change: was 0x\%x, now 0x\%x"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01490}01490                                     ni-\/>\mbox{\hyperlink{structieee80211__node_a93ecbc1e605843a367c1f44fe3c6d127}{ni\_capinfo}}, scan.\mbox{\hyperlink{structieee80211__scanparams_a4d83e176f74436ea518756bd91258ef3}{capinfo}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01491}01491                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01492}01492 \textcolor{comment}{                                 * NB: we assume short preamble doesn't}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01493}01493 \textcolor{comment}{                                 *     change dynamically}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01494}01494 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01495}01495                                 \mbox{\hyperlink{ieee80211__proto_8c_ad0f7cd95880f5f2b151ba4ea7359c8e4}{ieee80211\_vap\_set\_shortslottime}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01496}01496                                         \mbox{\hyperlink{__ieee80211_8h_a42b25648aeffee4cd591bf5d3f9bc111}{IEEE80211\_IS\_CHAN\_A}}(ic-\/>\mbox{\hyperlink{structieee80211com_a02f3e4873209009edbcdb3bc890ae87d}{ic\_bsschan}}) ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01497}01497                                         (scan.\mbox{\hyperlink{structieee80211__scanparams_a4d83e176f74436ea518756bd91258ef3}{capinfo}} \& \mbox{\hyperlink{ieee80211_8h_a62aa26e192ea70006a52d69a86a03888}{IEEE80211\_CAPINFO\_SHORT\_SLOTTIME}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01498}01498                                 ni-\/>\mbox{\hyperlink{structieee80211__node_a93ecbc1e605843a367c1f44fe3c6d127}{ni\_capinfo}} = (ni-\/>\mbox{\hyperlink{structieee80211__node_a93ecbc1e605843a367c1f44fe3c6d127}{ni\_capinfo}} \&\string~ IEEE80211\_CAPINFO\_SHORT\_SLOTTIME)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01499}01499                                                | (scan.\mbox{\hyperlink{structieee80211__scanparams_a4d83e176f74436ea518756bd91258ef3}{capinfo}} \& \mbox{\hyperlink{ieee80211_8h_a62aa26e192ea70006a52d69a86a03888}{IEEE80211\_CAPINFO\_SHORT\_SLOTTIME}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01500}01500                                 \textcolor{comment}{/* XXX statistic */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01501}01501                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01502}01502                         \textcolor{keywordflow}{if} (scan.\mbox{\hyperlink{structieee80211__scanparams_a9679f53d6f81a31cf1a1e01a4f24c34f}{wme}} != NULL \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01503}01503                             (ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \& \mbox{\hyperlink{ieee80211__node_8h_a914d4bef5e9b559a9b7f438137bd768a}{IEEE80211\_NODE\_QOS}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01504}01504                                 \textcolor{keywordtype}{int} \_retval;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01505}01505                                 \textcolor{keywordflow}{if} ((\_retval = \mbox{\hyperlink{ieee80211__sta_8c_a9f98daefca96f7e291fef2b1821c39af}{ieee80211\_parse\_wmeparams}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01506}01506                                     scan.\mbox{\hyperlink{structieee80211__scanparams_a9679f53d6f81a31cf1a1e01a4f24c34f}{wme}}, wh, \&qosinfo)) >= 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01507}01507                                         \textcolor{keywordflow}{if} (qosinfo \& \mbox{\hyperlink{ieee80211_8h_ade799f72d46defc329ee3eeaba65050b}{WME\_CAPINFO\_UAPSD\_EN}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01508}01508                                                 ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} |=}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01509}01509                                                     \mbox{\hyperlink{ieee80211__node_8h_aca55122c36e3aeb3ff9134586424ba7d}{IEEE80211\_NODE\_UAPSD}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01510}01510                                         \textcolor{keywordflow}{if} (\_retval > 0)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01511}01511                                                 \mbox{\hyperlink{ieee80211__proto_8c_a9b1637db7bd0638fa1e0ad2461006ff9}{ieee80211\_wme\_updateparams}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01512}01512                                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01513}01513                         \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01514}01514                                 ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \&= \string~IEEE80211\_NODE\_UAPSD;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01515}01515 \textcolor{preprocessor}{\#ifdef IEEE80211\_SUPPORT\_SUPERG}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01516}01516                         \textcolor{keywordflow}{if} (scan.\mbox{\hyperlink{structieee80211__scanparams_a93dca15bbc8354c252387bf47fddc49b}{ath}} != NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01517}01517                                 \mbox{\hyperlink{ieee80211__superg_8h_a8245624bf3f5169734748af2d82820ec}{ieee80211\_parse\_athparams}}(ni, scan.\mbox{\hyperlink{structieee80211__scanparams_a93dca15bbc8354c252387bf47fddc49b}{ath}}, wh);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01518}01518 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01519}01519                         \textcolor{keywordflow}{if} (scan.\mbox{\hyperlink{structieee80211__scanparams_acccbb38f44f77328758b18060f1a689c}{htcap}} != NULL \&\& scan.\mbox{\hyperlink{structieee80211__scanparams_a28857a3770577f31029bd2b831ad3fa7}{htinfo}} != NULL \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01520}01520                             (vap-\/>\mbox{\hyperlink{structieee80211vap_a3a03659975f82237fc5fcd1e9053f428}{iv\_flags\_ht}} \& \mbox{\hyperlink{ieee80211__var_8h_a4c189cce6f531fe8638f95564fcce1ee}{IEEE80211\_FHT\_HT}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01521}01521                                 \textcolor{comment}{/* XXX state changes? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01522}01522                                 \mbox{\hyperlink{ieee80211__ht_8c_abfecc9b7f18ff6e4018bef64d136f909}{ieee80211\_ht\_updateparams}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01523}01523                                     scan.\mbox{\hyperlink{structieee80211__scanparams_acccbb38f44f77328758b18060f1a689c}{htcap}}, scan.\mbox{\hyperlink{structieee80211__scanparams_a28857a3770577f31029bd2b831ad3fa7}{htinfo}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01524}01524                                 do\_ht = 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01525}01525                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01526}01526                         \textcolor{keywordflow}{if} (scan.\mbox{\hyperlink{structieee80211__scanparams_a5103f34ee2dc9de36f52b8d2deb027f9}{vhtcap}} != NULL \&\& scan.\mbox{\hyperlink{structieee80211__scanparams_a0528b18eab8b970eb05b4cde61cdbd35}{vhtopmode}} != NULL \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01527}01527                             (vap-\/>\mbox{\hyperlink{structieee80211vap_a6fd6041c8cffd57d7c079e730f899348}{iv\_flags\_vht}} \& \mbox{\hyperlink{ieee80211__var_8h_aa1341b6fe1233ec9f197c6dcb3b81c65}{IEEE80211\_FVHT\_VHT}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01528}01528                                 \textcolor{comment}{/* XXX state changes? */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01529}01529                                 \mbox{\hyperlink{ieee80211__vht_8c_a7bb5441d096fcaa744919365f2d67e3a}{ieee80211\_vht\_updateparams}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01530}01530                                     scan.\mbox{\hyperlink{structieee80211__scanparams_a5103f34ee2dc9de36f52b8d2deb027f9}{vhtcap}}, scan.\mbox{\hyperlink{structieee80211__scanparams_a0528b18eab8b970eb05b4cde61cdbd35}{vhtopmode}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01531}01531                                 do\_ht = 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01532}01532                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01533}01533                         \textcolor{keywordflow}{if} (do\_ht) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01534}01534                                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__ht_8c_a0c549c707693e042c987edd8ddf3ee31}{ieee80211\_ht\_updateparams\_final}}(ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01535}01535                                     scan.\mbox{\hyperlink{structieee80211__scanparams_acccbb38f44f77328758b18060f1a689c}{htcap}}, scan.\mbox{\hyperlink{structieee80211__scanparams_a28857a3770577f31029bd2b831ad3fa7}{htinfo}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01536}01536                                         ht\_state\_change = 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01537}01537                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01538}01538 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01539}01539                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01540}01540 \textcolor{comment}{                         * If we have a quiet time IE then report it up to}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01541}01541 \textcolor{comment}{                         * the driver.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01542}01542 \textcolor{comment}{                         *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01543}01543 \textcolor{comment}{                         * Otherwise, inform the driver that the quiet time}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01544}01544 \textcolor{comment}{                         * IE has disappeared -\/ only do that once rather than}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01545}01545 \textcolor{comment}{                         * spamming it each time.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01546}01546 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01547}01547                         \textcolor{keywordflow}{if} (scan.\mbox{\hyperlink{structieee80211__scanparams_a07ad283d281fb703be42f2dea8ffaffe}{quiet}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01548}01548                                 ic-\/>\mbox{\hyperlink{structieee80211com_a88282118fa6324c22bbb60b0305e176b}{ic\_set\_quiet}}(ni, scan.\mbox{\hyperlink{structieee80211__scanparams_a07ad283d281fb703be42f2dea8ffaffe}{quiet}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01549}01549                                 ni-\/>\mbox{\hyperlink{structieee80211__node_a7ab03e2ac7a6ed00861f9f3394dac93e}{ni\_quiet\_ie\_set}} = 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01550}01550                                 memcpy(\&ni-\/>\mbox{\hyperlink{structieee80211__node_a326cb8c0c808a93f92ad351800edb9c4}{ni\_quiet\_ie}}, scan.\mbox{\hyperlink{structieee80211__scanparams_a07ad283d281fb703be42f2dea8ffaffe}{quiet}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01551}01551                                     \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__quiet__ie}{ieee80211\_quiet\_ie}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01552}01552                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01553}01553                                 \textcolor{keywordflow}{if} (ni-\/>\mbox{\hyperlink{structieee80211__node_a7ab03e2ac7a6ed00861f9f3394dac93e}{ni\_quiet\_ie\_set}} == 1)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01554}01554                                         ic-\/>\mbox{\hyperlink{structieee80211com_a88282118fa6324c22bbb60b0305e176b}{ic\_set\_quiet}}(ni, NULL);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01555}01555                                 ni-\/>\mbox{\hyperlink{structieee80211__node_a7ab03e2ac7a6ed00861f9f3394dac93e}{ni\_quiet\_ie\_set}} = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01556}01556                                 bzero(\&ni-\/>\mbox{\hyperlink{structieee80211__node_a326cb8c0c808a93f92ad351800edb9c4}{ni\_quiet\_ie}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01557}01557                                     \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__quiet__ie}{ieee80211\_quiet\_ie}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01558}01558                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01559}01559 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01560}01560                         \textcolor{keywordflow}{if} (scan.\mbox{\hyperlink{structieee80211__scanparams_ad85e23db892752251fbc7a650395a65a}{tim}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01561}01561                                 \textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__tim__ie}{ieee80211\_tim\_ie}} *tim =}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01562}01562                                     (\textcolor{keyword}{struct }\mbox{\hyperlink{structieee80211__tim__ie}{ieee80211\_tim\_ie}} *) scan.\mbox{\hyperlink{structieee80211__scanparams_ad85e23db892752251fbc7a650395a65a}{tim}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01563}01563                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01564}01564 \textcolor{comment}{                                 * XXX Check/debug this code; see if it's about}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01565}01565 \textcolor{comment}{                                 * the right time to force the VAP awake if we}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01566}01566 \textcolor{comment}{                                 * receive a frame destined for us?}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01567}01567 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01568}01568                                 \textcolor{keywordtype}{int} aid = \mbox{\hyperlink{ieee80211_8h_ae79b72606b384400dde2a21107d86742}{IEEE80211\_AID}}(ni-\/>\mbox{\hyperlink{structieee80211__node_af3b0bfceba724a350e2b4f0bc2ddb528}{ni\_associd}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01569}01569                                 \textcolor{keywordtype}{int} ix = aid / NBBY;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01570}01570                                 \textcolor{keywordtype}{int} min = tim-\/>\mbox{\hyperlink{structieee80211__tim__ie_ae913c37570bd67454b2cb9ee383d9c94}{tim\_bitctl}} \&\string~ 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01571}01571                                 \textcolor{keywordtype}{int} max = tim-\/>\mbox{\hyperlink{structieee80211__tim__ie_aed5edbb9c45c3d89e2d37a7579c72563}{tim\_len}} + min -\/ 4;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01572}01572                                 \textcolor{keywordtype}{int} tim\_ucast = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01573}01573 \textcolor{preprocessor}{\#ifdef \_\_notyet\_\_}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01574}01574                                 \textcolor{keywordtype}{int} tim\_mcast = 0;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01575}01575 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01576}01576 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01577}01577                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01578}01578 \textcolor{comment}{                                 * Only do this for unicast traffic in the TIM}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01579}01579 \textcolor{comment}{                                 * The multicast traffic notification for}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01580}01580 \textcolor{comment}{                                 * the scan notification stuff should occur}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01581}01581 \textcolor{comment}{                                 * differently.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01582}01582 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01583}01583                                 \textcolor{keywordflow}{if} (min <= ix \&\& ix <= max \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01584}01584                                      isset(tim-\/>\mbox{\hyperlink{structieee80211__tim__ie_a4f6111cda2707651374145bc506fece6}{tim\_bitmap}} -\/ min, aid)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01585}01585                                         tim\_ucast = 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01586}01586                                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01587}01587 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01588}01588 \textcolor{preprocessor}{\#ifdef \_\_notyet\_\_}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01589}01589                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01590}01590 \textcolor{comment}{                                 * Do a separate notification}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01591}01591 \textcolor{comment}{                                 * for the multicast bit being set.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01592}01592 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01593}01593                                 \textcolor{keywordflow}{if} (tim-\/>\mbox{\hyperlink{structieee80211__tim__ie_ae913c37570bd67454b2cb9ee383d9c94}{tim\_bitctl}} \& 1) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01594}01594                                         tim\_mcast = 1;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01595}01595                                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01596}01596 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01597}01597 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01598}01598                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01599}01599 \textcolor{comment}{                                 * If the TIM indicates there's traffic for}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01600}01600 \textcolor{comment}{                                 * us then get us out of STA mode powersave.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01601}01601 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01602}01602                                 \textcolor{keywordflow}{if} (tim\_ucast == 1) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01603}01603                                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01604}01604 \textcolor{comment}{                                         * Wake us out of SLEEP state if we're}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01605}01605 \textcolor{comment}{                                         * in it; and if we're doing bgscan}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01606}01606 \textcolor{comment}{                                         * then wake us out of STA powersave.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01607}01607 \textcolor{comment}{                                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01608}01608                                         \mbox{\hyperlink{ieee80211__power_8c_ab5f272cf3b54a7ff68343d19cd32b97b}{ieee80211\_sta\_tim\_notify}}(vap, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01609}01609 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01610}01610                                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01611}01611 \textcolor{comment}{                                         * This is preventing us from}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01612}01612 \textcolor{comment}{                                         * continuing a bgscan; because it}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01613}01613 \textcolor{comment}{                                         * tricks the contbgscan()}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01614}01614 \textcolor{comment}{                                         * routine to think there's always}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01615}01615 \textcolor{comment}{                                         * traffic for us.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01616}01616 \textcolor{comment}{                                         *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01617}01617 \textcolor{comment}{                                         * I think we need both an RX and}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01618}01618 \textcolor{comment}{                                         * TX ic\_lastdata field.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01619}01619 \textcolor{comment}{                                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01620}01620                                         ic-\/>\mbox{\hyperlink{structieee80211com_a8536fa7e359d07503a5c8750eed0481a}{ic\_lastdata}} = ticks;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01621}01621                                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01622}01622 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01623}01623                                 ni-\/>\mbox{\hyperlink{structieee80211__node_aa22b43ac3fa3ecb17c9fda26a280f43a}{ni\_dtim\_count}} = tim-\/>\mbox{\hyperlink{structieee80211__tim__ie_a8b52dbfc7de6569dc5862708a2090df0}{tim\_count}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01624}01624                                 ni-\/>\mbox{\hyperlink{structieee80211__node_a95bd851795430684dd61491fd901c697}{ni\_dtim\_period}} = tim-\/>\mbox{\hyperlink{structieee80211__tim__ie_a3c3739f95d0ec49c0e5e77ccdd0f926f}{tim\_period}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01625}01625                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01626}01626                         \textcolor{keywordflow}{if} (scan.\mbox{\hyperlink{structieee80211__scanparams_ad482ddfb2f01566c2339b494a4637e2a}{csa}} != NULL \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01627}01627                             (vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_aa9ea67c939723cbec474b50e93e91a48}{IEEE80211\_F\_DOTH}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01628}01628                                 \mbox{\hyperlink{ieee80211__sta_8c_aa9da835862114ce75b714850716e253d}{ieee80211\_parse\_csaparams}}(vap, scan.\mbox{\hyperlink{structieee80211__scanparams_ad482ddfb2f01566c2339b494a4637e2a}{csa}}, wh);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01629}01629                         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a78a9584f226ad4967275c54bdd2f8a34}{IEEE80211\_F\_CSAPENDING}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01630}01630                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01631}01631 \textcolor{comment}{                                 * No CSA ie or 11h disabled, but a channel}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01632}01632 \textcolor{comment}{                                 * switch is pending; drop out so we aren't}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01633}01633 \textcolor{comment}{                                 * stuck in CSA state.  If the AP really is}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01634}01634 \textcolor{comment}{                                 * moving we'll get a beacon miss and scan.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01635}01635 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01636}01636                                 \mbox{\hyperlink{ieee80211__freebsd_8h_ab3ce87ea4503405dd90019381065c9f6}{IEEE80211\_LOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01637}01637                                 \mbox{\hyperlink{ieee80211__proto_8c_a7abccc1fd103c58b4d32942bc5dfb03e}{ieee80211\_csa\_cancelswitch}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01638}01638                                 \mbox{\hyperlink{ieee80211__freebsd_8h_a58240f22e885f3d421da47c2bc376815}{IEEE80211\_UNLOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01639}01639                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01640}01640                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01641}01641 \textcolor{comment}{                         * If scanning, pass the info to the scan module.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01642}01642 \textcolor{comment}{                         * Otherwise, check if it's the right time to do}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01643}01643 \textcolor{comment}{                         * a background scan.  Background scanning must}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01644}01644 \textcolor{comment}{                         * be enabled and we must not be operating in the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01645}01645 \textcolor{comment}{                         * turbo phase of dynamic turbo mode.  Then,}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01646}01646 \textcolor{comment}{                         * it's been a while since the last background}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01647}01647 \textcolor{comment}{                         * scan and if no data frames have come through}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01648}01648 \textcolor{comment}{                         * recently, kick off a scan.  Note that this}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01649}01649 \textcolor{comment}{                         * is the mechanism by which a background scan}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01650}01650 \textcolor{comment}{                         * is started \_and\_ continued each time we}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01651}01651 \textcolor{comment}{                         * return on-\/channel to receive a beacon from}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01652}01652 \textcolor{comment}{                         * our ap.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01653}01653 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01654}01654                         \textcolor{keywordflow}{if} (ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a3c8d69c1fb5cadc6d9f00e9832355e6d}{IEEE80211\_F\_SCAN}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01655}01655                                 \mbox{\hyperlink{ieee80211__scan_8c_a744ce9edf54d563fd5137a6b1dcace7e}{ieee80211\_add\_scan}}(vap, rxchan,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01656}01656                                     \&scan, wh, subtype, rssi, nf);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01657}01657                         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__sta_8c_ada3d8831712b83abf7d0de3b38538df7}{contbgscan}}(vap)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01658}01658                                 \mbox{\hyperlink{ieee80211__scan_8c_a3c718606cbce873c8101243289efa083}{ieee80211\_bg\_scan}}(vap, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01659}01659                         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__sta_8c_a88e3b2147ff7d9a870e47bd7f67b15cd}{startbgscan}}(vap)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01660}01660                                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a56a42060f26bb0dbd0c806ed986331cd}{is\_scan\_bg}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01661}01661 \textcolor{preprocessor}{\#if 0}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01662}01662                                 \textcolor{comment}{/* wakeup if we are sleeing */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01663}01663                                 ieee80211\_set\_pwrsave(vap, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01664}01664 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01665}01665                                 \mbox{\hyperlink{ieee80211__scan_8c_a3c718606cbce873c8101243289efa083}{ieee80211\_bg\_scan}}(vap, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01666}01666                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01667}01667 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01668}01668                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01669}01669 \textcolor{comment}{                         * Put the station to sleep if we haven't seen}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01670}01670 \textcolor{comment}{                         * traffic in a while.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01671}01671 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01672}01672                         \mbox{\hyperlink{ieee80211__freebsd_8h_ab3ce87ea4503405dd90019381065c9f6}{IEEE80211\_LOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01673}01673                         \mbox{\hyperlink{ieee80211__power_8c_ac2ea4a92ec0caf01f79cbaa8e4af9fb6}{ieee80211\_sta\_ps\_timer\_check}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01674}01674                         \mbox{\hyperlink{ieee80211__freebsd_8h_a58240f22e885f3d421da47c2bc376815}{IEEE80211\_UNLOCK}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01675}01675 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01676}01676                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01677}01677 \textcolor{comment}{                         * If we've had a channel width change (eg HT20<-\/>HT40)}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01678}01678 \textcolor{comment}{                         * then schedule a delayed driver notification.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01679}01679 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01680}01680                         \textcolor{keywordflow}{if} (ht\_state\_change)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01681}01681                                 \mbox{\hyperlink{ieee80211__node_8c_aa3ca5c5733a890f36888be3e8ea8a4b1}{ieee80211\_update\_chw}}(ic);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01682}01682                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01683}01683                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01684}01684                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01685}01685 \textcolor{comment}{                 * If scanning, just pass information to the scan module.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01686}01686 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01687}01687                 \textcolor{keywordflow}{if} (ic-\/>\mbox{\hyperlink{structieee80211com_a30a69dd3f2f5862c75371a41a1778e4b}{ic\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a3c8d69c1fb5cadc6d9f00e9832355e6d}{IEEE80211\_F\_SCAN}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01688}01688                         \textcolor{keywordflow}{if} (ic-\/>\mbox{\hyperlink{structieee80211com_a279e83719ad4b4b66e6ac8b052e42722}{ic\_flags\_ext}} \& \mbox{\hyperlink{ieee80211__var_8h_a1d8c3b126e3551bf7a557dbccd71bd9e}{IEEE80211\_FEXT\_PROBECHAN}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01689}01689                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01690}01690 \textcolor{comment}{                                 * Actively scanning a channel marked passive;}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01691}01691 \textcolor{comment}{                                 * send a probe request now that we know there}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01692}01692 \textcolor{comment}{                                 * is 802.11 traffic present.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01693}01693 \textcolor{comment}{                                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01694}01694 \textcolor{comment}{                                 * XXX check if the beacon we recv'd gives}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01695}01695 \textcolor{comment}{                                 * us what we need and suppress the probe req}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01696}01696 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01697}01697                                 \mbox{\hyperlink{ieee80211__scan_8c_af38dd3cbacf570c8c6177a4126ade648}{ieee80211\_probe\_curchan}}(vap, 1);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01698}01698                                 ic-\/>\mbox{\hyperlink{structieee80211com_a279e83719ad4b4b66e6ac8b052e42722}{ic\_flags\_ext}} \&= \string~IEEE80211\_FEXT\_PROBECHAN;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01699}01699                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01700}01700                         \mbox{\hyperlink{ieee80211__scan_8c_a744ce9edf54d563fd5137a6b1dcace7e}{ieee80211\_add\_scan}}(vap, rxchan, \&scan, wh,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01701}01701                             subtype, rssi, nf);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01702}01702                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01703}01703                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01704}01704                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01705}01705         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01706}01706 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01707}01707         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}}: \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01708}01708                 uint16\_t algo, seq, status;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01709}01709                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01710}01710 \textcolor{comment}{                 * auth frame format}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01711}01711 \textcolor{comment}{                 *      [2] algorithm}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01712}01712 \textcolor{comment}{                 *      [2] sequence}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01713}01713 \textcolor{comment}{                 *      [2] status}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01714}01714 \textcolor{comment}{                 *      [tlv*] challenge}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01715}01715 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01716}01716                 \mbox{\hyperlink{ieee80211__input_8h_ac61b672f3377b205f52126df636f0bce}{IEEE80211\_VERIFY\_LENGTH}}(efrm -\/ frm, 6, \textcolor{keywordflow}{return});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01717}01717                 algo   = le16toh(*(uint16\_t *)frm);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01718}01718                 seq    = le16toh(*(uint16\_t *)(frm + 2));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01719}01719                 status = le16toh(*(uint16\_t *)(frm + 4));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01720}01720                 \mbox{\hyperlink{ieee80211__var_8h_a6895488831af45948c8a35da11bba1c6}{IEEE80211\_NOTE\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01721}01721                     \textcolor{stringliteral}{"{}recv auth frame with algorithm \%d seq \%d"{}}, algo, seq);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01722}01722 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01723}01723                 \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \& \mbox{\hyperlink{ieee80211__var_8h_a563c6b6c5760a4f289c647bfd5a93cc3}{IEEE80211\_F\_COUNTERM}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01724}01724                         \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01725}01725                             \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}} | \mbox{\hyperlink{ieee80211__var_8h_a50c281c2b65d9e1b9ebfb78fac091fb6}{IEEE80211\_MSG\_CRYPTO}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01726}01726                             wh, \textcolor{stringliteral}{"{}auth"{}}, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}TKIP countermeasures enabled"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01727}01727                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ab985e993385ccfa99fc9dde8f6b54688}{is\_rx\_auth\_countermeasures}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01728}01728                         \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a22de8996244412911c0015d499eab3fb}{iv\_opmode}} == \mbox{\hyperlink{__ieee80211_8h_ab624e38122a844713ca48c7307772ed1a452d0b2b50ada8160ea00af9456c56fd}{IEEE80211\_M\_HOSTAP}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01729}01729                                 \mbox{\hyperlink{ieee80211__input_8c_a303c55b7d40f0adcc1bff21cf05731ad}{ieee80211\_send\_error}}(ni, wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01730}01730                                         \mbox{\hyperlink{ieee80211_8h_af10cf0dfd70aef95fd185c979b7e375a}{IEEE80211\_FC0\_SUBTYPE\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01731}01731                                         \mbox{\hyperlink{ieee80211_8h_adc29c2ff13d900c2f185ee95427fb06ca40cba55927ed3c163734098483b46dd7}{IEEE80211\_REASON\_MIC\_FAILURE}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01732}01732                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01733}01733                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01734}01734                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01735}01735                 \textcolor{keywordflow}{if} (algo == \mbox{\hyperlink{ieee80211_8h_a1c25f4d18aa30297f9682afc6db3dcf4}{IEEE80211\_AUTH\_ALG\_SHARED}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01736}01736                         \mbox{\hyperlink{ieee80211__sta_8c_a4b607f0f5e3d6f7c699455fdb79f4376}{sta\_auth\_shared}}(ni, wh, frm + 6, efrm, rssi, nf,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01737}01737                             seq, status);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01738}01738                 \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (algo == \mbox{\hyperlink{ieee80211_8h_ac047e3432f4fdaecee3f64dc8e2bff1a}{IEEE80211\_AUTH\_ALG\_OPEN}})}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01739}01739                         \mbox{\hyperlink{ieee80211__sta_8c_aee2237a8715c4f20f1a02cafe1a5c335}{sta\_auth\_open}}(ni, wh, rssi, nf, seq, status);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01740}01740                 \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01741}01741                         \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a52d4c8ea23b5f09cf1b52af74aa2e0b1}{IEEE80211\_MSG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01742}01742                             wh, \textcolor{stringliteral}{"{}auth"{}}, \textcolor{stringliteral}{"{}unsupported alg \%d"{}}, algo);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01743}01743                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a21be9719ee3e20a43f185f3dc288bbf7}{is\_rx\_auth\_unsupported}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01744}01744                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01745}01745                 \} }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01746}01746                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01747}01747         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01748}01748 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01749}01749         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a680bb07072e7bda5cb709b3b2ce24190}{IEEE80211\_FC0\_SUBTYPE\_ASSOC\_RESP}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01750}01750         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_ac218b7c2aff785cb8f24b063a835c95b}{IEEE80211\_FC0\_SUBTYPE\_REASSOC\_RESP}}: \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01751}01751                 uint16\_t capinfo, associd;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01752}01752                 uint16\_t status;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01753}01753 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01754}01754                 \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01755}01755                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01756}01756                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01757}01757                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01758}01758 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01759}01759                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01760}01760 \textcolor{comment}{                 * asresp frame format}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01761}01761 \textcolor{comment}{                 *      [2] capability information}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01762}01762 \textcolor{comment}{                 *      [2] status}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01763}01763 \textcolor{comment}{                 *      [2] association ID}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01764}01764 \textcolor{comment}{                 *      [tlv] supported rates}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01765}01765 \textcolor{comment}{                 *      [tlv] extended supported rates}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01766}01766 \textcolor{comment}{                 *      [tlv] WME}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01767}01767 \textcolor{comment}{                 *      [tlv] HT capabilities}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01768}01768 \textcolor{comment}{                 *      [tlv] HT info}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01769}01769 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01770}01770                 \mbox{\hyperlink{ieee80211__input_8h_ac61b672f3377b205f52126df636f0bce}{IEEE80211\_VERIFY\_LENGTH}}(efrm -\/ frm, 6, \textcolor{keywordflow}{return});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01771}01771                 ni = vap-\/>\mbox{\hyperlink{structieee80211vap_a116ec25ffa4d694abe01c6b58d18384a}{iv\_bss}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01772}01772                 capinfo = le16toh(*(uint16\_t *)frm);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01773}01773                 frm += 2;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01774}01774                 status = le16toh(*(uint16\_t *)frm);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01775}01775                 frm += 2;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01776}01776                 \textcolor{keywordflow}{if} (status != 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01777}01777                         \mbox{\hyperlink{ieee80211__var_8h_a6895488831af45948c8a35da11bba1c6}{IEEE80211\_NOTE\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_af34afd95dcfbd1c0ed27cfcff1fb5642}{IEEE80211\_MSG\_ASSOC}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01778}01778                             wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}}, \textcolor{stringliteral}{"{}\%sassoc failed (reason \%d)"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01779}01779                             \mbox{\hyperlink{ieee80211__sta_8c_aaca9ff2622c3cc59724ce51bce4400f7}{ISREASSOC}}(subtype) ?  \textcolor{stringliteral}{"{}re"{}} : \textcolor{stringliteral}{"{}"{}}, status);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01780}01780                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a88853fc3b7c45319c7d87a60ef16c59b}{is\_rx\_auth\_fail}}++; \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01781}01781                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01782}01782                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01783}01783                 associd = le16toh(*(uint16\_t *)frm);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01784}01784                 frm += 2;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01785}01785 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01786}01786                 rates = xrates = wme = htcap = htinfo = NULL;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01787}01787                 vhtcap = vhtopmode = NULL;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01788}01788                 \textcolor{keywordflow}{while} (efrm -\/ frm > 1) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01789}01789                         \mbox{\hyperlink{ieee80211__input_8h_ac61b672f3377b205f52126df636f0bce}{IEEE80211\_VERIFY\_LENGTH}}(efrm -\/ frm, frm[1] + 2, \textcolor{keywordflow}{return});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01790}01790                         \textcolor{keywordflow}{switch} (*frm) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01791}01791                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adf764cbdea00d65edcd07bb9953ad2b7a4aeb6bff43e86bff94ae0b2bf1509907}{IEEE80211\_ELEMID\_RATES}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01792}01792                                 rates = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01793}01793                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01794}01794                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adf764cbdea00d65edcd07bb9953ad2b7a77383650b4f381eed73de060321e27fa}{IEEE80211\_ELEMID\_XRATES}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01795}01795                                 xrates = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01796}01796                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01797}01797                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adf764cbdea00d65edcd07bb9953ad2b7a2b3a3bad7350803650d3e67abc603197}{IEEE80211\_ELEMID\_HTCAP}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01798}01798                                 htcap = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01799}01799                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01800}01800                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adf764cbdea00d65edcd07bb9953ad2b7aab73e481506df809675b91af1e2af68b}{IEEE80211\_ELEMID\_HTINFO}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01801}01801                                 htinfo = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01802}01802                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01803}01803                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adf764cbdea00d65edcd07bb9953ad2b7a14025bdf3f36a513d901470d7a4477f3}{IEEE80211\_ELEMID\_VENDOR}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01804}01804                                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__input_8h_a40f792f8e746a6148c97bd498edfb46f}{iswmeoui}}(frm))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01805}01805                                         wme = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01806}01806                                 \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a3a03659975f82237fc5fcd1e9053f428}{iv\_flags\_ht}} \& \mbox{\hyperlink{ieee80211__var_8h_ab92ba9f7840f9878dfcdb39860f7a4b5}{IEEE80211\_FHT\_HTCOMPAT}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01807}01807                                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01808}01808 \textcolor{comment}{                                         * Accept pre-\/draft HT ie's if the}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01809}01809 \textcolor{comment}{                                         * standard ones have not been seen.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01810}01810 \textcolor{comment}{                                         */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01811}01811                                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__input_8h_ab0666622451ff8880aac7be2653791c3}{ishtcapoui}}(frm)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01812}01812                                                 \textcolor{keywordflow}{if} (htcap == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01813}01813                                                         htcap = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01814}01814                                         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__input_8h_a5ffac809ca4cfd176fccbfe62f7b690b}{ishtinfooui}}(frm)) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01815}01815                                                 \textcolor{keywordflow}{if} (htinfo == NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01816}01816                                                         htinfo = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01817}01817                                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01818}01818                                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01819}01819                                 \textcolor{comment}{/* XXX Atheros OUI support */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01820}01820                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01821}01821                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adf764cbdea00d65edcd07bb9953ad2b7ac52074ff81ac85b66faae6ec3f3cc239}{IEEE80211\_ELEMID\_VHT\_CAP}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01822}01822                                 vhtcap = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01823}01823                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01824}01824                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_adf764cbdea00d65edcd07bb9953ad2b7a59bf76eae1b2fb4bf289cf01e62d4bfb}{IEEE80211\_ELEMID\_VHT\_OPMODE}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01825}01825                                 vhtopmode = frm;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01826}01826                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01827}01827                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01828}01828                         frm += frm[1] + 2;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01829}01829                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01830}01830 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01831}01831                 \mbox{\hyperlink{ieee80211__input_8h_a37e806ab427d46dd7bdb0667cd424ec3}{IEEE80211\_VERIFY\_ELEMENT}}(rates, \mbox{\hyperlink{__ieee80211_8h_a301f4a1c05748322339944d7ef18bfc6}{IEEE80211\_RATE\_MAXSIZE}}, \textcolor{keywordflow}{return});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01832}01832                 \textcolor{keywordflow}{if} (xrates != NULL)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01833}01833                         \mbox{\hyperlink{ieee80211__input_8h_a37e806ab427d46dd7bdb0667cd424ec3}{IEEE80211\_VERIFY\_ELEMENT}}(xrates,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01834}01834                                 \mbox{\hyperlink{__ieee80211_8h_a301f4a1c05748322339944d7ef18bfc6}{IEEE80211\_RATE\_MAXSIZE}} -\/ rates[1], \textcolor{keywordflow}{return});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01835}01835                 rate = \mbox{\hyperlink{ieee80211__input_8c_aa823259dd4fb40a2082ae793e81cae91}{ieee80211\_setup\_rates}}(ni, rates, xrates,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01836}01836                                 \mbox{\hyperlink{ieee80211__proto_8h_a7f30c5eb60432e3e18e07130c4c0af5a}{IEEE80211\_F\_JOIN}} |}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01837}01837                                 \mbox{\hyperlink{ieee80211__proto_8h_a751e19511603356d1706dbe12bd110fe}{IEEE80211\_F\_DOSORT}} | \mbox{\hyperlink{ieee80211__proto_8h_ae2eaabd126c69b5792dfaec798e1ff11}{IEEE80211\_F\_DOFRATE}} |}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01838}01838                                 \mbox{\hyperlink{ieee80211__proto_8h_a366896c99354c34eb52c89a610e380e6}{IEEE80211\_F\_DONEGO}} | \mbox{\hyperlink{ieee80211__proto_8h_a30043b8c1a24f081bb2ee3ddb29d4bfc}{IEEE80211\_F\_DODEL}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01839}01839                 \textcolor{keywordflow}{if} (rate \& \mbox{\hyperlink{ieee80211_8h_a849a739ba1cb89c9dd6d64e474fb7543}{IEEE80211\_RATE\_BASIC}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01840}01840                         \mbox{\hyperlink{ieee80211__var_8h_a6895488831af45948c8a35da11bba1c6}{IEEE80211\_NOTE\_MAC}}(vap, \mbox{\hyperlink{ieee80211__var_8h_af34afd95dcfbd1c0ed27cfcff1fb5642}{IEEE80211\_MSG\_ASSOC}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01841}01841                             wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01842}01842                             \textcolor{stringliteral}{"{}\%sassoc failed (rate set mismatch)"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01843}01843                             \mbox{\hyperlink{ieee80211__sta_8c_aaca9ff2622c3cc59724ce51bce4400f7}{ISREASSOC}}(subtype) ?  \textcolor{stringliteral}{"{}re"{}} : \textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01844}01844                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ad157aa26eeb8f66d1f6fb2dce9091976}{is\_rx\_assoc\_norate}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01845}01845                         \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01846}01846                             \mbox{\hyperlink{ieee80211__scan_8h_aabfcbcb5ac86a1edac4035264bc7d2b8a001403e93d75d297cd6a3513e71cd634}{IEEE80211\_SCAN\_FAIL\_STATUS}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01847}01847                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01848}01848                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01849}01849 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01850}01850                 ni-\/>\mbox{\hyperlink{structieee80211__node_a93ecbc1e605843a367c1f44fe3c6d127}{ni\_capinfo}} = capinfo;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01851}01851                 ni-\/>\mbox{\hyperlink{structieee80211__node_af3b0bfceba724a350e2b4f0bc2ddb528}{ni\_associd}} = associd;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01852}01852                 \textcolor{keywordflow}{if} (ni-\/>\mbox{\hyperlink{structieee80211__node_a73811a8e1007e802faa176a71411bd5c}{ni\_jointime}} == 0)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01853}01853                         ni-\/>\mbox{\hyperlink{structieee80211__node_a73811a8e1007e802faa176a71411bd5c}{ni\_jointime}} = time\_uptime;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01854}01854                 \textcolor{keywordflow}{if} (wme != NULL \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01855}01855                     \mbox{\hyperlink{ieee80211__sta_8c_a9f98daefca96f7e291fef2b1821c39af}{ieee80211\_parse\_wmeparams}}(vap, wme, wh, \&qosinfo) >= 0) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01856}01856                         ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} |= \mbox{\hyperlink{ieee80211__node_8h_a914d4bef5e9b559a9b7f438137bd768a}{IEEE80211\_NODE\_QOS}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01857}01857                         \mbox{\hyperlink{ieee80211__proto_8c_a9b1637db7bd0638fa1e0ad2461006ff9}{ieee80211\_wme\_updateparams}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01858}01858                 \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01859}01859                         ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \&= \string~IEEE80211\_NODE\_QOS;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01860}01860                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01861}01861 \textcolor{comment}{                 * Setup HT state according to the negotiation.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01862}01862 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01863}01863 \textcolor{comment}{                 * NB: shouldn't need to check if HT use is enabled but some}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01864}01864 \textcolor{comment}{                 *     ap's send back HT ie's even when we don't indicate we}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01865}01865 \textcolor{comment}{                 *     are HT capable in our AssocReq.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01866}01866 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01867}01867                 \textcolor{keywordflow}{if} (htcap != NULL \&\& htinfo != NULL \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01868}01868                     (vap-\/>\mbox{\hyperlink{structieee80211vap_a3a03659975f82237fc5fcd1e9053f428}{iv\_flags\_ht}} \& \mbox{\hyperlink{ieee80211__var_8h_a4c189cce6f531fe8638f95564fcce1ee}{IEEE80211\_FHT\_HT}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01869}01869                         \mbox{\hyperlink{ieee80211__ht_8c_a7bcab6f638ee8af0aec7e27aeaf53ca5}{ieee80211\_ht\_node\_init}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01870}01870                         \mbox{\hyperlink{ieee80211__ht_8c_abfecc9b7f18ff6e4018bef64d136f909}{ieee80211\_ht\_updateparams}}(ni, htcap, htinfo);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01871}01871 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01872}01872                         \textcolor{keywordflow}{if} ((vhtcap != NULL) \&\& (vhtopmode != NULL) \&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01873}01873                             (vap-\/>\mbox{\hyperlink{structieee80211vap_a6fd6041c8cffd57d7c079e730f899348}{iv\_flags\_vht}} \& \mbox{\hyperlink{ieee80211__var_8h_aa1341b6fe1233ec9f197c6dcb3b81c65}{IEEE80211\_FVHT\_VHT}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01874}01874                                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01875}01875 \textcolor{comment}{                                 * Log if we get a VHT assoc/reassoc response.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01876}01876 \textcolor{comment}{                                 * We aren't ready for 2GHz VHT support.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01877}01877 \textcolor{comment}{                                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01878}01878                                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{__ieee80211_8h_a8b19b71e50c325081dc4e58245979d42}{IEEE80211\_IS\_CHAN\_2GHZ}}(ni-\/>\mbox{\hyperlink{structieee80211__node_ae7743de006941866805d3df5997f1256}{ni\_chan}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01879}01879                                         printf(\textcolor{stringliteral}{"{}\%s: peer \%6D: VHT on 2GHz, ignoring\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01880}01880                                             \_\_func\_\_,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01881}01881                                             ni-\/>\mbox{\hyperlink{structieee80211__node_a358404f75db7624b64469b3d33900a41}{ni\_macaddr}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01882}01882                                             \textcolor{stringliteral}{"{}:"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01883}01883                                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01884}01884                                         \mbox{\hyperlink{ieee80211__vht_8c_a0fe3c6cd1b809c2cba10f75bf184ea63}{ieee80211\_vht\_node\_init}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01885}01885                                         \mbox{\hyperlink{ieee80211__vht_8c_a7bb5441d096fcaa744919365f2d67e3a}{ieee80211\_vht\_updateparams}}(ni, vhtcap, vhtopmode);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01886}01886                                         \mbox{\hyperlink{ieee80211__vht_8c_a691d7cb91d5770738a0ec28ea3a918fe}{ieee80211\_setup\_vht\_rates}}(ni, vhtcap, vhtopmode);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01887}01887                                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01888}01888                         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01889}01889 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01890}01890                         \mbox{\hyperlink{ieee80211__ht_8c_a0c549c707693e042c987edd8ddf3ee31}{ieee80211\_ht\_updateparams\_final}}(ni, htcap, htinfo);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01891}01891                         \mbox{\hyperlink{ieee80211__ht_8c_aa0cf1305b6ec2555f7078988d285c6bb}{ieee80211\_setup\_htrates}}(ni, htcap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01892}01892                              \mbox{\hyperlink{ieee80211__proto_8h_a7f30c5eb60432e3e18e07130c4c0af5a}{IEEE80211\_F\_JOIN}} | \mbox{\hyperlink{ieee80211__proto_8h_a496c2faf341d7ef055055d7e1175a392}{IEEE80211\_F\_DOBRS}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01893}01893                         \mbox{\hyperlink{ieee80211__ht_8c_aabbfa35d24d5922f5d5aa801121cc71c}{ieee80211\_setup\_basic\_htrates}}(ni, htinfo);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01894}01894 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01895}01895                         \mbox{\hyperlink{ieee80211__node_8c_a6889b8f1402e9b4fd1be2df378be3315}{ieee80211\_node\_setuptxparms}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01896}01896                         \mbox{\hyperlink{ieee80211__ratectl_8h_af71c3c29e40ea3925655a5cd17084655}{ieee80211\_ratectl\_node\_init}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01897}01897                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01898}01898 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01899}01899                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01900}01900 \textcolor{comment}{                 * Always initialise FF/superg state; we can use this}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01901}01901 \textcolor{comment}{                 * for doing A-\/MSDU encapsulation as well.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01902}01902 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01903}01903 \textcolor{preprocessor}{\#ifdef  IEEE80211\_SUPPORT\_SUPERG}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01904}01904                 \mbox{\hyperlink{ieee80211__superg_8h_a817050aa1ffe9aa35f826743b0bcec48}{ieee80211\_ff\_node\_init}}(ni);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01905}01905 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01906}01906 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01907}01907                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01908}01908 \textcolor{comment}{                 * Configure state now that we are associated.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01909}01909 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01910}01910 \textcolor{comment}{                 * XXX may need different/additional driver callbacks?}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01911}01911 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01912}01912                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{__ieee80211_8h_a42b25648aeffee4cd591bf5d3f9bc111}{IEEE80211\_IS\_CHAN\_A}}(ic-\/>\mbox{\hyperlink{structieee80211com_af4f9f1d4120d065aec7ac8eae28a613a}{ic\_curchan}}) ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01913}01913                     (ni-\/>\mbox{\hyperlink{structieee80211__node_a93ecbc1e605843a367c1f44fe3c6d127}{ni\_capinfo}} \& \mbox{\hyperlink{ieee80211_8h_aa1897a43ad7832a3910848597813940f}{IEEE80211\_CAPINFO\_SHORT\_PREAMBLE}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01914}01914                         vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} |= \mbox{\hyperlink{ieee80211__var_8h_a57e0a2d66c2c711096a121123e6d9f7f}{IEEE80211\_F\_SHPREAMBLE}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01915}01915                         vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \&= \string~IEEE80211\_F\_USEBARKER;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01916}01916                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01917}01917                         vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \&= \string~IEEE80211\_F\_SHPREAMBLE;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01918}01918                         vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} |= \mbox{\hyperlink{ieee80211__var_8h_a57d82d42bfcbcde86487a4bc38b9ac8a}{IEEE80211\_F\_USEBARKER}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01919}01919                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01920}01920                 \mbox{\hyperlink{ieee80211__proto_8c_ad0f7cd95880f5f2b151ba4ea7359c8e4}{ieee80211\_vap\_set\_shortslottime}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01921}01921                         \mbox{\hyperlink{__ieee80211_8h_a42b25648aeffee4cd591bf5d3f9bc111}{IEEE80211\_IS\_CHAN\_A}}(ic-\/>\mbox{\hyperlink{structieee80211com_af4f9f1d4120d065aec7ac8eae28a613a}{ic\_curchan}}) ||}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01922}01922                         (ni-\/>\mbox{\hyperlink{structieee80211__node_a93ecbc1e605843a367c1f44fe3c6d127}{ni\_capinfo}} \& \mbox{\hyperlink{ieee80211_8h_a62aa26e192ea70006a52d69a86a03888}{IEEE80211\_CAPINFO\_SHORT\_SLOTTIME}}));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01923}01923                 \mbox{\hyperlink{ieee80211__proto_8c_a741357effa8cdbf83a8be9f0e89c526b}{ieee80211\_vap\_update\_preamble}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01924}01924                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01925}01925 \textcolor{comment}{                 * Honor ERP protection.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01926}01926 \textcolor{comment}{                 *}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01927}01927 \textcolor{comment}{                 * NB: ni\_erp should zero for non-\/11g operation.}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01928}01928 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01929}01929                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{__ieee80211_8h_ad36be329f5026e25093cf54c04354ef5}{IEEE80211\_IS\_CHAN\_ANYG}}(ic-\/>\mbox{\hyperlink{structieee80211com_af4f9f1d4120d065aec7ac8eae28a613a}{ic\_curchan}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01930}01930                     (ni-\/>\mbox{\hyperlink{structieee80211__node_a3f0401e2f7a097875d26b91b0f6f18d8}{ni\_erp}} \& \mbox{\hyperlink{ieee80211_8h_af0604230ab2a281af452d6941a1e5b49}{IEEE80211\_ERP\_USE\_PROTECTION}}))}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01931}01931                         vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} |= \mbox{\hyperlink{ieee80211__var_8h_abf78990660332db941d6fcee8313cfe4}{IEEE80211\_F\_USEPROT}};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01932}01932                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01933}01933                         vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}} \&= \string~IEEE80211\_F\_USEPROT;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01934}01934                 \mbox{\hyperlink{ieee80211__proto_8c_aa48aec47695103a59b415825e805c411}{ieee80211\_vap\_update\_erp\_protmode}}(vap);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01935}01935                 \mbox{\hyperlink{ieee80211__var_8h_a6895488831af45948c8a35da11bba1c6}{IEEE80211\_NOTE\_MAC}}(vap,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01936}01936                     \mbox{\hyperlink{ieee80211__var_8h_af34afd95dcfbd1c0ed27cfcff1fb5642}{IEEE80211\_MSG\_ASSOC}} | \mbox{\hyperlink{ieee80211__var_8h_a96778153b3cff35e199a6212db70b5ac}{IEEE80211\_MSG\_DEBUG}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a430db5a3aa3f6d0ccfa78347b1afbcb7}{i\_addr2}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01937}01937                     \textcolor{stringliteral}{"{}\%sassoc success at aid \%d: \%s preamble, \%s slot time\%s\%s\%s\%s\%s\%s\%s\%s\%s"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01938}01938                     \mbox{\hyperlink{ieee80211__sta_8c_aaca9ff2622c3cc59724ce51bce4400f7}{ISREASSOC}}(subtype) ? \textcolor{stringliteral}{"{}re"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01939}01939                     \mbox{\hyperlink{ieee80211__node_8h_a94334781066422aca6e1c4b65107e76c}{IEEE80211\_NODE\_AID}}(ni),}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01940}01940                     vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}}\&\mbox{\hyperlink{ieee80211__var_8h_a57e0a2d66c2c711096a121123e6d9f7f}{IEEE80211\_F\_SHPREAMBLE}} ? \textcolor{stringliteral}{"{}short"{}} : \textcolor{stringliteral}{"{}long"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01941}01941                     vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}}\&\mbox{\hyperlink{ieee80211__var_8h_acd42a958e41b9d715782d23ab6453162}{IEEE80211\_F\_SHSLOT}} ? \textcolor{stringliteral}{"{}short"{}} : \textcolor{stringliteral}{"{}long"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01942}01942                     vap-\/>\mbox{\hyperlink{structieee80211vap_a6b457135ea58b5e8526931b124209ac8}{iv\_flags}}\&\mbox{\hyperlink{ieee80211__var_8h_abf78990660332db941d6fcee8313cfe4}{IEEE80211\_F\_USEPROT}} ? \textcolor{stringliteral}{"{}, protection"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01943}01943                     ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \& \mbox{\hyperlink{ieee80211__node_8h_a914d4bef5e9b559a9b7f438137bd768a}{IEEE80211\_NODE\_QOS}} ? \textcolor{stringliteral}{"{}, QoS"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01944}01944                     ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \& \mbox{\hyperlink{ieee80211__node_8h_ad98283bf64746cf88d29cebc6ff1eb6a}{IEEE80211\_NODE\_HT}} ?}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01945}01945                         (ni-\/>\mbox{\hyperlink{structieee80211__node_aca3aaaeeb76012f9b45174974170a732}{ni\_chw}} == 40 ? \textcolor{stringliteral}{"{}, HT40"{}} : \textcolor{stringliteral}{"{}, HT20"{}}) : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01946}01946                     ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \& \mbox{\hyperlink{ieee80211__node_8h_acbe796f5207161fa830e1c30865bdf4d}{IEEE80211\_NODE\_AMPDU}} ? \textcolor{stringliteral}{"{} (+AMPDU)"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01947}01947                     ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \& \mbox{\hyperlink{ieee80211__node_8h_a8e9ed913632905d3e60f2eff23833d28}{IEEE80211\_NODE\_AMSDU}} ? \textcolor{stringliteral}{"{} (+AMSDU)"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01948}01948                     ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \& \mbox{\hyperlink{ieee80211__node_8h_a876e3ea5968eeb80b3c68c31f882f1fc}{IEEE80211\_NODE\_MIMO\_RTS}} ? \textcolor{stringliteral}{"{} (+SMPS-\/DYN)"{}} :}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01949}01949                         ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \& \mbox{\hyperlink{ieee80211__node_8h_aa67c142da39def1f63c6ce12b44e4b5c}{IEEE80211\_NODE\_MIMO\_PS}} ? \textcolor{stringliteral}{"{} (+SMPS)"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01950}01950                     ni-\/>\mbox{\hyperlink{structieee80211__node_a08f59d9e2e9ddc02963d445229b98b37}{ni\_flags}} \& \mbox{\hyperlink{ieee80211__node_8h_aaa31e1bd1bfea6ca18976aa4b66c8b6b}{IEEE80211\_NODE\_RIFS}} ? \textcolor{stringliteral}{"{} (+RIFS)"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01951}01951                     \mbox{\hyperlink{ieee80211__var_8h_ac35631c14b70b6c6496781310224b730}{IEEE80211\_ATH\_CAP}}(vap, ni, \mbox{\hyperlink{ieee80211__node_8h_a76e1c0bbf5256c4fbbb0ef0b0170ed82}{IEEE80211\_NODE\_FF}}) ?}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01952}01952                         \textcolor{stringliteral}{"{}, fast-\/frames"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01953}01953                     \mbox{\hyperlink{ieee80211__var_8h_ac35631c14b70b6c6496781310224b730}{IEEE80211\_ATH\_CAP}}(vap, ni, \mbox{\hyperlink{ieee80211__node_8h_a4efd919f28e3820b015b40fd9d640bfb}{IEEE80211\_NODE\_TURBOP}}) ?}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01954}01954                         \textcolor{stringliteral}{"{}, turbo"{}} : \textcolor{stringliteral}{"{}"{}}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01955}01955                 );}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01956}01956                 \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}, subtype);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01957}01957                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01958}01958         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01959}01959 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01960}01960         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a6c0622234f2ebb2645aa47d02fe44ea2}{IEEE80211\_FC0\_SUBTYPE\_DEAUTH}}: \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01961}01961                 uint16\_t reason;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01962}01962 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01963}01963                 \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} == \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59ef76960ca7dbc77f222de31442b39e}{IEEE80211\_S\_SCAN}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01964}01964                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01965}01965                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01966}01966                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01967}01967                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211__var_8h_a87fba5bb95c383ed07ae42774b80386f}{IEEE80211\_ADDR\_EQ}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}}, vap-\/>\mbox{\hyperlink{structieee80211vap_a31bbdbec1c2fd8f9aba7146d23cbc895}{iv\_myaddr}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01968}01968                         \textcolor{comment}{/* NB: can happen when in promiscuous mode */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01969}01969                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01970}01970                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01971}01971                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01972}01972 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01973}01973                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01974}01974 \textcolor{comment}{                 * deauth frame format}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01975}01975 \textcolor{comment}{                 *      [2] reason}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01976}01976 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01977}01977                 \mbox{\hyperlink{ieee80211__input_8h_ac61b672f3377b205f52126df636f0bce}{IEEE80211\_VERIFY\_LENGTH}}(efrm -\/ frm, 2, \textcolor{keywordflow}{return});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01978}01978                 reason = le16toh(*(uint16\_t *)frm);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01979}01979 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01980}01980                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a0cee8d40a2b5573e53bf2a9cf708b538}{is\_rx\_deauth}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01981}01981                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_aea562de35dc4125a60643b38b00db33c}{is\_rx\_deauth\_code}} = reason;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01982}01982                 \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_deauth);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01983}01983 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01984}01984                 \mbox{\hyperlink{ieee80211__var_8h_a9c90e846ab7773b17fc49706dd551293}{IEEE80211\_NOTE}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a0033d93ef72998ba131a272a1948e277}{IEEE80211\_MSG\_AUTH}}, ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01985}01985                     \textcolor{stringliteral}{"{}recv deauthenticate (reason: \%d (\%s))"{}}, reason,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01986}01986                     \mbox{\hyperlink{ieee80211__proto_8c_a27cf84b82c8621564c6b878a42e20a01}{ieee80211\_reason\_to\_string}}(reason));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01987}01987                 \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01988}01988                     (reason << 8) | \mbox{\hyperlink{ieee80211_8h_a6c0622234f2ebb2645aa47d02fe44ea2}{IEEE80211\_FC0\_SUBTYPE\_DEAUTH}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01989}01989                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01990}01990         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01991}01991 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01992}01992         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a9b0e856b2c53fdeddbbb847592e88870}{IEEE80211\_FC0\_SUBTYPE\_DISASSOC}}: \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01993}01993                 uint16\_t reason;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01994}01994 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01995}01995                 \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}} \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01996}01996                     vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}} \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01997}01997                     vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944ad7380b88d3440b5c3ac1d5fc2d19a63a}{IEEE80211\_S\_AUTH}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01998}01998                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l01999}01999                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02000}02000                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02001}02001                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211__var_8h_a87fba5bb95c383ed07ae42774b80386f}{IEEE80211\_ADDR\_EQ}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}}, vap-\/>\mbox{\hyperlink{structieee80211vap_a31bbdbec1c2fd8f9aba7146d23cbc895}{iv\_myaddr}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02002}02002                         \textcolor{comment}{/* NB: can happen when in promiscuous mode */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02003}02003                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02004}02004                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02005}02005                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02006}02006 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02007}02007                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02008}02008 \textcolor{comment}{                 * disassoc frame format}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02009}02009 \textcolor{comment}{                 *      [2] reason}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02010}02010 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02011}02011                 \mbox{\hyperlink{ieee80211__input_8h_ac61b672f3377b205f52126df636f0bce}{IEEE80211\_VERIFY\_LENGTH}}(efrm -\/ frm, 2, \textcolor{keywordflow}{return});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02012}02012                 reason = le16toh(*(uint16\_t *)frm);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02013}02013 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02014}02014                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a5d4bc05e4533ca97e104fcdbb328f5b7}{is\_rx\_disassoc}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02015}02015                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_ac42a7c0f2580a4b552d397ef21fc9c2e}{is\_rx\_disassoc\_code}} = reason;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02016}02016                 \mbox{\hyperlink{ieee80211__node_8h_a926f2feae60b626fc709cdeab779e028}{IEEE80211\_NODE\_STAT}}(ni, rx\_disassoc);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02017}02017 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02018}02018                 \mbox{\hyperlink{ieee80211__var_8h_a9c90e846ab7773b17fc49706dd551293}{IEEE80211\_NOTE}}(vap, \mbox{\hyperlink{ieee80211__var_8h_af34afd95dcfbd1c0ed27cfcff1fb5642}{IEEE80211\_MSG\_ASSOC}}, ni,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02019}02019                     \textcolor{stringliteral}{"{}recv disassociate (reason: \%d (\%s))"{}}, reason,}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02020}02020                     \mbox{\hyperlink{ieee80211__proto_8c_a27cf84b82c8621564c6b878a42e20a01}{ieee80211\_reason\_to\_string}}(reason));}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02021}02021                 \mbox{\hyperlink{ieee80211__proto_8c_a76ec40fb2be2306bbf5c17ee92cf2711}{ieee80211\_new\_state}}(vap, \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944aeb109034761d023ef19a461bce676320}{IEEE80211\_S\_ASSOC}}, 0);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02022}02022                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02023}02023         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02024}02024 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02025}02025         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a0de64dd6f28c6d6334d34c80bd28bf03}{IEEE80211\_FC0\_SUBTYPE\_ACTION}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02026}02026         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_ad0d55a3395fcc94d0686ceff54e62390}{IEEE80211\_FC0\_SUBTYPE\_ACTION\_NOACK}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02027}02027                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ieee80211__var_8h_a87fba5bb95c383ed07ae42774b80386f}{IEEE80211\_ADDR\_EQ}}(vap-\/>\mbox{\hyperlink{structieee80211vap_a31bbdbec1c2fd8f9aba7146d23cbc895}{iv\_myaddr}}, wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}}) \&\&}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02028}02028                     !\mbox{\hyperlink{ieee80211_8h_a9065be563ef28f85f286f04d757c1c2d}{IEEE80211\_IS\_MULTICAST}}(wh-\/>\mbox{\hyperlink{structieee80211__frame_a3405747af3a0552866de899485a92889}{i\_addr1}})) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02029}02029                         \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02030}02030                             wh, NULL, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}not for us"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02031}02031                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02032}02032                 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}} != \mbox{\hyperlink{ieee80211__proto_8h_a6c8e7861891c9e21e6a02ccdba514944a59e567dc5761d3a082d77011fc6c1a39}{IEEE80211\_S\_RUN}}) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02033}02033                         \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02034}02034                             wh, NULL, \textcolor{stringliteral}{"{}wrong state \%s"{}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02035}02035                             \mbox{\hyperlink{ieee80211__proto_8c_a7743c46d5b77e40c7abac1417ee35dd8}{ieee80211\_state\_name}}[vap-\/>\mbox{\hyperlink{structieee80211vap_a80866880b00a3d4ef5d37df580155905}{iv\_state}}]);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02036}02036                         vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02037}02037                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02038}02038                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{ieee80211__input_8c_a028ee40010fce66499989fadefe7c5b2}{ieee80211\_parse\_action}}(ni, m0) == 0)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02039}02039                                 (void)ic-\/>\mbox{\hyperlink{structieee80211com_aa2eb6d34f12147685688c0178a00856c}{ic\_recv\_action}}(ni, wh, frm, efrm);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02040}02040                 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02041}02041                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02042}02042 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02043}02043         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a06e49951f70b198bce43e8cc2c0e47bb}{IEEE80211\_FC0\_SUBTYPE\_ASSOC\_REQ}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02044}02044         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a48b4a2b5eef11ce5a68762425bb39a97}{IEEE80211\_FC0\_SUBTYPE\_REASSOC\_REQ}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02045}02045         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a51791ebe35da5e79a89df6782786fa91}{IEEE80211\_FC0\_SUBTYPE\_PROBE\_REQ}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02046}02046         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a9b0c6aa3709ffed8694e6dab3533a68d}{IEEE80211\_FC0\_SUBTYPE\_TIMING\_ADV}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02047}02047         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a36480564bb2efdc08fc14f131da6bf99}{IEEE80211\_FC0\_SUBTYPE\_ATIM}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02048}02048                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_acbe7799bd67d02ffce4779d6bcef127d}{IEEE80211\_MSG\_INPUT}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02049}02049                     wh, NULL, \textcolor{stringliteral}{"{}\%s"{}}, \textcolor{stringliteral}{"{}not handled"{}});}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02050}02050                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a63f7b210dd607bc1515e3b0ad4a0a689}{is\_rx\_mgtdiscard}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02051}02051                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02052}02052 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02053}02053         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02054}02054                 \mbox{\hyperlink{ieee80211__var_8h_ad6513f87fe114b46afa5019937f0cfec}{IEEE80211\_DISCARD}}(vap, \mbox{\hyperlink{ieee80211__var_8h_a52d4c8ea23b5f09cf1b52af74aa2e0b1}{IEEE80211\_MSG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02055}02055                     wh, \textcolor{stringliteral}{"{}mgt"{}}, \textcolor{stringliteral}{"{}subtype 0x\%x not handled"{}}, subtype);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02056}02056                 vap-\/>\mbox{\hyperlink{structieee80211vap_a4a2ffbe9be4e85b08edc9b0e6bb194d6}{iv\_stats}}.\mbox{\hyperlink{structieee80211__stats_a3a4f14fe06dc51acdcef84930caffd77}{is\_rx\_badsubtype}}++;}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02057}02057                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02058}02058         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02059}02059 \textcolor{preprocessor}{\#undef ISREASSOC}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02060}02060 \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02061}02061 }
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02062}02062 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02063}\mbox{\hyperlink{ieee80211__sta_8c_acd22b45840a3ca42f7832d494cd1b832}{02063}} \mbox{\hyperlink{ieee80211__sta_8c_acd22b45840a3ca42f7832d494cd1b832}{sta\_recv\_ctl}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structieee80211__node}{ieee80211\_node}} *ni, \textcolor{keyword}{struct} mbuf *m, \textcolor{keywordtype}{int} subtype)}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02064}02064 \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02065}02065         \textcolor{keywordflow}{switch} (subtype) \{}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02066}02066         \textcolor{keywordflow}{case} \mbox{\hyperlink{ieee80211_8h_a7d4b6c2ad7226ed3d33b7d3473e13a47}{IEEE80211\_FC0\_SUBTYPE\_BAR}}:}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02067}02067                 \mbox{\hyperlink{ieee80211__ht_8c_a07dc76c069d8d4ea145f30b33e745aa9}{ieee80211\_recv\_bar}}(ni, m);}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02068}02068                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02069}02069         \}}
\DoxyCodeLine{\Hypertarget{ieee80211__sta_8c_source_l02070}02070 \}}

\end{DoxyCode}
