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