\hypertarget{if__ath__btcoex__mci_8c_source}{}\doxysection{if\+\_\+ath\+\_\+btcoex\+\_\+mci.\+c}
\label{if__ath__btcoex__mci_8c_source}\index{dev/ath/if\_ath\_btcoex\_mci.c@{dev/ath/if\_ath\_btcoex\_mci.c}}
\mbox{\hyperlink{if__ath__btcoex__mci_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00002}00002 \textcolor{comment}{ * Copyright (c) 2014 Qualcomm Atheros, Inc.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00003}00003 \textcolor{comment}{ * Copyright (c) 2016 Adrian Chadd <adrian@FreeBSD.org>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00004}00004 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00005}00005 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00006}00006 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00007}00007 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00008}00008 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00009}00009 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00010}00010 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer,}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00011}00011 \textcolor{comment}{ *    without modification.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00012}00012 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce at minimum a disclaimer}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00013}00013 \textcolor{comment}{ *    similar to the "{}NO WARRANTY"{} disclaimer below ("{}Disclaimer"{}) and any}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00014}00014 \textcolor{comment}{ *    redistribution must be conditioned upon including a substantially}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00015}00015 \textcolor{comment}{ *    similar Disclaimer requirement for further binary redistribution.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00016}00016 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00017}00017 \textcolor{comment}{ * NO WARRANTY}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00018}00018 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00019}00019 \textcolor{comment}{ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00020}00020 \textcolor{comment}{ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00021}00021 \textcolor{comment}{ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00022}00022 \textcolor{comment}{ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00023}00023 \textcolor{comment}{ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00024}00024 \textcolor{comment}{ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00025}00025 \textcolor{comment}{ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00026}00026 \textcolor{comment}{ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00027}00027 \textcolor{comment}{ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00028}00028 \textcolor{comment}{ * THE POSSIBILITY OF SUCH DAMAGES.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00029}00029 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00030}00030 \textcolor{comment}{ * \$FreeBSD\$}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00031}00031 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00032}00032 \textcolor{preprocessor}{\#include <sys/cdefs.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00033}\mbox{\hyperlink{if__ath__btcoex__mci_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{00033}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\_\_FBSDID}}(\textcolor{stringliteral}{"{}\$FreeBSD\$"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00035}00035 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00036}00036 \textcolor{comment}{ * This implements the MCI bluetooth coexistence handling.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00037}00037 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00038}00038 \textcolor{preprocessor}{\#include "{}opt\_ath.h"{}}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00039}00039 \textcolor{preprocessor}{\#include "{}opt\_inet.h"{}}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00040}00040 \textcolor{preprocessor}{\#include "{}opt\_wlan.h"{}}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00041}00041 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00049}00049 \textcolor{preprocessor}{\#include <sys/errno.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00050}00050 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <machine/bus.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <machine/resource.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00053}00053 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <sys/bus.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <sys/socket.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00057}00057 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00058}00058 \textcolor{preprocessor}{\#include <net/if.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00059}00059 \textcolor{preprocessor}{\#include <net/if\_var.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00060}00060 \textcolor{preprocessor}{\#include <net/if\_media.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00061}00061 \textcolor{preprocessor}{\#include <net/if\_arp.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00062}00062 \textcolor{preprocessor}{\#include <net/ethernet.h>}               \textcolor{comment}{/* XXX for ether\_sprintf */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00063}00063 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00064}00064 \textcolor{preprocessor}{\#include <net80211/ieee80211\_var.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00065}00065 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00066}00066 \textcolor{preprocessor}{\#include <net/bpf.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00067}00067 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00068}00068 \textcolor{preprocessor}{\#ifdef INET}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00069}00069 \textcolor{preprocessor}{\#include <netinet/in.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00070}00070 \textcolor{preprocessor}{\#include <netinet/if\_ether.h>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00071}00071 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00072}00072 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00073}00073 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__athvar_8h}{dev/ath/if\_athvar.h}}>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00074}00074 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__ath__debug_8h}{dev/ath/if\_ath\_debug.h}}>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00075}00075 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__ath__descdma_8h}{dev/ath/if\_ath\_descdma.h}}>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00076}00076 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__ath__btcoex_8h}{dev/ath/if\_ath\_btcoex.h}}>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00077}00077 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00078}00078 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__ath__btcoex__mci_8h}{dev/ath/if\_ath\_btcoex\_mci.h}}>}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00079}00079 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00080}\mbox{\hyperlink{if__ath__btcoex__mci_8c_afbeb6d6e05c0159c04110fa6bb1a2867}{00080}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_afbeb6d6e05c0159c04110fa6bb1a2867}{MALLOC\_DECLARE}}(M\_ATHDEV);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00081}00081 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00082}\mbox{\hyperlink{if__ath__btcoex__mci_8c_ac3a081251c815b9fb9bc9f4538a53309}{00082}} \textcolor{preprocessor}{\#define ATH\_MCI\_GPM\_MAX\_ENTRY           16}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00083}\mbox{\hyperlink{if__ath__btcoex__mci_8c_a115e22e3e207186dd9668e81b89a9fe6}{00083}} \textcolor{preprocessor}{\#define ATH\_MCI\_GPM\_BUF\_SIZE            (ATH\_MCI\_GPM\_MAX\_ENTRY * 16)}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00084}\mbox{\hyperlink{if__ath__btcoex__mci_8c_ac8cee1d26275be4c6e82675e534c85b6}{00084}} \textcolor{preprocessor}{\#define ATH\_MCI\_SCHED\_BUF\_SIZE          (16 * 16) }\textcolor{comment}{/* 16 entries, 4 dword each */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00085}00085 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00086}00086 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{if__ath__btcoex__mci_8c_a2e881c9138592d8eb2580c444343bc04}{ath\_btcoex\_mci\_update\_wlan\_channels}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00087}00087 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00088}00088 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00089}\mbox{\hyperlink{if__ath__btcoex__mci_8c_ad8e8762bf9549f7718aaedcd10a9051b}{00089}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_ad8e8762bf9549f7718aaedcd10a9051b}{ath\_btcoex\_mci\_attach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00090}00090 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00091}00091         \textcolor{keywordtype}{int} buflen, error;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00092}00092 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00093}00093         buflen = \mbox{\hyperlink{if__ath__btcoex__mci_8c_a115e22e3e207186dd9668e81b89a9fe6}{ATH\_MCI\_GPM\_BUF\_SIZE}} + \mbox{\hyperlink{if__ath__btcoex__mci_8c_ac8cee1d26275be4c6e82675e534c85b6}{ATH\_MCI\_SCHED\_BUF\_SIZE}};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00094}00094         error = \mbox{\hyperlink{if__ath__descdma_8c_a0f85416338a81a81a5976a29b9720211}{ath\_descdma\_alloc\_desc}}(sc, \&sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a43049ac2a775c0863ca91f45d47be81f}{buf}}, NULL,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00095}00095             \textcolor{stringliteral}{"{}MCI bufs"{}}, buflen, 1);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00096}00096         \textcolor{keywordflow}{if} (error != 0) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00097}00097                 device\_printf(sc-\/>\mbox{\hyperlink{structath__softc_a612288429dce3718c72d105726fa5a11}{sc\_dev}}, \textcolor{stringliteral}{"{}\%s: failed to alloc MCI RAM\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00098}00098                     \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00099}00099                 \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00100}00100         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00101}00101 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00102}00102         \textcolor{comment}{/* Yes, we're going to do bluetooth MCI coex */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00103}00103         sc-\/>\mbox{\hyperlink{structath__softc_a730fb26c3be3660ef9718e235ff990a8}{sc\_btcoex\_mci}} = 1;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00104}00104 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00105}00105         \textcolor{comment}{/* Initialise the wlan channel mapping */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00106}00106         sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a2d22588fb0de2fd474121c08c3f8d8f8}{wlan\_channels}}[0] = 0x00000000;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00107}00107         sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a2d22588fb0de2fd474121c08c3f8d8f8}{wlan\_channels}}[1] = 0xffffffff;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00108}00108         sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a2d22588fb0de2fd474121c08c3f8d8f8}{wlan\_channels}}[2] = 0xffffffff;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00109}00109         sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a2d22588fb0de2fd474121c08c3f8d8f8}{wlan\_channels}}[3] = 0x7fffffff;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00110}00110 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00111}00111         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00112}00112 \textcolor{comment}{         * Ok, so the API is a bit odd. It assumes sched\_addr is}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00113}00113 \textcolor{comment}{         * after gpm\_addr, and it does math to figure out the right}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00114}00114 \textcolor{comment}{         * sched\_buf pointer.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00115}00115 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00116}00116 \textcolor{comment}{         * So, set gpm\_addr to buf, sched\_addr to gpm\_addr + ATH\_MCI\_GPM\_BUF\_SIZE,}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00117}00117 \textcolor{comment}{         * the HAL call with do (gpm\_buf + (sched\_addr -\/ gpm\_addr)) to}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00118}00118 \textcolor{comment}{         * set sched\_buf, and we're "{}golden"{}.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00119}00119 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00120}00120 \textcolor{comment}{         * Note, it passes in 'len' here (gpm\_len) as}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00121}00121 \textcolor{comment}{         * ATH\_MCI\_GPM\_BUF\_SIZE >> 4.  My guess is that it's 16}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00122}00122 \textcolor{comment}{         * bytes per entry and we're storing 16 entries.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00123}00123 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00124}00124         sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a6f86416969ebaca0e28f1ee5b9467fae}{gpm\_buf}} = (\textcolor{keywordtype}{void} *) sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a43049ac2a775c0863ca91f45d47be81f}{buf}}.\mbox{\hyperlink{structath__descdma_a427787a2a73f9905b6c60c8399f59f9b}{dd\_desc}};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00125}00125         sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a2bcda391d2440279cecee329f56ae242}{sched\_buf}} = sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a6f86416969ebaca0e28f1ee5b9467fae}{gpm\_buf}} +}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00126}00126             \mbox{\hyperlink{if__ath__btcoex__mci_8c_a115e22e3e207186dd9668e81b89a9fe6}{ATH\_MCI\_GPM\_BUF\_SIZE}};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00127}00127 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00128}00128         sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a2c7ad1d281d8bfe156f4f5ffa85d8658}{gpm\_paddr}} = sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a43049ac2a775c0863ca91f45d47be81f}{buf}}.\mbox{\hyperlink{structath__descdma_a7fa3a8c3dd4f066083ce9c63104ce4c7}{dd\_desc\_paddr}};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00129}00129         sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_ad13e1296a1d9b68ca6717c7b8a182bb1}{sched\_paddr}} = sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a2c7ad1d281d8bfe156f4f5ffa85d8658}{gpm\_paddr}} +}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00130}00130             \mbox{\hyperlink{if__ath__btcoex__mci_8c_a115e22e3e207186dd9668e81b89a9fe6}{ATH\_MCI\_GPM\_BUF\_SIZE}};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00131}00131 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00132}00132         \textcolor{comment}{/* memset the gpm buffer with MCI\_GPM\_RSVD\_PATTERN */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00133}00133         memset(sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a6f86416969ebaca0e28f1ee5b9467fae}{gpm\_buf}}, 0xfe, buflen);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00134}00134 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00135}00135         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00136}00136 \textcolor{comment}{         * This is an unfortunate x86'ism in the HAL -\/ the}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00137}00137 \textcolor{comment}{         * HAL code expects the passed in buffer to be}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00138}00138 \textcolor{comment}{         * coherent, and doesn't implement /any/ kind}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00139}00139 \textcolor{comment}{         * of buffer sync operations at all.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00140}00140 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00141}00141 \textcolor{comment}{         * So, this code will only work on dma coherent buffers}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00142}00142 \textcolor{comment}{         * and will behave poorly on non-\/coherent systems.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00143}00143 \textcolor{comment}{         * Fixing this would require some HAL surgery so it}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00144}00144 \textcolor{comment}{         * actually /did/ the buffer flushing as appropriate.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00145}00145 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00146}00146         \mbox{\hyperlink{if__athvar_8h_a10ec7ab3b5a4a085bdc4698ae07376be}{ath\_hal\_btcoex\_mci\_setup}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00147}00147             sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a2c7ad1d281d8bfe156f4f5ffa85d8658}{gpm\_paddr}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00148}00148             sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a6f86416969ebaca0e28f1ee5b9467fae}{gpm\_buf}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00149}00149             \mbox{\hyperlink{if__ath__btcoex__mci_8c_a115e22e3e207186dd9668e81b89a9fe6}{ATH\_MCI\_GPM\_BUF\_SIZE}} >> 4,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00150}00150             sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_ad13e1296a1d9b68ca6717c7b8a182bb1}{sched\_paddr}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00151}00151 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00152}00152         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00153}00153 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00154}00154 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00155}00155 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00156}00156 \textcolor{comment}{ * Detach btcoex from the given interface}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00157}00157 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00158}00158 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00159}\mbox{\hyperlink{if__ath__btcoex__mci_8c_a8bd8233594a236f22753e6fa5dd53e14}{00159}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_a8bd8233594a236f22753e6fa5dd53e14}{ath\_btcoex\_mci\_detach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00160}00160 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00161}00161 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00162}00162         \mbox{\hyperlink{if__athvar_8h_ad298134ea6f2dadbd88d61531aec1177}{ath\_hal\_btcoex\_mci\_detach}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00163}00163         \mbox{\hyperlink{if__ath__descdma_8c_a2d06dc1bda7fee5ddf3911ab8547f772}{ath\_descdma\_cleanup}}(sc, \&sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a43049ac2a775c0863ca91f45d47be81f}{buf}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00164}00164         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00165}00165 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00166}00166 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00167}00167 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00168}00168 \textcolor{comment}{ * Configure or disable bluetooth coexistence on the given channel.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00169}00169 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00170}00170 \textcolor{comment}{ * For MCI, we just use the top-\/level enable/disable flag, and}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00171}00171 \textcolor{comment}{ * then the MCI reset / channel update path will configure things}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00172}00172 \textcolor{comment}{ * appropriately based on the current band.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00173}00173 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00174}00174 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00175}\mbox{\hyperlink{if__ath__btcoex__mci_8c_a4600a64e1a41a738f4d7a505382d8b45}{00175}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_a4600a64e1a41a738f4d7a505382d8b45}{ath\_btcoex\_mci\_enable}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00176}00176     \textcolor{keyword}{const} \textcolor{keyword}{struct} ieee80211\_channel *chan)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00177}00177 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00178}00178 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00179}00179         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00180}00180 \textcolor{comment}{         * Always reconfigure stomp-\/all for now, so wlan wins.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00181}00181 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00182}00182 \textcolor{comment}{         * The default weights still don't allow beacons to win,}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00183}00183 \textcolor{comment}{         * so unless you set net.wlan.X.bmiss\_max to something higher,}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00184}00184 \textcolor{comment}{         * net80211 will disconnect you during a HCI INQUIRY command.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00185}00185 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00186}00186 \textcolor{comment}{         * The longer-\/term solution is to dynamically adjust whether}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00187}00187 \textcolor{comment}{         * bmiss happens based on bluetooth requirements, and look at}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00188}00188 \textcolor{comment}{         * making the individual stomp bits configurable.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00189}00189 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00190}00190         \mbox{\hyperlink{if__athvar_8h_a4393b96f4facd6efc7de5c25e8308112}{ath\_hal\_btcoex\_set\_weights}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}}, \mbox{\hyperlink{ah__btcoex_8h_ae9a2bd12ffb52ed6c6bb3dddfa651450ae19aee39189111bdaf3f89717da0090a}{HAL\_BT\_COEX\_STOMP\_ALL}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00191}00191 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00192}00192         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00193}00193 \textcolor{comment}{         * update wlan channels so the firmware knows what channels it}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00194}00194 \textcolor{comment}{         * can/can't use.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00195}00195 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00196}00196         \mbox{\hyperlink{if__ath__btcoex__mci_8c_a2e881c9138592d8eb2580c444343bc04}{ath\_btcoex\_mci\_update\_wlan\_channels}}(sc);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00197}00197 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00198}00198         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00199}00199 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00200}00200 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00201}00201 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00202}00202 \textcolor{comment}{ * XXX TODO: turn into general btcoex, and then make this}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00203}00203 \textcolor{comment}{ * the MCI specific bits.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00204}00204 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00205}00205 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00206}\mbox{\hyperlink{if__ath__btcoex__mci_8c_ad9a026e7c3e98ebe18fe0d586fa0fdff}{00206}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_ad9a026e7c3e98ebe18fe0d586fa0fdff}{ath\_btcoex\_mci\_event}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc, \mbox{\hyperlink{if__ath__btcoex_8h_a36e5d4725641248265237416a09ab26f}{ATH\_BT\_COEX\_EVENT}} nevent,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00207}00207     \textcolor{keywordtype}{void} *param)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00208}00208 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00209}00209 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00210}00210         \textcolor{keywordflow}{if} (! sc-\/>\mbox{\hyperlink{structath__softc_a730fb26c3be3660ef9718e235ff990a8}{sc\_btcoex\_mci}})}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00211}00211                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00212}00212 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00213}00213         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00214}00214 \textcolor{comment}{         * Check whether we need to flush our local profile cache.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00215}00215 \textcolor{comment}{         * If we do, then at (XXX TODO) we should flush our state,}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00216}00216 \textcolor{comment}{         * then wait for the MCI response with the updated profile list.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00217}00217 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00218}00218         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00219}00219             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda87f2cdd0c018186d2684895b7d7ef8f4}{HAL\_MCI\_STATE\_NEED\_FLUSH\_BT\_INFO}}, NULL) != 0) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00220}00220                 uint32\_t data = 0;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00221}00221 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00222}00222                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00223}00223                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda99668b8ff882785f30b1ba655db7579d}{HAL\_MCI\_STATE\_ENABLE}}, NULL) != 0) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00224}00224                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00225}00225                             \textcolor{stringliteral}{"{}(MCI) Flush BT profile\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00226}00226                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00227}00227 \textcolor{comment}{                         * XXX TODO: flush profile state on the ath(4)}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00228}00228 \textcolor{comment}{                         * driver side; subsequent messages will come}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00229}00229 \textcolor{comment}{                         * through with the current list of active}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00230}00230 \textcolor{comment}{                         * profiles.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00231}00231 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00232}00232                         \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00233}00233                             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda87f2cdd0c018186d2684895b7d7ef8f4}{HAL\_MCI\_STATE\_NEED\_FLUSH\_BT\_INFO}}, \&data);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00234}00234                         \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00235}00235                             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda8163b19a69ff6fae1d632f3062b9dd33}{HAL\_MCI\_STATE\_SEND\_STATUS\_QUERY}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00236}00236                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00237}00237         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00238}00238         \textcolor{keywordflow}{if} (nevent == \mbox{\hyperlink{if__ath__btcoex_8h_a36e5d4725641248265237416a09ab26fae4e49c31454d1ed62a38c572d50ce2c8}{ATH\_COEX\_EVENT\_BT\_NOOP}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00239}00239                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) BT\_NOOP\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00240}00240                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00241}00241         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00242}00242 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00243}00243 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00244}00244 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00245}\mbox{\hyperlink{if__ath__btcoex__mci_8c_a5375df25c5f4d4dea5428f0020f884c5}{00245}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_a5375df25c5f4d4dea5428f0020f884c5}{ath\_btcoex\_mci\_send\_gpm}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc, uint32\_t *payload)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00246}00246 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00247}00247 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00248}00248         \mbox{\hyperlink{if__athvar_8h_a8bd5f4e372b91cfa7a777d58b3d18e38}{ath\_hal\_btcoex\_mci\_send\_message}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}}, \mbox{\hyperlink{ah__btcoex_8h_af2b7e7c101ca24b94cbce983a6589560a06cfd396871f8179d614072626e71148}{MCI\_GPM}}, 0, payload, 16,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00249}00249             \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}}, \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00250}00250 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00251}00251 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00252}00252 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00253}00253 \textcolor{comment}{ * This starts a BT calibration.  It requires a chip reset.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00254}00254 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00255}00255 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00256}\mbox{\hyperlink{if__ath__btcoex__mci_8c_a1c1dc8e124702d43c2c22dd762b72239}{00256}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_a1c1dc8e124702d43c2c22dd762b72239}{ath\_btcoex\_mci\_bt\_cal\_do}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc, \textcolor{keywordtype}{int} tx\_timeout, \textcolor{keywordtype}{int} rx\_timeout)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00257}00257 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00258}00258 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00259}00259         device\_printf(sc-\/>\mbox{\hyperlink{structath__softc_a612288429dce3718c72d105726fa5a11}{sc\_dev}}, \textcolor{stringliteral}{"{}\%s: TODO!\(\backslash\)n"{}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00260}00260         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00261}00261 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00262}00262 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00263}00263 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00264}\mbox{\hyperlink{if__ath__btcoex__mci_8c_a072c3fa6f6f71624c704e945c034672c}{00264}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_a072c3fa6f6f71624c704e945c034672c}{ath\_btcoex\_mci\_cal\_msg}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc, uint8\_t opcode,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00265}00265     uint8\_t *rx\_payload)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00266}00266 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00267}00267         uint32\_t payload[4] = \{0, 0, 0, 0\};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00268}00268 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00269}00269         \textcolor{keywordflow}{switch} (opcode) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00270}00270         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_ad6fc2babe7144fae51c42270a6f01bfda3f6d2339048ef76a7fb5efec1e0599cf}{MCI\_GPM\_BT\_CAL\_REQ}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00271}00271                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) receive BT\_CAL\_REQ\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00272}00272                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}}, \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda2dbe729a1082cad6b732750f3742d0ec}{HAL\_MCI\_STATE\_BT}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00273}00273                     NULL) == \mbox{\hyperlink{ah__btcoex_8h_a5327c53794a3a26e166584b7c157dbd3af480def31a6128dfbd116ade97e2a622}{MCI\_BT\_AWAKE}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00274}00274                         \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00275}00275                             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fdab18ae0c8921869af86e36ebc6648e6cd}{HAL\_MCI\_STATE\_SET\_BT\_CAL\_START}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00276}00276                         \mbox{\hyperlink{if__ath__btcoex__mci_8c_a1c1dc8e124702d43c2c22dd762b72239}{ath\_btcoex\_mci\_bt\_cal\_do}}(sc, 1000, 1000);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00277}00277                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00278}00278                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00279}00279                             \textcolor{stringliteral}{"{}(MCI) State mismatches: \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00280}00280                             \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00281}00281                             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda2dbe729a1082cad6b732750f3742d0ec}{HAL\_MCI\_STATE\_BT}}, NULL));}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00282}00282                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00283}00283                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00284}00284         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_ad6fc2babe7144fae51c42270a6f01bfdaad080e83098da3ede156c2faa311ab65}{MCI\_GPM\_BT\_CAL\_DONE}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00285}00285                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) receive BT\_CAL\_DONE\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00286}00286                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}}, \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda2dbe729a1082cad6b732750f3742d0ec}{HAL\_MCI\_STATE\_BT}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00287}00287                     NULL) == \mbox{\hyperlink{ah__btcoex_8h_a5327c53794a3a26e166584b7c157dbd3a9734f7a06a06da6123d60857a39ba2b9}{MCI\_BT\_CAL}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00288}00288                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00289}00289                             \textcolor{stringliteral}{"{}(MCI) ERROR ILLEGAL!\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00290}00290                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00291}00291                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00292}00292                             \textcolor{stringliteral}{"{}(MCI) BT not in CAL state.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00293}00293                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00294}00294                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00295}00295         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_ad6fc2babe7144fae51c42270a6f01bfda721dae46e676267432002e394b35f015}{MCI\_GPM\_BT\_CAL\_GRANT}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00296}00296                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) receive BT\_CAL\_GRANT\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00297}00297                 \textcolor{comment}{/* Send WLAN\_CAL\_DONE for now */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00298}00298                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) Send WLAN\_CAL\_DONE\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00299}00299                 \mbox{\hyperlink{ah__btcoex_8h_a044d9aa2027eef1e11ab8f5153029fa2}{MCI\_GPM\_SET\_CAL\_TYPE}}(payload, \mbox{\hyperlink{ah__btcoex_8h_ad6fc2babe7144fae51c42270a6f01bfda3b0498894a0f34446834f26cf2aa86e3}{MCI\_GPM\_WLAN\_CAL\_DONE}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00300}00300                 \mbox{\hyperlink{if__ath__btcoex__mci_8c_a5375df25c5f4d4dea5428f0020f884c5}{ath\_btcoex\_mci\_send\_gpm}}(sc, \&payload[0]);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00301}00301                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00302}00302         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00303}00303                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00304}00304                     \textcolor{stringliteral}{"{}(MCI) Unknown GPM CAL message.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00305}00305                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00306}00306         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00307}00307 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00308}00308 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00309}00309 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00310}00310 \textcolor{comment}{ * Update the bluetooth channel map.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00311}00311 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00312}00312 \textcolor{comment}{ * This map tells the bluetooth device which bluetooth channels}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00313}00313 \textcolor{comment}{ * are available for data.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00314}00314 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00315}00315 \textcolor{comment}{ * For 5GHz, all channels are available.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00316}00316 \textcolor{comment}{ * For 2GHz, the current wifi channel range is blocked out,}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00317}00317 \textcolor{comment}{ *   and the rest are available.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00318}00318 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00319}00319 \textcolor{comment}{ * This narrows which frequencies are used by the device when}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00320}00320 \textcolor{comment}{ * it initiates a transfer, thus hopefully reducing the chances}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00321}00321 \textcolor{comment}{ * of collisions (both hopefully on the current device and}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00322}00322 \textcolor{comment}{ * other devices in the same channel.)}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00323}00323 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00324}00324 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00325}\mbox{\hyperlink{if__ath__btcoex__mci_8c_a2e881c9138592d8eb2580c444343bc04}{00325}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_a2e881c9138592d8eb2580c444343bc04}{ath\_btcoex\_mci\_update\_wlan\_channels}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00326}00326 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00327}00327         \textcolor{keyword}{struct }ieee80211com *ic = \&sc-\/>\mbox{\hyperlink{structath__softc_ae353b7ad07ee8552500fcae15d6a2d79}{sc\_ic}};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00328}00328         \textcolor{keyword}{struct }ieee80211\_channel *chan = ic-\/>ic\_curchan;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00329}00329         uint32\_t channel\_info[4] =}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00330}00330             \{ 0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff \};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00331}00331         int32\_t wl\_chan, bt\_chan, bt\_start = 0, bt\_end = 79;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00332}00332 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00333}00333         \textcolor{comment}{/* BT channel frequency is 2402 + k, k = 0 \string~ 78 */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00334}00334         \textcolor{keywordflow}{if} (IEEE80211\_IS\_CHAN\_2GHZ(chan)) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00335}00335                 wl\_chan = chan-\/>ic\_freq -\/ 2402;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00336}00336                 \textcolor{keywordflow}{if} (IEEE80211\_IS\_CHAN\_HT40U(chan)) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00337}00337                         bt\_start = wl\_chan -\/ 10;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00338}00338                         bt\_end = wl\_chan + 30;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00339}00339                 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (IEEE80211\_IS\_CHAN\_HT40D(chan)) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00340}00340                         bt\_start = wl\_chan -\/ 30;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00341}00341                         bt\_end = wl\_chan + 10;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00342}00342                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00343}00343                         \textcolor{comment}{/* Assume 20MHz */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00344}00344                         bt\_start = wl\_chan -\/ 10;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00345}00345                         bt\_end = wl\_chan + 10;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00346}00346                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00347}00347 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00348}00348                 bt\_start -\/= 7;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00349}00349                 bt\_end += 7;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00350}00350 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00351}00351                 \textcolor{keywordflow}{if} (bt\_start < 0) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00352}00352                         bt\_start = 0;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00353}00353                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00354}00354                 \textcolor{keywordflow}{if} (bt\_end > \mbox{\hyperlink{ah__btcoex_8h_a98748f327bedf390d1e8cf89433f9f39}{MCI\_NUM\_BT\_CHANNELS}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00355}00355                         bt\_end = \mbox{\hyperlink{ah__btcoex_8h_a98748f327bedf390d1e8cf89433f9f39}{MCI\_NUM\_BT\_CHANNELS}};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00356}00356                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00357}00357                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) WLAN use channel \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00358}00358                     chan-\/>ic\_freq);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00359}00359                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00360}00360                     \textcolor{stringliteral}{"{}(MCI) mask BT channel \%d -\/ \%d\(\backslash\)n"{}}, bt\_start, bt\_end);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00361}00361                 \textcolor{keywordflow}{for} (bt\_chan = bt\_start; bt\_chan < bt\_end; bt\_chan++) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00362}00362                         \mbox{\hyperlink{ah__btcoex_8h_ae5e1d3c183895b4534e03b988359c22d}{MCI\_GPM\_CLR\_CHANNEL\_BIT}}(\&channel\_info[0], bt\_chan);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00363}00363                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00364}00364         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00365}00365                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00366}00366                     \textcolor{stringliteral}{"{}(MCI) WLAN not use any 2G channel, unmask all for BT\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00367}00367         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00368}00368         \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}}, \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda4632a9eabd0b8cd2212908d9178ef787}{HAL\_MCI\_STATE\_SEND\_WLAN\_CHANNELS}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00369}00369             \&channel\_info[0]);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00370}00370 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00371}00371 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00372}00372 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00373}\mbox{\hyperlink{if__ath__btcoex__mci_8c_adc698406de35b4f605d97fb618b7ee31}{00373}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_adc698406de35b4f605d97fb618b7ee31}{ath\_btcoex\_mci\_coex\_msg}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc, uint8\_t opcode,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00374}00374     uint8\_t *rx\_payload)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00375}00375 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00376}00376         uint32\_t version;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00377}00377         uint8\_t major;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00378}00378         uint8\_t minor;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00379}00379         uint32\_t seq\_num;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00380}00380 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00381}00381         \textcolor{keywordflow}{switch} (opcode) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00382}00382         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_a356a648102efd4ca037cc80861c5bb16a5fdd2cd08cb8c21e9b45ea93ee05b82e}{MCI\_GPM\_COEX\_VERSION\_QUERY}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00383}00383                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00384}00384                     \textcolor{stringliteral}{"{}(MCI) Recv GPM COEX Version Query.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00385}00385                 version = \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00386}00386                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda860bb0134958f2ff6f6c04d20c431180}{HAL\_MCI\_STATE\_SEND\_WLAN\_COEX\_VERSION}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00387}00387                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00388}00388 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00389}00389         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_a356a648102efd4ca037cc80861c5bb16a652a741994a43d647c2d9b02f3e21855}{MCI\_GPM\_COEX\_VERSION\_RESPONSE}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00390}00390                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00391}00391                     \textcolor{stringliteral}{"{}(MCI) Recv GPM COEX Version Response.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00392}00392                 major = *(rx\_payload + \mbox{\hyperlink{ah__btcoex_8h_adc29c2ff13d900c2f185ee95427fb06ca819ee64176cf35cf7539d1424b92c62a}{MCI\_GPM\_COEX\_B\_MAJOR\_VERSION}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00393}00393                 minor = *(rx\_payload + \mbox{\hyperlink{ah__btcoex_8h_adc29c2ff13d900c2f185ee95427fb06caf45439389e72fdbfe2640ca997ee44c2}{MCI\_GPM\_COEX\_B\_MINOR\_VERSION}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00394}00394                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00395}00395                     \textcolor{stringliteral}{"{}(MCI) BT Coex version: \%d.\%d\(\backslash\)n"{}}, major, minor);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00396}00396                 version = (major << 8) + minor;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00397}00397                 version = \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00398}00398                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fdaa15abae38efea548999e2d63a67936d1}{HAL\_MCI\_STATE\_SET\_BT\_COEX\_VERSION}}, \&version);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00399}00399                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00400}00400 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00401}00401         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_a356a648102efd4ca037cc80861c5bb16a99f9421564fea5a99d4ad00d4f22c824}{MCI\_GPM\_COEX\_STATUS\_QUERY}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00402}00402                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00403}00403                     \textcolor{stringliteral}{"{}(MCI) Recv GPM COEX Status Query = 0x\%02x.\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00404}00404                     *(rx\_payload + \mbox{\hyperlink{ah__btcoex_8h_adc29c2ff13d900c2f185ee95427fb06cadf3716e545a881717232739c9c660df7}{MCI\_GPM\_COEX\_B\_WLAN\_BITMAP}}));}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00405}00405                 \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00406}00406                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda4632a9eabd0b8cd2212908d9178ef787}{HAL\_MCI\_STATE\_SEND\_WLAN\_CHANNELS}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00407}00407                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00408}00408 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00409}00409         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_a356a648102efd4ca037cc80861c5bb16a52f63f3962f02d1782f56447fb14fca6}{MCI\_GPM\_COEX\_BT\_PROFILE\_INFO}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00410}00410                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00411}00411 \textcolor{comment}{                 * XXX TODO: here is where we'd parse active profile}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00412}00412 \textcolor{comment}{                 * info and make driver/stack choices as appropriate.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00413}00413 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00414}00414                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00415}00415                     \textcolor{stringliteral}{"{}(MCI) TODO: Recv GPM COEX BT\_Profile\_Info.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00416}00416                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00417}00417 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00418}00418         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_a356a648102efd4ca037cc80861c5bb16af8cf103237586305263d69d4a0c08217}{MCI\_GPM\_COEX\_BT\_STATUS\_UPDATE}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00419}00419                 seq\_num = *((uint32\_t *)(rx\_payload + 12));}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00420}00420                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00421}00421                     \textcolor{stringliteral}{"{}(MCI) Recv GPM COEX BT\_Status\_Update: SEQ=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00422}00422                     seq\_num);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00423}00423                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00424}00424 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00425}00425         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00426}00426                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00427}00427                     \textcolor{stringliteral}{"{}(MCI) Unknown GPM COEX message = 0x\%02x\(\backslash\)n"{}}, opcode);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00428}00428                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00429}00429         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00430}00430 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00431}00431 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00432}00432 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00433}\mbox{\hyperlink{if__ath__btcoex__mci_8c_a25584ecb82eafa18b9924c929f710e72}{00433}} \mbox{\hyperlink{if__ath__btcoex__mci_8c_a25584ecb82eafa18b9924c929f710e72}{ath\_btcoex\_mci\_intr}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__softc}{ath\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00434}00434 \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00435}00435         uint32\_t mciInt, mciIntRxMsg;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00436}00436         uint32\_t offset, subtype, opcode;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00437}00437         uint32\_t *pGpm;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00438}00438         uint32\_t more\_data = \mbox{\hyperlink{ah__btcoex_8h_af43e4a9d331ce8d3da2cc26c4622fee0}{HAL\_MCI\_GPM\_MORE}};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00439}00439         int8\_t value\_dbm;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00440}00440         \textcolor{keywordtype}{bool} skip\_gpm = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00441}00441 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00442}00442         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}\%s: called\(\backslash\)n"{}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00443}00443 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00444}00444         \mbox{\hyperlink{if__athvar_8h_a4b0a8e09ea136c7fdde83a873499013b}{ath\_hal\_btcoex\_mci\_get\_interrupt}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}}, \&mciInt, \&mciIntRxMsg);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00445}00445 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00446}00446         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}}, \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda99668b8ff882785f30b1ba655db7579d}{HAL\_MCI\_STATE\_ENABLE}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00447}00447             NULL) == 0) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00448}00448                 \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00449}00449                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda1608f6b2bcbec03acd5777aafe3aa581}{HAL\_MCI\_STATE\_INIT\_GPM\_OFFSET}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00450}00450                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00451}00451                     \textcolor{stringliteral}{"{}(MCI) INTR but MCI\_disabled\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00452}00452                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00453}00453                     \textcolor{stringliteral}{"{}(MCI) MCI interrupt: mciInt = 0x\%x, mciIntRxMsg = 0x\%x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00454}00454                     mciInt, mciIntRxMsg);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00455}00455                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00456}00456         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00457}00457 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00458}00458         \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_a455bcffc220f6f6cd3989654b7ef93ca}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_REQ\_WAKE}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00459}00459                 uint32\_t payload4[4] = \{ 0xffffffff, 0xffffffff, 0xffffffff,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00460}00460                     0xffffff00\};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00461}00461 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00462}00462                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00463}00463 \textcolor{comment}{                 * The following REMOTE\_RESET and SYS\_WAKING used to sent}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00464}00464 \textcolor{comment}{                 * only when BT wake up. Now they are always sent, as a}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00465}00465 \textcolor{comment}{                 * recovery method to reset BT MCI's RX alignment.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00466}00466 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00467}00467                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00468}00468                     \textcolor{stringliteral}{"{}(MCI) 1. INTR Send REMOTE\_RESET\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00469}00469                 \mbox{\hyperlink{if__athvar_8h_a8bd5f4e372b91cfa7a777d58b3d18e38}{ath\_hal\_btcoex\_mci\_send\_message}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00470}00470                     \mbox{\hyperlink{ah__btcoex_8h_af2b7e7c101ca24b94cbce983a6589560a14da69a3093d908497a93628a99da1b9}{MCI\_REMOTE\_RESET}}, 0, payload4, 16, \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}}, \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00471}00471                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00472}00472                     \textcolor{stringliteral}{"{}(MCI) 1. INTR Send SYS\_WAKING\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00473}00473                 \mbox{\hyperlink{if__athvar_8h_a8bd5f4e372b91cfa7a777d58b3d18e38}{ath\_hal\_btcoex\_mci\_send\_message}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00474}00474                     \mbox{\hyperlink{ah__btcoex_8h_af2b7e7c101ca24b94cbce983a6589560a8d80da53e496dace0dfcf1d3769b8474}{MCI\_SYS\_WAKING}}, 0, NULL, 0, \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}}, \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00475}00475 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00476}00476                 mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_REQ\_WAKE;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00477}00477                 \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00478}00478                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda221cf0c6dc75f7c01da2b4b1895b5cd2}{HAL\_MCI\_STATE\_RESET\_REQ\_WAKE}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00479}00479 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00480}00480                 \textcolor{comment}{/* always do this for recovery and 2G/5G toggling and LNA\_TRANS */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00481}00481                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00482}00482                     \textcolor{stringliteral}{"{}(MCI) 1. Set BT state to AWAKE.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00483}00483                 \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00484}00484                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fdafece4f630a9d20c018291af8e26c54b4}{HAL\_MCI\_STATE\_SET\_BT\_AWAKE}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00485}00485         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00486}00486 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00487}00487         \textcolor{comment}{/* Processing SYS\_WAKING/SYS\_SLEEPING */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00488}00488         \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_aa6bfb26dc15d10f4b8fc9ca1a9748768}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_SYS\_WAKING}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00489}00489                 mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_SYS\_WAKING;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00490}00490                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}}, \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda2dbe729a1082cad6b732750f3742d0ec}{HAL\_MCI\_STATE\_BT}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00491}00491                     NULL) == \mbox{\hyperlink{ah__btcoex_8h_a5327c53794a3a26e166584b7c157dbd3afdb86380f1cd5e2d115870597a79acd9}{MCI\_BT\_SLEEP}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00492}00492                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00493}00493                             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fdad9ebc977cf0ee11b885995305f296a2c}{HAL\_MCI\_STATE\_REMOTE\_SLEEP}}, NULL) == \mbox{\hyperlink{ah__btcoex_8h_a5327c53794a3a26e166584b7c157dbd3afdb86380f1cd5e2d115870597a79acd9}{MCI\_BT\_SLEEP}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00494}00494                                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00495}00495                                     \textcolor{stringliteral}{"{}(MCI) 2. BT stays in SLEEP mode.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00496}00496                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00497}00497                                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00498}00498                                     \textcolor{stringliteral}{"{}(MCI) 2. Set BT state to AWAKE.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00499}00499                                 \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00500}00500                                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fdafece4f630a9d20c018291af8e26c54b4}{HAL\_MCI\_STATE\_SET\_BT\_AWAKE}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00501}00501                         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00502}00502                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00503}00503                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00504}00504                             \textcolor{stringliteral}{"{}(MCI) 2. BT stays in AWAKE mode.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00505}00505                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00506}00506         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00507}00507 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00508}00508         \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_a6a295e4679f970474fbacc7a2d6b0a97}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_SYS\_SLEEPING}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00509}00509                 mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_SYS\_SLEEPING;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00510}00510                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}}, \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda2dbe729a1082cad6b732750f3742d0ec}{HAL\_MCI\_STATE\_BT}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00511}00511                     NULL) == \mbox{\hyperlink{ah__btcoex_8h_a5327c53794a3a26e166584b7c157dbd3af480def31a6128dfbd116ade97e2a622}{MCI\_BT\_AWAKE}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00512}00512                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00513}00513                             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fdad9ebc977cf0ee11b885995305f296a2c}{HAL\_MCI\_STATE\_REMOTE\_SLEEP}}, NULL) == \mbox{\hyperlink{ah__btcoex_8h_a5327c53794a3a26e166584b7c157dbd3af480def31a6128dfbd116ade97e2a622}{MCI\_BT\_AWAKE}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00514}00514                                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00515}00515                                     \textcolor{stringliteral}{"{}(MCI) 3. BT stays in AWAKE mode.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00516}00516                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00517}00517                                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00518}00518                                     \textcolor{stringliteral}{"{}(MCI) 3. Set BT state to SLEEP.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00519}00519                                 \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00520}00520                                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda48eb8eac13a8f907aeb3da2eaf86067e}{HAL\_MCI\_STATE\_SET\_BT\_SLEEP}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00521}00521                         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00522}00522                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00523}00523                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00524}00524                             \textcolor{stringliteral}{"{}(MCI) 3. BT stays in SLEEP mode.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00525}00525                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00526}00526         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00527}00527 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00528}00528         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00529}00529 \textcolor{comment}{         * Recover from out-\/of-\/order / wrong-\/offset GPM messages.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00530}00530 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00531}00531         \textcolor{keywordflow}{if} ((mciInt \& \mbox{\hyperlink{ah__btcoex_8h_a7bd57632a7825672cb44a7f8843e31cd}{HAL\_MCI\_INTERRUPT\_RX\_INVALID\_HDR}}) ||}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00532}00532             (mciInt \& \mbox{\hyperlink{ah__btcoex_8h_a1fe8cfd5cf5a453fece9b734c2c59bba}{HAL\_MCI\_INTERRUPT\_CONT\_INFO\_TIMEOUT}})) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00533}00533                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00534}00534                     \textcolor{stringliteral}{"{}(MCI) MCI RX broken, skip GPM messages\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00535}00535                 \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00536}00536                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda18cd051700d3d841ba401597e7b5bbbb}{HAL\_MCI\_STATE\_RECOVER\_RX}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00537}00537                 skip\_gpm = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00538}00538         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00539}00539 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00540}00540         \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_a8d3c4a6f51ec8d3e347ebc0d3e4512a0}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_SCHD\_INFO}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00541}00541                 mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_SCHD\_INFO;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00542}00542                 offset = \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00543}00543                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda3004a346684b0a1d6d31bbad409a6e70}{HAL\_MCI\_STATE\_LAST\_SCHD\_MSG\_OFFSET}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00544}00544         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00545}00545 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00546}00546         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00547}00547 \textcolor{comment}{         * Parse GPM messages.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00548}00548 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00549}00549         \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_ab78bc9096a022ea2bec5c9f8cec1b380}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_GPM}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00550}00550                 mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_GPM;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00551}00551 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00552}00552                 \textcolor{keywordflow}{while} (more\_data == \mbox{\hyperlink{ah__btcoex_8h_af43e4a9d331ce8d3da2cc26c4622fee0}{HAL\_MCI\_GPM\_MORE}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00553}00553                         pGpm = (\textcolor{keywordtype}{void} *) sc-\/>\mbox{\hyperlink{structath__softc_ad25c1ed0a1226545039e70d07b654667}{sc\_btcoex}}.\mbox{\hyperlink{structath__softc_a6f86416969ebaca0e28f1ee5b9467fae}{gpm\_buf}};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00554}00554                         offset = \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00555}00555                             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda459433a2063e5acd9d6dbea7c5993bd1}{HAL\_MCI\_STATE\_NEXT\_GPM\_OFFSET}}, \&more\_data);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00556}00556 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00557}00557                         \textcolor{keywordflow}{if} (offset == \mbox{\hyperlink{ah__btcoex_8h_a784fb350c80d58d690afb3f3087b4f57}{HAL\_MCI\_GPM\_INVALID}})}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00558}00558                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00559}00559                         pGpm += (offset >> 2);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00560}00560                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00561}00561 \textcolor{comment}{                         * The first DWORD is a timer.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00562}00562 \textcolor{comment}{                         * The real data starts from the second DWORD.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00563}00563 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00564}00564                         subtype = \mbox{\hyperlink{ah__btcoex_8h_a065f19725a27aae4685f9162243d2be2}{MCI\_GPM\_TYPE}}(pGpm);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00565}00565                         opcode = \mbox{\hyperlink{ah__btcoex_8h_a34b73d44c7b006c196eb3fb9072a63e7}{MCI\_GPM\_OPCODE}}(pGpm);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00566}00566 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00567}00567                         \textcolor{keywordflow}{if} (!skip\_gpm) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00568}00568                                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{ah__btcoex_8h_a15d9feee3d637975f243a74c81c94bc1}{MCI\_GPM\_IS\_CAL\_TYPE}}(subtype)) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00569}00569                                         \mbox{\hyperlink{if__ath__btcoex__mci_8c_a072c3fa6f6f71624c704e945c034672c}{ath\_btcoex\_mci\_cal\_msg}}(sc, subtype,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00570}00570                                             (uint8\_t*) pGpm);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00571}00571                                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00572}00572                                         \textcolor{keywordflow}{switch} (subtype) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00573}00573                                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_ad6fc2babe7144fae51c42270a6f01bfda7645590e21afd53ac328b599f994af7b}{MCI\_GPM\_COEX\_AGENT}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00574}00574                                                 \mbox{\hyperlink{if__ath__btcoex__mci_8c_adc698406de35b4f605d97fb618b7ee31}{ath\_btcoex\_mci\_coex\_msg}}(sc,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00575}00575                                                     opcode, (uint8\_t*) pGpm);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00576}00576                                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00577}00577                                         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah__btcoex_8h_ad6fc2babe7144fae51c42270a6f01bfdab3ba807fab2dc948d12533a0d52a02dc}{MCI\_GPM\_BT\_DEBUG}}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00578}00578                                                 device\_printf(sc-\/>\mbox{\hyperlink{structath__softc_a612288429dce3718c72d105726fa5a11}{sc\_dev}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00579}00579                                                     \textcolor{stringliteral}{"{}(MCI) TODO: GPM\_BT\_DEBUG!\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00580}00580                                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00581}00581                                         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00582}00582                                                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00583}00583                                                     \textcolor{stringliteral}{"{}(MCI) Unknown GPM message.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00584}00584                                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00585}00585                                         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00586}00586                                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00587}00587                         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00588}00588                         \mbox{\hyperlink{ah__btcoex_8h_a2ba2e40439eaf61a60130930b4c70436}{MCI\_GPM\_RECYCLE}}(pGpm);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00589}00589                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00590}00590         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00591}00591 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00592}00592         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00593}00593 \textcolor{comment}{         * This is monitoring/management information messages, so the driver}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00594}00594 \textcolor{comment}{         * layer can hook in and dynamically adjust things like aggregation}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00595}00595 \textcolor{comment}{         * size, expected bluetooth/wifi traffic throughput, etc.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00596}00596 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00597}00597 \textcolor{comment}{         * None of that is done right now; it just passes off the values}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00598}00598 \textcolor{comment}{         * to the HAL so it can update its internal state as appropriate.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00599}00599 \textcolor{comment}{         * This code just prints out the values for debugging purposes.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00600}00600 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00601}00601         \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_af4e291549d43031f96f1497006975d98}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_MONITOR}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00602}00602                 \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_a2bddd689303a31b0f23865c6355b50fa}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_LNA\_CONTROL}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00603}00603                         mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_LNA\_CONTROL;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00604}00604                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) LNA\_CONTROL\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00605}00605                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00606}00606                 \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_a8a33f73486cee31a2538e6be701eec19}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_LNA\_INFO}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00607}00607                         mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_LNA\_INFO;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00608}00608                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) LNA\_INFO\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00609}00609                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00610}00610                 \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_a380aae24d4d7875bb570af1b71d06662}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_CONT\_INFO}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00611}00611                         value\_dbm = \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00612}00612                             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fdab01ae740a22db0970fd67d0695fafb60}{HAL\_MCI\_STATE\_CONT\_RSSI\_POWER}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00613}00613 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00614}00614                         mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_CONT\_INFO;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00615}00615                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00616}00616                             \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda7319b234ac96fce8a0acb2205df33a15}{HAL\_MCI\_STATE\_CONT\_TXRX}}, NULL)) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00617}00617                                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00618}00618                                     \textcolor{stringliteral}{"{}(MCI) CONT\_INFO: (tx) pri = \%d, pwr = \%d dBm\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00619}00619                                 \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00620}00620                                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda097a8967ace99d5bb18641a8759710f9}{HAL\_MCI\_STATE\_CONT\_PRIORITY}}, NULL),}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00621}00621                                     value\_dbm);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00622}00622                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00623}00623                                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00624}00624                                     \textcolor{stringliteral}{"{}(MCI) CONT\_INFO: (rx) pri = \%d, rssi = \%d dBm\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00625}00625                                 \mbox{\hyperlink{if__athvar_8h_ac25198a329d14217566886c064b5c559}{ath\_hal\_btcoex\_mci\_state}}(sc-\/>\mbox{\hyperlink{structath__softc_ac4ce6c93e1bf68e072a91ade0cd0ad38}{sc\_ah}},}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00626}00626                                     \mbox{\hyperlink{ah__btcoex_8h_af0848e569f6a1e49ac68d155dc4016fda097a8967ace99d5bb18641a8759710f9}{HAL\_MCI\_STATE\_CONT\_PRIORITY}}, NULL),}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00627}00627                                     value\_dbm);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00628}00628                         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00629}00629                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00630}00630                 \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_a76a891697b95803a30b73d428eef547c}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_CONT\_NACK}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00631}00631                         mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_CONT\_NACK;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00632}00632                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) CONT\_NACK\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00633}00633                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00634}00634                 \textcolor{keywordflow}{if} (mciIntRxMsg \& \mbox{\hyperlink{ah__btcoex_8h_a88258baee57b982e2bf9feb44d745093}{HAL\_MCI\_INTERRUPT\_RX\_MSG\_CONT\_RST}}) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00635}00635                         mciIntRxMsg \&= \string~HAL\_MCI\_INTERRUPT\_RX\_MSG\_CONT\_RST;}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00636}00636                         \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX, \textcolor{stringliteral}{"{}(MCI) CONT\_RST\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00637}00637                 \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00638}00638         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00639}00639 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00640}00640         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00641}00641 \textcolor{comment}{         * Recover the state engine if we hit an invalid header/timeout.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00642}00642 \textcolor{comment}{         * This is the final part of GPT out-\/of-\/sync recovery.}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00643}00643 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00644}00644         \textcolor{keywordflow}{if} ((mciInt \& \mbox{\hyperlink{ah__btcoex_8h_a7bd57632a7825672cb44a7f8843e31cd}{HAL\_MCI\_INTERRUPT\_RX\_INVALID\_HDR}}) ||}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00645}00645             (mciInt \& \mbox{\hyperlink{ah__btcoex_8h_a1fe8cfd5cf5a453fece9b734c2c59bba}{HAL\_MCI\_INTERRUPT\_CONT\_INFO\_TIMEOUT}})) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00646}00646                 \mbox{\hyperlink{if__ath__btcoex__mci_8c_ad9a026e7c3e98ebe18fe0d586fa0fdff}{ath\_btcoex\_mci\_event}}(sc, \mbox{\hyperlink{if__ath__btcoex_8h_a36e5d4725641248265237416a09ab26fae4e49c31454d1ed62a38c572d50ce2c8}{ATH\_COEX\_EVENT\_BT\_NOOP}}, NULL);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00647}00647                 mciInt \&= \string~(\mbox{\hyperlink{ah__btcoex_8h_a7bd57632a7825672cb44a7f8843e31cd}{HAL\_MCI\_INTERRUPT\_RX\_INVALID\_HDR}} |}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00648}00648                     \mbox{\hyperlink{ah__btcoex_8h_a1fe8cfd5cf5a453fece9b734c2c59bba}{HAL\_MCI\_INTERRUPT\_CONT\_INFO\_TIMEOUT}});}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00649}00649         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00650}00650 }
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00651}00651         \textcolor{keywordflow}{if} (mciIntRxMsg \& 0xfffffffe) \{}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00652}00652                 \mbox{\hyperlink{if__ath__debug_8h_a8f3cb9c69cf684badf6c665802ffd1a3}{DPRINTF}}(sc, ATH\_DEBUG\_BTCOEX,}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00653}00653                     \textcolor{stringliteral}{"{}(MCI) Not processed IntRxMsg = 0x\%x\(\backslash\)n"{}}, mciIntRxMsg);}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00654}00654         \}}
\DoxyCodeLine{\Hypertarget{if__ath__btcoex__mci_8c_source_l00655}00655 \}}

\end{DoxyCode}
