\hypertarget{r12a__tx_8c_source}{}\doxysection{r12a\+\_\+tx.\+c}
\label{r12a__tx_8c_source}\index{dev/rtwn/rtl8812a/r12a\_tx.c@{dev/rtwn/rtl8812a/r12a\_tx.c}}
\mbox{\hyperlink{r12a__tx_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00002}00002 \textcolor{comment}{ * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00003}00003 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00005}00005 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00006}00006 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00007}00007 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00008}00008 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00009}00009 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00010}00010 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00011}00011 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00012}00012 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00013}00013 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00014}00014 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00015}00015 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00016}00016 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00017}00017 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00018}00018 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00019}00019 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00020}00020 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00021}00021 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00022}00022 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00023}00023 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00024}00024 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00025}00025 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00026}00026 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00027}00027 \textcolor{preprocessor}{\#include <sys/cdefs.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00028}\mbox{\hyperlink{r12a__tx_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{00028}} \mbox{\hyperlink{r12a__tx_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\_\_FBSDID}}(\textcolor{stringliteral}{"{}\$FreeBSD\$"{}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00029}00029 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00030}00030 \textcolor{preprocessor}{\#include "{}opt\_wlan.h"{}}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00031}00031 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00032}00032 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00033}00033 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00034}00034 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00035}00035 \textcolor{preprocessor}{\#include <sys/mbuf.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00036}00036 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00037}00037 \textcolor{preprocessor}{\#include <sys/socket.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00038}00038 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00039}00039 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00040}00040 \textcolor{preprocessor}{\#include <sys/queue.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00041}00041 \textcolor{preprocessor}{\#include <sys/taskqueue.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/bus.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/endian.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <sys/linker.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00045}00045 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <net/if.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <net/ethernet.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <net/if\_media.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00049}00049 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <net80211/ieee80211\_var.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <net80211/ieee80211\_radiotap.h>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00052}00052 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__rtwnreg_8h}{dev/rtwn/if\_rtwnreg.h}}>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__rtwnvar_8h}{dev/rtwn/if\_rtwnvar.h}}>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__rtwn__ridx_8h}{dev/rtwn/if\_rtwn\_ridx.h}}>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00057}00057 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00058}00058 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{r12a_8h}{dev/rtwn/rtl8812a/r12a.h}}>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00059}00059 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{r12a__tx__desc_8h}{dev/rtwn/rtl8812a/r12a\_tx\_desc.h}}>}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00060}00060 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00061}00061 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00062}\mbox{\hyperlink{r12a__tx_8c_ad57e18a56f539ddcd2c49312364a12fe}{00062}} \mbox{\hyperlink{r12a__tx_8c_ad57e18a56f539ddcd2c49312364a12fe}{r12a\_get\_primary\_channel}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keyword}{struct} ieee80211\_channel *c)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00063}00063 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00064}00064         \textcolor{comment}{/* XXX 80 MHz */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00065}00065         \textcolor{keywordflow}{if} (IEEE80211\_IS\_CHAN\_HT40U(c))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00066}00066                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{r12a__tx__desc_8h_a36debd5c8c6f4f2ce77cab5c7201e4bb}{R12A\_TXDW5\_PRIM\_CHAN\_20\_80\_2}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00067}00067         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00068}00068                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{r12a__tx__desc_8h_a3b19bbce3c893fc0ab1c009f7019e7c0}{R12A\_TXDW5\_PRIM\_CHAN\_20\_80\_3}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00069}00069 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00070}00070 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00071}00071 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00072}\mbox{\hyperlink{r12a__tx_8c_a254725c959d5314dcd8a5ab23673d6b9}{00072}} \mbox{\hyperlink{r12a__tx_8c_a254725c959d5314dcd8a5ab23673d6b9}{r12a\_tx\_set\_ht40}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keywordtype}{void} *buf, \textcolor{keyword}{struct} ieee80211\_node *ni)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00073}00073 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00074}00074         \textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}} = (\textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *)buf;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00075}00075 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00076}00076         \textcolor{comment}{/* XXX 80 Mhz */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00077}00077         \textcolor{keywordflow}{if} (ni-\/>ni\_chan != IEEE80211\_CHAN\_ANYC \&\&}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00078}00078             IEEE80211\_IS\_CHAN\_HT40(ni-\/>ni\_chan)) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00079}00079                 \textcolor{keywordtype}{int} prim\_chan;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00080}00080 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00081}00081                 prim\_chan = \mbox{\hyperlink{r12a__tx_8c_ad57e18a56f539ddcd2c49312364a12fe}{r12a\_get\_primary\_channel}}(sc, ni-\/>ni\_chan);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00082}00082                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw5 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW5\_DATA\_BW,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00083}00083                     \mbox{\hyperlink{r12a__tx__desc_8h_ae748604c2ab4e7c020885175d5d3f007}{R12A\_TXDW5\_DATA\_BW40}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00084}00084                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw5 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW5\_DATA\_PRIM\_CHAN,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00085}00085                     prim\_chan));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00086}00086         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00087}00087 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00088}00088 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00089}00089 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00090}\mbox{\hyperlink{r12a__tx_8c_a68cff78af865190797a2239e6ad4ee00}{00090}} \mbox{\hyperlink{r12a__tx_8c_a68cff78af865190797a2239e6ad4ee00}{r12a\_tx\_protection}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keyword}{struct} \mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}},}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00091}00091     \textcolor{keyword}{enum} ieee80211\_protmode mode, uint8\_t ridx)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00092}00092 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00093}00093         \textcolor{keyword}{struct }ieee80211com *ic = \&sc-\/>\mbox{\hyperlink{structrtwn__softc_aae46e0994e804dc7e69e812d38c88b39}{sc\_ic}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00094}00094         uint8\_t rate;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00095}00095 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00096}00096         \textcolor{keywordflow}{switch} (mode) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00097}00097         \textcolor{keywordflow}{case} IEEE80211\_PROT\_CTSONLY:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00098}00098                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw3 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a01864a3f55a1889a72890c3c444752a0}{R12A\_TXDW3\_CTS2SELF}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00099}00099                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00100}00100         \textcolor{keywordflow}{case} IEEE80211\_PROT\_RTSCTS:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00101}00101                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw3 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a6ec7046a1bcdccdd59b0d2266c796168}{R12A\_TXDW3\_RTSEN}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00102}00102                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00103}00103         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00104}00104                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00105}00105         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00106}00106 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00107}00107         \textcolor{keywordflow}{if} (mode == IEEE80211\_PROT\_CTSONLY ||}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00108}00108             mode == IEEE80211\_PROT\_RTSCTS) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00109}00109                 \textcolor{keywordflow}{if} (ridx >= \mbox{\hyperlink{if__rtwn__ridx_8h_a617c8c83619ce94c43a534865f10531b}{RTWN\_RIDX\_HT\_MCS}}(0))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00110}00110                         rate = \mbox{\hyperlink{if__rtwn__ridx_8h_aebce5ea2c71fe97ae341932ad5f959c3}{rtwn\_ctl\_mcsrate}}(ic-\/>ic\_rt, ridx);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00111}00111                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00112}00112                         rate = ieee80211\_ctl\_rate(ic-\/>ic\_rt, \mbox{\hyperlink{if__rtwn__ridx_8h_aef28acbbdce48ddb5b5335bde45dbc59}{ridx2rate}}[ridx]);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00113}00113                 ridx = \mbox{\hyperlink{if__rtwn__ridx_8h_a1dd2ad7427b75984b6edb8c0019a573b}{rate2ridx}}(IEEE80211\_RV(rate));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00114}00114 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00115}00115                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_RTSRATE, ridx));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00116}00116                 \textcolor{comment}{/* RTS rate fallback limit (max). */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00117}00117                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_RTSRATE\_FB\_LMT, 0xf));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00118}00118 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00119}00119                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__rtwn__ridx_8h_add176ae9c989f8f034b83a627eea5f07}{RTWN\_RATE\_IS\_CCK}}(ridx) \&\& ridx != \mbox{\hyperlink{if__rtwn__ridx_8h_abd6495e9a25732b0c70c125136d30b9a}{RTWN\_RIDX\_CCK1}} \&\&}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00120}00120                     (ic-\/>ic\_flags \& IEEE80211\_F\_SHPREAMBLE))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00121}00121                         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw5 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_abefc0cd454d84ab60d1173bbf302c223}{R12A\_TXDW5\_RTS\_SHORT}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00122}00122         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00123}00123 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00124}00124 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00125}00125 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00126}\mbox{\hyperlink{r12a__tx_8c_a6a7a3683c97b544bddc36f6e9d0d379a}{00126}} \mbox{\hyperlink{r12a__tx_8c_a6a7a3683c97b544bddc36f6e9d0d379a}{r12a\_tx\_raid}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keyword}{struct} \mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}},}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00127}00127     \textcolor{keyword}{struct} ieee80211\_node *ni, \textcolor{keywordtype}{int} ismcast)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00128}00128 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00129}00129         \textcolor{keyword}{struct }ieee80211com *ic = \&sc-\/>\mbox{\hyperlink{structrtwn__softc_aae46e0994e804dc7e69e812d38c88b39}{sc\_ic}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00130}00130         \textcolor{keyword}{struct }ieee80211vap *vap = ni-\/>ni\_vap;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00131}00131         \textcolor{keyword}{struct }ieee80211\_channel *chan;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00132}00132         \textcolor{keyword}{enum} ieee80211\_phymode mode;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00133}00133         uint8\_t raid;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00134}00134 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00135}00135         chan = (ni-\/>ni\_chan != IEEE80211\_CHAN\_ANYC) ?}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00136}00136                 ni-\/>ni\_chan : ic-\/>ic\_curchan;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00137}00137         mode = ieee80211\_chan2mode(chan);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00138}00138 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00139}00139         \textcolor{comment}{/* NB: group addressed frames are done at 11bg rates for now */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00140}00140         \textcolor{keywordflow}{if} (ismcast || !(ni-\/>ni\_flags \& IEEE80211\_NODE\_HT)) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00141}00141                 \textcolor{keywordflow}{switch} (mode) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00142}00142                 \textcolor{keywordflow}{case} IEEE80211\_MODE\_11A:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00143}00143                 \textcolor{keywordflow}{case} IEEE80211\_MODE\_11B:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00144}00144                 \textcolor{keywordflow}{case} IEEE80211\_MODE\_11G:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00145}00145                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00146}00146                 \textcolor{keywordflow}{case} IEEE80211\_MODE\_11NA:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00147}00147                         mode = IEEE80211\_MODE\_11A;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00148}00148                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00149}00149                 \textcolor{keywordflow}{case} IEEE80211\_MODE\_11NG:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00150}00150                         mode = IEEE80211\_MODE\_11G;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00151}00151                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00152}00152                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00153}00153                         device\_printf(sc-\/>\mbox{\hyperlink{structrtwn__softc_a299d18a16d08213b975a1585651583f9}{sc\_dev}}, \textcolor{stringliteral}{"{}unknown mode(1) \%d!\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00154}00154                             ic-\/>ic\_curmode);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00155}00155                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00156}00156                 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00157}00157         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00158}00158 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00159}00159         \textcolor{keywordflow}{switch} (mode) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00160}00160         \textcolor{keywordflow}{case} IEEE80211\_MODE\_11A:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00161}00161                 raid = \mbox{\hyperlink{r12a__tx__desc_8h_a56f7886fb4bb1f3000b174abacfd4724}{R12A\_RAID\_11G}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00162}00162                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00163}00163         \textcolor{keywordflow}{case} IEEE80211\_MODE\_11B:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00164}00164                 raid = \mbox{\hyperlink{r12a__tx__desc_8h_a8a0bcc2084c369182048f5c9ed84fc51}{R12A\_RAID\_11B}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00165}00165                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00166}00166         \textcolor{keywordflow}{case} IEEE80211\_MODE\_11G:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00167}00167                 \textcolor{keywordflow}{if} (vap-\/>iv\_flags \& IEEE80211\_F\_PUREG)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00168}00168                         raid = \mbox{\hyperlink{r12a__tx__desc_8h_a56f7886fb4bb1f3000b174abacfd4724}{R12A\_RAID\_11G}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00169}00169                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00170}00170                         raid = \mbox{\hyperlink{r12a__tx__desc_8h_a19f09f741b13f526b8a7272037bc3a00}{R12A\_RAID\_11BG}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00171}00171                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00172}00172         \textcolor{keywordflow}{case} IEEE80211\_MODE\_11NA:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00173}00173                 \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structrtwn__softc_af7790f131c031f825b4f17a258912af0}{ntxchains}} == 1)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00174}00174                         raid = \mbox{\hyperlink{r12a__tx__desc_8h_ad1be454c19153d2d8f5c55a02d796128}{R12A\_RAID\_11GN\_1}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00175}00175                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00176}00176                         raid = \mbox{\hyperlink{r12a__tx__desc_8h_a1ece18028e8f8e2abf003e2e14c6aa3a}{R12A\_RAID\_11GN\_2}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00177}00177                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00178}00178         \textcolor{keywordflow}{case} IEEE80211\_MODE\_11NG:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00179}00179                 \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structrtwn__softc_af7790f131c031f825b4f17a258912af0}{ntxchains}} == 1) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00180}00180                         \textcolor{keywordflow}{if} (IEEE80211\_IS\_CHAN\_HT40(chan))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00181}00181                                 raid = \mbox{\hyperlink{r12a__tx__desc_8h_a707bef67893dd55d67bed6260c2b5716}{R12A\_RAID\_11BGN\_1\_40}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00182}00182                         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00183}00183                                 raid = \mbox{\hyperlink{r12a__tx__desc_8h_abccb9951820f5581513dbb77d694a4d0}{R12A\_RAID\_11BGN\_1}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00184}00184                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00185}00185                         \textcolor{keywordflow}{if} (IEEE80211\_IS\_CHAN\_HT40(chan))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00186}00186                                 raid = \mbox{\hyperlink{r12a__tx__desc_8h_ab2cddb9bfbdb8712558e768fe8f6d0f7}{R12A\_RAID\_11BGN\_2\_40}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00187}00187                         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00188}00188                                 raid = \mbox{\hyperlink{r12a__tx__desc_8h_a964df3adc7a4ced6702bb42070bbb0a1}{R12A\_RAID\_11BGN\_2}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00189}00189                 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00190}00190                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00191}00191         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00192}00192                 \textcolor{comment}{/* TODO: 80 MHz / 11ac */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00193}00193                 device\_printf(sc-\/>\mbox{\hyperlink{structrtwn__softc_a299d18a16d08213b975a1585651583f9}{sc\_dev}}, \textcolor{stringliteral}{"{}unknown mode(2) \%d!\(\backslash\)n"{}}, mode);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00194}00194                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00195}00195         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00196}00196 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00197}00197         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw1 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW1\_RAID, raid));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00198}00198 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00199}00199 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00200}00200 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00201}\mbox{\hyperlink{r12a__tx_8c_abc4fd737594a36eff7660010d1991eb7}{00201}} \mbox{\hyperlink{r12a__tx_8c_abc4fd737594a36eff7660010d1991eb7}{r12a\_tx\_set\_sgi}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keywordtype}{void} *buf, \textcolor{keyword}{struct} ieee80211\_node *ni)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00202}00202 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00203}00203         \textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}} = (\textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *)buf;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00204}00204         \textcolor{keyword}{struct }ieee80211vap *vap = ni-\/>ni\_vap;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00205}00205 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00206}00206         \textcolor{keywordflow}{if} ((vap-\/>iv\_flags\_ht \& IEEE80211\_FHT\_SHORTGI20) \&\&     \textcolor{comment}{/* HT20 */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00207}00207             (ni-\/>ni\_htcap \& IEEE80211\_HTCAP\_SHORTGI20))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00208}00208                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw5 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a3934655dbed717262f1e5115e8ba2cfa}{R12A\_TXDW5\_DATA\_SHORT}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00209}00209         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (ni-\/>ni\_chan != IEEE80211\_CHAN\_ANYC \&\&          \textcolor{comment}{/* HT40 */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00210}00210             IEEE80211\_IS\_CHAN\_HT40(ni-\/>ni\_chan) \&\&}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00211}00211             (ni-\/>ni\_htcap \& IEEE80211\_HTCAP\_SHORTGI40) \&\&}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00212}00212             (vap-\/>iv\_flags\_ht \& IEEE80211\_FHT\_SHORTGI40))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00213}00213                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw5 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a3934655dbed717262f1e5115e8ba2cfa}{R12A\_TXDW5\_DATA\_SHORT}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00214}00214 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00215}00215 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00216}00216 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00217}\mbox{\hyperlink{r12a__tx_8c_ae53da3c95a4df3aaa88f3e3679bb6cb1}{00217}} \mbox{\hyperlink{r12a__tx_8c_ae53da3c95a4df3aaa88f3e3679bb6cb1}{r12a\_tx\_set\_ldpc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keyword}{struct} \mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}},}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00218}00218     \textcolor{keyword}{struct} ieee80211\_node *ni)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00219}00219 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00220}00220         \textcolor{keyword}{struct }ieee80211vap *vap = ni-\/>ni\_vap;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00221}00221 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00222}00222         \textcolor{keywordflow}{if} ((vap-\/>iv\_flags\_ht \& IEEE80211\_FHT\_LDPC\_TX) \&\&}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00223}00223             (ni-\/>ni\_htcap \& IEEE80211\_HTCAP\_LDPC))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00224}00224                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw5 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a0e54320252521d30ef862e71d2281f9f}{R12A\_TXDW5\_DATA\_LDPC}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00225}00225 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00226}00226 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00227}00227 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00228}\mbox{\hyperlink{r12a_8h_ae66fa9163a338607edc11c788ce0491b}{00228}} \mbox{\hyperlink{r12a__tx_8c_ab76212e2bc2d8f54eb74c28a46dcd685}{r12a\_fill\_tx\_desc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keyword}{struct} ieee80211\_node *ni,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00229}00229     \textcolor{keyword}{struct} mbuf *m, \textcolor{keywordtype}{void} *buf, uint8\_t ridx, \textcolor{keywordtype}{int} maxretry)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00230}00230 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00231}00231         \textcolor{keyword}{struct }ieee80211com *ic = \&sc-\/>\mbox{\hyperlink{structrtwn__softc_aae46e0994e804dc7e69e812d38c88b39}{sc\_ic}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00232}00232         \textcolor{keyword}{struct }ieee80211vap *vap = ni-\/>ni\_vap;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00233}00233         \textcolor{keyword}{struct }\mbox{\hyperlink{structrtwn__vap}{rtwn\_vap}} *uvp = \mbox{\hyperlink{if__rtwnvar_8h_a810b532061f3d4141ff660e15451a39e}{RTWN\_VAP}}(\mbox{\hyperlink{structrtwn__vap_a5e6d82b4fbdf185444d5170c7e2a2de7}{vap}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00234}00234         \textcolor{keyword}{struct }ieee80211\_frame *wh;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00235}00235         \textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00236}00236         \textcolor{keyword}{enum} ieee80211\_protmode prot;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00237}00237         uint8\_t type, tid, qos, qsel;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00238}00238         \textcolor{keywordtype}{int} hasqos, ismcast, macid;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00239}00239 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00240}00240         wh = mtod(m, \textcolor{keyword}{struct} ieee80211\_frame *);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00241}00241         type = wh-\/>i\_fc[0] \& IEEE80211\_FC0\_TYPE\_MASK;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00242}00242         hasqos = IEEE80211\_QOS\_HAS\_SEQ(wh);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00243}00243         ismcast = IEEE80211\_IS\_MULTICAST(wh-\/>i\_addr1);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00244}00244 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00245}00245         \textcolor{comment}{/* Select TX ring for this frame. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00246}00246         \textcolor{keywordflow}{if} (hasqos) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00247}00247                 qos = ((\textcolor{keyword}{const} \textcolor{keyword}{struct }ieee80211\_qosframe *)wh)-\/>i\_qos[0];}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00248}00248                 tid = qos \& IEEE80211\_QOS\_TID;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00249}00249         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00250}00250                 qos = 0;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00251}00251                 tid = 0;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00252}00252         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00253}00253 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00254}00254         \textcolor{comment}{/* Fill Tx descriptor. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00255}00255         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}} = (\textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *)buf;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00256}00256         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>flags0 |= \mbox{\hyperlink{r12a__tx__desc_8h_a0b19b69a44870c4f0306f8b6c10f4e02}{R12A\_FLAGS0\_LSG}} | \mbox{\hyperlink{r12a__tx__desc_8h_ab6d8896339448c630882e4f11938e07a}{R12A\_FLAGS0\_FSG}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00257}00257         \textcolor{keywordflow}{if} (ismcast)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00258}00258                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>flags0 |= \mbox{\hyperlink{r12a__tx__desc_8h_a25ca785ad7caf600e7bce2e9de429c1c}{R12A\_FLAGS0\_BMCAST}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00259}00259 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00260}00260         \textcolor{keywordflow}{if} (!ismcast) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00261}00261                 \textcolor{comment}{/* Unicast frame, check if an ACK is expected. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00262}00262                 \textcolor{keywordflow}{if} (!qos || (qos \& IEEE80211\_QOS\_ACKPOLICY) !=}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00263}00263                     IEEE80211\_QOS\_ACKPOLICY\_NOACK) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00264}00264                         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 = htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a85d1a1618b7727a4ec4c4415eb9c4e5b}{R12A\_TXDW4\_RETRY\_LMT\_ENA}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00265}00265                         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_RETRY\_LMT,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00266}00266                             maxretry));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00267}00267                 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00268}00268 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00269}00269                 \textcolor{keyword}{struct }\mbox{\hyperlink{structrtwn__node}{rtwn\_node}} *un = \mbox{\hyperlink{if__rtwnvar_8h_a72a901b76d8ce25147e6f4db23260147}{RTWN\_NODE}}(\mbox{\hyperlink{structrtwn__node_a2192f2a0a416199662c186301c7b8eec}{ni}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00270}00270                 macid = un-\/>\mbox{\hyperlink{structrtwn__node_a2943d37b7e361ebe0f78314df7afa560}{id}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00271}00271 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00272}00272                 \textcolor{keywordflow}{if} (type == IEEE80211\_FC0\_TYPE\_DATA) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00273}00273                         qsel = tid \% \mbox{\hyperlink{r92c__tx__desc_8h_a2ec3b053057951b1dbc4f4e218167321}{RTWN\_MAX\_TID}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00274}00274 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00275}00275                         \textcolor{keywordflow}{if} (m-\/>m\_flags \& M\_AMPDU\_MPDU) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00276}00276                                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw2 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a4f3c2260a7a7a6237a3527293fc30bcd}{R12A\_TXDW2\_AGGEN}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00277}00277                                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw2 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW2\_AMPDU\_DEN,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00278}00278                                     vap-\/>iv\_ampdu\_density));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00279}00279                                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw3 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW3\_MAX\_AGG,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00280}00280                                     0x1f));     \textcolor{comment}{/* XXX */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00281}00281                         \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00282}00282                                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw2 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_acc96c4f889d6fb5e5e1a2269e7aa4fa5}{R12A\_TXDW2\_AGGBK}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00283}00283 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00284}00284                         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structrtwn__softc_a9204a934cbe9d7b913c5982547e5da6e}{sc\_ratectl}} == \mbox{\hyperlink{if__rtwnvar_8h_a99fb83031ce9923c84392b4e92f956b5a50bca7109d0efa7461cfdaf8fb83c476}{RTWN\_RATECTL\_NET80211}}) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00285}00285                                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw2 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_af4b462a284460518107bc71fd970c1b5}{R12A\_TXDW2\_SPE\_RPT}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00286}00286                                 sc-\/>\mbox{\hyperlink{structrtwn__softc_aeb64a4554b00dc0d6ea21801392b44a4}{sc\_tx\_n\_active}}++;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00287}00287                         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00288}00288 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00289}00289                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__rtwn__ridx_8h_add176ae9c989f8f034b83a627eea5f07}{RTWN\_RATE\_IS\_CCK}}(ridx) \&\& ridx != \mbox{\hyperlink{if__rtwn__ridx_8h_abd6495e9a25732b0c70c125136d30b9a}{RTWN\_RIDX\_CCK1}} \&\&}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00290}00290                             (ic-\/>ic\_flags \& IEEE80211\_F\_SHPREAMBLE))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00291}00291                                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw5 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a3934655dbed717262f1e5115e8ba2cfa}{R12A\_TXDW5\_DATA\_SHORT}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00292}00292 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00293}00293                         prot = IEEE80211\_PROT\_NONE;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00294}00294                         \textcolor{keywordflow}{if} (ridx >= \mbox{\hyperlink{if__rtwn__ridx_8h_a617c8c83619ce94c43a534865f10531b}{RTWN\_RIDX\_HT\_MCS}}(0)) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00295}00295                                 \mbox{\hyperlink{r12a__tx_8c_a254725c959d5314dcd8a5ab23673d6b9}{r12a\_tx\_set\_ht40}}(sc, \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}, \mbox{\hyperlink{structrtwn__node_a2192f2a0a416199662c186301c7b8eec}{ni}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00296}00296                                 \mbox{\hyperlink{r12a__tx_8c_abc4fd737594a36eff7660010d1991eb7}{r12a\_tx\_set\_sgi}}(sc, \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}, \mbox{\hyperlink{structrtwn__node_a2192f2a0a416199662c186301c7b8eec}{ni}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00297}00297                                 \mbox{\hyperlink{r12a__tx_8c_ae53da3c95a4df3aaa88f3e3679bb6cb1}{r12a\_tx\_set\_ldpc}}(sc, \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}, \mbox{\hyperlink{structrtwn__node_a2192f2a0a416199662c186301c7b8eec}{ni}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00298}00298                                 prot = ic-\/>ic\_htprotmode;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00299}00299                         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (ic-\/>ic\_flags \& IEEE80211\_F\_USEPROT)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00300}00300                                 prot = ic-\/>ic\_protmode;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00301}00301 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00302}00302                         \textcolor{comment}{/* XXX fix last comparison for A-\/MSDU (in net80211) */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00303}00303                         \textcolor{comment}{/* XXX A-\/MPDU? */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00304}00304                         \textcolor{keywordflow}{if} (m-\/>m\_pkthdr.len + IEEE80211\_CRC\_LEN >}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00305}00305                             vap-\/>iv\_rtsthreshold \&\&}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00306}00306                             vap-\/>iv\_rtsthreshold != IEEE80211\_RTS\_MAX)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00307}00307                                 prot = IEEE80211\_PROT\_RTSCTS;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00308}00308 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00309}00309                         \textcolor{keywordflow}{if} (prot != IEEE80211\_PROT\_NONE)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00310}00310                                 \mbox{\hyperlink{r12a__tx_8c_a68cff78af865190797a2239e6ad4ee00}{r12a\_tx\_protection}}(sc, \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}, prot, ridx);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00311}00311                 \} \textcolor{keywordflow}{else}  \textcolor{comment}{/* IEEE80211\_FC0\_TYPE\_MGT */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00312}00312                         qsel = \mbox{\hyperlink{r12a__tx__desc_8h_a181a0b5435977f7c6574da2d3e39eaaa}{R12A\_TXDW1\_QSEL\_MGNT}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00313}00313         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00314}00314                 macid = \mbox{\hyperlink{if__rtwnvar_8h_a580343034aea8de49909df7709a3398b}{RTWN\_MACID\_BC}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00315}00315                 qsel = \mbox{\hyperlink{r12a__tx__desc_8h_a181a0b5435977f7c6574da2d3e39eaaa}{R12A\_TXDW1\_QSEL\_MGNT}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00316}00316         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00317}00317 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00318}00318         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw1 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW1\_QSEL, qsel));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00319}00319         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw1 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW1\_MACID, macid));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00320}00320         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_DATARATE, ridx));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00321}00321         \textcolor{comment}{/* Data rate fallback limit (max). */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00322}00322         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_DATARATE\_FB\_LMT, 0x1f));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00323}00323         \textcolor{comment}{/* XXX recheck for non-\/21au */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00324}00324         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw6 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R21A\_TXDW6\_MBSSID, uvp-\/>\mbox{\hyperlink{structrtwn__vap_ae32a62614d60f1f8471d4a5e89b34230}{id}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00325}00325         \mbox{\hyperlink{r12a__tx_8c_a6a7a3683c97b544bddc36f6e9d0d379a}{r12a\_tx\_raid}}(sc, \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}, \mbox{\hyperlink{structrtwn__node_a2192f2a0a416199662c186301c7b8eec}{ni}}, ismcast);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00326}00326 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00327}00327         \textcolor{comment}{/* Force this rate if needed. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00328}00328         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structrtwn__softc_a9204a934cbe9d7b913c5982547e5da6e}{sc\_ratectl}} != \mbox{\hyperlink{if__rtwnvar_8h_a99fb83031ce9923c84392b4e92f956b5ac1cde1453e8075e2360cee297668d4c5}{RTWN\_RATECTL\_FW}})}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00329}00329                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw3 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a4ef749da20976ec04364bff01dc09be3}{R12A\_TXDW3\_DRVRATE}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00330}00330 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00331}00331         \textcolor{keywordflow}{if} (!hasqos) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00332}00332                 \textcolor{comment}{/* Use HW sequence numbering for non-\/QoS frames. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00333}00333                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw8 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_aadd98c98d6c8673dd2fc6f9ea50174a9}{R12A\_TXDW8\_HWSEQ\_EN}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00334}00334                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw3 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW3\_SEQ\_SEL, uvp-\/>\mbox{\hyperlink{structrtwn__vap_ae32a62614d60f1f8471d4a5e89b34230}{id}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00335}00335         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00336}00336                 uint16\_t seqno;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00337}00337 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00338}00338                 \textcolor{keywordflow}{if} (m-\/>m\_flags \& M\_AMPDU\_MPDU) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00339}00339                         seqno = \mbox{\hyperlink{structrtwn__node_a2192f2a0a416199662c186301c7b8eec}{ni}}-\/>ni\_txseqs[tid];}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00340}00340                         \mbox{\hyperlink{structrtwn__node_a2192f2a0a416199662c186301c7b8eec}{ni}}-\/>ni\_txseqs[tid]++;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00341}00341                 \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00342}00342                         seqno = M\_SEQNO\_GET(m) \% IEEE80211\_SEQ\_RANGE;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00343}00343 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00344}00344                 \textcolor{comment}{/* Set sequence number. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00345}00345                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw9 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW9\_SEQ, seqno));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00346}00346         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00347}00347 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00348}00348 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00349}00349 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00350}\mbox{\hyperlink{r12a_8h_a28b2d2bd7a8f5a6a23db456f832422db}{00350}} \mbox{\hyperlink{r12a__tx_8c_a8135615924b2fa70e1c7ef0fb3d2841c}{r12a\_fill\_tx\_desc\_raw}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keyword}{struct} ieee80211\_node *\mbox{\hyperlink{structrtwn__node_a2192f2a0a416199662c186301c7b8eec}{ni}},}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00351}00351     \textcolor{keyword}{struct} mbuf *m, \textcolor{keywordtype}{void} *buf, \textcolor{keyword}{const} \textcolor{keyword}{struct} ieee80211\_bpf\_params *params)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00352}00352 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00353}00353         \textcolor{keyword}{struct }ieee80211vap *vap = ni-\/>ni\_vap;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00354}00354         \textcolor{keyword}{struct }\mbox{\hyperlink{structrtwn__vap}{rtwn\_vap}} *uvp = \mbox{\hyperlink{if__rtwnvar_8h_a810b532061f3d4141ff660e15451a39e}{RTWN\_VAP}}(\mbox{\hyperlink{structrtwn__vap_a5e6d82b4fbdf185444d5170c7e2a2de7}{vap}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00355}00355         \textcolor{keyword}{struct }ieee80211\_frame *wh;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00356}00356         \textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00357}00357         uint8\_t ridx;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00358}00358         \textcolor{keywordtype}{int} ismcast;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00359}00359 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00360}00360         \textcolor{comment}{/* XXX TODO: 11n checks, matching rtwn\_fill\_tx\_desc() */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00361}00361 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00362}00362         wh = mtod(m, \textcolor{keyword}{struct} ieee80211\_frame *);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00363}00363         ismcast = IEEE80211\_IS\_MULTICAST(wh-\/>i\_addr1);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00364}00364         ridx = \mbox{\hyperlink{if__rtwn__ridx_8h_a1dd2ad7427b75984b6edb8c0019a573b}{rate2ridx}}(params-\/>ibp\_rate0);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00365}00365 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00366}00366         \textcolor{comment}{/* Fill Tx descriptor. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00367}00367         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}} = (\textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *)buf;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00368}00368         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>flags0 |= \mbox{\hyperlink{r12a__tx__desc_8h_a0b19b69a44870c4f0306f8b6c10f4e02}{R12A\_FLAGS0\_LSG}} | \mbox{\hyperlink{r12a__tx__desc_8h_ab6d8896339448c630882e4f11938e07a}{R12A\_FLAGS0\_FSG}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00369}00369         \textcolor{keywordflow}{if} (ismcast)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00370}00370                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>flags0 |= \mbox{\hyperlink{r12a__tx__desc_8h_a25ca785ad7caf600e7bce2e9de429c1c}{R12A\_FLAGS0\_BMCAST}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00371}00371 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00372}00372         \textcolor{keywordflow}{if} ((params-\/>ibp\_flags \& IEEE80211\_BPF\_NOACK) == 0) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00373}00373                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 = htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a85d1a1618b7727a4ec4c4415eb9c4e5b}{R12A\_TXDW4\_RETRY\_LMT\_ENA}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00374}00374                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_RETRY\_LMT,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00375}00375                     params-\/>ibp\_try0));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00376}00376         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00377}00377         \textcolor{keywordflow}{if} (params-\/>ibp\_flags \& IEEE80211\_BPF\_RTS)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00378}00378                 \mbox{\hyperlink{r12a__tx_8c_a68cff78af865190797a2239e6ad4ee00}{r12a\_tx\_protection}}(sc, \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}, IEEE80211\_PROT\_RTSCTS, ridx);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00379}00379         \textcolor{keywordflow}{if} (params-\/>ibp\_flags \& IEEE80211\_BPF\_CTS)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00380}00380                 \mbox{\hyperlink{r12a__tx_8c_a68cff78af865190797a2239e6ad4ee00}{r12a\_tx\_protection}}(sc, \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}, IEEE80211\_PROT\_CTSONLY, ridx);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00381}00381 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00382}00382         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw1 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW1\_MACID, \mbox{\hyperlink{if__rtwnvar_8h_a580343034aea8de49909df7709a3398b}{RTWN\_MACID\_BC}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00383}00383         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw1 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW1\_QSEL, \mbox{\hyperlink{r12a__tx__desc_8h_a181a0b5435977f7c6574da2d3e39eaaa}{R12A\_TXDW1\_QSEL\_MGNT}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00384}00384 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00385}00385         \textcolor{comment}{/* Set TX rate index. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00386}00386         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_DATARATE, ridx));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00387}00387         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_DATARATE\_FB\_LMT, 0x1f));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00388}00388         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw6 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R21A\_TXDW6\_MBSSID, uvp-\/>\mbox{\hyperlink{structrtwn__vap_ae32a62614d60f1f8471d4a5e89b34230}{id}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00389}00389         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw3 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a4ef749da20976ec04364bff01dc09be3}{R12A\_TXDW3\_DRVRATE}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00390}00390         \mbox{\hyperlink{r12a__tx_8c_a6a7a3683c97b544bddc36f6e9d0d379a}{r12a\_tx\_raid}}(sc, \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}, ni, ismcast);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00391}00391 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00392}00392         \textcolor{keywordflow}{if} (!IEEE80211\_QOS\_HAS\_SEQ(wh)) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00393}00393                 \textcolor{comment}{/* Use HW sequence numbering for non-\/QoS frames. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00394}00394                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw8 |= htole32(\mbox{\hyperlink{r12a__tx__desc_8h_aadd98c98d6c8673dd2fc6f9ea50174a9}{R12A\_TXDW8\_HWSEQ\_EN}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00395}00395                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw3 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW3\_SEQ\_SEL, uvp-\/>\mbox{\hyperlink{structrtwn__vap_ae32a62614d60f1f8471d4a5e89b34230}{id}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00396}00396         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00397}00397                 \textcolor{comment}{/* Set sequence number. */}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00398}00398                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw9 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW9\_SEQ,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00399}00399                     M\_SEQNO\_GET(m) \% IEEE80211\_SEQ\_RANGE));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00400}00400         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00401}00401 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00402}00402 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00403}00403 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00404}\mbox{\hyperlink{r12a_8h_ad7cffe181359948e7065055f584ae9d3}{00404}} \mbox{\hyperlink{r12a__tx_8c_a74ae5d4f0eef1e5c98ec875c005a1401}{r12a\_fill\_tx\_desc\_null}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keywordtype}{void} *buf, \textcolor{keywordtype}{int} is11b, \textcolor{keywordtype}{int} qos,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00405}00405     \textcolor{keywordtype}{int} \textcolor{keywordtype}{id})}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00406}00406 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00407}00407         \textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}} = (\textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *)buf;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00408}00408 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00409}00409         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>flags0 = \mbox{\hyperlink{r12a__tx__desc_8h_ab6d8896339448c630882e4f11938e07a}{R12A\_FLAGS0\_FSG}} | \mbox{\hyperlink{r12a__tx__desc_8h_a0b19b69a44870c4f0306f8b6c10f4e02}{R12A\_FLAGS0\_LSG}} | \mbox{\hyperlink{r12a__tx__desc_8h_af636d89612d133352eef63b3ef89841c}{R12A\_FLAGS0\_OWN}};}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00410}00410         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw1 = htole32(}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00411}00411             \mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW1\_QSEL, \mbox{\hyperlink{r12a__tx__desc_8h_a181a0b5435977f7c6574da2d3e39eaaa}{R12A\_TXDW1\_QSEL\_MGNT}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00412}00412 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00413}00413         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw3 = htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a4ef749da20976ec04364bff01dc09be3}{R12A\_TXDW3\_DRVRATE}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00414}00414         \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw6 = htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R21A\_TXDW6\_MBSSID, \textcolor{keywordtype}{id}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00415}00415         \textcolor{keywordflow}{if} (is11b) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00416}00416                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 = htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_DATARATE,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00417}00417                     \mbox{\hyperlink{if__rtwn__ridx_8h_abd6495e9a25732b0c70c125136d30b9a}{RTWN\_RIDX\_CCK1}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00418}00418         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00419}00419                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4 = htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW4\_DATARATE,}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00420}00420                     \mbox{\hyperlink{if__rtwn__ridx_8h_af8d4e72858535c7bd63a144522007d2d}{RTWN\_RIDX\_OFDM6}}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00421}00421         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00422}00422 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00423}00423         \textcolor{keywordflow}{if} (!qos) \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00424}00424                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw8 = htole32(\mbox{\hyperlink{r12a__tx__desc_8h_aadd98c98d6c8673dd2fc6f9ea50174a9}{R12A\_TXDW8\_HWSEQ\_EN}});}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00425}00425                 \mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw3 |= htole32(\mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R12A\_TXDW3\_SEQ\_SEL, \textcolor{keywordtype}{id}));}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00426}00426         \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00427}00427 \}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00428}00428 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00429}00429 uint8\_t}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00430}\mbox{\hyperlink{r12a_8h_a9d7381ae934f21358611206133a6cc7f}{00430}} \mbox{\hyperlink{r12a__tx_8c_a5068c16ea3b8cf6a934c947ed41136a3}{r12a\_tx\_radiotap\_flags}}(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *buf)}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00431}00431 \{}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00432}00432         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structr12a__tx__desc}{r12a\_tx\_desc}} *\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}} = buf;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00433}00433         uint8\_t flags, rate;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00434}00434 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00435}00435         \textcolor{keywordflow}{if} (!(\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw5 \& htole32(\mbox{\hyperlink{r12a__tx__desc_8h_a3934655dbed717262f1e5115e8ba2cfa}{R12A\_TXDW5\_DATA\_SHORT}})))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00436}00436                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00437}00437 }
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00438}00438         rate = \mbox{\hyperlink{if__rtwnreg_8h_aa1f710025311c0169fbc5b1296d914b6}{MS}}(le32toh(\mbox{\hyperlink{if__rtwnvar_8h_a32bf980f9ea86441b67b2e1ce4eea343}{txd}}-\/>txdw4), R12A\_TXDW4\_DATARATE);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00439}00439         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__rtwn__ridx_8h_add176ae9c989f8f034b83a627eea5f07}{RTWN\_RATE\_IS\_CCK}}(rate))}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00440}00440                 flags = IEEE80211\_RADIOTAP\_F\_SHORTPRE;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00441}00441         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00442}00442                 flags = IEEE80211\_RADIOTAP\_F\_SHORTGI;}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00443}00443         \textcolor{keywordflow}{return} (flags);}
\DoxyCodeLine{\Hypertarget{r12a__tx_8c_source_l00444}00444 \}}

\end{DoxyCode}
