GNU Linux-libre 4.14.290-gnu1
[releases.git] / drivers / staging / rtlwifi / halmac / halmac_tx_desc_nic.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2016  Realtek Corporation.
4  *
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.
8  *
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
12  * more details.
13  *
14  * The full GNU General Public License is included in this distribution in the
15  * file called LICENSE.
16  *
17  * Contact Information:
18  * wlanfae <wlanfae@realtek.com>
19  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20  * Hsinchu 300, Taiwan.
21  *
22  * Larry Finger <Larry.Finger@lwfinger.net>
23  *
24  *****************************************************************************/
25 #ifndef _HALMAC_TX_DESC_NIC_H_
26 #define _HALMAC_TX_DESC_NIC_H_
27
28 /*TXDESC_WORD0*/
29
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)
34
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)
41
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)
46
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)
51
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)
68
69 /*TXDESC_WORD1*/
70
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)
107
108 /*TXDESC_WORD2*/
109
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)
114
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)
118
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
131 #endif
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)
160
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)
165
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)
169
170 /*TXDESC_WORD3*/
171
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)
191
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)
195
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)
221
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)
226
227 /*TXDESC_WORD4*/
228
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)
261
262 /*TXDESC_WORD5*/
263
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)
268
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)
279
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)
284
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)
289
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)
297
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)
302
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)
307
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)
312
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)
323
324 /*TXDESC_WORD6*/
325
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)
354
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
364 #endif
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)
369
370 /*TXDESC_WORD7*/
371
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)
376
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)
384
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)
397
398 /*TXDESC_WORD8*/
399
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)
429
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)
434
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)
439
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)
448
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)
453
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)
464
465 /*TXDESC_WORD9*/
466
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)
475
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)
491
492 /*WORD10*/
493
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)
505
506 #endif