\hypertarget{ar5212__xmit_8c_source}{}\doxysection{ar5212\+\_\+xmit.\+c}
\label{ar5212__xmit_8c_source}\index{dev/ath/ath\_hal/ar5212/ar5212\_xmit.c@{dev/ath/ath\_hal/ar5212/ar5212\_xmit.c}}
\mbox{\hyperlink{ar5212__xmit_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: ISC}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2002-\/2009 Sam Leffler, Errno Consulting}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 2002-\/2008 Atheros Communications, Inc.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00006}00006 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00007}00007 \textcolor{comment}{ * Permission to use, copy, modify, and/or distribute this software for any}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00008}00008 \textcolor{comment}{ * purpose with or without fee is hereby granted, provided that the above}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00009}00009 \textcolor{comment}{ * copyright notice and this permission notice appear in all copies.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00010}00010 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00011}00011 \textcolor{comment}{ * THE SOFTWARE IS PROVIDED "{}AS IS"{} AND THE AUTHOR DISCLAIMS ALL WARRANTIES}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00012}00012 \textcolor{comment}{ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00013}00013 \textcolor{comment}{ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00014}00014 \textcolor{comment}{ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00015}00015 \textcolor{comment}{ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00016}00016 \textcolor{comment}{ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00017}00017 \textcolor{comment}{ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00018}00018 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00019}00019 \textcolor{comment}{ * \$FreeBSD\$}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00020}00020 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00021}00021 \textcolor{preprocessor}{\#include "{}opt\_ah.h"{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00022}00022 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00023}00023 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{ah_8h}{ah.h}}"{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00024}00024 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{ah__internal_8h}{ah\_internal.h}}"{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00025}00025 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{ah__desc_8h}{ah\_desc.h}}"{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00026}00026 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00027}00027 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{ar5212_8h}{ar5212/ar5212.h}}"{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00028}00028 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{ar5212reg_8h}{ar5212/ar5212reg.h}}"{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00029}00029 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{ar5212desc_8h}{ar5212/ar5212desc.h}}"{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00030}00030 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{ar5212phy_8h}{ar5212/ar5212phy.h}}"{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00031}00031 \textcolor{preprocessor}{\#ifdef AH\_SUPPORT\_5311}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00032}00032 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{ar5311reg_8h}{ar5212/ar5311reg.h}}"{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00033}00033 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00035}00035 \textcolor{preprocessor}{\#ifdef AH\_NEED\_DESC\_SWAP}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00036}00036 \textcolor{keyword}{static} \textcolor{keywordtype}{void} ar5212SwapTxDesc(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__desc}{ath\_desc}} *ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00037}00037 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00039}00039 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00040}00040 \textcolor{comment}{ * Update Tx FIFO trigger level.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00041}00041 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00042}00042 \textcolor{comment}{ * Set bIncTrigLevel to TRUE to increase the trigger level.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00043}00043 \textcolor{comment}{ * Set bIncTrigLevel to FALSE to decrease the trigger level.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00044}00044 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00045}00045 \textcolor{comment}{ * Returns TRUE if the trigger level was updated}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00046}00046 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00047}00047 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00048}\mbox{\hyperlink{ar5212_8h_a6f03959d6630d816583cc8d5eae93403}{00048}} \mbox{\hyperlink{ar5212__xmit_8c_aac5b1b7beadd74a8766cceae4fd0c9d0}{ar5212UpdateTxTrigLevel}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}} bIncTrigLevel)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00049}00049 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00050}00050         \textcolor{keyword}{struct }\mbox{\hyperlink{structath__hal__5212}{ath\_hal\_5212}} *ahp = \mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00051}00051         uint32\_t txcfg, curLevel, newLevel;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00052}00052         \mbox{\hyperlink{ah_8h_ad57fc46d3ae4be3419a41bc4816a8512}{HAL\_INT}} omask;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00053}00053 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00054}00054         \textcolor{keywordflow}{if} (ahp-\/>\mbox{\hyperlink{structath__hal__5212_a7c103a18662b61f52f13a39515b13f83}{ah\_txTrigLev}} >= ahp-\/>\mbox{\hyperlink{structath__hal__5212_a9c716b523f095998e0e3937c22825f8b}{ah\_maxTxTrigLev}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00055}00055                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00056}00056 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00057}00057         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00058}00058 \textcolor{comment}{         * Disable interrupts while futzing with the fifo level.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00059}00059 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00060}00060         omask = \mbox{\hyperlink{ah__internal_8h_ad9a2fdf361bbebf49da4070eaedd133b}{ath\_hal\_setInterrupts}}(ah, ahp-\/>\mbox{\hyperlink{structath__hal__5212_a503ffe881a583f89c2af304e0ae05660}{ah\_maskReg}} \&\string~ \mbox{\hyperlink{ah_8h_a24e1e02cf3d1c2147caab33049235e6c}{HAL\_INT\_GLOBAL}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00061}00061 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00062}00062         txcfg = \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5210reg_8h_ac6b11e961be40d8cf603230ea6287a17}{AR\_TXCFG}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00063}00063         curLevel = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(txcfg, \mbox{\hyperlink{ar5212reg_8h_ac219f01a0768341360f5a4ccc59f8173}{AR\_FTRIG}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00064}00064         newLevel = curLevel;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00065}00065         \textcolor{keywordflow}{if} (bIncTrigLevel) \{            \textcolor{comment}{/* increase the trigger level */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00066}00066                 \textcolor{keywordflow}{if} (curLevel < ahp-\/>\mbox{\hyperlink{structath__hal__5212_a9c716b523f095998e0e3937c22825f8b}{ah\_maxTxTrigLev}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00067}00067                         newLevel++;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00068}00068         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (curLevel > \mbox{\hyperlink{ar5210_8h_a147526f98032b5c0f8df174b1ab289ac}{MIN\_TX\_FIFO\_THRESHOLD}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00069}00069                 newLevel-\/-\/;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00070}00070         \textcolor{keywordflow}{if} (newLevel != curLevel)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00071}00071                 \textcolor{comment}{/* Update the trigger level */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00072}00072                 \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5210reg_8h_ac6b11e961be40d8cf603230ea6287a17}{AR\_TXCFG}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00073}00073                         (txcfg \&\string~ \mbox{\hyperlink{ar5212reg_8h_ac219f01a0768341360f5a4ccc59f8173}{AR\_FTRIG}}) | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(newLevel, \mbox{\hyperlink{ar5212reg_8h_ac219f01a0768341360f5a4ccc59f8173}{AR\_FTRIG}}));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00074}00074 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00075}00075         ahp-\/>\mbox{\hyperlink{structath__hal__5212_a7c103a18662b61f52f13a39515b13f83}{ah\_txTrigLev}} = newLevel;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00076}00076 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00077}00077         \textcolor{comment}{/* re-\/enable chip interrupts */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00078}00078         \mbox{\hyperlink{ah__internal_8h_ad9a2fdf361bbebf49da4070eaedd133b}{ath\_hal\_setInterrupts}}(ah, omask);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00079}00079 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00080}00080         \textcolor{keywordflow}{return} (newLevel != curLevel);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00081}00081 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00082}00082 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00083}00083 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00084}00084 \textcolor{comment}{ * Set the properties of the tx queue with the parameters}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00085}00085 \textcolor{comment}{ * from qInfo.  }}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00086}00086 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00087}00087 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00088}\mbox{\hyperlink{ar5212_8h_a4ff4a270183a0d80d0aeb7c4129295bc}{00088}} \mbox{\hyperlink{ar5212__xmit_8c_a4ff4a270183a0d80d0aeb7c4129295bc}{ar5212SetTxQueueProps}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keywordtype}{int} q, \textcolor{keyword}{const} \mbox{\hyperlink{structHAL__TXQ__INFO}{HAL\_TXQ\_INFO}} *qInfo)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00089}00089 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00090}00090         \textcolor{keyword}{struct }\mbox{\hyperlink{structath__hal__5212}{ath\_hal\_5212}} *ahp = \mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00091}00091         \mbox{\hyperlink{structHAL__CAPABILITIES}{HAL\_CAPABILITIES}} *pCap = \&\mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00092}00092 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00093}00093         \textcolor{keywordflow}{if} (q >= pCap-\/>\mbox{\hyperlink{structHAL__CAPABILITIES_a81f99745f71eeeda2b6357bb470c5273}{halTotalQueues}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00094}00094                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}}, \textcolor{stringliteral}{"{}\%s: invalid queue num \%u\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00095}00095                     \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00096}00096                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00097}00097         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00098}00098         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8c_aa6d87b5c86cc6b7d410d5a63169640f3}{ath\_hal\_setTxQProps}}(ah, \&ahp-\/>\mbox{\hyperlink{structath__hal__5212_a92dcf055eade17309faa8091c8454947}{ah\_txq}}[q], qInfo);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00099}00099 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00100}00100 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00101}00101 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00102}00102 \textcolor{comment}{ * Return the properties for the specified tx queue.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00103}00103 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00104}00104 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00105}\mbox{\hyperlink{ar5212_8h_a0123327cf0410301e611bb35cc56b356}{00105}} \mbox{\hyperlink{ar5212__xmit_8c_a0123327cf0410301e611bb35cc56b356}{ar5212GetTxQueueProps}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keywordtype}{int} q, \mbox{\hyperlink{structHAL__TXQ__INFO}{HAL\_TXQ\_INFO}} *qInfo)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00106}00106 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00107}00107         \textcolor{keyword}{struct }\mbox{\hyperlink{structath__hal__5212}{ath\_hal\_5212}} *ahp = \mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00108}00108         \mbox{\hyperlink{structHAL__CAPABILITIES}{HAL\_CAPABILITIES}} *pCap = \&\mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00109}00109 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00110}00110         \textcolor{keywordflow}{if} (q >= pCap-\/>\mbox{\hyperlink{structHAL__CAPABILITIES_a81f99745f71eeeda2b6357bb470c5273}{halTotalQueues}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00111}00111                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}}, \textcolor{stringliteral}{"{}\%s: invalid queue num \%u\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00112}00112                     \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00113}00113                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00114}00114         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00115}00115         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8c_a0c41c0203f1a1125a44767fe010b177c}{ath\_hal\_getTxQProps}}(ah, qInfo, \&ahp-\/>\mbox{\hyperlink{structath__hal__5212_a92dcf055eade17309faa8091c8454947}{ah\_txq}}[q]);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00116}00116 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00117}00117 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00118}00118 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00119}00119 \textcolor{comment}{ * Allocate and initialize a tx DCU/QCU combination.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00120}00120 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00121}00121 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00122}\mbox{\hyperlink{ar5212_8h_a35099cce3db67d8c1632ee3a36f47b45}{00122}} \mbox{\hyperlink{ar5212__xmit_8c_a35099cce3db67d8c1632ee3a36f47b45}{ar5212SetupTxQueue}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900}{HAL\_TX\_QUEUE}} type,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00123}00123         \textcolor{keyword}{const} \mbox{\hyperlink{structHAL__TXQ__INFO}{HAL\_TXQ\_INFO}} *qInfo)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00124}00124 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00125}00125         \textcolor{keyword}{struct }\mbox{\hyperlink{structath__hal__5212}{ath\_hal\_5212}} *ahp = \mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00126}00126         \mbox{\hyperlink{structHAL__TX__QUEUE__INFO}{HAL\_TX\_QUEUE\_INFO}} *qi;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00127}00127         \mbox{\hyperlink{structHAL__CAPABILITIES}{HAL\_CAPABILITIES}} *pCap = \&\mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00128}00128         \textcolor{keywordtype}{int} q, defqflags;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00129}00129 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00130}00130         \textcolor{comment}{/* by default enable OK+ERR+DESC+URN interrupts */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00131}00131         defqflags = \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7aed6edcd4f97cf13481ee6a05f033f502}{HAL\_TXQ\_TXOKINT\_ENABLE}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00132}00132                   | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a56dd1084e1ff54a4d765df3be8ea693a}{HAL\_TXQ\_TXERRINT\_ENABLE}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00133}00133                   | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a0f98d4c363a39fd5408bc16986279a6d}{HAL\_TXQ\_TXDESCINT\_ENABLE}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00134}00134                   | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a6ea92ba76c62effcbe9cfd9ecf75f9c1}{HAL\_TXQ\_TXURNINT\_ENABLE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00135}00135         \textcolor{comment}{/* XXX move queue assignment to driver */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00136}00136         \textcolor{keywordflow}{switch} (type) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00137}00137         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900acbaf0bf9a46b40dc2f7d12700b7e4a88}{HAL\_TX\_QUEUE\_BEACON}}:}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00138}00138                 q = pCap-\/>\mbox{\hyperlink{structHAL__CAPABILITIES_a81f99745f71eeeda2b6357bb470c5273}{halTotalQueues}}-\/1;       \textcolor{comment}{/* highest priority */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00139}00139                 defqflags |= \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a42a6a67a276a3abd77ddd9880cb00448}{HAL\_TXQ\_DBA\_GATED}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00140}00140                        | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a70f00d76149ee90c9b00c8cec9d28f5d}{HAL\_TXQ\_CBR\_DIS\_QEMPTY}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00141}00141                        | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a3e738399d9422cac9f1f214ddec00c08}{HAL\_TXQ\_ARB\_LOCKOUT\_GLOBAL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00142}00142                        | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7adedafa6f849d37aa2168023ba359a578}{HAL\_TXQ\_BACKOFF\_DISABLE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00143}00143                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00144}00144         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900af2545c046cc39ea1ea001a444e7aff30}{HAL\_TX\_QUEUE\_CAB}}:}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00145}00145                 q = pCap-\/>\mbox{\hyperlink{structHAL__CAPABILITIES_a81f99745f71eeeda2b6357bb470c5273}{halTotalQueues}}-\/2;       \textcolor{comment}{/* next highest priority */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00146}00146                 defqflags |= \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a42a6a67a276a3abd77ddd9880cb00448}{HAL\_TXQ\_DBA\_GATED}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00147}00147                        | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a70f00d76149ee90c9b00c8cec9d28f5d}{HAL\_TXQ\_CBR\_DIS\_QEMPTY}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00148}00148                        | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a7d6e6d89a558490202f15a237b65b5f4}{HAL\_TXQ\_CBR\_DIS\_BEMPTY}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00149}00149                        | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a3e738399d9422cac9f1f214ddec00c08}{HAL\_TXQ\_ARB\_LOCKOUT\_GLOBAL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00150}00150                        | \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7adedafa6f849d37aa2168023ba359a578}{HAL\_TXQ\_BACKOFF\_DISABLE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00151}00151                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00152}00152         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a5b39d598ca6b19ae6e94231250e1702c}{HAL\_TX\_QUEUE\_UAPSD}}:}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00153}00153                 q = pCap-\/>\mbox{\hyperlink{structHAL__CAPABILITIES_a81f99745f71eeeda2b6357bb470c5273}{halTotalQueues}}-\/3;       \textcolor{comment}{/* nextest highest priority */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00154}00154                 \textcolor{keywordflow}{if} (ahp-\/>\mbox{\hyperlink{structath__hal__5212_a92dcf055eade17309faa8091c8454947}{ah\_txq}}[q].\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}} != \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00155}00155                         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00156}00156                             \textcolor{stringliteral}{"{}\%s: no available UAPSD tx queue\(\backslash\)n"{}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00157}00157                         \textcolor{keywordflow}{return} -\/1;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00158}00158                 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00159}00159                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00160}00160         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2e04a4635414f6fded7051d71ffa8679}{HAL\_TX\_QUEUE\_DATA}}:}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00161}00161                 \textcolor{keywordflow}{for} (q = 0; q < pCap-\/>\mbox{\hyperlink{structHAL__CAPABILITIES_a81f99745f71eeeda2b6357bb470c5273}{halTotalQueues}}; q++)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00162}00162                         \textcolor{keywordflow}{if} (ahp-\/>\mbox{\hyperlink{structath__hal__5212_a92dcf055eade17309faa8091c8454947}{ah\_txq}}[q].\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}} == \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00163}00163                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00164}00164                 \textcolor{keywordflow}{if} (q == pCap-\/>\mbox{\hyperlink{structHAL__CAPABILITIES_a81f99745f71eeeda2b6357bb470c5273}{halTotalQueues}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00165}00165                         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00166}00166                             \textcolor{stringliteral}{"{}\%s: no available tx queue\(\backslash\)n"{}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00167}00167                         \textcolor{keywordflow}{return} -\/1;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00168}00168                 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00169}00169                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00170}00170         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00171}00171                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00172}00172                     \textcolor{stringliteral}{"{}\%s: bad tx queue type \%u\(\backslash\)n"{}}, \_\_func\_\_, type);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00173}00173                 \textcolor{keywordflow}{return} -\/1;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00174}00174         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00175}00175 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00176}00176         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}}, \textcolor{stringliteral}{"{}\%s: queue \%u\(\backslash\)n"{}}, \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00177}00177 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00178}00178         qi = \&ahp-\/>\mbox{\hyperlink{structath__hal__5212_a92dcf055eade17309faa8091c8454947}{ah\_txq}}[q];}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00179}00179         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}} != \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00180}00180                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}}, \textcolor{stringliteral}{"{}\%s: tx queue \%u already active\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00181}00181                     \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00182}00182                 \textcolor{keywordflow}{return} -\/1;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00183}00183         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00184}00184         \mbox{\hyperlink{ah__osdep_8h_a7fe5b3aa939ce794d6247468c5389e1a}{OS\_MEMZERO}}(qi, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{structHAL__TX__QUEUE__INFO}{HAL\_TX\_QUEUE\_INFO}}));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00185}00185         qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}} = type;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00186}00186         \textcolor{keywordflow}{if} (qInfo == \mbox{\hyperlink{ah__internal_8h_ab933afbd431099f80d5e58c5a6271b4a}{AH\_NULL}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00187}00187                 qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} = defqflags;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00188}00188                 qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a2c99d4bb6174893cfb38a5f7a4a547d3}{tqi\_aifs}} = \mbox{\hyperlink{ah__internal_8h_a6e255a7eb74f3f1274959ac61aef8576}{INIT\_AIFS}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00189}00189                 qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_ad69f73e59c741d56bdc0f56a5a2910b7}{tqi\_cwmin}} = \mbox{\hyperlink{ah_8h_ac06b61600cf8188de4a00416c404d9d5}{HAL\_TXQ\_USEDEFAULT}};  \textcolor{comment}{/* NB: do at reset */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00190}00190                 qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_ae6612145dd3a6761b142b631bbc36f61}{tqi\_cwmax}} = \mbox{\hyperlink{ah__internal_8h_ad02bb8e1b1dff8ca39889d271fc43f90}{INIT\_CWMAX}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00191}00191                 qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a44ddebc1b8731ad48c12f319a0e0a337}{tqi\_shretry}} = \mbox{\hyperlink{ah__internal_8h_a6df738510e37cb69a0eecb79afc21a4d}{INIT\_SH\_RETRY}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00192}00192                 qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a1ce9f4eb8cf631e2ce7b7bd5373f5634}{tqi\_lgretry}} = \mbox{\hyperlink{ah__internal_8h_a7d754c99625709132a61a0743c5c3db8}{INIT\_LG\_RETRY}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00193}00193                 qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a168f488415d4ce289bc8e7a8835ee18f}{tqi\_physCompBuf}} = 0;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00194}00194         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00195}00195                 qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a168f488415d4ce289bc8e7a8835ee18f}{tqi\_physCompBuf}} = qInfo-\/>\mbox{\hyperlink{structHAL__TXQ__INFO_a0624fce9c41183e891d53b69156b578b}{tqi\_compBuf}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00196}00196                 (void) \mbox{\hyperlink{ar5212__xmit_8c_a4ff4a270183a0d80d0aeb7c4129295bc}{ar5212SetTxQueueProps}}(ah, q, qInfo);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00197}00197         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00198}00198         \textcolor{comment}{/* NB: must be followed by ar5212ResetTxQueue */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00199}00199         \textcolor{keywordflow}{return} q;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00200}00200 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00201}00201 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00202}00202 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00203}00203 \textcolor{comment}{ * Update the h/w interrupt registers to reflect a tx q's configuration.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00204}00204 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00205}00205 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00206}\mbox{\hyperlink{ar5212__xmit_8c_a57a92c61c6dc2ad1f57554af0775ddd5}{00206}} \mbox{\hyperlink{ar5212__xmit_8c_a57a92c61c6dc2ad1f57554af0775ddd5}{setTxQInterrupts}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \mbox{\hyperlink{structHAL__TX__QUEUE__INFO}{HAL\_TX\_QUEUE\_INFO}} *qi)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00207}00207 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00208}00208         \textcolor{keyword}{struct }\mbox{\hyperlink{structath__hal__5212}{ath\_hal\_5212}} *ahp = \mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00209}00209 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00210}00210         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00211}00211             \textcolor{stringliteral}{"{}\%s: tx ok 0x\%x err 0x\%x desc 0x\%x eol 0x\%x urn 0x\%x\(\backslash\)n"{}}, \_\_func\_\_,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00212}00212             ahp-\/>\mbox{\hyperlink{structath__hal__5212_a6bbe701b1dddac9ee564d8ac71548f31}{ah\_txOkInterruptMask}}, ahp-\/>\mbox{\hyperlink{structath__hal__5212_a7ae3ded77fb2b56d9cc9999418b117ef}{ah\_txErrInterruptMask}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00213}00213             ahp-\/>\mbox{\hyperlink{structath__hal__5212_a33ad8f744b558386c0223355f4ea7b32}{ah\_txDescInterruptMask}}, ahp-\/>\mbox{\hyperlink{structath__hal__5212_a17406bd5b2fa7fc9d4dfc054f80ed277}{ah\_txEolInterruptMask}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00214}00214             ahp-\/>\mbox{\hyperlink{structath__hal__5212_a16329ec35378cf257908f76244300c0d}{ah\_txUrnInterruptMask}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00215}00215 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00216}00216         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_aa0ff3ff61981edbcc5ba4d10ced07d14}{AR\_IMR\_S0}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00217}00217                   \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(ahp-\/>\mbox{\hyperlink{structath__hal__5212_a6bbe701b1dddac9ee564d8ac71548f31}{ah\_txOkInterruptMask}}, \mbox{\hyperlink{ar5211reg_8h_a8c6ba55f228d19324cc02f3bfcd01316}{AR\_IMR\_S0\_QCU\_TXOK}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00218}00218                 | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(ahp-\/>\mbox{\hyperlink{structath__hal__5212_a33ad8f744b558386c0223355f4ea7b32}{ah\_txDescInterruptMask}}, \mbox{\hyperlink{ar5211reg_8h_a714669f6c9733242a4b56fd898ed33c3}{AR\_IMR\_S0\_QCU\_TXDESC}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00219}00219         );}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00220}00220         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_a668e3c98fad9993bc268bbbafceeada7}{AR\_IMR\_S1}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00221}00221                   \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(ahp-\/>\mbox{\hyperlink{structath__hal__5212_a7ae3ded77fb2b56d9cc9999418b117ef}{ah\_txErrInterruptMask}}, \mbox{\hyperlink{ar5211reg_8h_ac90f160f29a02f66ef2e6af3b46130e6}{AR\_IMR\_S1\_QCU\_TXERR}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00222}00222                 | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(ahp-\/>\mbox{\hyperlink{structath__hal__5212_a17406bd5b2fa7fc9d4dfc054f80ed277}{ah\_txEolInterruptMask}}, \mbox{\hyperlink{ar5211reg_8h_a3b24a1c3be83ac1d79ce6cf292c0f142}{AR\_IMR\_S1\_QCU\_TXEOL}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00223}00223         );}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00224}00224         \mbox{\hyperlink{ah__internal_8h_ab80ff599cda88f9223505d0ecbb53bcd}{OS\_REG\_RMW\_FIELD}}(ah, \mbox{\hyperlink{ar5211reg_8h_a5432445835791619b0311984d0e342f9}{AR\_IMR\_S2}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00225}00225                 \mbox{\hyperlink{ar5211reg_8h_aed59cc85c7dd40aaaa2c7bc9f997e060}{AR\_IMR\_S2\_QCU\_TXURN}}, ahp-\/>\mbox{\hyperlink{structath__hal__5212_a16329ec35378cf257908f76244300c0d}{ah\_txUrnInterruptMask}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00226}00226 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00227}00227 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00228}00228 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00229}00229 \textcolor{comment}{ * Free a tx DCU/QCU combination.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00230}00230 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00231}00231 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00232}\mbox{\hyperlink{ar5212_8h_a4d739953d7f7e4c66e42c2c0ac335e41}{00232}} \mbox{\hyperlink{ar5212__xmit_8c_a4d739953d7f7e4c66e42c2c0ac335e41}{ar5212ReleaseTxQueue}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, u\_int q)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00233}00233 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00234}00234         \textcolor{keyword}{struct }\mbox{\hyperlink{structath__hal__5212}{ath\_hal\_5212}} *ahp = \mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00235}00235         \mbox{\hyperlink{structHAL__CAPABILITIES}{HAL\_CAPABILITIES}} *pCap = \&\mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00236}00236         \mbox{\hyperlink{structHAL__TX__QUEUE__INFO}{HAL\_TX\_QUEUE\_INFO}} *qi;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00237}00237 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00238}00238         \textcolor{keywordflow}{if} (q >= pCap-\/>\mbox{\hyperlink{structHAL__CAPABILITIES_a81f99745f71eeeda2b6357bb470c5273}{halTotalQueues}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00239}00239                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}}, \textcolor{stringliteral}{"{}\%s: invalid queue num \%u\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00240}00240                     \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00241}00241                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00242}00242         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00243}00243         qi = \&ahp-\/>\mbox{\hyperlink{structath__hal__5212_a92dcf055eade17309faa8091c8454947}{ah\_txq}}[q];}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00244}00244         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}} == \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00245}00245                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}}, \textcolor{stringliteral}{"{}\%s: inactive queue \%u\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00246}00246                     \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00247}00247                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00248}00248         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00249}00249 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00250}00250         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}}, \textcolor{stringliteral}{"{}\%s: release queue \%u\(\backslash\)n"{}}, \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00251}00251 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00252}00252         qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}} = \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00253}00253         ahp-\/>\mbox{\hyperlink{structath__hal__5212_a6bbe701b1dddac9ee564d8ac71548f31}{ah\_txOkInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00254}00254         ahp-\/>\mbox{\hyperlink{structath__hal__5212_a7ae3ded77fb2b56d9cc9999418b117ef}{ah\_txErrInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00255}00255         ahp-\/>\mbox{\hyperlink{structath__hal__5212_a33ad8f744b558386c0223355f4ea7b32}{ah\_txDescInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00256}00256         ahp-\/>\mbox{\hyperlink{structath__hal__5212_a17406bd5b2fa7fc9d4dfc054f80ed277}{ah\_txEolInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00257}00257         ahp-\/>\mbox{\hyperlink{structath__hal__5212_a16329ec35378cf257908f76244300c0d}{ah\_txUrnInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00258}00258         \mbox{\hyperlink{ar5212__xmit_8c_a57a92c61c6dc2ad1f57554af0775ddd5}{setTxQInterrupts}}(ah, qi);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00259}00259 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00260}00260         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00261}00261 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00262}00262 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00263}00263 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00264}00264 \textcolor{comment}{ * Set the retry, aifs, cwmin/max, readyTime regs for specified queue}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00265}00265 \textcolor{comment}{ * Assumes:}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00266}00266 \textcolor{comment}{ *  phwChannel has been set to point to the current channel}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00267}00267 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00268}\mbox{\hyperlink{ar5212__xmit_8c_af5249432578df0d4066639ebf485055f}{00268}} \textcolor{preprocessor}{\#define TU\_TO\_USEC(\_tu)         ((\_tu) << 10)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00269}00269 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00270}\mbox{\hyperlink{ar5212_8h_a9296e33a3607aea093985a37716d74e9}{00270}} \mbox{\hyperlink{ar5212__xmit_8c_a9296e33a3607aea093985a37716d74e9}{ar5212ResetTxQueue}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, u\_int q)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00271}00271 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00272}00272         \textcolor{keyword}{struct }\mbox{\hyperlink{structath__hal__5212}{ath\_hal\_5212}} *ahp = \mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00273}00273         \mbox{\hyperlink{structHAL__CAPABILITIES}{HAL\_CAPABILITIES}} *pCap = \&\mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00274}00274         \textcolor{keyword}{const} \textcolor{keyword}{struct }ieee80211\_channel *chan = \mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_curchan;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00275}00275         \mbox{\hyperlink{structHAL__TX__QUEUE__INFO}{HAL\_TX\_QUEUE\_INFO}} *qi;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00276}00276         uint32\_t cwMin, chanCwMin, qmisc, dmisc;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00277}00277 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00278}00278         \textcolor{keywordflow}{if} (q >= pCap-\/>\mbox{\hyperlink{structHAL__CAPABILITIES_a81f99745f71eeeda2b6357bb470c5273}{halTotalQueues}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00279}00279                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}}, \textcolor{stringliteral}{"{}\%s: invalid queue num \%u\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00280}00280                     \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00281}00281                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00282}00282         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00283}00283         qi = \&ahp-\/>\mbox{\hyperlink{structath__hal__5212_a92dcf055eade17309faa8091c8454947}{ah\_txq}}[q];}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00284}00284         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}} == \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00285}00285                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}}, \textcolor{stringliteral}{"{}\%s: inactive queue \%u\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00286}00286                     \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00287}00287                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}};          \textcolor{comment}{/* XXX??? */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00288}00288         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00289}00289 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00290}00290         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}}, \textcolor{stringliteral}{"{}\%s: reset queue \%u\(\backslash\)n"{}}, \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00291}00291 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00292}00292         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_ad69f73e59c741d56bdc0f56a5a2910b7}{tqi\_cwmin}} == \mbox{\hyperlink{ah_8h_ac06b61600cf8188de4a00416c404d9d5}{HAL\_TXQ\_USEDEFAULT}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00293}00293                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00294}00294 \textcolor{comment}{                 * Select cwmin according to channel type.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00295}00295 \textcolor{comment}{                 * NB: chan can be NULL during attach}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00296}00296 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00297}00297                 \textcolor{keywordflow}{if} (chan \&\& IEEE80211\_IS\_CHAN\_B(chan))}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00298}00298                         chanCwMin = \mbox{\hyperlink{ah__internal_8h_a461e6129f9cc948c8f2e7eb6ae8cdb50}{INIT\_CWMIN\_11B}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00299}00299                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00300}00300                         chanCwMin = \mbox{\hyperlink{ah__internal_8h_ab2309a2529714e931e3cbe4b6328c6d8}{INIT\_CWMIN}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00301}00301                 \textcolor{comment}{/* make sure that the CWmin is of the form (2\string^n -\/ 1) */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00302}00302                 \textcolor{keywordflow}{for} (cwMin = 1; cwMin < chanCwMin; cwMin = (cwMin << 1) | 1)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00303}00303                         ;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00304}00304         \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00305}00305                 cwMin = qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_ad69f73e59c741d56bdc0f56a5a2910b7}{tqi\_cwmin}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00306}00306 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00307}00307         \textcolor{comment}{/* set cwMin/Max and AIFS values */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00308}00308         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_a5867729edd1fe2ff85efbda74437b5a8}{AR\_DLCL\_IFS}}(q),}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00309}00309                   \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(cwMin, \mbox{\hyperlink{ar5211reg_8h_a0e2d3f0ad90fa0f5a006621e7e3e190a}{AR\_D\_LCL\_IFS\_CWMIN}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00310}00310                 | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_ae6612145dd3a6761b142b631bbc36f61}{tqi\_cwmax}}, \mbox{\hyperlink{ar5211reg_8h_a8b51a12180c9f3ace2bd3d99de41339f}{AR\_D\_LCL\_IFS\_CWMAX}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00311}00311                 | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a2c99d4bb6174893cfb38a5f7a4a547d3}{tqi\_aifs}}, \mbox{\hyperlink{ar5211reg_8h_ab13ef6af7ba51687d95f4faf43f1a19f}{AR\_D\_LCL\_IFS\_AIFS}}));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00312}00312 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00313}00313         \textcolor{comment}{/* Set retry limit values */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00314}00314         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_aaf1a998dcf46c32bbbd40ec97f76b0f3}{AR\_DRETRY\_LIMIT}}(q), }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00315}00315                    \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(\mbox{\hyperlink{ah__internal_8h_aaf870d4ec9c75a49e84c69afb7bb399f}{INIT\_SSH\_RETRY}}, \mbox{\hyperlink{ar5211reg_8h_ab9a70736ae07b2272b9e2662197bd605}{AR\_D\_RETRY\_LIMIT\_STA\_SH}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00316}00316                  | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(\mbox{\hyperlink{ah__internal_8h_ad0b8ca000c2c9cae782b6de288111949}{INIT\_SLG\_RETRY}}, \mbox{\hyperlink{ar5211reg_8h_abef7ecafbeda11aef186c6cf21869564}{AR\_D\_RETRY\_LIMIT\_STA\_LG}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00317}00317                  | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a1ce9f4eb8cf631e2ce7b7bd5373f5634}{tqi\_lgretry}}, \mbox{\hyperlink{ar5211reg_8h_a488f7e675fdde0962ba3c258816acb54}{AR\_D\_RETRY\_LIMIT\_FR\_LG}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00318}00318                  | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a44ddebc1b8731ad48c12f319a0e0a337}{tqi\_shretry}}, \mbox{\hyperlink{ar5211reg_8h_ab02db3a8cb07059ae439bef97addb8c2}{AR\_D\_RETRY\_LIMIT\_FR\_SH}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00319}00319         );}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00320}00320 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00321}00321         \textcolor{comment}{/* NB: always enable early termination on the QCU */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00322}00322         qmisc = \mbox{\hyperlink{ar5211reg_8h_ac240b40c2104d6a159be28349126933b}{AR\_Q\_MISC\_DCU\_EARLY\_TERM\_REQ}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00323}00323               | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(\mbox{\hyperlink{ar5211reg_8h_ab08cce51c710a124fc78c0bef6cec65a}{AR\_Q\_MISC\_FSP\_ASAP}}, \mbox{\hyperlink{ar5212reg_8h_a87885e7453ba04173af4b752971d7b60}{AR\_Q\_MISC\_FSP}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00324}00324 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00325}00325         \textcolor{comment}{/* NB: always enable DCU to wait for next fragment from QCU */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00326}00326         dmisc = \mbox{\hyperlink{ar5212reg_8h_a710746622359dc0d3b2a71342e6d5ebb}{AR\_D\_MISC\_FRAG\_WAIT\_EN}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00327}00327 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00328}00328 \textcolor{preprocessor}{\#ifdef AH\_SUPPORT\_5311}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00329}00329         \textcolor{keywordflow}{if} (\mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_macVersion < \mbox{\hyperlink{ar5211reg_8h_aa68f39a7b4367b67addf2e0bf33c2727}{AR\_SREV\_VERSION\_OAHU}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00330}00330                 \textcolor{comment}{/* Configure DCU to use the global sequence count */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00331}00331                 dmisc |= \mbox{\hyperlink{ar5211reg_8h_ac2d70da89be51aa423b10070bbc8f2f7}{AR5311\_D\_MISC\_SEQ\_NUM\_CONTROL}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00332}00332         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00333}00333 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00334}00334         \textcolor{comment}{/* multiqueue support */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00335}00335         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_ae1e1f7478040c96ba652e6422c75c00d}{tqi\_cbrPeriod}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00336}00336                 \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_a40d3358ed2a4a17ea863e7fcb1822bed}{AR\_QCBRCFG}}(q), }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00337}00337                           \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_ae1e1f7478040c96ba652e6422c75c00d}{tqi\_cbrPeriod}},\mbox{\hyperlink{ar5211reg_8h_a121dcadf1682028097f6761da08c9489}{AR\_Q\_CBRCFG\_CBR\_INTERVAL}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00338}00338                         | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a9f5102efd50bc5f4aba8064f3467f0f8}{tqi\_cbrOverflowLimit}}, \mbox{\hyperlink{ar5211reg_8h_a4d48803443e465336b5edae048b06f8f}{AR\_Q\_CBRCFG\_CBR\_OVF\_THRESH}}));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00339}00339                 qmisc = (qmisc \&\string~ AR\_Q\_MISC\_FSP) | \mbox{\hyperlink{ar5211reg_8h_a2d7b8f2713e6ba35faec113bba50f3e2}{AR\_Q\_MISC\_FSP\_CBR}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00340}00340                 \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a9f5102efd50bc5f4aba8064f3467f0f8}{tqi\_cbrOverflowLimit}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00341}00341                         qmisc |= \mbox{\hyperlink{ar5211reg_8h_a1f5d5f10a8e382249848e12ff412313f}{AR\_Q\_MISC\_CBR\_EXP\_CNTR\_LIMIT}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00342}00342         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00343}00343         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a14aa3d77592637874d6fa577157ad2c4}{tqi\_readyTime}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00344}00344                 \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_a458eb0261443376ded57a9177fdefc23}{AR\_QRDYTIMECFG}}(q),}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00345}00345                           \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a14aa3d77592637874d6fa577157ad2c4}{tqi\_readyTime}}, \mbox{\hyperlink{ar5211reg_8h_a1927c72696533b0804617ab7f6839f27}{AR\_Q\_RDYTIMECFG\_INT}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00346}00346                         | \mbox{\hyperlink{ar5212reg_8h_a3cb07ba07903b158e1fab0fe5e691885}{AR\_Q\_RDYTIMECFG\_ENA}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00347}00347         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00348}00348 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00349}00349         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_a338781fa2a85adfb6ffc7555c12a5ebc}{AR\_DCHNTIME}}(q),}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00350}00350                   \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a480313e84f4f607f1b3923717a567b77}{tqi\_burstTime}}, \mbox{\hyperlink{ar5211reg_8h_a0a6c0edf21fae513e8c4c058fef22c68}{AR\_D\_CHNTIME\_DUR}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00351}00351                 | (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a480313e84f4f607f1b3923717a567b77}{tqi\_burstTime}} ? \mbox{\hyperlink{ar5211reg_8h_a95b132e832f85ef14f5ac22a6eaf3360}{AR\_D\_CHNTIME\_EN}} : 0));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00352}00352 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00353}00353         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a14aa3d77592637874d6fa577157ad2c4}{tqi\_readyTime}} \&\&}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00354}00354             (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a58ff16975f55a395bd078ddcb8bacf7e}{HAL\_TXQ\_RDYTIME\_EXP\_POLICY\_ENABLE}}))}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00355}00355                 qmisc |= \mbox{\hyperlink{ar5211reg_8h_a98043ff5894cb1e3f89f156269b5801c}{AR\_Q\_MISC\_RDYTIME\_EXP\_POLICY}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00356}00356         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a42a6a67a276a3abd77ddd9880cb00448}{HAL\_TXQ\_DBA\_GATED}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00357}00357                 qmisc = (qmisc \&\string~ AR\_Q\_MISC\_FSP) | \mbox{\hyperlink{ar5211reg_8h_a332493c74a2bb470e54e4193c709a561}{AR\_Q\_MISC\_FSP\_DBA\_GATED}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00358}00358         \textcolor{keywordflow}{if} (\mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(qmisc, \mbox{\hyperlink{ar5212reg_8h_a87885e7453ba04173af4b752971d7b60}{AR\_Q\_MISC\_FSP}}) != \mbox{\hyperlink{ar5211reg_8h_ab08cce51c710a124fc78c0bef6cec65a}{AR\_Q\_MISC\_FSP\_ASAP}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00359}00359                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00360}00360 \textcolor{comment}{                 * These are meangingful only when not scheduled asap.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00361}00361 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00362}00362                 \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a7d6e6d89a558490202f15a237b65b5f4}{HAL\_TXQ\_CBR\_DIS\_BEMPTY}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00363}00363                         qmisc |= \mbox{\hyperlink{ar5211reg_8h_abacd2038c20195b7b76d881fea40c2e3}{AR\_Q\_MISC\_CBR\_INCR\_DIS0}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00364}00364                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00365}00365                         qmisc \&= \string~AR\_Q\_MISC\_CBR\_INCR\_DIS0;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00366}00366                 \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a70f00d76149ee90c9b00c8cec9d28f5d}{HAL\_TXQ\_CBR\_DIS\_QEMPTY}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00367}00367                         qmisc |= \mbox{\hyperlink{ar5211reg_8h_a48f5302dfd8a17f1b10e0148fd7a36ef}{AR\_Q\_MISC\_CBR\_INCR\_DIS1}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00368}00368                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00369}00369                         qmisc \&= \string~AR\_Q\_MISC\_CBR\_INCR\_DIS1;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00370}00370         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00371}00371 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00372}00372         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7adedafa6f849d37aa2168023ba359a578}{HAL\_TXQ\_BACKOFF\_DISABLE}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00373}00373                 dmisc |= \mbox{\hyperlink{ar5211reg_8h_ac81cf2d107971a63a4afe953f2cf1df0}{AR\_D\_MISC\_POST\_FR\_BKOFF\_DIS}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00374}00374         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a6f1a65afc448bf3dc539782e2383f2ea}{HAL\_TXQ\_FRAG\_BURST\_BACKOFF\_ENABLE}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00375}00375                 dmisc |= \mbox{\hyperlink{ar5211reg_8h_a297a4f6491c630f3917344e836ac26c5}{AR\_D\_MISC\_FRAG\_BKOFF\_EN}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00376}00376         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a3e738399d9422cac9f1f214ddec00c08}{HAL\_TXQ\_ARB\_LOCKOUT\_GLOBAL}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00377}00377                 dmisc |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(\mbox{\hyperlink{ar5211reg_8h_a644c0c6eac32222c04f9b7c61b04d68c}{AR\_D\_MISC\_ARB\_LOCKOUT\_CNTRL\_GLOBAL}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00378}00378                             \mbox{\hyperlink{ar5211reg_8h_a0c2b6aff01c9368b50ffd1820b442a2c}{AR\_D\_MISC\_ARB\_LOCKOUT\_CNTRL}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00379}00379         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7ace89e2d641d998edd67fdfaa9c0af7fa}{HAL\_TXQ\_ARB\_LOCKOUT\_INTRA}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00380}00380                 dmisc |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(\mbox{\hyperlink{ar5211reg_8h_a12aae158c6acc1293999847e5319e21d}{AR\_D\_MISC\_ARB\_LOCKOUT\_CNTRL\_INTRA\_FR}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00381}00381                             \mbox{\hyperlink{ar5211reg_8h_a0c2b6aff01c9368b50ffd1820b442a2c}{AR\_D\_MISC\_ARB\_LOCKOUT\_CNTRL}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00382}00382         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a2c404eeff278b6ad6afbee20fdcac0d6}{HAL\_TXQ\_IGNORE\_VIRTCOL}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00383}00383                 dmisc |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(\mbox{\hyperlink{ar5211reg_8h_a4d2275b9a927a563956c8565116467ea}{AR\_D\_MISC\_VIR\_COL\_HANDLING\_IGNORE}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00384}00384                             \mbox{\hyperlink{ar5212reg_8h_a51176849de635a49f4a589c924724ca3}{AR\_D\_MISC\_VIR\_COL\_HANDLING}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00385}00385         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7ad3adcd2a858d237d060a01e7b220eb29}{HAL\_TXQ\_SEQNUM\_INC\_DIS}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00386}00386                 dmisc |= \mbox{\hyperlink{ar5211reg_8h_a2aef407d8f4deeb25ac9db89ffbe03fb}{AR\_D\_MISC\_SEQ\_NUM\_INCR\_DIS}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00387}00387 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00388}00388         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00389}00389 \textcolor{comment}{         * Fillin type-\/dependent bits.  Most of this can be}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00390}00390 \textcolor{comment}{         * removed by specifying the queue parameters in the}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00391}00391 \textcolor{comment}{         * driver; it's here for backwards compatibility.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00392}00392 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00393}00393         \textcolor{keywordflow}{switch} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00394}00394         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900acbaf0bf9a46b40dc2f7d12700b7e4a88}{HAL\_TX\_QUEUE\_BEACON}}:            \textcolor{comment}{/* beacon frames */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00395}00395                 qmisc |= \mbox{\hyperlink{ar5211reg_8h_a332493c74a2bb470e54e4193c709a561}{AR\_Q\_MISC\_FSP\_DBA\_GATED}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00396}00396                       |  \mbox{\hyperlink{ar5211reg_8h_ad3ebdac6c32de0b87c7abd21afe49d9d}{AR\_Q\_MISC\_BEACON\_USE}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00397}00397                       |  \mbox{\hyperlink{ar5211reg_8h_a48f5302dfd8a17f1b10e0148fd7a36ef}{AR\_Q\_MISC\_CBR\_INCR\_DIS1}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00398}00398 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00399}00399                 dmisc |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(\mbox{\hyperlink{ar5211reg_8h_a644c0c6eac32222c04f9b7c61b04d68c}{AR\_D\_MISC\_ARB\_LOCKOUT\_CNTRL\_GLOBAL}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00400}00400                             \mbox{\hyperlink{ar5211reg_8h_a0c2b6aff01c9368b50ffd1820b442a2c}{AR\_D\_MISC\_ARB\_LOCKOUT\_CNTRL}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00401}00401                       |  \mbox{\hyperlink{ar5211reg_8h_a383a41965ee93a8130d3299f47dce5ed}{AR\_D\_MISC\_BEACON\_USE}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00402}00402                       |  \mbox{\hyperlink{ar5211reg_8h_ac81cf2d107971a63a4afe953f2cf1df0}{AR\_D\_MISC\_POST\_FR\_BKOFF\_DIS}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00403}00403                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00404}00404         \textcolor{keywordflow}{case} \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900af2545c046cc39ea1ea001a444e7aff30}{HAL\_TX\_QUEUE\_CAB}}:                  \textcolor{comment}{/* CAB  frames */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00405}00405                 \textcolor{comment}{/* }}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00406}00406 \textcolor{comment}{                 * No longer Enable AR\_Q\_MISC\_RDYTIME\_EXP\_POLICY,}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00407}00407 \textcolor{comment}{                 * There is an issue with the CAB Queue}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00408}00408 \textcolor{comment}{                 * not properly refreshing the Tx descriptor if}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00409}00409 \textcolor{comment}{                 * the TXE clear setting is used.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00410}00410 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00411}00411                 qmisc |= \mbox{\hyperlink{ar5211reg_8h_a332493c74a2bb470e54e4193c709a561}{AR\_Q\_MISC\_FSP\_DBA\_GATED}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00412}00412                       |  \mbox{\hyperlink{ar5211reg_8h_a48f5302dfd8a17f1b10e0148fd7a36ef}{AR\_Q\_MISC\_CBR\_INCR\_DIS1}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00413}00413                       |  \mbox{\hyperlink{ar5211reg_8h_abacd2038c20195b7b76d881fea40c2e3}{AR\_Q\_MISC\_CBR\_INCR\_DIS0}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00414}00414 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00415}00415                 \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a14aa3d77592637874d6fa577157ad2c4}{tqi\_readyTime}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00416}00416                         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00417}00417                             \textcolor{stringliteral}{"{}\%s: using tqi\_readyTime\(\backslash\)n"{}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00418}00418                         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_a458eb0261443376ded57a9177fdefc23}{AR\_QRDYTIMECFG}}(q),}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00419}00419                             \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a14aa3d77592637874d6fa577157ad2c4}{tqi\_readyTime}}, \mbox{\hyperlink{ar5211reg_8h_a1927c72696533b0804617ab7f6839f27}{AR\_Q\_RDYTIMECFG\_INT}}) |}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00420}00420                             \mbox{\hyperlink{ar5212reg_8h_a3cb07ba07903b158e1fab0fe5e691885}{AR\_Q\_RDYTIMECFG\_ENA}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00421}00421                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00422}00422                         \textcolor{keywordtype}{int} value;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00423}00423                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00424}00424 \textcolor{comment}{                         * NB: don't set default ready time if driver}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00425}00425 \textcolor{comment}{                         * has explicitly specified something.  This is}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00426}00426 \textcolor{comment}{                         * here solely for backwards compatibility.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00427}00427 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00428}00428                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00429}00429 \textcolor{comment}{                         * XXX for now, hard-\/code a CAB interval of 70\%}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00430}00430 \textcolor{comment}{                         * XXX of the total beacon interval.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00431}00431 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00432}00432 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00433}00433                         value = (ahp-\/>\mbox{\hyperlink{structath__hal__5212_a99bda6ffa6edbba076f2db442d939cf8}{ah\_beaconInterval}} * 70 / 100)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00434}00434                                 -\/ (ah-\/>\mbox{\hyperlink{structath__hal_a7865226c677aa67240c2a04e7f64175a}{ah\_config}}.\mbox{\hyperlink{structHAL__OPS__CONFIG_a6e2e8cc16daa20d969e84eb1df13640c}{ah\_sw\_beacon\_response\_time}} -\/}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00435}00435                                 + ah-\/>\mbox{\hyperlink{structath__hal_a7865226c677aa67240c2a04e7f64175a}{ah\_config}}.\mbox{\hyperlink{structHAL__OPS__CONFIG_a600bd20864a34c11d6187354bd66505b}{ah\_dma\_beacon\_response\_time}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00436}00436                                 -\/ ah-\/>\mbox{\hyperlink{structath__hal_a7865226c677aa67240c2a04e7f64175a}{ah\_config}}.\mbox{\hyperlink{structHAL__OPS__CONFIG_a508176fb3fdfb27de65027500eaf8bc1}{ah\_additional\_swba\_backoff}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00437}00437                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00438}00438 \textcolor{comment}{                         * XXX Ensure it isn't too low -\/ nothing lower}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00439}00439 \textcolor{comment}{                         * XXX than 10 TU}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00440}00440 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00441}00441                         \textcolor{keywordflow}{if} (value < 10)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00442}00442                                 value = 10;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00443}00443                         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00444}00444                             \textcolor{stringliteral}{"{}\%s: defaulting to rdytime = \%d uS\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00445}00445                             \_\_func\_\_, value);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00446}00446                         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_a458eb0261443376ded57a9177fdefc23}{AR\_QRDYTIMECFG}}(q),}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00447}00447                             \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(\mbox{\hyperlink{ar5212__xmit_8c_af5249432578df0d4066639ebf485055f}{TU\_TO\_USEC}}(value), \mbox{\hyperlink{ar5211reg_8h_a1927c72696533b0804617ab7f6839f27}{AR\_Q\_RDYTIMECFG\_INT}}) |}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00448}00448                             \mbox{\hyperlink{ar5212reg_8h_a3cb07ba07903b158e1fab0fe5e691885}{AR\_Q\_RDYTIMECFG\_ENA}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00449}00449                 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00450}00450                 dmisc |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(\mbox{\hyperlink{ar5211reg_8h_a644c0c6eac32222c04f9b7c61b04d68c}{AR\_D\_MISC\_ARB\_LOCKOUT\_CNTRL\_GLOBAL}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00451}00451                             \mbox{\hyperlink{ar5211reg_8h_a0c2b6aff01c9368b50ffd1820b442a2c}{AR\_D\_MISC\_ARB\_LOCKOUT\_CNTRL}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00452}00452                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00453}00453         \textcolor{keywordflow}{default}:                        \textcolor{comment}{/* NB: silence compiler */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00454}00454                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00455}00455         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00456}00456 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00457}00457         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_ae9f53cce5c61c4ccfe05096a8085bf1d}{AR\_QMISC}}(q), qmisc);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00458}00458         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_a80dbdc4ddf7e649f71b2b6c616d4f842}{AR\_DMISC}}(q), dmisc);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00459}00459 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00460}00460         \textcolor{comment}{/* Setup compression scratchpad buffer */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00461}00461         \textcolor{comment}{/* }}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00462}00462 \textcolor{comment}{         * XXX: calling this asynchronously to queue operation can}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00463}00463 \textcolor{comment}{         *      cause unexpected behavior!!!}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00464}00464 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00465}00465         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a168f488415d4ce289bc8e7a8835ee18f}{tqi\_physCompBuf}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00466}00466                 \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}} == \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2e04a4635414f6fded7051d71ffa8679}{HAL\_TX\_QUEUE\_DATA}} ||}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00467}00467                           qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a045bfe7ddeab1657bda69c01e9a0879f}{tqi\_type}} == \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a5b39d598ca6b19ae6e94231250e1702c}{HAL\_TX\_QUEUE\_UAPSD}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00468}00468                 \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5212reg_8h_a58be3557a1db93e2502069c523a5e7d1}{AR\_Q\_CBBS}}, (80 + 2*q));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00469}00469                 \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5212reg_8h_a155224924418002eaecafc527d5c8bad}{AR\_Q\_CBBA}}, qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a168f488415d4ce289bc8e7a8835ee18f}{tqi\_physCompBuf}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00470}00470                 \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5212reg_8h_a563a40f18bdd8964d3cc73d1159a6a82}{AR\_Q\_CBC}},  \mbox{\hyperlink{ah_8h_a1e4475cc79cb5423385414d37598bb32}{HAL\_COMP\_BUF\_MAX\_SIZE}}/1024);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00471}00471                 \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_ac26f40e5060dafa94d8a5f7966eda4f5}{AR\_Q0\_MISC}} + 4*q,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00472}00472                              \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_ac26f40e5060dafa94d8a5f7966eda4f5}{AR\_Q0\_MISC}} + 4*q)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00473}00473                              | \mbox{\hyperlink{ar5212reg_8h_a03d366047b4f53e8f1138f53ff2b1d35}{AR\_Q\_MISC\_QCU\_COMP\_EN}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00474}00474         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00475}00475 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00476}00476         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00477}00477 \textcolor{comment}{         * Always update the secondary interrupt mask registers -\/ this}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00478}00478 \textcolor{comment}{         * could be a new queue getting enabled in a running system or}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00479}00479 \textcolor{comment}{         * hw getting re-\/initialized during a reset!}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00480}00480 \textcolor{comment}{         *}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00481}00481 \textcolor{comment}{         * Since we don't differentiate between tx interrupts corresponding}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00482}00482 \textcolor{comment}{         * to individual queues -\/ secondary tx mask regs are always unmasked;}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00483}00483 \textcolor{comment}{         * tx interrupts are enabled/disabled for all queues collectively}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00484}00484 \textcolor{comment}{         * using the primary mask reg}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00485}00485 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00486}00486         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7aed6edcd4f97cf13481ee6a05f033f502}{HAL\_TXQ\_TXOKINT\_ENABLE}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00487}00487                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a6bbe701b1dddac9ee564d8ac71548f31}{ah\_txOkInterruptMask}} |= 1 << q;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00488}00488         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00489}00489                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a6bbe701b1dddac9ee564d8ac71548f31}{ah\_txOkInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00490}00490         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a56dd1084e1ff54a4d765df3be8ea693a}{HAL\_TXQ\_TXERRINT\_ENABLE}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00491}00491                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a7ae3ded77fb2b56d9cc9999418b117ef}{ah\_txErrInterruptMask}} |= 1 << q;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00492}00492         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00493}00493                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a7ae3ded77fb2b56d9cc9999418b117ef}{ah\_txErrInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00494}00494         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a0f98d4c363a39fd5408bc16986279a6d}{HAL\_TXQ\_TXDESCINT\_ENABLE}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00495}00495                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a33ad8f744b558386c0223355f4ea7b32}{ah\_txDescInterruptMask}} |= 1 << q;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00496}00496         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00497}00497                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a33ad8f744b558386c0223355f4ea7b32}{ah\_txDescInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00498}00498         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a83cd89fd470f24508327326e4c030880}{HAL\_TXQ\_TXEOLINT\_ENABLE}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00499}00499                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a17406bd5b2fa7fc9d4dfc054f80ed277}{ah\_txEolInterruptMask}} |= 1 << q;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00500}00500         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00501}00501                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a17406bd5b2fa7fc9d4dfc054f80ed277}{ah\_txEolInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00502}00502         \textcolor{keywordflow}{if} (qi-\/>\mbox{\hyperlink{structHAL__TX__QUEUE__INFO_a814c3be096677b56360a9b6aa73e2674}{tqi\_qflags}} \& \mbox{\hyperlink{ah_8h_a99eeea2deaa38f943a923a4fa4d714a7a6ea92ba76c62effcbe9cfd9ecf75f9c1}{HAL\_TXQ\_TXURNINT\_ENABLE}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00503}00503                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a16329ec35378cf257908f76244300c0d}{ah\_txUrnInterruptMask}} |= 1 << q;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00504}00504         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00505}00505                 ahp-\/>\mbox{\hyperlink{structath__hal__5212_a16329ec35378cf257908f76244300c0d}{ah\_txUrnInterruptMask}} \&= \string~(1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00506}00506         \mbox{\hyperlink{ar5212__xmit_8c_a57a92c61c6dc2ad1f57554af0775ddd5}{setTxQInterrupts}}(ah, qi);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00507}00507 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00508}00508         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00509}00509 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00510}00510 \textcolor{preprocessor}{\#undef  TU\_TO\_USEC}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00511}00511 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00512}00512 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00513}00513 \textcolor{comment}{ * Get the TXDP for the specified queue}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00514}00514 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00515}00515 uint32\_t}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00516}\mbox{\hyperlink{ar5212_8h_a7c0ea3b6a164730e2fc32060e31050a3}{00516}} \mbox{\hyperlink{ar5212__xmit_8c_a7c0ea3b6a164730e2fc32060e31050a3}{ar5212GetTxDP}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, u\_int q)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00517}00517 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00518}00518         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(q < \mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps.halTotalQueues);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00519}00519         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_aa4961a1d373ff6c8cb60ff1ddee03759}{AR\_QTXDP}}(q));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00520}00520 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00521}00521 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00522}00522 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00523}00523 \textcolor{comment}{ * Set the TxDP for the specified queue}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00524}00524 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00525}00525 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00526}\mbox{\hyperlink{ar5212_8h_a87a5f21dab440ff743af630ce7e263ae}{00526}} \mbox{\hyperlink{ar5212__xmit_8c_a87a5f21dab440ff743af630ce7e263ae}{ar5212SetTxDP}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, u\_int q, uint32\_t txdp)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00527}00527 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00528}00528         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(q < \mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps.halTotalQueues);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00529}00529         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(\mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah)-\/>ah\_txq[q].tqi\_type != \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00530}00530 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00531}00531         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00532}00532 \textcolor{comment}{         * Make sure that TXE is deasserted before setting the TXDP.  If TXE}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00533}00533 \textcolor{comment}{         * is still asserted, setting TXDP will have no effect.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00534}00534 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00535}00535         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}((\mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_ad45a6a32278be5be67f356beba2933c9}{AR\_Q\_TXE}}) \& (1 << q)) == 0);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00536}00536 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00537}00537         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_aa4961a1d373ff6c8cb60ff1ddee03759}{AR\_QTXDP}}(q), txdp);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00538}00538 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00539}00539         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00540}00540 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00541}00541 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00542}00542 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00543}00543 \textcolor{comment}{ * Set Transmit Enable bits for the specified queue}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00544}00544 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00545}00545 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00546}\mbox{\hyperlink{ar5212_8h_a89e0e1892c65ced6f8f86e6c729eaf71}{00546}} \mbox{\hyperlink{ar5212__xmit_8c_a89e0e1892c65ced6f8f86e6c729eaf71}{ar5212StartTxDma}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, u\_int q)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00547}00547 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00548}00548         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(q < \mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps.halTotalQueues);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00549}00549 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00550}00550         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(\mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah)-\/>ah\_txq[q].tqi\_type != \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00551}00551 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00552}00552         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}}, \textcolor{stringliteral}{"{}\%s: queue \%u\(\backslash\)n"{}}, \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00553}00553 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00554}00554         \textcolor{comment}{/* Check to be sure we're not enabling a q that has its TXD bit set. */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00555}00555         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}((\mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_afbd8821e90bf38c96a30148218cb6e1d}{AR\_Q\_TXD}}) \& (1 << q)) == 0);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00556}00556 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00557}00557         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_ad45a6a32278be5be67f356beba2933c9}{AR\_Q\_TXE}}, 1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00558}00558         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00559}00559 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00560}00560 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00561}00561 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00562}00562 \textcolor{comment}{ * Return the number of pending frames or 0 if the specified}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00563}00563 \textcolor{comment}{ * queue is stopped.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00564}00564 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00565}00565 uint32\_t}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00566}\mbox{\hyperlink{ar5212_8h_a7a7b2369c88d49161c322c4f7e111055}{00566}} \mbox{\hyperlink{ar5212__xmit_8c_a7a7b2369c88d49161c322c4f7e111055}{ar5212NumTxPending}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, u\_int q)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00567}00567 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00568}00568         uint32\_t npend;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00569}00569 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00570}00570         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(q < \mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps.halTotalQueues);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00571}00571         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(\mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah)-\/>ah\_txq[q].tqi\_type != \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00572}00572 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00573}00573         npend = \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_a8d90ed43ea4abb99df3898cfcfdc8704}{AR\_QSTS}}(q)) \& \mbox{\hyperlink{ar5212reg_8h_abc998f662602601c9a19b10b46cf1599}{AR\_Q\_STS\_PEND\_FR\_CNT}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00574}00574         \textcolor{keywordflow}{if} (npend == 0) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00575}00575                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00576}00576 \textcolor{comment}{                 * Pending frame count (PFC) can momentarily go to zero}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00577}00577 \textcolor{comment}{                 * while TXE remains asserted.  In other words a PFC of}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00578}00578 \textcolor{comment}{                 * zero is not sufficient to say that the queue has stopped.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00579}00579 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00580}00580                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_ad45a6a32278be5be67f356beba2933c9}{AR\_Q\_TXE}}) \& (1 << q))}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00581}00581                         npend = 1;              \textcolor{comment}{/* arbitrarily return 1 */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00582}00582         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00583}00583         \textcolor{keywordflow}{return} npend;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00584}00584 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00585}00585 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00586}00586 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00587}00587 \textcolor{comment}{ * Stop transmit on the specified queue}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00588}00588 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00589}00589 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00590}\mbox{\hyperlink{ar5212_8h_a46d273f6f2c64f3adc19994c71c4b662}{00590}} \mbox{\hyperlink{ar5212__xmit_8c_a46d273f6f2c64f3adc19994c71c4b662}{ar5212StopTxDma}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, u\_int q)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00591}00591 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00592}00592         u\_int i;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00593}00593         u\_int wait;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00594}00594 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00595}00595         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(q < \mbox{\hyperlink{ah__internal_8h_a7a57bc6086e9d3ed4c9d81f5d0a136cc}{AH\_PRIVATE}}(ah)-\/>ah\_caps.halTotalQueues);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00596}00596 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00597}00597         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(\mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah)-\/>ah\_txq[q].tqi\_type != \mbox{\hyperlink{ah_8h_aaf60eddc5cc72b7c7c1e910395aca900a2fdb0c1b1aab4832cdfaca2b11e3adcb}{HAL\_TX\_QUEUE\_INACTIVE}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00598}00598 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00599}00599         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_afbd8821e90bf38c96a30148218cb6e1d}{AR\_Q\_TXD}}, 1 << q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00600}00600         \textcolor{keywordflow}{for} (i = 1000; i != 0; i-\/-\/) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00601}00601                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{ar5212__xmit_8c_a7a7b2369c88d49161c322c4f7e111055}{ar5212NumTxPending}}(ah, q) == 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00602}00602                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00603}00603                 \mbox{\hyperlink{ah__osdep_8h_a34b88156c4561e13f775e8b9cd9a5374}{OS\_DELAY}}(100);        \textcolor{comment}{/* XXX get actual value */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00604}00604         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00605}00605 \textcolor{preprocessor}{\#ifdef AH\_DEBUG}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00606}00606         \textcolor{keywordflow}{if} (i == 0) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00607}00607                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00608}00608                     \textcolor{stringliteral}{"{}\%s: queue \%u DMA did not stop in 100 msec\(\backslash\)n"{}}, \_\_func\_\_, q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00609}00609                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00610}00610                     \textcolor{stringliteral}{"{}\%s: QSTS 0x\%x Q\_TXE 0x\%x Q\_TXD 0x\%x Q\_CBR 0x\%x\(\backslash\)n"{}}, \_\_func\_\_,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00611}00611                     \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_a8d90ed43ea4abb99df3898cfcfdc8704}{AR\_QSTS}}(q)), \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_ad45a6a32278be5be67f356beba2933c9}{AR\_Q\_TXE}}),}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00612}00612                     \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_afbd8821e90bf38c96a30148218cb6e1d}{AR\_Q\_TXD}}), \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_a40d3358ed2a4a17ea863e7fcb1822bed}{AR\_QCBRCFG}}(q)));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00613}00613                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00614}00614                     \textcolor{stringliteral}{"{}\%s: Q\_MISC 0x\%x Q\_RDYTIMECFG 0x\%x Q\_RDYTIMESHDN 0x\%x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00615}00615                     \_\_func\_\_, \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_ae9f53cce5c61c4ccfe05096a8085bf1d}{AR\_QMISC}}(q)),}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00616}00616                     \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_a458eb0261443376ded57a9177fdefc23}{AR\_QRDYTIMECFG}}(q)),}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00617}00617                     \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5211reg_8h_a1f05dbf6189bced4d82738be5c77f3d4}{AR\_Q\_RDYTIMESHDN}}));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00618}00618         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00619}00619 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* AH\_DEBUG */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00620}00620 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00621}00621         \textcolor{comment}{/* 2413+ and up can kill packets at the PCU level */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00622}00622         \textcolor{keywordflow}{if} (\mbox{\hyperlink{ar5212__xmit_8c_a7a7b2369c88d49161c322c4f7e111055}{ar5212NumTxPending}}(ah, q) \&\&}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00623}00623             (\mbox{\hyperlink{ar5212_8h_afe6c72202c1e6728f9fd999e023d155f}{IS\_2413}}(ah) || \mbox{\hyperlink{ar5212_8h_a7ee94c65dbc29f74b97fbf184daf1843}{IS\_5413}}(ah) || \mbox{\hyperlink{ar5212_8h_a4914961951207b95c34e123178512f1f}{IS\_2425}}(ah) || \mbox{\hyperlink{ar5212_8h_a9a26174b750c792d458efb0e1c97d8a6}{IS\_2417}}(ah))) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00624}00624                 uint32\_t tsfLow, j;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00625}00625                 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00626}00626                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea11b88c0f380d9e6fc9e92f5f472bd133}{HAL\_DEBUG\_TXQUEUE}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00627}00627                     \textcolor{stringliteral}{"{}\%s: Num of pending TX Frames \%d on Q \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00628}00628                     \_\_func\_\_, \mbox{\hyperlink{ar5212__xmit_8c_a7a7b2369c88d49161c322c4f7e111055}{ar5212NumTxPending}}(ah, q), q);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00629}00629                 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00630}00630                 \textcolor{comment}{/* Kill last PCU Tx Frame */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00631}00631                 \textcolor{comment}{/* TODO -\/ save off and restore current values of Q1/Q2? */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00632}00632                 \textcolor{keywordflow}{for} (j = 0; j < 2; j++) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00633}00633                         tsfLow = \mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5210reg_8h_ac9219f86e27e5067ee61ae3b9be36bb0}{AR\_TSF\_L32}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00634}00634                         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5212reg_8h_a1799b6a8be1216c19e522be52de45249}{AR\_QUIET2}}, \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(100, \mbox{\hyperlink{ar5212reg_8h_a8d93b34b15f6e25c74cb9f86233fc96a}{AR\_QUIET2\_QUIET\_PER}}) |}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00635}00635                                      \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(10, \mbox{\hyperlink{ar5212reg_8h_a3e846b8a9e6a1c8ec978b4079ad96bf3}{AR\_QUIET2\_QUIET\_DUR}}));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00636}00636                         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5212reg_8h_a2bb63e6583f0c1a4831038d77d8e0031}{AR\_QUIET1}}, \mbox{\hyperlink{ar5212reg_8h_a12b2d956e866ea3e0c00cf46b5a61035}{AR\_QUIET1\_QUIET\_ENABLE}} |}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00637}00637                                      \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(tsfLow >> 10, \mbox{\hyperlink{ar5212reg_8h_a1c439e2e5974b525227a84bdc4dc95bb}{AR\_QUIET1\_NEXT\_QUIET}}));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00638}00638                         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{ah__osdep_8h_afded631196d59ba3443fc37addc9a2a6}{OS\_REG\_READ}}(ah, \mbox{\hyperlink{ar5210reg_8h_ac9219f86e27e5067ee61ae3b9be36bb0}{AR\_TSF\_L32}}) >> 10) == (tsfLow >> 10)) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00639}00639                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00640}00640                         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00641}00641                         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00642}00642                             \textcolor{stringliteral}{"{}\%s: TSF moved while trying to set quiet time "{}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00643}00643                             \textcolor{stringliteral}{"{}TSF: 0x\%08x\(\backslash\)n"{}}, \_\_func\_\_, tsfLow);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00644}00644                         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(j < 1); \textcolor{comment}{/* TSF shouldn't count twice or reg access is taking forever */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00645}00645                 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00646}00646                 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00647}00647                 \mbox{\hyperlink{ah__internal_8h_a115457790a8a1d2c0bf64407fee993c7}{OS\_REG\_SET\_BIT}}(ah, \mbox{\hyperlink{ar5210reg_8h_aef907b410f065ff5672fc24bfe844d3e}{AR\_DIAG\_SW}}, \mbox{\hyperlink{ar5212reg_8h_a632518090fe4fdf365a55a7c677a47e6}{AR\_DIAG\_CHAN\_IDLE}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00648}00648                 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00649}00649                 \textcolor{comment}{/* Allow the quiet mechanism to do its work */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00650}00650                 \mbox{\hyperlink{ah__osdep_8h_a34b88156c4561e13f775e8b9cd9a5374}{OS\_DELAY}}(200);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00651}00651                 \mbox{\hyperlink{ah__internal_8h_a744f55d778d9d8426dc5190616d865e0}{OS\_REG\_CLR\_BIT}}(ah, \mbox{\hyperlink{ar5212reg_8h_a2bb63e6583f0c1a4831038d77d8e0031}{AR\_QUIET1}}, \mbox{\hyperlink{ar5212reg_8h_a12b2d956e866ea3e0c00cf46b5a61035}{AR\_QUIET1\_QUIET\_ENABLE}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00652}00652                 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00653}00653                 \textcolor{comment}{/* Give at least 1 millisec more to wait */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00654}00654                 wait = 100;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00655}00655                 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00656}00656                 \textcolor{comment}{/* Verify all transmit is dead */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00657}00657                 \textcolor{keywordflow}{while} (\mbox{\hyperlink{ar5212__xmit_8c_a7a7b2369c88d49161c322c4f7e111055}{ar5212NumTxPending}}(ah, q)) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00658}00658                         \textcolor{keywordflow}{if} ((-\/-\/wait) == 0) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00659}00659                                 \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00660}00660                                     \textcolor{stringliteral}{"{}\%s: Failed to stop Tx DMA in \%d msec after killing last frame\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00661}00661                                     \_\_func\_\_, wait);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00662}00662                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00663}00663                         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00664}00664                         \mbox{\hyperlink{ah__osdep_8h_a34b88156c4561e13f775e8b9cd9a5374}{OS\_DELAY}}(10);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00665}00665                 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00666}00666                 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00667}00667                 \mbox{\hyperlink{ah__internal_8h_a744f55d778d9d8426dc5190616d865e0}{OS\_REG\_CLR\_BIT}}(ah, \mbox{\hyperlink{ar5210reg_8h_aef907b410f065ff5672fc24bfe844d3e}{AR\_DIAG\_SW}}, \mbox{\hyperlink{ar5212reg_8h_a632518090fe4fdf365a55a7c677a47e6}{AR\_DIAG\_CHAN\_IDLE}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00668}00668         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00669}00669 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00670}00670         \mbox{\hyperlink{ah__osdep_8h_a8e19d34bdc4596d48a978fc59e1b60fb}{OS\_REG\_WRITE}}(ah, \mbox{\hyperlink{ar5211reg_8h_afbd8821e90bf38c96a30148218cb6e1d}{AR\_Q\_TXD}}, 0);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00671}00671         \textcolor{keywordflow}{return} (i != 0);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00672}00672 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00673}00673 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00674}00674 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00675}00675 \textcolor{comment}{ * Descriptor Access Functions}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00676}00676 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00677}00677 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00678}\mbox{\hyperlink{ar5212__xmit_8c_a64fa9f728c742e6ac3e44fc9dc34ab88}{00678}} \textcolor{preprocessor}{\#define VALID\_PKT\_TYPES \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00679}00679 \textcolor{preprocessor}{        ((1<<HAL\_PKT\_TYPE\_NORMAL)|(1<<HAL\_PKT\_TYPE\_ATIM)|\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00680}00680 \textcolor{preprocessor}{         (1<<HAL\_PKT\_TYPE\_PSPOLL)|(1<<HAL\_PKT\_TYPE\_PROBE\_RESP)|\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00681}00681 \textcolor{preprocessor}{         (1<<HAL\_PKT\_TYPE\_BEACON))}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00682}\mbox{\hyperlink{ar5212__xmit_8c_a5ed16e04058070719f2ace308649b8c1}{00682}} \textcolor{preprocessor}{\#define isValidPktType(\_t)      ((1<<(\_t)) \& VALID\_PKT\_TYPES)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00683}\mbox{\hyperlink{ar5212__xmit_8c_a6ccf0f739ce6fd85df970bc16a394b51}{00683}} \textcolor{preprocessor}{\#define VALID\_TX\_RATES \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00684}00684 \textcolor{preprocessor}{        ((1<<0x0b)|(1<<0x0f)|(1<<0x0a)|(1<<0x0e)|(1<<0x09)|(1<<0x0d)|\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00685}00685 \textcolor{preprocessor}{         (1<<0x08)|(1<<0x0c)|(1<<0x1b)|(1<<0x1a)|(1<<0x1e)|(1<<0x19)|\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00686}00686 \textcolor{preprocessor}{         (1<<0x1d)|(1<<0x18)|(1<<0x1c))}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00687}\mbox{\hyperlink{ar5212__xmit_8c_aab99c7e491c1c8a9bb0fa7c14259ec36}{00687}} \textcolor{preprocessor}{\#define isValidTxRate(\_r)       ((1<<(\_r)) \& VALID\_TX\_RATES)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00688}00688 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00689}00689 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00690}\mbox{\hyperlink{ar5212_8h_a41a8aba0b2dc39f26dab017d4d5ee624}{00690}} \mbox{\hyperlink{ar5212__xmit_8c_a41a8aba0b2dc39f26dab017d4d5ee624}{ar5212SetupTxDesc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keyword}{struct} \mbox{\hyperlink{structath__desc}{ath\_desc}} *ds,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00691}00691         u\_int pktLen,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00692}00692         u\_int hdrLen,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00693}00693         \mbox{\hyperlink{ah_8h_a145215964aad0c93d2eafec208e83b94}{HAL\_PKT\_TYPE}} type,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00694}00694         u\_int txPower,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00695}00695         u\_int txRate0, u\_int txTries0,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00696}00696         u\_int keyIx,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00697}00697         u\_int antMode,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00698}00698         u\_int flags,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00699}00699         u\_int rtsctsRate,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00700}00700         u\_int rtsctsDuration,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00701}00701         u\_int compicvLen,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00702}00702         u\_int compivLen,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00703}00703         u\_int comp)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00704}00704 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00705}00705 \textcolor{preprocessor}{\#define RTSCTS  (HAL\_TXDESC\_RTSENA|HAL\_TXDESC\_CTSENA)}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00706}00706         \textcolor{keyword}{struct }\mbox{\hyperlink{structar5212__desc}{ar5212\_desc}} *ads = \mbox{\hyperlink{ar5212desc_8h_a29508f239eb7b82a930fa5cea335bde7}{AR5212DESC}}(ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00707}00707         \textcolor{keyword}{struct }\mbox{\hyperlink{structath__hal__5212}{ath\_hal\_5212}} *ahp = \mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00708}00708 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00709}00709         (void) hdrLen;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00710}00710 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00711}00711         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(txTries0 != 0);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00712}00712         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(\mbox{\hyperlink{ar5212__xmit_8c_a5ed16e04058070719f2ace308649b8c1}{isValidPktType}}(type));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00713}00713         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(\mbox{\hyperlink{ar5212__xmit_8c_aab99c7e491c1c8a9bb0fa7c14259ec36}{isValidTxRate}}(txRate0));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00714}00714         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}((flags \& \mbox{\hyperlink{ar5212__xmit_8c_a5950df1bb31be858a2554dcc30499cb4}{RTSCTS}}) != \mbox{\hyperlink{ar5212__xmit_8c_a5950df1bb31be858a2554dcc30499cb4}{RTSCTS}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00715}00715         \textcolor{comment}{/* XXX validate antMode */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00716}00716 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00717}00717         txPower = (txPower + ahp-\/>\mbox{\hyperlink{structath__hal__5212_a2d87383d3ff8190de78e600618863085}{ah\_txPowerIndexOffset}} );}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00718}00718         \textcolor{keywordflow}{if}(txPower > 63)  txPower=63;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00719}00719 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00720}00720         ads-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}} = (pktLen \& \mbox{\hyperlink{ar5210desc_8h_aa0f8d754c225f1749c65049076576026}{AR\_FrameLen}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00721}00721                      | (txPower << \mbox{\hyperlink{ar5212desc_8h_a8c03f35cf62653513a51df05256e41fb}{AR\_XmitPower\_S}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00722}00722                      | (flags \& \mbox{\hyperlink{ah__desc_8h_a2aab79ef45fd7bfbfecb2e69398fc441}{HAL\_TXDESC\_VEOL}} ? \mbox{\hyperlink{ar5211desc_8h_a6c903cc319abe6d15dafd1a86c6bd768}{AR\_VEOL}} : 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00723}00723                      | (flags \& \mbox{\hyperlink{ah__desc_8h_aa20c6a6c4a65015620955b3b0688d63c}{HAL\_TXDESC\_CLRDMASK}} ? \mbox{\hyperlink{ar5210desc_8h_ac449a14b1cdb89e70080cd3c3cfbfc33}{AR\_ClearDestMask}} : 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00724}00724                      | \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(antMode, \mbox{\hyperlink{ar5210desc_8h_a581df37b85261a87b7e25fc0406b8b93}{AR\_AntModeXmit}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00725}00725                      | (flags \& \mbox{\hyperlink{ah__desc_8h_a533e38c62d22b96065c851375d0ba6b7}{HAL\_TXDESC\_INTREQ}} ? \mbox{\hyperlink{ar5210desc_8h_a39a5d06ceafa63db00337b1d59b40991}{AR\_TxInterReq}} : 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00726}00726                      ;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00727}00727         ads-\/>\mbox{\hyperlink{structar5212__desc_a90599f2adfc33acfd840f22da4dcded4}{ds\_ctl1}} = (type << \mbox{\hyperlink{ar5210desc_8h_a4163d4a9a276eda4bed6e374fd788c58}{AR\_FrmType\_S}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00728}00728                      | (flags \& \mbox{\hyperlink{ah__desc_8h_a78b58c907d2cdc335c05dc7b444b39f0}{HAL\_TXDESC\_NOACK}} ? \mbox{\hyperlink{ar5211desc_8h_a817511f30428a5cd704999d5d89ac4b2}{AR\_NoAck}} : 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00729}00729                      | (comp << \mbox{\hyperlink{ar5212desc_8h_a03ac6aeece52b1182d74cf1639b6a59c}{AR\_CompProc\_S}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00730}00730                      | (compicvLen << \mbox{\hyperlink{ar5212desc_8h_a6739fd17475cf650f8b52b11facdd33c}{AR\_CompICVLen\_S}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00731}00731                      | (compivLen << \mbox{\hyperlink{ar5212desc_8h_ad1b1684855657c518f00ed54651d2aa0}{AR\_CompIVLen\_S}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00732}00732                      ;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00733}00733         ads-\/>ds\_ctl2 = \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(txTries0, \mbox{\hyperlink{ar5212desc_8h_afda09fead5a22dca0f2eeb4c8aaccc63}{AR\_XmitDataTries0}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00734}00734                      | (flags \& \mbox{\hyperlink{ah__desc_8h_a3b7e5b40cdd4b65a8fc7f250244461d3}{HAL\_TXDESC\_DURENA}} ? \mbox{\hyperlink{ar5212desc_8h_a50c6ec1ac1a21ea1183cf534b458118c}{AR\_DurUpdateEna}} : 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00735}00735                      ;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00736}00736         ads-\/>ds\_ctl3 = (txRate0 << \mbox{\hyperlink{ar5212desc_8h_a5d96f7edc6c8e81235c48403ec1e276e}{AR\_XmitRate0\_S}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00737}00737                      ;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00738}00738         \textcolor{keywordflow}{if} (keyIx != \mbox{\hyperlink{ah__desc_8h_a6c000927d0689babf89e8bacf28239c4}{HAL\_TXKEYIX\_INVALID}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00739}00739                 \textcolor{comment}{/* XXX validate key index */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00740}00740                 ads-\/>\mbox{\hyperlink{structar5212__desc_a90599f2adfc33acfd840f22da4dcded4}{ds\_ctl1}} |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(keyIx, \mbox{\hyperlink{ar5212desc_8h_abf0b0c8fab7deea0fb9b09dc07240466}{AR\_DestIdx}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00741}00741                 ads-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}} |= \mbox{\hyperlink{ar5212desc_8h_a8753921ef6f5fc433a65ab495092a740}{AR\_DestIdxValid}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00742}00742         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00743}00743         \textcolor{keywordflow}{if} (flags \& \mbox{\hyperlink{ar5212__xmit_8c_a5950df1bb31be858a2554dcc30499cb4}{RTSCTS}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00744}00744                 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{ar5212__xmit_8c_aab99c7e491c1c8a9bb0fa7c14259ec36}{isValidTxRate}}(rtsctsRate)) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00745}00745                         \mbox{\hyperlink{ah__internal_8h_ac09ac07206a85dc5f4079553a0520c4e}{HALDEBUG}}(ah, \mbox{\hyperlink{ah__debug_8h_a61dadd085c1777f559549e05962b2c9ea35506ea938627da4c44204d0895d0bf8}{HAL\_DEBUG\_ANY}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00746}00746                             \textcolor{stringliteral}{"{}\%s: invalid rts/cts rate 0x\%x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00747}00747                             \_\_func\_\_, rtsctsRate);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00748}00748                         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aa46085f3e46cbceb46c46b0bde64a6c20}{AH\_FALSE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00749}00749                 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00750}00750                 \textcolor{comment}{/* XXX validate rtsctsDuration */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00751}00751                 ads-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}} |= (flags \& \mbox{\hyperlink{ah__desc_8h_a6c25fbbffef14483c8136a533ae35cf1}{HAL\_TXDESC\_CTSENA}} ? \mbox{\hyperlink{ar5212desc_8h_a8bde3441ad1f3498c14ae84924ff690f}{AR\_CTSEnable}} : 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00752}00752                              | (flags \& \mbox{\hyperlink{ah__desc_8h_afed93eb95acffe3b8f73c133f07e450f}{HAL\_TXDESC\_RTSENA}} ? \mbox{\hyperlink{ar5210desc_8h_abcada1536edea07bf84c44cad330661b}{AR\_RTSCTSEnable}} : 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00753}00753                              ;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00754}00754                 ads-\/>ds\_ctl2 |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(rtsctsDuration, \mbox{\hyperlink{ar5212desc_8h_af1b0ff3c4d8b1b038676278f14ddfb5c}{AR\_RTSCTSDuration}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00755}00755                 ads-\/>ds\_ctl3 |= (rtsctsRate << \mbox{\hyperlink{ar5212desc_8h_a94cfe6ca92e3ac61b2ade8b366720239}{AR\_RTSCTSRate\_S}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00756}00756         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00757}00757         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00758}00758 \textcolor{preprocessor}{\#undef RTSCTS}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00759}00759 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00760}00760 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00761}00761 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00762}\mbox{\hyperlink{ar5212_8h_a809eb7a89f2db8cf87996e24e59a9c5a}{00762}} \mbox{\hyperlink{ar5212__xmit_8c_aed73c3f687c7b3299a9e9bebc95bd6d9}{ar5212SetupXTxDesc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keyword}{struct} \mbox{\hyperlink{structath__desc}{ath\_desc}} *ds,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00763}00763         u\_int txRate1, u\_int txTries1,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00764}00764         u\_int txRate2, u\_int txTries2,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00765}00765         u\_int txRate3, u\_int txTries3)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00766}00766 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00767}00767         \textcolor{keyword}{struct }\mbox{\hyperlink{structar5212__desc}{ar5212\_desc}} *ads = \mbox{\hyperlink{ar5212desc_8h_a29508f239eb7b82a930fa5cea335bde7}{AR5212DESC}}(ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00768}00768 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00769}00769         \textcolor{keywordflow}{if} (txTries1) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00770}00770                 \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(\mbox{\hyperlink{ar5212__xmit_8c_aab99c7e491c1c8a9bb0fa7c14259ec36}{isValidTxRate}}(txRate1));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00771}00771                 ads-\/>ds\_ctl2 |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(txTries1, \mbox{\hyperlink{ar5212desc_8h_a4b758eebd78af61c1d395f4c02759a51}{AR\_XmitDataTries1}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00772}00772                              |  \mbox{\hyperlink{ar5212desc_8h_a50c6ec1ac1a21ea1183cf534b458118c}{AR\_DurUpdateEna}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00773}00773                              ;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00774}00774                 ads-\/>ds\_ctl3 |= (txRate1 << \mbox{\hyperlink{ar5212desc_8h_ad71b6966062d433e207fa4dca9c20a65}{AR\_XmitRate1\_S}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00775}00775         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00776}00776         \textcolor{keywordflow}{if} (txTries2) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00777}00777                 \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(\mbox{\hyperlink{ar5212__xmit_8c_aab99c7e491c1c8a9bb0fa7c14259ec36}{isValidTxRate}}(txRate2));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00778}00778                 ads-\/>ds\_ctl2 |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(txTries2, \mbox{\hyperlink{ar5212desc_8h_a2df50d22784656b3878eef6f71995258}{AR\_XmitDataTries2}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00779}00779                              |  \mbox{\hyperlink{ar5212desc_8h_a50c6ec1ac1a21ea1183cf534b458118c}{AR\_DurUpdateEna}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00780}00780                              ;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00781}00781                 ads-\/>ds\_ctl3 |= (txRate2 << \mbox{\hyperlink{ar5212desc_8h_a0ed5edc0dad7704974ba0e361b753f20}{AR\_XmitRate2\_S}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00782}00782         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00783}00783         \textcolor{keywordflow}{if} (txTries3) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00784}00784                 \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}(\mbox{\hyperlink{ar5212__xmit_8c_aab99c7e491c1c8a9bb0fa7c14259ec36}{isValidTxRate}}(txRate3));}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00785}00785                 ads-\/>ds\_ctl2 |= \mbox{\hyperlink{ah__internal_8h_a3219d5c091f63b52ee0ceba3969ba8c1}{SM}}(txTries3, \mbox{\hyperlink{ar5212desc_8h_adc5c7288eaf40168548a79f253c390e1}{AR\_XmitDataTries3}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00786}00786                              |  \mbox{\hyperlink{ar5212desc_8h_a50c6ec1ac1a21ea1183cf534b458118c}{AR\_DurUpdateEna}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00787}00787                              ;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00788}00788                 ads-\/>ds\_ctl3 |= (txRate3 << \mbox{\hyperlink{ar5212desc_8h_a6505074a21fdb5f19756239b81db9c7d}{AR\_XmitRate3\_S}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00789}00789         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00790}00790         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00791}00791 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00792}00792 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00793}00793 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00794}\mbox{\hyperlink{ar5212_8h_a5f35d93e94d6597b539e59e80c02a0a1}{00794}} \mbox{\hyperlink{ar5212__xmit_8c_aa259eab8dc72dbadf4d2312e596ab067}{ar5212IntrReqTxDesc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keyword}{struct} \mbox{\hyperlink{structath__desc}{ath\_desc}} *ds)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00795}00795 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00796}00796         \textcolor{keyword}{struct }\mbox{\hyperlink{structar5212__desc}{ar5212\_desc}} *ads = \mbox{\hyperlink{ar5212desc_8h_a29508f239eb7b82a930fa5cea335bde7}{AR5212DESC}}(ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00797}00797 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00798}00798 \textcolor{preprocessor}{\#ifdef AH\_NEED\_DESC\_SWAP}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00799}00799         ads-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}} |= \_\_bswap32(\mbox{\hyperlink{ar5210desc_8h_a39a5d06ceafa63db00337b1d59b40991}{AR\_TxInterReq}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00800}00800 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00801}00801         ads-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}} |= \mbox{\hyperlink{ar5210desc_8h_a39a5d06ceafa63db00337b1d59b40991}{AR\_TxInterReq}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00802}00802 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00803}00803 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00804}00804 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00805}00805 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00806}\mbox{\hyperlink{ar5212_8h_a18817883c2e6d26e0b65b875ab3d79be}{00806}} \mbox{\hyperlink{ar5212__xmit_8c_a2a90e99ea94eed92566f6ff0559c7e35}{ar5212FillTxDesc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keyword}{struct} \mbox{\hyperlink{structath__desc}{ath\_desc}} *ds,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00807}00807         \mbox{\hyperlink{ah__osdep_8h_ac7340226069077ddd763f06549b8dcf7}{HAL\_DMA\_ADDR}} *bufAddrList, uint32\_t *segLenList, u\_int qcuId,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00808}00808         u\_int descId, \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}} firstSeg, \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}} lastSeg,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00809}00809         \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structath__desc}{ath\_desc}} *ds0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00810}00810 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00811}00811         \textcolor{keyword}{struct }\mbox{\hyperlink{structar5212__desc}{ar5212\_desc}} *ads = \mbox{\hyperlink{ar5212desc_8h_a29508f239eb7b82a930fa5cea335bde7}{AR5212DESC}}(ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00812}00812         uint32\_t segLen = segLenList[0];}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00813}00813 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00814}00814         \mbox{\hyperlink{ah__internal_8h_abb8bdaf7438fdc315b333ab07ed68c9c}{HALASSERT}}((segLen \&\string~ \mbox{\hyperlink{ar5210desc_8h_ad3f825beb822a9f687dc738d688e2f16}{AR\_BufLen}}) == 0);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00815}00815 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00816}00816         ds-\/>\mbox{\hyperlink{structath__desc_ae58522db15fe84d17e235c9eb4b86d0e}{ds\_data}} = bufAddrList[0];}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00817}00817 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00818}00818         \textcolor{keywordflow}{if} (firstSeg) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00819}00819                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00820}00820 \textcolor{comment}{                 * First descriptor, don't clobber xmit control data}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00821}00821 \textcolor{comment}{                 * setup by ar5212SetupTxDesc.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00822}00822 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00823}00823                 ads-\/>\mbox{\hyperlink{structar5212__desc_a90599f2adfc33acfd840f22da4dcded4}{ds\_ctl1}} |= segLen | (lastSeg ? 0 : \mbox{\hyperlink{ar5210desc_8h_ab89bcff4f906b3afdb9fbce47836ce06}{AR\_More}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00824}00824         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (lastSeg) \{           \textcolor{comment}{/* !firstSeg \&\& lastSeg */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00825}00825                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00826}00826 \textcolor{comment}{                 * Last descriptor in a multi-\/descriptor frame,}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00827}00827 \textcolor{comment}{                 * copy the multi-\/rate transmit parameters from}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00828}00828 \textcolor{comment}{                 * the first frame for processing on completion. }}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00829}00829 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00830}00830                 ads-\/>\mbox{\hyperlink{structar5212__desc_a90599f2adfc33acfd840f22da4dcded4}{ds\_ctl1}} = segLen;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00831}00831 \textcolor{preprocessor}{\#ifdef AH\_NEED\_DESC\_SWAP}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00832}00832                 ads-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}} = \_\_bswap32(\mbox{\hyperlink{ar5212desc_8h_a84c2d8b8a3d996c6cac4f19489d1834f}{AR5212DESC\_CONST}}(ds0)-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00833}00833                     \& \mbox{\hyperlink{ar5210desc_8h_a39a5d06ceafa63db00337b1d59b40991}{AR\_TxInterReq}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00834}00834                 ads-\/>ds\_ctl2 = \_\_bswap32(\mbox{\hyperlink{ar5212desc_8h_a84c2d8b8a3d996c6cac4f19489d1834f}{AR5212DESC\_CONST}}(ds0)-\/>\mbox{\hyperlink{ar5212desc_8h_ad9566d924833ff37905511ad2a5c6ea0}{ds\_ctl2}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00835}00835                 ads-\/>ds\_ctl3 = \_\_bswap32(\mbox{\hyperlink{ar5212desc_8h_a84c2d8b8a3d996c6cac4f19489d1834f}{AR5212DESC\_CONST}}(ds0)-\/>\mbox{\hyperlink{ar5212desc_8h_a6dcb86d8abc65f7206d5fc9ca081b333}{ds\_ctl3}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00836}00836 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00837}00837                 ads-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}} = \mbox{\hyperlink{ar5212desc_8h_a84c2d8b8a3d996c6cac4f19489d1834f}{AR5212DESC\_CONST}}(ds0)-\/>ds\_ctl0 \& \mbox{\hyperlink{ar5210desc_8h_a39a5d06ceafa63db00337b1d59b40991}{AR\_TxInterReq}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00838}00838                 ads-\/>ds\_ctl2 = \mbox{\hyperlink{ar5212desc_8h_a84c2d8b8a3d996c6cac4f19489d1834f}{AR5212DESC\_CONST}}(ds0)-\/>ds\_ctl2;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00839}00839                 ads-\/>ds\_ctl3 = \mbox{\hyperlink{ar5212desc_8h_a84c2d8b8a3d996c6cac4f19489d1834f}{AR5212DESC\_CONST}}(ds0)-\/>ds\_ctl3;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00840}00840 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00841}00841         \} \textcolor{keywordflow}{else} \{                        \textcolor{comment}{/* !firstSeg \&\& !lastSeg */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00842}00842                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00843}00843 \textcolor{comment}{                 * Intermediate descriptor in a multi-\/descriptor frame.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00844}00844 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00845}00845 \textcolor{preprocessor}{\#ifdef AH\_NEED\_DESC\_SWAP}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00846}00846                 ads-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}} = \_\_bswap32(\mbox{\hyperlink{ar5212desc_8h_a84c2d8b8a3d996c6cac4f19489d1834f}{AR5212DESC\_CONST}}(ds0)-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00847}00847                     \& \mbox{\hyperlink{ar5210desc_8h_a39a5d06ceafa63db00337b1d59b40991}{AR\_TxInterReq}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00848}00848 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00849}00849                 ads-\/>\mbox{\hyperlink{structar5212__desc_ad49239292e3cd3faf019fcdceb0e5c73}{ds\_ctl0}} = \mbox{\hyperlink{ar5212desc_8h_a84c2d8b8a3d996c6cac4f19489d1834f}{AR5212DESC\_CONST}}(ds0)-\/>ds\_ctl0 \& \mbox{\hyperlink{ar5210desc_8h_a39a5d06ceafa63db00337b1d59b40991}{AR\_TxInterReq}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00850}00850 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00851}00851                 ads-\/>\mbox{\hyperlink{structar5212__desc_a90599f2adfc33acfd840f22da4dcded4}{ds\_ctl1}} = segLen | \mbox{\hyperlink{ar5210desc_8h_ab89bcff4f906b3afdb9fbce47836ce06}{AR\_More}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00852}00852                 ads-\/>ds\_ctl2 = 0;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00853}00853                 ads-\/>ds\_ctl3 = 0;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00854}00854         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00855}00855         ads-\/>ds\_txstatus0 = ads-\/>ds\_txstatus1 = 0;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00856}00856         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00857}00857 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00858}00858 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00859}00859 \textcolor{preprocessor}{\#ifdef AH\_NEED\_DESC\_SWAP}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00860}00860 \textcolor{comment}{/* Swap transmit descriptor */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00861}00861 \textcolor{keyword}{static} \_\_inline \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00862}00862 ar5212SwapTxDesc(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__desc}{ath\_desc}} *ds)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00863}00863 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00864}00864         ds-\/>\mbox{\hyperlink{structath__desc_ae58522db15fe84d17e235c9eb4b86d0e}{ds\_data}} = \_\_bswap32(ds-\/>\mbox{\hyperlink{structath__desc_ae58522db15fe84d17e235c9eb4b86d0e}{ds\_data}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00865}00865         ds-\/>\mbox{\hyperlink{structath__desc_a3a63388df7cfabb06a0a5a8cb9808670}{ds\_ctl0}} = \_\_bswap32(ds-\/>\mbox{\hyperlink{structath__desc_a3a63388df7cfabb06a0a5a8cb9808670}{ds\_ctl0}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00866}00866         ds-\/>\mbox{\hyperlink{structath__desc_a8bb48b7e2834e36abfdfb8311de96c2a}{ds\_ctl1}} = \_\_bswap32(ds-\/>\mbox{\hyperlink{structath__desc_a8bb48b7e2834e36abfdfb8311de96c2a}{ds\_ctl1}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00867}00867         ds-\/>\mbox{\hyperlink{structath__desc_afb5cf4d509d14f297a86658dee42b65a}{ds\_hw}}[0] = \_\_bswap32(ds-\/>\mbox{\hyperlink{structath__desc_afb5cf4d509d14f297a86658dee42b65a}{ds\_hw}}[0]);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00868}00868         ds-\/>\mbox{\hyperlink{structath__desc_afb5cf4d509d14f297a86658dee42b65a}{ds\_hw}}[1] = \_\_bswap32(ds-\/>\mbox{\hyperlink{structath__desc_afb5cf4d509d14f297a86658dee42b65a}{ds\_hw}}[1]);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00869}00869         ds-\/>\mbox{\hyperlink{structath__desc_afb5cf4d509d14f297a86658dee42b65a}{ds\_hw}}[2] = \_\_bswap32(ds-\/>\mbox{\hyperlink{structath__desc_afb5cf4d509d14f297a86658dee42b65a}{ds\_hw}}[2]);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00870}00870         ds-\/>\mbox{\hyperlink{structath__desc_afb5cf4d509d14f297a86658dee42b65a}{ds\_hw}}[3] = \_\_bswap32(ds-\/>\mbox{\hyperlink{structath__desc_afb5cf4d509d14f297a86658dee42b65a}{ds\_hw}}[3]);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00871}00871 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00872}00872 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00873}00873 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00874}00874 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00875}00875 \textcolor{comment}{ * Processing of HW TX descriptor.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00876}00876 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00877}00877 \mbox{\hyperlink{ah_8h_a064b8990700c1dbc7801f3eb616153b0}{HAL\_STATUS}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00878}\mbox{\hyperlink{ar5212_8h_ab8e95b0b8f6f71cd48ae025a31cb0351}{00878}} \mbox{\hyperlink{ar5212__xmit_8c_a5cd4fddd0b31885c32a3c29deaf849d5}{ar5212ProcTxDesc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah,}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00879}00879         \textcolor{keyword}{struct} \mbox{\hyperlink{structath__desc}{ath\_desc}} *ds, \textcolor{keyword}{struct} \mbox{\hyperlink{structath__tx__status}{ath\_tx\_status}} *ts)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00880}00880 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00881}00881         \textcolor{keyword}{struct }\mbox{\hyperlink{structar5212__desc}{ar5212\_desc}} *ads = \mbox{\hyperlink{ar5212desc_8h_a29508f239eb7b82a930fa5cea335bde7}{AR5212DESC}}(ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00882}00882 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00883}00883 \textcolor{preprocessor}{\#ifdef AH\_NEED\_DESC\_SWAP}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00884}00884         \textcolor{keywordflow}{if} ((ads-\/>ds\_txstatus1 \& \_\_bswap32(\mbox{\hyperlink{ar5210desc_8h_ab1a00f9999ec2a58392a8f45c7662ce9}{AR\_Done}})) == 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00885}00885                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_a064b8990700c1dbc7801f3eb616153b0acaa7335a11773abac3db0afec8188f6d}{HAL\_EINPROGRESS}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00886}00886 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00887}00887         ar5212SwapTxDesc(ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00888}00888 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00889}00889         \textcolor{keywordflow}{if} ((ads-\/>ds\_txstatus1 \& \mbox{\hyperlink{ar5210desc_8h_ab1a00f9999ec2a58392a8f45c7662ce9}{AR\_Done}}) == 0)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00890}00890                 \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_a064b8990700c1dbc7801f3eb616153b0acaa7335a11773abac3db0afec8188f6d}{HAL\_EINPROGRESS}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00891}00891 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00892}00892 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00893}00893         \textcolor{comment}{/* Update software copies of the HW status */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00894}00894         ts-\/>\mbox{\hyperlink{structath__tx__status_a8a151d6b63d81c406f9787b1b6906257}{ts\_seqnum}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_txstatus1, \mbox{\hyperlink{ar5210desc_8h_afbf41a0ab58a01e137f8d79422726ae8}{AR\_SeqNum}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00895}00895         ts-\/>\mbox{\hyperlink{structath__tx__status_a606c8c45bfde7e74fe360f91ab8b4713}{ts\_tstamp}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_txstatus0, \mbox{\hyperlink{ar5210desc_8h_ac3246169d36b9bf631ea8b3c770f6da3}{AR\_SendTimestamp}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00896}00896         ts-\/>\mbox{\hyperlink{structath__tx__status_a3be802c2fc7fe8cde6f01c241cf074df}{ts\_status}} = 0;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00897}00897         \textcolor{keywordflow}{if} ((ads-\/>ds\_txstatus0 \& \mbox{\hyperlink{ar5210desc_8h_acaa58a79de80a48fe20d2320e0a1307e}{AR\_FrmXmitOK}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00898}00898                 \textcolor{keywordflow}{if} (ads-\/>ds\_txstatus0 \& \mbox{\hyperlink{ar5210desc_8h_a030e9b79fcb57fee2ce1043277c34328}{AR\_ExcessiveRetries}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00899}00899                         ts-\/>\mbox{\hyperlink{structath__tx__status_a3be802c2fc7fe8cde6f01c241cf074df}{ts\_status}} |= \mbox{\hyperlink{ah__desc_8h_acba41f0f336b5ba89a7306d6852e7335}{HAL\_TXERR\_XRETRY}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00900}00900                 \textcolor{keywordflow}{if} (ads-\/>ds\_txstatus0 \& \mbox{\hyperlink{ar5210desc_8h_ae49d101f9273bb54c61e5efddd211378}{AR\_Filtered}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00901}00901                         ts-\/>\mbox{\hyperlink{structath__tx__status_a3be802c2fc7fe8cde6f01c241cf074df}{ts\_status}} |= \mbox{\hyperlink{ah__desc_8h_a2250f73d15062f322113511e86534a12}{HAL\_TXERR\_FILT}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00902}00902                 \textcolor{keywordflow}{if} (ads-\/>ds\_txstatus0 \& \mbox{\hyperlink{ar5210desc_8h_ada4af6d71aaa6cf9e89fea4a7b55d84b}{AR\_FIFOUnderrun}})}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00903}00903                         ts-\/>\mbox{\hyperlink{structath__tx__status_a3be802c2fc7fe8cde6f01c241cf074df}{ts\_status}} |= \mbox{\hyperlink{ah__desc_8h_ae1b6746022ea87cea9c2f5f8755e7ce9}{HAL\_TXERR\_FIFO}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00904}00904         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00905}00905         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00906}00906 \textcolor{comment}{         * Extract the transmit rate used and mark the rate as}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00907}00907 \textcolor{comment}{         * ``alternate'' if it wasn't the series 0 rate.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00908}00908 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00909}00909         ts-\/>\mbox{\hyperlink{structath__tx__status_a6414e76ee42849d9c775e5b7efed2a53}{ts\_finaltsi}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_txstatus1, \mbox{\hyperlink{ar5212desc_8h_a965e856313953d0055983b7bb22de979}{AR\_FinalTSIndex}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00910}00910         \textcolor{keywordflow}{switch} (ts-\/>\mbox{\hyperlink{structath__tx__status_a6414e76ee42849d9c775e5b7efed2a53}{ts\_finaltsi}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00911}00911         \textcolor{keywordflow}{case} 0:}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00912}00912                 ts-\/>\mbox{\hyperlink{structath__tx__status_acbfd562a5bb486876e1d296828384413}{ts\_rate}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl3, \mbox{\hyperlink{ar5212desc_8h_af8475f5adb3ec0c06631ac3f394eb857}{AR\_XmitRate0}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00913}00913                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00914}00914         \textcolor{keywordflow}{case} 1:}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00915}00915                 ts-\/>\mbox{\hyperlink{structath__tx__status_acbfd562a5bb486876e1d296828384413}{ts\_rate}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl3, \mbox{\hyperlink{ar5212desc_8h_a3c7a898b5c8de453ee8a61b823175585}{AR\_XmitRate1}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00916}00916                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00917}00917         \textcolor{keywordflow}{case} 2:}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00918}00918                 ts-\/>\mbox{\hyperlink{structath__tx__status_acbfd562a5bb486876e1d296828384413}{ts\_rate}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl3, \mbox{\hyperlink{ar5212desc_8h_ae3659762e1c0db681c2bfa9b1bf2cd6b}{AR\_XmitRate2}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00919}00919                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00920}00920         \textcolor{keywordflow}{case} 3:}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00921}00921                 ts-\/>\mbox{\hyperlink{structath__tx__status_acbfd562a5bb486876e1d296828384413}{ts\_rate}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl3, \mbox{\hyperlink{ar5212desc_8h_a1675e4a8cb0177a4e69ce161f7a40be3}{AR\_XmitRate3}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00922}00922                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00923}00923         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00924}00924         ts-\/>\mbox{\hyperlink{structath__tx__status_a5cf37fa33680ff87c51f11de9ff051be}{ts\_rssi}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_txstatus1, \mbox{\hyperlink{ar5210desc_8h_a97318ae3046b095e41249ea46107025f}{AR\_AckSigStrength}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00925}00925         ts-\/>\mbox{\hyperlink{structath__tx__status_adc509ad815f94461c5fb13d58637347b}{ts\_shortretry}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_txstatus0, \mbox{\hyperlink{ar5212desc_8h_a3b84be455f581253f8c1f3aa5850d6eb}{AR\_RTSFailCnt}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00926}00926         ts-\/>\mbox{\hyperlink{structath__tx__status_a7325eee2cd2c393a0549c97d6f65bf34}{ts\_longretry}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_txstatus0, \mbox{\hyperlink{ar5212desc_8h_a157249045810fd7a7c7650a4cbe260f4}{AR\_DataFailCnt}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00927}00927         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00928}00928 \textcolor{comment}{         * The retry count has the number of un-\/acked tries for the}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00929}00929 \textcolor{comment}{         * final series used.  When doing multi-\/rate retry we must}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00930}00930 \textcolor{comment}{         * fixup the retry count by adding in the try counts for}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00931}00931 \textcolor{comment}{         * each series that was fully-\/processed.  Beware that this}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00932}00932 \textcolor{comment}{         * takes values from the try counts in the final descriptor.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00933}00933 \textcolor{comment}{         * These are not required by the hardware.  We assume they}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00934}00934 \textcolor{comment}{         * are placed there by the driver as otherwise we have no}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00935}00935 \textcolor{comment}{         * access and the driver can't do the calculation because it}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00936}00936 \textcolor{comment}{         * doesn't know the descriptor format.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00937}00937 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00938}00938         \textcolor{keywordflow}{switch} (ts-\/>\mbox{\hyperlink{structath__tx__status_a6414e76ee42849d9c775e5b7efed2a53}{ts\_finaltsi}}) \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00939}00939         \textcolor{keywordflow}{case} 3: ts-\/>\mbox{\hyperlink{structath__tx__status_a7325eee2cd2c393a0549c97d6f65bf34}{ts\_longretry}} += \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl2, \mbox{\hyperlink{ar5212desc_8h_a2df50d22784656b3878eef6f71995258}{AR\_XmitDataTries2}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00940}00940         \textcolor{keywordflow}{case} 2: ts-\/>\mbox{\hyperlink{structath__tx__status_a7325eee2cd2c393a0549c97d6f65bf34}{ts\_longretry}} += \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl2, \mbox{\hyperlink{ar5212desc_8h_a4b758eebd78af61c1d395f4c02759a51}{AR\_XmitDataTries1}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00941}00941         \textcolor{keywordflow}{case} 1: ts-\/>\mbox{\hyperlink{structath__tx__status_a7325eee2cd2c393a0549c97d6f65bf34}{ts\_longretry}} += \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl2, \mbox{\hyperlink{ar5212desc_8h_afda09fead5a22dca0f2eeb4c8aaccc63}{AR\_XmitDataTries0}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00942}00942         \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00943}00943         ts-\/>\mbox{\hyperlink{structath__tx__status_ab83f086667f1b37f1531ae9a9b3450ca}{ts\_virtcol}} = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_txstatus0, \mbox{\hyperlink{ar5211desc_8h_a11e23baae44c55af125d2b0340738fa6}{AR\_VirtCollCnt}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00944}00944         ts-\/>\mbox{\hyperlink{structath__tx__status_a848a3d075da3c31bb0844aadd3e86fb8}{ts\_antenna}} = (ads-\/>ds\_txstatus1 \& \mbox{\hyperlink{ar5212desc_8h_ab399e16eb1005300cfee6838e7f23392}{AR\_XmitAtenna}} ? 2 : 1);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00945}00945 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00946}00946         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_a064b8990700c1dbc7801f3eb616153b0a6eb724a07061d89a4a2052744e5a3632}{HAL\_OK}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00947}00947 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00948}00948 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00949}00949 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00950}00950 \textcolor{comment}{ * Determine which tx queues need interrupt servicing.}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00951}00951 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00952}00952 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00953}\mbox{\hyperlink{ar5212_8h_a07a0e7db2fb1b48e9b213f7ec54d76b1}{00953}} \mbox{\hyperlink{ar5212__xmit_8c_a6dc0431f0105743c9bffc4bee9af7ddb}{ar5212GetTxIntrQueue}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, uint32\_t *txqs)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00954}00954 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00955}00955         \textcolor{keyword}{struct }\mbox{\hyperlink{structath__hal__5212}{ath\_hal\_5212}} *ahp = \mbox{\hyperlink{ar5212_8h_ab645c6d1aebbc11b13cd2c76c922fab2}{AH5212}}(ah);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00956}00956         *txqs \&= ahp-\/>\mbox{\hyperlink{structath__hal__5212_aed5215e2b1156cf000a0218eba93c517}{ah\_intrTxqs}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00957}00957         ahp-\/>\mbox{\hyperlink{structath__hal__5212_aed5215e2b1156cf000a0218eba93c517}{ah\_intrTxqs}} \&= \string~(*txqs);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00958}00958 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00959}00959 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00960}00960 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00961}00961 \textcolor{comment}{ * Retrieve the rate table from the given TX completion descriptor}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00962}00962 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00963}00963 \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39a}{HAL\_BOOL}}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00964}\mbox{\hyperlink{ar5212_8h_a226687a88604181988be7bdf06731a08}{00964}} \mbox{\hyperlink{ar5212__xmit_8c_a226687a88604181988be7bdf06731a08}{ar5212GetTxCompletionRates}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structath__desc}{ath\_desc}} *ds0, \textcolor{keywordtype}{int} *rates, \textcolor{keywordtype}{int} *tries)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00965}00965 \{ }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00966}00966         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structar5212__desc}{ar5212\_desc}} *ads = \mbox{\hyperlink{ar5212desc_8h_a84c2d8b8a3d996c6cac4f19489d1834f}{AR5212DESC\_CONST}}(ds0);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00967}00967 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00968}00968         rates[0] = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl3, \mbox{\hyperlink{ar5212desc_8h_af8475f5adb3ec0c06631ac3f394eb857}{AR\_XmitRate0}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00969}00969         rates[1] = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl3, \mbox{\hyperlink{ar5212desc_8h_a3c7a898b5c8de453ee8a61b823175585}{AR\_XmitRate1}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00970}00970         rates[2] = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl3, \mbox{\hyperlink{ar5212desc_8h_ae3659762e1c0db681c2bfa9b1bf2cd6b}{AR\_XmitRate2}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00971}00971         rates[3] = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl3, \mbox{\hyperlink{ar5212desc_8h_a1675e4a8cb0177a4e69ce161f7a40be3}{AR\_XmitRate3}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00972}00972 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00973}00973         tries[0] = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl2, \mbox{\hyperlink{ar5212desc_8h_afda09fead5a22dca0f2eeb4c8aaccc63}{AR\_XmitDataTries0}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00974}00974         tries[1] = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl2, \mbox{\hyperlink{ar5212desc_8h_a4b758eebd78af61c1d395f4c02759a51}{AR\_XmitDataTries1}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00975}00975         tries[2] = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl2, \mbox{\hyperlink{ar5212desc_8h_a2df50d22784656b3878eef6f71995258}{AR\_XmitDataTries2}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00976}00976         tries[3] = \mbox{\hyperlink{ah__internal_8h_a3cb92725e12650d7447b06c9db39aac9}{MS}}(ads-\/>ds\_ctl2, \mbox{\hyperlink{ar5212desc_8h_adc5c7288eaf40168548a79f253c390e1}{AR\_XmitDataTries3}});}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00977}00977 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00978}00978         \textcolor{keywordflow}{return} \mbox{\hyperlink{ah_8h_ae8793e83d29537653565625006f5c39aadc898cbb91e577b40c005576c51e8fdb}{AH\_TRUE}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00979}00979 \}  }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00980}00980 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00981}00981 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00982}\mbox{\hyperlink{ar5212_8h_a1931f89aa9012747c0b1c1e199fcafdb}{00982}} \mbox{\hyperlink{ar5212__xmit_8c_a1931f89aa9012747c0b1c1e199fcafdb}{ar5212SetTxDescLink}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keywordtype}{void} *ds, uint32\_t link)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00983}00983 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00984}00984         \textcolor{keyword}{struct }\mbox{\hyperlink{structar5212__desc}{ar5212\_desc}} *ads = \mbox{\hyperlink{ar5212desc_8h_a29508f239eb7b82a930fa5cea335bde7}{AR5212DESC}}(ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00985}00985 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00986}00986         ads-\/>\mbox{\hyperlink{structar5212__desc_a035fd58f9794c9d267058dc6eb5d368b}{ds\_link}} = link;}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00987}00987 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00988}00988 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00989}00989 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00990}\mbox{\hyperlink{ar5212_8h_acef6163e19a82f020ed11b67f37572dc}{00990}} \mbox{\hyperlink{ar5212__xmit_8c_acef6163e19a82f020ed11b67f37572dc}{ar5212GetTxDescLink}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keywordtype}{void} *ds, uint32\_t *link)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00991}00991 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00992}00992         \textcolor{keyword}{struct }\mbox{\hyperlink{structar5212__desc}{ar5212\_desc}} *ads = \mbox{\hyperlink{ar5212desc_8h_a29508f239eb7b82a930fa5cea335bde7}{AR5212DESC}}(ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00993}00993 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00994}00994         *link = ads-\/>\mbox{\hyperlink{structar5212__desc_a035fd58f9794c9d267058dc6eb5d368b}{ds\_link}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00995}00995 \}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00996}00996 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00997}00997 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00998}\mbox{\hyperlink{ar5212_8h_a2b80af2c2f0f80b2c241968b10593b45}{00998}} \mbox{\hyperlink{ar5212__xmit_8c_a2b80af2c2f0f80b2c241968b10593b45}{ar5212GetTxDescLinkPtr}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structath__hal}{ath\_hal}} *ah, \textcolor{keywordtype}{void} *ds, uint32\_t **linkptr)}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l00999}00999 \{}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l01000}01000         \textcolor{keyword}{struct }\mbox{\hyperlink{structar5212__desc}{ar5212\_desc}} *ads = \mbox{\hyperlink{ar5212desc_8h_a29508f239eb7b82a930fa5cea335bde7}{AR5212DESC}}(ds);}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l01001}01001 }
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l01002}01002         *linkptr = \&ads-\/>\mbox{\hyperlink{structar5212__desc_a035fd58f9794c9d267058dc6eb5d368b}{ds\_link}};}
\DoxyCodeLine{\Hypertarget{ar5212__xmit_8c_source_l01003}01003 \}}

\end{DoxyCode}
