1 /******************************************************************************
3 * Copyright(c) 2016 Realtek Corporation.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * The full GNU General Public License is included in this distribution in the
15 * file called LICENSE.
17 * Contact Information:
18 * wlanfae <wlanfae@realtek.com>
19 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20 * Hsinchu 300, Taiwan.
22 * Larry Finger <Larry.Finger@lwfinger.net>
24 *****************************************************************************/
25 #ifndef _HALMAC_TX_DESC_NIC_H_
26 #define _HALMAC_TX_DESC_NIC_H_
30 #define SET_TX_DESC_DISQSELSEQ(__tx_desc, __value) \
31 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 31, 1, __value)
32 #define GET_TX_DESC_DISQSELSEQ(__tx_desc) \
33 LE_BITS_TO_4BYTE(__tx_desc + 0x00, 31, 1)
35 #define SET_TX_DESC_GF(__tx_desc, __value) \
36 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 30, 1, __value)
37 #define GET_TX_DESC_GF(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 30, 1)
38 #define SET_TX_DESC_NO_ACM(__tx_desc, __value) \
39 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 29, 1, __value)
40 #define GET_TX_DESC_NO_ACM(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 29, 1)
42 #define SET_TX_DESC_BCNPKT_TSF_CTRL(__tx_desc, __value) \
43 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 28, 1, __value)
44 #define GET_TX_DESC_BCNPKT_TSF_CTRL(__tx_desc) \
45 LE_BITS_TO_4BYTE(__tx_desc + 0x00, 28, 1)
47 #define SET_TX_DESC_AMSDU_PAD_EN(__tx_desc, __value) \
48 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 27, 1, __value)
49 #define GET_TX_DESC_AMSDU_PAD_EN(__tx_desc) \
50 LE_BITS_TO_4BYTE(__tx_desc + 0x00, 27, 1)
52 #define SET_TX_DESC_LS(__tx_desc, __value) \
53 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 26, 1, __value)
54 #define GET_TX_DESC_LS(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 26, 1)
55 #define SET_TX_DESC_HTC(__tx_desc, __value) \
56 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 25, 1, __value)
57 #define GET_TX_DESC_HTC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 25, 1)
58 #define SET_TX_DESC_BMC(__tx_desc, __value) \
59 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 24, 1, __value)
60 #define GET_TX_DESC_BMC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 24, 1)
61 #define SET_TX_DESC_OFFSET(__tx_desc, __value) \
62 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 16, 8, __value)
63 #define GET_TX_DESC_OFFSET(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 16, 8)
64 #define SET_TX_DESC_TXPKTSIZE(__tx_desc, __value) \
65 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 0, 16, __value)
66 #define GET_TX_DESC_TXPKTSIZE(__tx_desc) \
67 LE_BITS_TO_4BYTE(__tx_desc + 0x00, 0, 16)
71 #define SET_TX_DESC_MOREDATA(__tx_desc, __value) \
72 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 29, 1, __value)
73 #define GET_TX_DESC_MOREDATA(__tx_desc) \
74 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 29, 1)
75 #define SET_TX_DESC_PKT_OFFSET(__tx_desc, __value) \
76 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 24, 5, __value)
77 #define GET_TX_DESC_PKT_OFFSET(__tx_desc) \
78 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 24, 5)
79 #define SET_TX_DESC_SEC_TYPE(__tx_desc, __value) \
80 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 22, 2, __value)
81 #define GET_TX_DESC_SEC_TYPE(__tx_desc) \
82 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 22, 2)
83 #define SET_TX_DESC_EN_DESC_ID(__tx_desc, __value) \
84 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 21, 1, __value)
85 #define GET_TX_DESC_EN_DESC_ID(__tx_desc) \
86 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 21, 1)
87 #define SET_TX_DESC_RATE_ID(__tx_desc, __value) \
88 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 16, 5, __value)
89 #define GET_TX_DESC_RATE_ID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x04, 16, 5)
90 #define SET_TX_DESC_PIFS(__tx_desc, __value) \
91 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 15, 1, __value)
92 #define GET_TX_DESC_PIFS(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x04, 15, 1)
93 #define SET_TX_DESC_LSIG_TXOP_EN(__tx_desc, __value) \
94 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 14, 1, __value)
95 #define GET_TX_DESC_LSIG_TXOP_EN(__tx_desc) \
96 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 14, 1)
97 #define SET_TX_DESC_RD_NAV_EXT(__tx_desc, __value) \
98 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 13, 1, __value)
99 #define GET_TX_DESC_RD_NAV_EXT(__tx_desc) \
100 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 13, 1)
101 #define SET_TX_DESC_QSEL(__tx_desc, __value) \
102 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 8, 5, __value)
103 #define GET_TX_DESC_QSEL(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x04, 8, 5)
104 #define SET_TX_DESC_MACID(__tx_desc, __value) \
105 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 0, 7, __value)
106 #define GET_TX_DESC_MACID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x04, 0, 7)
110 #define SET_TX_DESC_HW_AES_IV(__tx_desc, __value) \
111 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 31, 1, __value)
112 #define GET_TX_DESC_HW_AES_IV(__tx_desc) \
113 LE_BITS_TO_4BYTE(__tx_desc + 0x08, 31, 1)
115 #define SET_TX_DESC_FTM_EN(__tx_desc, __value) \
116 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 30, 1, __value)
117 #define GET_TX_DESC_FTM_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 30, 1)
119 #define SET_TX_DESC_G_ID(__tx_desc, __value) \
120 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 24, 6, __value)
121 #define GET_TX_DESC_G_ID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 24, 6)
122 #define SET_TX_DESC_BT_NULL(__tx_desc, __value) \
123 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 23, 1, __value)
124 #define GET_TX_DESC_BT_NULL(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 23, 1)
125 #define SET_TX_DESC_AMPDU_DENSITY(__tx_desc, __value) \
126 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 20, 3, __value)
127 #define GET_TX_DESC_AMPDU_DENSITY(__tx_desc) \
128 LE_BITS_TO_4BYTE(__tx_desc + 0x08, 20, 3)
129 #ifdef SET_TX_DESC_SPE_RPT
130 #undef SET_TX_DESC_SPE_RPT
132 #define SET_TX_DESC_SPE_RPT(__tx_desc, __value) \
133 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 19, 1, __value)
134 #define GET_TX_DESC_SPE_RPT(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 19, 1)
135 #define SET_TX_DESC_RAW(__tx_desc, __value) \
136 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 18, 1, __value)
137 #define GET_TX_DESC_RAW(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 18, 1)
138 #define SET_TX_DESC_MOREFRAG(__tx_desc, __value) \
139 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 17, 1, __value)
140 #define GET_TX_DESC_MOREFRAG(__tx_desc) \
141 LE_BITS_TO_4BYTE(__tx_desc + 0x08, 17, 1)
142 #define SET_TX_DESC_BK(__tx_desc, __value) \
143 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 16, 1, __value)
144 #define GET_TX_DESC_BK(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 16, 1)
145 #define SET_TX_DESC_NULL_1(__tx_desc, __value) \
146 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 15, 1, __value)
147 #define GET_TX_DESC_NULL_1(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 15, 1)
148 #define SET_TX_DESC_NULL_0(__tx_desc, __value) \
149 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 14, 1, __value)
150 #define GET_TX_DESC_NULL_0(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 14, 1)
151 #define SET_TX_DESC_RDG_EN(__tx_desc, __value) \
152 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 13, 1, __value)
153 #define GET_TX_DESC_RDG_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 13, 1)
154 #define SET_TX_DESC_AGG_EN(__tx_desc, __value) \
155 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 12, 1, __value)
156 #define GET_TX_DESC_AGG_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 12, 1)
157 #define SET_TX_DESC_CCA_RTS(__tx_desc, __value) \
158 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 10, 2, __value)
159 #define GET_TX_DESC_CCA_RTS(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 10, 2)
161 #define SET_TX_DESC_TRI_FRAME(__tx_desc, __value) \
162 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 9, 1, __value)
163 #define GET_TX_DESC_TRI_FRAME(__tx_desc) \
164 LE_BITS_TO_4BYTE(__tx_desc + 0x08, 9, 1)
166 #define SET_TX_DESC_P_AID(__tx_desc, __value) \
167 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 0, 9, __value)
168 #define GET_TX_DESC_P_AID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 0, 9)
172 #define SET_TX_DESC_AMPDU_MAX_TIME(__tx_desc, __value) \
173 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 24, 8, __value)
174 #define GET_TX_DESC_AMPDU_MAX_TIME(__tx_desc) \
175 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 24, 8)
176 #define SET_TX_DESC_NDPA(__tx_desc, __value) \
177 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 22, 2, __value)
178 #define GET_TX_DESC_NDPA(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 22, 2)
179 #define SET_TX_DESC_MAX_AGG_NUM(__tx_desc, __value) \
180 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 17, 5, __value)
181 #define GET_TX_DESC_MAX_AGG_NUM(__tx_desc) \
182 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 17, 5)
183 #define SET_TX_DESC_USE_MAX_TIME_EN(__tx_desc, __value) \
184 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 16, 1, __value)
185 #define GET_TX_DESC_USE_MAX_TIME_EN(__tx_desc) \
186 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 16, 1)
187 #define SET_TX_DESC_NAVUSEHDR(__tx_desc, __value) \
188 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 15, 1, __value)
189 #define GET_TX_DESC_NAVUSEHDR(__tx_desc) \
190 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 15, 1)
192 #define SET_TX_DESC_CHK_EN(__tx_desc, __value) \
193 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 14, 1, __value)
194 #define GET_TX_DESC_CHK_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 14, 1)
196 #define SET_TX_DESC_HW_RTS_EN(__tx_desc, __value) \
197 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 13, 1, __value)
198 #define GET_TX_DESC_HW_RTS_EN(__tx_desc) \
199 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 13, 1)
200 #define SET_TX_DESC_RTSEN(__tx_desc, __value) \
201 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 12, 1, __value)
202 #define GET_TX_DESC_RTSEN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 12, 1)
203 #define SET_TX_DESC_CTS2SELF(__tx_desc, __value) \
204 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 11, 1, __value)
205 #define GET_TX_DESC_CTS2SELF(__tx_desc) \
206 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 11, 1)
207 #define SET_TX_DESC_DISDATAFB(__tx_desc, __value) \
208 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 10, 1, __value)
209 #define GET_TX_DESC_DISDATAFB(__tx_desc) \
210 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 10, 1)
211 #define SET_TX_DESC_DISRTSFB(__tx_desc, __value) \
212 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 9, 1, __value)
213 #define GET_TX_DESC_DISRTSFB(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 9, 1)
214 #define SET_TX_DESC_USE_RATE(__tx_desc, __value) \
215 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 8, 1, __value)
216 #define GET_TX_DESC_USE_RATE(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 8, 1)
217 #define SET_TX_DESC_HW_SSN_SEL(__tx_desc, __value) \
218 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 6, 2, __value)
219 #define GET_TX_DESC_HW_SSN_SEL(__tx_desc) \
220 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 6, 2)
222 #define SET_TX_DESC_WHEADER_LEN(__tx_desc, __value) \
223 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 0, 5, __value)
224 #define GET_TX_DESC_WHEADER_LEN(__tx_desc) \
225 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 0, 5)
229 #define SET_TX_DESC_PCTS_MASK_IDX(__tx_desc, __value) \
230 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 30, 2, __value)
231 #define GET_TX_DESC_PCTS_MASK_IDX(__tx_desc) \
232 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 30, 2)
233 #define SET_TX_DESC_PCTS_EN(__tx_desc, __value) \
234 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 29, 1, __value)
235 #define GET_TX_DESC_PCTS_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x10, 29, 1)
236 #define SET_TX_DESC_RTSRATE(__tx_desc, __value) \
237 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 24, 5, __value)
238 #define GET_TX_DESC_RTSRATE(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x10, 24, 5)
239 #define SET_TX_DESC_RTS_DATA_RTY_LMT(__tx_desc, __value) \
240 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 18, 6, __value)
241 #define GET_TX_DESC_RTS_DATA_RTY_LMT(__tx_desc) \
242 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 18, 6)
243 #define SET_TX_DESC_RTY_LMT_EN(__tx_desc, __value) \
244 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 17, 1, __value)
245 #define GET_TX_DESC_RTY_LMT_EN(__tx_desc) \
246 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 17, 1)
247 #define SET_TX_DESC_RTS_RTY_LOWEST_RATE(__tx_desc, __value) \
248 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 13, 4, __value)
249 #define GET_TX_DESC_RTS_RTY_LOWEST_RATE(__tx_desc) \
250 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 13, 4)
251 #define SET_TX_DESC_DATA_RTY_LOWEST_RATE(__tx_desc, __value) \
252 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 8, 5, __value)
253 #define GET_TX_DESC_DATA_RTY_LOWEST_RATE(__tx_desc) \
254 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 8, 5)
255 #define SET_TX_DESC_TRY_RATE(__tx_desc, __value) \
256 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 7, 1, __value)
257 #define GET_TX_DESC_TRY_RATE(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x10, 7, 1)
258 #define SET_TX_DESC_DATARATE(__tx_desc, __value) \
259 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 0, 7, __value)
260 #define GET_TX_DESC_DATARATE(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x10, 0, 7)
264 #define SET_TX_DESC_POLLUTED(__tx_desc, __value) \
265 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 31, 1, __value)
266 #define GET_TX_DESC_POLLUTED(__tx_desc) \
267 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 31, 1)
269 #define SET_TX_DESC_TXPWR_OFSET(__tx_desc, __value) \
270 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 28, 3, __value)
271 #define GET_TX_DESC_TXPWR_OFSET(__tx_desc) \
272 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 28, 3)
273 #define SET_TX_DESC_TX_ANT(__tx_desc, __value) \
274 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 24, 4, __value)
275 #define GET_TX_DESC_TX_ANT(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 24, 4)
276 #define SET_TX_DESC_PORT_ID(__tx_desc, __value) \
277 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 21, 3, __value)
278 #define GET_TX_DESC_PORT_ID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 21, 3)
280 #define SET_TX_DESC_MULTIPLE_PORT(__tx_desc, __value) \
281 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 18, 3, __value)
282 #define GET_TX_DESC_MULTIPLE_PORT(__tx_desc) \
283 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 18, 3)
285 #define SET_TX_DESC_SIGNALING_TAPKT_EN(__tx_desc, __value) \
286 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 17, 1, __value)
287 #define GET_TX_DESC_SIGNALING_TAPKT_EN(__tx_desc) \
288 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 17, 1)
290 #define SET_TX_DESC_RTS_SC(__tx_desc, __value) \
291 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 13, 4, __value)
292 #define GET_TX_DESC_RTS_SC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 13, 4)
293 #define SET_TX_DESC_RTS_SHORT(__tx_desc, __value) \
294 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 12, 1, __value)
295 #define GET_TX_DESC_RTS_SHORT(__tx_desc) \
296 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 12, 1)
298 #define SET_TX_DESC_VCS_STBC(__tx_desc, __value) \
299 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 10, 2, __value)
300 #define GET_TX_DESC_VCS_STBC(__tx_desc) \
301 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 10, 2)
303 #define SET_TX_DESC_DATA_STBC(__tx_desc, __value) \
304 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 8, 2, __value)
305 #define GET_TX_DESC_DATA_STBC(__tx_desc) \
306 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 8, 2)
308 #define SET_TX_DESC_DATA_LDPC(__tx_desc, __value) \
309 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 7, 1, __value)
310 #define GET_TX_DESC_DATA_LDPC(__tx_desc) \
311 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 7, 1)
313 #define SET_TX_DESC_DATA_BW(__tx_desc, __value) \
314 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 5, 2, __value)
315 #define GET_TX_DESC_DATA_BW(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 5, 2)
316 #define SET_TX_DESC_DATA_SHORT(__tx_desc, __value) \
317 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 4, 1, __value)
318 #define GET_TX_DESC_DATA_SHORT(__tx_desc) \
319 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 4, 1)
320 #define SET_TX_DESC_DATA_SC(__tx_desc, __value) \
321 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 0, 4, __value)
322 #define GET_TX_DESC_DATA_SC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 0, 4)
326 #define SET_TX_DESC_ANTSEL_D(__tx_desc, __value) \
327 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 30, 2, __value)
328 #define GET_TX_DESC_ANTSEL_D(__tx_desc) \
329 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 30, 2)
330 #define SET_TX_DESC_ANT_MAPD(__tx_desc, __value) \
331 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 28, 2, __value)
332 #define GET_TX_DESC_ANT_MAPD(__tx_desc) \
333 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 28, 2)
334 #define SET_TX_DESC_ANT_MAPC(__tx_desc, __value) \
335 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 26, 2, __value)
336 #define GET_TX_DESC_ANT_MAPC(__tx_desc) \
337 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 26, 2)
338 #define SET_TX_DESC_ANT_MAPB(__tx_desc, __value) \
339 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 24, 2, __value)
340 #define GET_TX_DESC_ANT_MAPB(__tx_desc) \
341 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 24, 2)
342 #define SET_TX_DESC_ANT_MAPA(__tx_desc, __value) \
343 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 22, 2, __value)
344 #define GET_TX_DESC_ANT_MAPA(__tx_desc) \
345 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 22, 2)
346 #define SET_TX_DESC_ANTSEL_C(__tx_desc, __value) \
347 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 20, 2, __value)
348 #define GET_TX_DESC_ANTSEL_C(__tx_desc) \
349 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 20, 2)
350 #define SET_TX_DESC_ANTSEL_B(__tx_desc, __value) \
351 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 18, 2, __value)
352 #define GET_TX_DESC_ANTSEL_B(__tx_desc) \
353 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 18, 2)
355 #define SET_TX_DESC_ANTSEL_A(__tx_desc, __value) \
356 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 16, 2, __value)
357 #define GET_TX_DESC_ANTSEL_A(__tx_desc) \
358 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 16, 2)
359 #define SET_TX_DESC_MBSSID(__tx_desc, __value) \
360 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 12, 4, __value)
361 #define GET_TX_DESC_MBSSID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x18, 12, 4)
362 #ifdef SET_TX_DESC_SW_DEFINE
363 #undef SET_TX_DESC_SW_DEFINE
365 #define SET_TX_DESC_SW_DEFINE(__tx_desc, __value) \
366 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 0, 12, __value)
367 #define GET_TX_DESC_SW_DEFINE(__tx_desc) \
368 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 0, 12)
372 #define SET_TX_DESC_DMA_TXAGG_NUM(__tx_desc, __value) \
373 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 24, 8, __value)
374 #define GET_TX_DESC_DMA_TXAGG_NUM(__tx_desc) \
375 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 24, 8)
377 #define SET_TX_DESC_FINAL_DATA_RATE(__tx_desc, __value) \
378 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 24, 8, __value)
379 #define GET_TX_DESC_FINAL_DATA_RATE(__tx_desc) \
380 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 24, 8)
381 #define SET_TX_DESC_NTX_MAP(__tx_desc, __value) \
382 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 20, 4, __value)
383 #define GET_TX_DESC_NTX_MAP(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 20, 4)
385 #define SET_TX_DESC_TX_BUFF_SIZE(__tx_desc, __value) \
386 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 0, 16, __value)
387 #define GET_TX_DESC_TX_BUFF_SIZE(__tx_desc) \
388 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 0, 16)
389 #define SET_TX_DESC_TXDESC_CHECKSUM(__tx_desc, __value) \
390 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 0, 16, __value)
391 #define GET_TX_DESC_TXDESC_CHECKSUM(__tx_desc) \
392 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 0, 16)
393 #define SET_TX_DESC_TIMESTAMP(__tx_desc, __value) \
394 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 0, 16, __value)
395 #define GET_TX_DESC_TIMESTAMP(__tx_desc) \
396 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 0, 16)
400 #define SET_TX_DESC_TXWIFI_CP(__tx_desc, __value) \
401 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 31, 1, __value)
402 #define GET_TX_DESC_TXWIFI_CP(__tx_desc) \
403 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 31, 1)
404 #define SET_TX_DESC_MAC_CP(__tx_desc, __value) \
405 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 30, 1, __value)
406 #define GET_TX_DESC_MAC_CP(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 30, 1)
407 #define SET_TX_DESC_STW_PKTRE_DIS(__tx_desc, __value) \
408 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 29, 1, __value)
409 #define GET_TX_DESC_STW_PKTRE_DIS(__tx_desc) \
410 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 29, 1)
411 #define SET_TX_DESC_STW_RB_DIS(__tx_desc, __value) \
412 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 28, 1, __value)
413 #define GET_TX_DESC_STW_RB_DIS(__tx_desc) \
414 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 28, 1)
415 #define SET_TX_DESC_STW_RATE_DIS(__tx_desc, __value) \
416 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 27, 1, __value)
417 #define GET_TX_DESC_STW_RATE_DIS(__tx_desc) \
418 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 27, 1)
419 #define SET_TX_DESC_STW_ANT_DIS(__tx_desc, __value) \
420 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 26, 1, __value)
421 #define GET_TX_DESC_STW_ANT_DIS(__tx_desc) \
422 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 26, 1)
423 #define SET_TX_DESC_STW_EN(__tx_desc, __value) \
424 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 25, 1, __value)
425 #define GET_TX_DESC_STW_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 25, 1)
426 #define SET_TX_DESC_SMH_EN(__tx_desc, __value) \
427 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 24, 1, __value)
428 #define GET_TX_DESC_SMH_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 24, 1)
430 #define SET_TX_DESC_TAILPAGE_L(__tx_desc, __value) \
431 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 24, 8, __value)
432 #define GET_TX_DESC_TAILPAGE_L(__tx_desc) \
433 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 24, 8)
435 #define SET_TX_DESC_SDIO_DMASEQ(__tx_desc, __value) \
436 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 16, 8, __value)
437 #define GET_TX_DESC_SDIO_DMASEQ(__tx_desc) \
438 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 16, 8)
440 #define SET_TX_DESC_NEXTHEADPAGE_L(__tx_desc, __value) \
441 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 16, 8, __value)
442 #define GET_TX_DESC_NEXTHEADPAGE_L(__tx_desc) \
443 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 16, 8)
444 #define SET_TX_DESC_EN_HWSEQ(__tx_desc, __value) \
445 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 15, 1, __value)
446 #define GET_TX_DESC_EN_HWSEQ(__tx_desc) \
447 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 15, 1)
449 #define SET_TX_DESC_EN_HWEXSEQ(__tx_desc, __value) \
450 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 14, 1, __value)
451 #define GET_TX_DESC_EN_HWEXSEQ(__tx_desc) \
452 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 14, 1)
454 #define SET_TX_DESC_DATA_RC(__tx_desc, __value) \
455 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 8, 6, __value)
456 #define GET_TX_DESC_DATA_RC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 8, 6)
457 #define SET_TX_DESC_BAR_RTY_TH(__tx_desc, __value) \
458 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 6, 2, __value)
459 #define GET_TX_DESC_BAR_RTY_TH(__tx_desc) \
460 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 6, 2)
461 #define SET_TX_DESC_RTS_RC(__tx_desc, __value) \
462 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 0, 6, __value)
463 #define GET_TX_DESC_RTS_RC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 0, 6)
467 #define SET_TX_DESC_TAILPAGE_H(__tx_desc, __value) \
468 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 28, 4, __value)
469 #define GET_TX_DESC_TAILPAGE_H(__tx_desc) \
470 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 28, 4)
471 #define SET_TX_DESC_NEXTHEADPAGE_H(__tx_desc, __value) \
472 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 24, 4, __value)
473 #define GET_TX_DESC_NEXTHEADPAGE_H(__tx_desc) \
474 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 24, 4)
476 #define SET_TX_DESC_SW_SEQ(__tx_desc, __value) \
477 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 12, 12, __value)
478 #define GET_TX_DESC_SW_SEQ(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x24, 12, 12)
479 #define SET_TX_DESC_TXBF_PATH(__tx_desc, __value) \
480 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 11, 1, __value)
481 #define GET_TX_DESC_TXBF_PATH(__tx_desc) \
482 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 11, 1)
483 #define SET_TX_DESC_PADDING_LEN(__tx_desc, __value) \
484 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 0, 11, __value)
485 #define GET_TX_DESC_PADDING_LEN(__tx_desc) \
486 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 0, 11)
487 #define SET_TX_DESC_GROUP_BIT_IE_OFFSET(__tx_desc, __value) \
488 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 0, 8, __value)
489 #define GET_TX_DESC_GROUP_BIT_IE_OFFSET(__tx_desc) \
490 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 0, 8)
494 #define SET_TX_DESC_MU_DATARATE(__tx_desc, __value) \
495 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x28, 8, 8, __value)
496 #define GET_TX_DESC_MU_DATARATE(__tx_desc) \
497 LE_BITS_TO_4BYTE(__tx_desc + 0x28, 8, 8)
498 #define SET_TX_DESC_MU_RC(__tx_desc, __value) \
499 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x28, 4, 4, __value)
500 #define GET_TX_DESC_MU_RC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x28, 4, 4)
501 #define SET_TX_DESC_SND_PKT_SEL(__tx_desc, __value) \
502 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x28, 0, 2, __value)
503 #define GET_TX_DESC_SND_PKT_SEL(__tx_desc) \
504 LE_BITS_TO_4BYTE(__tx_desc + 0x28, 0, 2)