OSDN Git Service

a6d215fcedaaeeb9ac5051866e0d973ade3658b0
[android-x86/external-kernel-drivers.git] / rtl8821ce / hal / halmac / halmac_tx_desc_ie_ap.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2016 - 2018 Realtek Corporation. All rights reserved.
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  ******************************************************************************/
15
16 #ifndef _HALMAC_TX_DESC_IE_AP_H_
17 #define _HALMAC_TX_DESC_IE_AP_H_
18 #if (HALMAC_8814B_SUPPORT)
19
20 #define IE0_GET_TX_DESC_IE_END(txdesc_ie)                                      \
21         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
22                               0x1, 31)
23 #define IE0_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
24         HALMAC_SET_DESC_FIELD_CLR(                                             \
25                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
26 #define IE0_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
27         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
28                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
29 #define IE0_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
30         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
31                               0x1, 30)
32 #define IE0_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
33         HALMAC_SET_DESC_FIELD_CLR(                                             \
34                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
35 #define IE0_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
36         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
37                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
38 #define IE0_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
39         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
40                               0xf, 24)
41 #define IE0_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
42         HALMAC_SET_DESC_FIELD_CLR(                                             \
43                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
44 #define IE0_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
45         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
46                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
47 #define IE0_GET_TX_DESC_ARFR_TABLE_SEL(txdesc_ie)                              \
48         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
49                               0x1, 19)
50 #define IE0_SET_TX_DESC_ARFR_TABLE_SEL(txdesc_ie, value)                       \
51         HALMAC_SET_DESC_FIELD_CLR(                                             \
52                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 19)
53 #define IE0_SET_TX_DESC_ARFR_TABLE_SEL_NO_CLR(txdesc_ie, value)                \
54         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
55                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 19)
56 #define IE0_GET_TX_DESC_ARFR_HT_EN(txdesc_ie)                                  \
57         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
58                               0x1, 18)
59 #define IE0_SET_TX_DESC_ARFR_HT_EN(txdesc_ie, value)                           \
60         HALMAC_SET_DESC_FIELD_CLR(                                             \
61                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 18)
62 #define IE0_SET_TX_DESC_ARFR_HT_EN_NO_CLR(txdesc_ie, value)                    \
63         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
64                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 18)
65 #define IE0_GET_TX_DESC_ARFR_OFDM_EN(txdesc_ie)                                \
66         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
67                               0x1, 17)
68 #define IE0_SET_TX_DESC_ARFR_OFDM_EN(txdesc_ie, value)                         \
69         HALMAC_SET_DESC_FIELD_CLR(                                             \
70                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 17)
71 #define IE0_SET_TX_DESC_ARFR_OFDM_EN_NO_CLR(txdesc_ie, value)                  \
72         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
73                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 17)
74 #define IE0_GET_TX_DESC_ARFR_CCK_EN(txdesc_ie)                                 \
75         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
76                               0x1, 16)
77 #define IE0_SET_TX_DESC_ARFR_CCK_EN(txdesc_ie, value)                          \
78         HALMAC_SET_DESC_FIELD_CLR(                                             \
79                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 16)
80 #define IE0_SET_TX_DESC_ARFR_CCK_EN_NO_CLR(txdesc_ie, value)                   \
81         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
82                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 16)
83 #define IE0_GET_TX_DESC_HW_RTS_EN(txdesc_ie)                                   \
84         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
85                               0x1, 9)
86 #define IE0_SET_TX_DESC_HW_RTS_EN(txdesc_ie, value)                            \
87         HALMAC_SET_DESC_FIELD_CLR(                                             \
88                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 9)
89 #define IE0_SET_TX_DESC_HW_RTS_EN_NO_CLR(txdesc_ie, value)                     \
90         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
91                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 9)
92 #define IE0_GET_TX_DESC_RTS_EN(txdesc_ie)                                      \
93         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
94                               0x1, 8)
95 #define IE0_SET_TX_DESC_RTS_EN(txdesc_ie, value)                               \
96         HALMAC_SET_DESC_FIELD_CLR(                                             \
97                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 8)
98 #define IE0_SET_TX_DESC_RTS_EN_NO_CLR(txdesc_ie, value)                        \
99         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
100                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 8)
101 #define IE0_GET_TX_DESC_CTS2SELF(txdesc_ie)                                    \
102         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
103                               0x1, 7)
104 #define IE0_SET_TX_DESC_CTS2SELF(txdesc_ie, value)                             \
105         HALMAC_SET_DESC_FIELD_CLR(                                             \
106                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
107 #define IE0_SET_TX_DESC_CTS2SELF_NO_CLR(txdesc_ie, value)                      \
108         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
109                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
110 #define IE0_GET_TX_DESC_RTY_LMT_EN(txdesc_ie)                                  \
111         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
112                               0x1, 6)
113 #define IE0_SET_TX_DESC_RTY_LMT_EN(txdesc_ie, value)                           \
114         HALMAC_SET_DESC_FIELD_CLR(                                             \
115                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
116 #define IE0_SET_TX_DESC_RTY_LMT_EN_NO_CLR(txdesc_ie, value)                    \
117         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
118                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
119 #define IE0_GET_TX_DESC_RTS_SHORT(txdesc_ie)                                   \
120         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
121                               0x1, 5)
122 #define IE0_SET_TX_DESC_RTS_SHORT(txdesc_ie, value)                            \
123         HALMAC_SET_DESC_FIELD_CLR(                                             \
124                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 5)
125 #define IE0_SET_TX_DESC_RTS_SHORT_NO_CLR(txdesc_ie, value)                     \
126         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
127                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 5)
128 #define IE0_GET_TX_DESC_DISDATAFB(txdesc_ie)                                   \
129         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
130                               0x1, 4)
131 #define IE0_SET_TX_DESC_DISDATAFB(txdesc_ie, value)                            \
132         HALMAC_SET_DESC_FIELD_CLR(                                             \
133                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 4)
134 #define IE0_SET_TX_DESC_DISDATAFB_NO_CLR(txdesc_ie, value)                     \
135         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
136                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 4)
137 #define IE0_GET_TX_DESC_DISRTSFB(txdesc_ie)                                    \
138         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
139                               0x1, 3)
140 #define IE0_SET_TX_DESC_DISRTSFB(txdesc_ie, value)                             \
141         HALMAC_SET_DESC_FIELD_CLR(                                             \
142                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
143 #define IE0_SET_TX_DESC_DISRTSFB_NO_CLR(txdesc_ie, value)                      \
144         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
145                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
146 #define IE0_GET_TX_DESC_DATA_SHORT(txdesc_ie)                                  \
147         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
148                               0x1, 2)
149 #define IE0_SET_TX_DESC_DATA_SHORT(txdesc_ie, value)                           \
150         HALMAC_SET_DESC_FIELD_CLR(                                             \
151                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
152 #define IE0_SET_TX_DESC_DATA_SHORT_NO_CLR(txdesc_ie, value)                    \
153         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
154                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
155 #define IE0_GET_TX_DESC_TRY_RATE(txdesc_ie)                                    \
156         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
157                               0x1, 1)
158 #define IE0_SET_TX_DESC_TRY_RATE(txdesc_ie, value)                             \
159         HALMAC_SET_DESC_FIELD_CLR(                                             \
160                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
161 #define IE0_SET_TX_DESC_TRY_RATE_NO_CLR(txdesc_ie, value)                      \
162         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
163                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
164 #define IE0_GET_TX_DESC_USERATE(txdesc_ie)                                     \
165         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
166                               0x1, 0)
167 #define IE0_SET_TX_DESC_USERATE(txdesc_ie, value)                              \
168         HALMAC_SET_DESC_FIELD_CLR(                                             \
169                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
170 #define IE0_SET_TX_DESC_USERATE_NO_CLR(txdesc_ie, value)                       \
171         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
172                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
173 #define IE0_GET_TX_DESC_RTS_RTY_LOWEST_RATE(txdesc_ie)                         \
174         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
175                               0xf, 27)
176 #define IE0_SET_TX_DESC_RTS_RTY_LOWEST_RATE(txdesc_ie, value)                  \
177         HALMAC_SET_DESC_FIELD_CLR(                                             \
178                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 27)
179 #define IE0_SET_TX_DESC_RTS_RTY_LOWEST_RATE_NO_CLR(txdesc_ie, value)           \
180         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
181                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 27)
182 #define IE0_GET_TX_DESC_DATA_RTY_LOWEST_RATE(txdesc_ie)                        \
183         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
184                               0x1f, 22)
185 #define IE0_SET_TX_DESC_DATA_RTY_LOWEST_RATE(txdesc_ie, value)                 \
186         HALMAC_SET_DESC_FIELD_CLR(                                             \
187                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1f, 22)
188 #define IE0_SET_TX_DESC_DATA_RTY_LOWEST_RATE_NO_CLR(txdesc_ie, value)          \
189         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
190                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1f, 22)
191 #define IE0_GET_TX_DESC_RTS_DATA_RTY_LMT(txdesc_ie)                            \
192         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
193                               0x3f, 16)
194 #define IE0_SET_TX_DESC_RTS_DATA_RTY_LMT(txdesc_ie, value)                     \
195         HALMAC_SET_DESC_FIELD_CLR(                                             \
196                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 16)
197 #define IE0_SET_TX_DESC_RTS_DATA_RTY_LMT_NO_CLR(txdesc_ie, value)              \
198         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
199                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 16)
200 #define IE0_GET_TX_DESC_DATA_BW(txdesc_ie)                                     \
201         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
202                               0x3, 12)
203 #define IE0_SET_TX_DESC_DATA_BW(txdesc_ie, value)                              \
204         HALMAC_SET_DESC_FIELD_CLR(                                             \
205                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 12)
206 #define IE0_SET_TX_DESC_DATA_BW_NO_CLR(txdesc_ie, value)                       \
207         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
208                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 12)
209 #define IE0_GET_TX_DESC_RTSRATE(txdesc_ie)                                     \
210         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
211                               0xf, 7)
212 #define IE0_SET_TX_DESC_RTSRATE(txdesc_ie, value)                              \
213         HALMAC_SET_DESC_FIELD_CLR(                                             \
214                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 7)
215 #define IE0_SET_TX_DESC_RTSRATE_NO_CLR(txdesc_ie, value)                       \
216         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
217                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 7)
218 #define IE0_GET_TX_DESC_DATARATE(txdesc_ie)                                    \
219         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
220                               0x7f, 0)
221 #define IE0_SET_TX_DESC_DATARATE(txdesc_ie, value)                             \
222         HALMAC_SET_DESC_FIELD_CLR(                                             \
223                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7f, 0)
224 #define IE0_SET_TX_DESC_DATARATE_NO_CLR(txdesc_ie, value)                      \
225         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
226                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7f, 0)
227 #define IE1_GET_TX_DESC_IE_END(txdesc_ie)                                      \
228         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
229                               0x1, 31)
230 #define IE1_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
231         HALMAC_SET_DESC_FIELD_CLR(                                             \
232                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
233 #define IE1_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
234         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
235                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
236 #define IE1_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
237         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
238                               0x1, 30)
239 #define IE1_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
240         HALMAC_SET_DESC_FIELD_CLR(                                             \
241                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
242 #define IE1_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
243         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
244                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
245 #define IE1_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
246         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
247                               0xf, 24)
248 #define IE1_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
249         HALMAC_SET_DESC_FIELD_CLR(                                             \
250                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
251 #define IE1_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
252         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
253                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
254 #define IE1_GET_TX_DESC_AMPDU_DENSITY(txdesc_ie)                               \
255         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
256                               0x7, 21)
257 #define IE1_SET_TX_DESC_AMPDU_DENSITY(txdesc_ie, value)                        \
258         HALMAC_SET_DESC_FIELD_CLR(                                             \
259                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7, 21)
260 #define IE1_SET_TX_DESC_AMPDU_DENSITY_NO_CLR(txdesc_ie, value)                 \
261         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
262                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7, 21)
263 #define IE1_GET_TX_DESC_MAX_AGG_NUM(txdesc_ie)                                 \
264         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
265                               0x1f, 16)
266 #define IE1_SET_TX_DESC_MAX_AGG_NUM(txdesc_ie, value)                          \
267         HALMAC_SET_DESC_FIELD_CLR(                                             \
268                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1f, 16)
269 #define IE1_SET_TX_DESC_MAX_AGG_NUM_NO_CLR(txdesc_ie, value)                   \
270         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
271                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1f, 16)
272 #define IE1_GET_TX_DESC_SECTYPE(txdesc_ie)                                     \
273         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
274                               0x3, 14)
275 #define IE1_SET_TX_DESC_SECTYPE(txdesc_ie, value)                              \
276         HALMAC_SET_DESC_FIELD_CLR(                                             \
277                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 14)
278 #define IE1_SET_TX_DESC_SECTYPE_NO_CLR(txdesc_ie, value)                       \
279         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
280                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 14)
281 #define IE1_GET_TX_DESC_MOREFRAG(txdesc_ie)                                    \
282         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
283                               0x1, 13)
284 #define IE1_SET_TX_DESC_MOREFRAG(txdesc_ie, value)                             \
285         HALMAC_SET_DESC_FIELD_CLR(                                             \
286                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 13)
287 #define IE1_SET_TX_DESC_MOREFRAG_NO_CLR(txdesc_ie, value)                      \
288         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
289                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 13)
290 #define IE1_GET_TX_DESC_NOACM(txdesc_ie)                                       \
291         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
292                               0x1, 12)
293 #define IE1_SET_TX_DESC_NOACM(txdesc_ie, value)                                \
294         HALMAC_SET_DESC_FIELD_CLR(                                             \
295                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 12)
296 #define IE1_SET_TX_DESC_NOACM_NO_CLR(txdesc_ie, value)                         \
297         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
298                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 12)
299 #define IE1_GET_TX_DESC_BCNPKT_TSF_CTRL(txdesc_ie)                             \
300         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
301                               0x1, 11)
302 #define IE1_SET_TX_DESC_BCNPKT_TSF_CTRL(txdesc_ie, value)                      \
303         HALMAC_SET_DESC_FIELD_CLR(                                             \
304                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 11)
305 #define IE1_SET_TX_DESC_BCNPKT_TSF_CTRL_NO_CLR(txdesc_ie, value)               \
306         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
307                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 11)
308 #define IE1_GET_TX_DESC_NAVUSEHDR(txdesc_ie)                                   \
309         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
310                               0x1, 10)
311 #define IE1_SET_TX_DESC_NAVUSEHDR(txdesc_ie, value)                            \
312         HALMAC_SET_DESC_FIELD_CLR(                                             \
313                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 10)
314 #define IE1_SET_TX_DESC_NAVUSEHDR_NO_CLR(txdesc_ie, value)                     \
315         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
316                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 10)
317 #define IE1_GET_TX_DESC_HTC(txdesc_ie)                                         \
318         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
319                               0x1, 9)
320 #define IE1_SET_TX_DESC_HTC(txdesc_ie, value)                                  \
321         HALMAC_SET_DESC_FIELD_CLR(                                             \
322                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 9)
323 #define IE1_SET_TX_DESC_HTC_NO_CLR(txdesc_ie, value)                           \
324         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
325                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 9)
326 #define IE1_GET_TX_DESC_BMC(txdesc_ie)                                         \
327         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
328                               0x1, 8)
329 #define IE1_SET_TX_DESC_BMC(txdesc_ie, value)                                  \
330         HALMAC_SET_DESC_FIELD_CLR(                                             \
331                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 8)
332 #define IE1_SET_TX_DESC_BMC_NO_CLR(txdesc_ie, value)                           \
333         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
334                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 8)
335 #define IE1_GET_TX_DESC_TX_PKT_AFTER_PIFS(txdesc_ie)                           \
336         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
337                               0x1, 7)
338 #define IE1_SET_TX_DESC_TX_PKT_AFTER_PIFS(txdesc_ie, value)                    \
339         HALMAC_SET_DESC_FIELD_CLR(                                             \
340                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
341 #define IE1_SET_TX_DESC_TX_PKT_AFTER_PIFS_NO_CLR(txdesc_ie, value)             \
342         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
343                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
344 #define IE1_GET_TX_DESC_USE_MAX_TIME_EN(txdesc_ie)                             \
345         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
346                               0x1, 6)
347 #define IE1_SET_TX_DESC_USE_MAX_TIME_EN(txdesc_ie, value)                      \
348         HALMAC_SET_DESC_FIELD_CLR(                                             \
349                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
350 #define IE1_SET_TX_DESC_USE_MAX_TIME_EN_NO_CLR(txdesc_ie, value)               \
351         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
352                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
353 #define IE1_GET_TX_DESC_HW_SSN_SEL(txdesc_ie)                                  \
354         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
355                               0x3, 4)
356 #define IE1_SET_TX_DESC_HW_SSN_SEL(txdesc_ie, value)                           \
357         HALMAC_SET_DESC_FIELD_CLR(                                             \
358                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 4)
359 #define IE1_SET_TX_DESC_HW_SSN_SEL_NO_CLR(txdesc_ie, value)                    \
360         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
361                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 4)
362 #define IE1_GET_TX_DESC_DISQSELSEQ(txdesc_ie)                                  \
363         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
364                               0x1, 3)
365 #define IE1_SET_TX_DESC_DISQSELSEQ(txdesc_ie, value)                           \
366         HALMAC_SET_DESC_FIELD_CLR(                                             \
367                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
368 #define IE1_SET_TX_DESC_DISQSELSEQ_NO_CLR(txdesc_ie, value)                    \
369         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
370                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
371 #define IE1_GET_TX_DESC_EN_HWSEQ(txdesc_ie)                                    \
372         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
373                               0x1, 2)
374 #define IE1_SET_TX_DESC_EN_HWSEQ(txdesc_ie, value)                             \
375         HALMAC_SET_DESC_FIELD_CLR(                                             \
376                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
377 #define IE1_SET_TX_DESC_EN_HWSEQ_NO_CLR(txdesc_ie, value)                      \
378         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
379                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
380 #define IE1_GET_TX_DESC_EN_HWEXSEQ(txdesc_ie)                                  \
381         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
382                               0x1, 1)
383 #define IE1_SET_TX_DESC_EN_HWEXSEQ(txdesc_ie, value)                           \
384         HALMAC_SET_DESC_FIELD_CLR(                                             \
385                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
386 #define IE1_SET_TX_DESC_EN_HWEXSEQ_NO_CLR(txdesc_ie, value)                    \
387         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
388                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
389 #define IE1_GET_TX_DESC_EN_DESC_ID(txdesc_ie)                                  \
390         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
391                               0x1, 0)
392 #define IE1_SET_TX_DESC_EN_DESC_ID(txdesc_ie, value)                           \
393         HALMAC_SET_DESC_FIELD_CLR(                                             \
394                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
395 #define IE1_SET_TX_DESC_EN_DESC_ID_NO_CLR(txdesc_ie, value)                    \
396         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
397                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
398 #define IE1_GET_TX_DESC_AMPDU_MAX_TIME(txdesc_ie)                              \
399         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
400                               0xff, 24)
401 #define IE1_SET_TX_DESC_AMPDU_MAX_TIME(txdesc_ie, value)                       \
402         HALMAC_SET_DESC_FIELD_CLR(                                             \
403                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xff, 24)
404 #define IE1_SET_TX_DESC_AMPDU_MAX_TIME_NO_CLR(txdesc_ie, value)                \
405         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
406                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xff, 24)
407 #define IE1_GET_TX_DESC_P_AID(txdesc_ie)                                       \
408         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
409                               0x1ff, 15)
410 #define IE1_SET_TX_DESC_P_AID(txdesc_ie, value)                                \
411         HALMAC_SET_DESC_FIELD_CLR(                                             \
412                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1ff,    \
413                 15)
414 #define IE1_SET_TX_DESC_P_AID_NO_CLR(txdesc_ie, value)                         \
415         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
416                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1ff,    \
417                 15)
418 #define IE1_GET_TX_DESC_MOREDATA(txdesc_ie)                                    \
419         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
420                               0x1, 14)
421 #define IE1_SET_TX_DESC_MOREDATA(txdesc_ie, value)                             \
422         HALMAC_SET_DESC_FIELD_CLR(                                             \
423                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 14)
424 #define IE1_SET_TX_DESC_MOREDATA_NO_CLR(txdesc_ie, value)                      \
425         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
426                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 14)
427 #define IE1_GET_TX_DESC_SW_SEQ(txdesc_ie)                                      \
428         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
429                               0xfff, 0)
430 #define IE1_SET_TX_DESC_SW_SEQ(txdesc_ie, value)                               \
431         HALMAC_SET_DESC_FIELD_CLR(                                             \
432                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xfff, 0)
433 #define IE1_SET_TX_DESC_SW_SEQ_NO_CLR(txdesc_ie, value)                        \
434         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
435                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xfff, 0)
436 #define IE2_GET_TX_DESC_IE_END(txdesc_ie)                                      \
437         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
438                               0x1, 31)
439 #define IE2_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
440         HALMAC_SET_DESC_FIELD_CLR(                                             \
441                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
442 #define IE2_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
443         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
444                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
445 #define IE2_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
446         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
447                               0x1, 30)
448 #define IE2_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
449         HALMAC_SET_DESC_FIELD_CLR(                                             \
450                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
451 #define IE2_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
452         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
453                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
454 #define IE2_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
455         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
456                               0xf, 24)
457 #define IE2_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
458         HALMAC_SET_DESC_FIELD_CLR(                                             \
459                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
460 #define IE2_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
461         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
462                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
463 #define IE2_GET_TX_DESC_ADDR_CAM(txdesc_ie)                                    \
464         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
465                               0xff, 16)
466 #define IE2_SET_TX_DESC_ADDR_CAM(txdesc_ie, value)                             \
467         HALMAC_SET_DESC_FIELD_CLR(                                             \
468                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xff, 16)
469 #define IE2_SET_TX_DESC_ADDR_CAM_NO_CLR(txdesc_ie, value)                      \
470         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
471                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xff, 16)
472 #define IE2_GET_TX_DESC_MULTIPLE_PORT(txdesc_ie)                               \
473         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
474                               0x7, 12)
475 #define IE2_SET_TX_DESC_MULTIPLE_PORT(txdesc_ie, value)                        \
476         HALMAC_SET_DESC_FIELD_CLR(                                             \
477                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7, 12)
478 #define IE2_SET_TX_DESC_MULTIPLE_PORT_NO_CLR(txdesc_ie, value)                 \
479         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
480                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7, 12)
481 #define IE2_GET_TX_DESC_RAW(txdesc_ie)                                         \
482         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
483                               0x1, 11)
484 #define IE2_SET_TX_DESC_RAW(txdesc_ie, value)                                  \
485         HALMAC_SET_DESC_FIELD_CLR(                                             \
486                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 11)
487 #define IE2_SET_TX_DESC_RAW_NO_CLR(txdesc_ie, value)                           \
488         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
489                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 11)
490 #define IE2_GET_TX_DESC_RDG_EN(txdesc_ie)                                      \
491         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
492                               0x1, 10)
493 #define IE2_SET_TX_DESC_RDG_EN(txdesc_ie, value)                               \
494         HALMAC_SET_DESC_FIELD_CLR(                                             \
495                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 10)
496 #define IE2_SET_TX_DESC_RDG_EN_NO_CLR(txdesc_ie, value)                        \
497         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
498                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 10)
499 #define IE2_GET_TX_DESC_SPECIAL_CW(txdesc_ie)                                  \
500         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
501                               0x1, 7)
502 #define IE2_SET_TX_DESC_SPECIAL_CW(txdesc_ie, value)                           \
503         HALMAC_SET_DESC_FIELD_CLR(                                             \
504                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
505 #define IE2_SET_TX_DESC_SPECIAL_CW_NO_CLR(txdesc_ie, value)                    \
506         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
507                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
508 #define IE2_GET_TX_DESC_POLLUTED(txdesc_ie)                                    \
509         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
510                               0x1, 6)
511 #define IE2_SET_TX_DESC_POLLUTED(txdesc_ie, value)                             \
512         HALMAC_SET_DESC_FIELD_CLR(                                             \
513                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
514 #define IE2_SET_TX_DESC_POLLUTED_NO_CLR(txdesc_ie, value)                      \
515         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
516                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
517 #define IE2_GET_TX_DESC_BT_NULL(txdesc_ie)                                     \
518         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
519                               0x1, 5)
520 #define IE2_SET_TX_DESC_BT_NULL(txdesc_ie, value)                              \
521         HALMAC_SET_DESC_FIELD_CLR(                                             \
522                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 5)
523 #define IE2_SET_TX_DESC_BT_NULL_NO_CLR(txdesc_ie, value)                       \
524         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
525                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 5)
526 #define IE2_GET_TX_DESC_NULL_1(txdesc_ie)                                      \
527         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
528                               0x1, 4)
529 #define IE2_SET_TX_DESC_NULL_1(txdesc_ie, value)                               \
530         HALMAC_SET_DESC_FIELD_CLR(                                             \
531                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 4)
532 #define IE2_SET_TX_DESC_NULL_1_NO_CLR(txdesc_ie, value)                        \
533         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
534                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 4)
535 #define IE2_GET_TX_DESC_NULL_0(txdesc_ie)                                      \
536         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
537                               0x1, 3)
538 #define IE2_SET_TX_DESC_NULL_0(txdesc_ie, value)                               \
539         HALMAC_SET_DESC_FIELD_CLR(                                             \
540                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
541 #define IE2_SET_TX_DESC_NULL_0_NO_CLR(txdesc_ie, value)                        \
542         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
543                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
544 #define IE2_GET_TX_DESC_TRI_FRAME(txdesc_ie)                                   \
545         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
546                               0x1, 2)
547 #define IE2_SET_TX_DESC_TRI_FRAME(txdesc_ie, value)                            \
548         HALMAC_SET_DESC_FIELD_CLR(                                             \
549                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
550 #define IE2_SET_TX_DESC_TRI_FRAME_NO_CLR(txdesc_ie, value)                     \
551         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
552                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
553 #define IE2_GET_TX_DESC_SPE_RPT(txdesc_ie)                                     \
554         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
555                               0x1, 1)
556 #define IE2_SET_TX_DESC_SPE_RPT(txdesc_ie, value)                              \
557         HALMAC_SET_DESC_FIELD_CLR(                                             \
558                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
559 #define IE2_SET_TX_DESC_SPE_RPT_NO_CLR(txdesc_ie, value)                       \
560         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
561                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
562 #define IE2_GET_TX_DESC_FTM_EN(txdesc_ie)                                      \
563         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
564                               0x1, 0)
565 #define IE2_SET_TX_DESC_FTM_EN(txdesc_ie, value)                               \
566         HALMAC_SET_DESC_FIELD_CLR(                                             \
567                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
568 #define IE2_SET_TX_DESC_FTM_EN_NO_CLR(txdesc_ie, value)                        \
569         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
570                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
571 #define IE2_GET_TX_DESC_MBSSID(txdesc_ie)                                      \
572         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
573                               0xf, 27)
574 #define IE2_SET_TX_DESC_MBSSID(txdesc_ie, value)                               \
575         HALMAC_SET_DESC_FIELD_CLR(                                             \
576                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 27)
577 #define IE2_SET_TX_DESC_MBSSID_NO_CLR(txdesc_ie, value)                        \
578         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
579                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 27)
580 #define IE2_GET_TX_DESC_GROUP_BIT_IE_OFFSET(txdesc_ie)                         \
581         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
582                               0x7ff, 16)
583 #define IE2_SET_TX_DESC_GROUP_BIT_IE_OFFSET(txdesc_ie, value)                  \
584         HALMAC_SET_DESC_FIELD_CLR(                                             \
585                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7ff,    \
586                 16)
587 #define IE2_SET_TX_DESC_GROUP_BIT_IE_OFFSET_NO_CLR(txdesc_ie, value)           \
588         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
589                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7ff,    \
590                 16)
591 #define IE2_GET_TX_DESC_RDG_NAV_EXT(txdesc_ie)                                 \
592         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
593                               0x1, 15)
594 #define IE2_SET_TX_DESC_RDG_NAV_EXT(txdesc_ie, value)                          \
595         HALMAC_SET_DESC_FIELD_CLR(                                             \
596                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 15)
597 #define IE2_SET_TX_DESC_RDG_NAV_EXT_NO_CLR(txdesc_ie, value)                   \
598         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
599                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 15)
600 #define IE2_GET_TX_DESC_DROP_ID(txdesc_ie)                                     \
601         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
602                               0x3, 12)
603 #define IE2_SET_TX_DESC_DROP_ID(txdesc_ie, value)                              \
604         HALMAC_SET_DESC_FIELD_CLR(                                             \
605                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 12)
606 #define IE2_SET_TX_DESC_DROP_ID_NO_CLR(txdesc_ie, value)                       \
607         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
608                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 12)
609 #define IE2_GET_TX_DESC_SW_DEFINE(txdesc_ie)                                   \
610         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
611                               0xfff, 0)
612 #define IE2_SET_TX_DESC_SW_DEFINE(txdesc_ie, value)                            \
613         HALMAC_SET_DESC_FIELD_CLR(                                             \
614                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xfff, 0)
615 #define IE2_SET_TX_DESC_SW_DEFINE_NO_CLR(txdesc_ie, value)                     \
616         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
617                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xfff, 0)
618 #define IE3_GET_TX_DESC_IE_END(txdesc_ie)                                      \
619         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
620                               0x1, 31)
621 #define IE3_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
622         HALMAC_SET_DESC_FIELD_CLR(                                             \
623                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
624 #define IE3_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
625         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
626                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
627 #define IE3_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
628         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
629                               0x1, 30)
630 #define IE3_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
631         HALMAC_SET_DESC_FIELD_CLR(                                             \
632                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
633 #define IE3_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
634         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
635                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
636 #define IE3_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
637         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
638                               0xf, 24)
639 #define IE3_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
640         HALMAC_SET_DESC_FIELD_CLR(                                             \
641                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
642 #define IE3_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
643         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
644                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
645 #define IE3_GET_TX_DESC_DATA_SC(txdesc_ie)                                     \
646         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
647                               0xf, 20)
648 #define IE3_SET_TX_DESC_DATA_SC(txdesc_ie, value)                              \
649         HALMAC_SET_DESC_FIELD_CLR(                                             \
650                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 20)
651 #define IE3_SET_TX_DESC_DATA_SC_NO_CLR(txdesc_ie, value)                       \
652         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
653                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 20)
654 #define IE3_GET_TX_DESC_SIGNALING_TA_PKT_SC(txdesc_ie)                         \
655         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
656                               0xf, 16)
657 #define IE3_SET_TX_DESC_SIGNALING_TA_PKT_SC(txdesc_ie, value)                  \
658         HALMAC_SET_DESC_FIELD_CLR(                                             \
659                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 16)
660 #define IE3_SET_TX_DESC_SIGNALING_TA_PKT_SC_NO_CLR(txdesc_ie, value)           \
661         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
662                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 16)
663 #define IE3_GET_TX_DESC_CTRL_CNT(txdesc_ie)                                    \
664         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
665                               0xf, 8)
666 #define IE3_SET_TX_DESC_CTRL_CNT(txdesc_ie, value)                             \
667         HALMAC_SET_DESC_FIELD_CLR(                                             \
668                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 8)
669 #define IE3_SET_TX_DESC_CTRL_CNT_NO_CLR(txdesc_ie, value)                      \
670         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
671                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 8)
672 #define IE3_GET_TX_DESC_CTRL_CNT_VALID(txdesc_ie)                              \
673         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
674                               0x1, 1)
675 #define IE3_SET_TX_DESC_CTRL_CNT_VALID(txdesc_ie, value)                       \
676         HALMAC_SET_DESC_FIELD_CLR(                                             \
677                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
678 #define IE3_SET_TX_DESC_CTRL_CNT_VALID_NO_CLR(txdesc_ie, value)                \
679         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
680                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
681 #define IE3_GET_TX_DESC_SIGNALING_TA_PKT_EN(txdesc_ie)                         \
682         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
683                               0x1, 0)
684 #define IE3_SET_TX_DESC_SIGNALING_TA_PKT_EN(txdesc_ie, value)                  \
685         HALMAC_SET_DESC_FIELD_CLR(                                             \
686                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
687 #define IE3_SET_TX_DESC_SIGNALING_TA_PKT_EN_NO_CLR(txdesc_ie, value)           \
688         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
689                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
690 #define IE3_GET_TX_DESC_G_ID(txdesc_ie)                                        \
691         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
692                               0x3f, 24)
693 #define IE3_SET_TX_DESC_G_ID(txdesc_ie, value)                                 \
694         HALMAC_SET_DESC_FIELD_CLR(                                             \
695                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 24)
696 #define IE3_SET_TX_DESC_G_ID_NO_CLR(txdesc_ie, value)                          \
697         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
698                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 24)
699 #define IE3_GET_TX_DESC_SND_TARGET(txdesc_ie)                                  \
700         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
701                               0xff, 16)
702 #define IE3_SET_TX_DESC_SND_TARGET(txdesc_ie, value)                           \
703         HALMAC_SET_DESC_FIELD_CLR(                                             \
704                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xff, 16)
705 #define IE3_SET_TX_DESC_SND_TARGET_NO_CLR(txdesc_ie, value)                    \
706         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
707                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xff, 16)
708 #define IE3_GET_TX_DESC_CCA_RTS(txdesc_ie)                                     \
709         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
710                               0x3, 11)
711 #define IE3_SET_TX_DESC_CCA_RTS(txdesc_ie, value)                              \
712         HALMAC_SET_DESC_FIELD_CLR(                                             \
713                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 11)
714 #define IE3_SET_TX_DESC_CCA_RTS_NO_CLR(txdesc_ie, value)                       \
715         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
716                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 11)
717 #define IE3_GET_TX_DESC_SND_PKT_SEL(txdesc_ie)                                 \
718         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
719                               0x3, 9)
720 #define IE3_SET_TX_DESC_SND_PKT_SEL(txdesc_ie, value)                          \
721         HALMAC_SET_DESC_FIELD_CLR(                                             \
722                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 9)
723 #define IE3_SET_TX_DESC_SND_PKT_SEL_NO_CLR(txdesc_ie, value)                   \
724         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
725                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 9)
726 #define IE3_GET_TX_DESC_NDPA(txdesc_ie)                                        \
727         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
728                               0x3, 7)
729 #define IE3_SET_TX_DESC_NDPA(txdesc_ie, value)                                 \
730         HALMAC_SET_DESC_FIELD_CLR(                                             \
731                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 7)
732 #define IE3_SET_TX_DESC_NDPA_NO_CLR(txdesc_ie, value)                          \
733         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
734                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 7)
735 #define IE3_GET_TX_DESC_MU_DATARATE(txdesc_ie)                                 \
736         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
737                               0x7f, 0)
738 #define IE3_SET_TX_DESC_MU_DATARATE(txdesc_ie, value)                          \
739         HALMAC_SET_DESC_FIELD_CLR(                                             \
740                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7f, 0)
741 #define IE3_SET_TX_DESC_MU_DATARATE_NO_CLR(txdesc_ie, value)                   \
742         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
743                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7f, 0)
744 #define IE4_GET_TX_DESC_IE_END(txdesc_ie)                                      \
745         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
746                               0x1, 31)
747 #define IE4_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
748         HALMAC_SET_DESC_FIELD_CLR(                                             \
749                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
750 #define IE4_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
751         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
752                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
753 #define IE4_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
754         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
755                               0x1, 30)
756 #define IE4_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
757         HALMAC_SET_DESC_FIELD_CLR(                                             \
758                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
759 #define IE4_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
760         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
761                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
762 #define IE4_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
763         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
764                               0xf, 24)
765 #define IE4_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
766         HALMAC_SET_DESC_FIELD_CLR(                                             \
767                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
768 #define IE4_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
769         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
770                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
771 #define IE4_GET_TX_DESC_VCS_STBC(txdesc_ie)                                    \
772         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
773                               0x3, 10)
774 #define IE4_SET_TX_DESC_VCS_STBC(txdesc_ie, value)                             \
775         HALMAC_SET_DESC_FIELD_CLR(                                             \
776                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 10)
777 #define IE4_SET_TX_DESC_VCS_STBC_NO_CLR(txdesc_ie, value)                      \
778         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
779                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 10)
780 #define IE4_GET_TX_DESC_DATA_STBC(txdesc_ie)                                   \
781         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
782                               0x3, 8)
783 #define IE4_SET_TX_DESC_DATA_STBC(txdesc_ie, value)                            \
784         HALMAC_SET_DESC_FIELD_CLR(                                             \
785                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 8)
786 #define IE4_SET_TX_DESC_DATA_STBC_NO_CLR(txdesc_ie, value)                     \
787         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
788                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 8)
789 #define IE4_GET_TX_DESC_DATA_LDPC(txdesc_ie)                                   \
790         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
791                               0x1, 2)
792 #define IE4_SET_TX_DESC_DATA_LDPC(txdesc_ie, value)                            \
793         HALMAC_SET_DESC_FIELD_CLR(                                             \
794                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
795 #define IE4_SET_TX_DESC_DATA_LDPC_NO_CLR(txdesc_ie, value)                     \
796         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
797                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
798 #define IE4_GET_TX_DESC_GF(txdesc_ie)                                          \
799         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
800                               0x1, 1)
801 #define IE4_SET_TX_DESC_GF(txdesc_ie, value)                                   \
802         HALMAC_SET_DESC_FIELD_CLR(                                             \
803                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
804 #define IE4_SET_TX_DESC_GF_NO_CLR(txdesc_ie, value)                            \
805         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
806                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
807 #define IE4_GET_TX_DESC_LSIG_TXOP_EN(txdesc_ie)                                \
808         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
809                               0x1, 0)
810 #define IE4_SET_TX_DESC_LSIG_TXOP_EN(txdesc_ie, value)                         \
811         HALMAC_SET_DESC_FIELD_CLR(                                             \
812                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
813 #define IE4_SET_TX_DESC_LSIG_TXOP_EN_NO_CLR(txdesc_ie, value)                  \
814         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
815                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
816 #define IE4_GET_TX_DESC_PATH_MAPA(txdesc_ie)                                   \
817         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
818                               0x3, 30)
819 #define IE4_SET_TX_DESC_PATH_MAPA(txdesc_ie, value)                            \
820         HALMAC_SET_DESC_FIELD_CLR(                                             \
821                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 30)
822 #define IE4_SET_TX_DESC_PATH_MAPA_NO_CLR(txdesc_ie, value)                     \
823         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
824                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 30)
825 #define IE4_GET_TX_DESC_PATH_MAPB(txdesc_ie)                                   \
826         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
827                               0x3, 28)
828 #define IE4_SET_TX_DESC_PATH_MAPB(txdesc_ie, value)                            \
829         HALMAC_SET_DESC_FIELD_CLR(                                             \
830                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 28)
831 #define IE4_SET_TX_DESC_PATH_MAPB_NO_CLR(txdesc_ie, value)                     \
832         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
833                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 28)
834 #define IE4_GET_TX_DESC_PATH_MAPC(txdesc_ie)                                   \
835         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
836                               0x3, 26)
837 #define IE4_SET_TX_DESC_PATH_MAPC(txdesc_ie, value)                            \
838         HALMAC_SET_DESC_FIELD_CLR(                                             \
839                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 26)
840 #define IE4_SET_TX_DESC_PATH_MAPC_NO_CLR(txdesc_ie, value)                     \
841         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
842                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 26)
843 #define IE4_GET_TX_DESC_PATH_MAPD(txdesc_ie)                                   \
844         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
845                               0x3, 24)
846 #define IE4_SET_TX_DESC_PATH_MAPD(txdesc_ie, value)                            \
847         HALMAC_SET_DESC_FIELD_CLR(                                             \
848                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 24)
849 #define IE4_SET_TX_DESC_PATH_MAPD_NO_CLR(txdesc_ie, value)                     \
850         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
851                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 24)
852 #define IE4_GET_TX_DESC_ANTSEL_A(txdesc_ie)                                    \
853         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
854                               0xf, 20)
855 #define IE4_SET_TX_DESC_ANTSEL_A(txdesc_ie, value)                             \
856         HALMAC_SET_DESC_FIELD_CLR(                                             \
857                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 20)
858 #define IE4_SET_TX_DESC_ANTSEL_A_NO_CLR(txdesc_ie, value)                      \
859         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
860                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 20)
861 #define IE4_GET_TX_DESC_ANTSEL_B(txdesc_ie)                                    \
862         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
863                               0xf, 16)
864 #define IE4_SET_TX_DESC_ANTSEL_B(txdesc_ie, value)                             \
865         HALMAC_SET_DESC_FIELD_CLR(                                             \
866                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 16)
867 #define IE4_SET_TX_DESC_ANTSEL_B_NO_CLR(txdesc_ie, value)                      \
868         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
869                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 16)
870 #define IE4_GET_TX_DESC_ANTSEL_C(txdesc_ie)                                    \
871         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
872                               0xf, 12)
873 #define IE4_SET_TX_DESC_ANTSEL_C(txdesc_ie, value)                             \
874         HALMAC_SET_DESC_FIELD_CLR(                                             \
875                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 12)
876 #define IE4_SET_TX_DESC_ANTSEL_C_NO_CLR(txdesc_ie, value)                      \
877         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
878                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 12)
879 #define IE4_GET_TX_DESC_ANTSEL_D(txdesc_ie)                                    \
880         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
881                               0xf, 8)
882 #define IE4_SET_TX_DESC_ANTSEL_D(txdesc_ie, value)                             \
883         HALMAC_SET_DESC_FIELD_CLR(                                             \
884                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 8)
885 #define IE4_SET_TX_DESC_ANTSEL_D_NO_CLR(txdesc_ie, value)                      \
886         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
887                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 8)
888 #define IE4_GET_TX_DESC_NTX_PATH_EN(txdesc_ie)                                 \
889         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
890                               0xf, 4)
891 #define IE4_SET_TX_DESC_NTX_PATH_EN(txdesc_ie, value)                          \
892         HALMAC_SET_DESC_FIELD_CLR(                                             \
893                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 4)
894 #define IE4_SET_TX_DESC_NTX_PATH_EN_NO_CLR(txdesc_ie, value)                   \
895         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
896                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 4)
897 #define IE4_GET_TX_DESC_ANTLSEL_EN(txdesc_ie)                                  \
898         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
899                               0x1, 3)
900 #define IE4_SET_TX_DESC_ANTLSEL_EN(txdesc_ie, value)                           \
901         HALMAC_SET_DESC_FIELD_CLR(                                             \
902                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 3)
903 #define IE4_SET_TX_DESC_ANTLSEL_EN_NO_CLR(txdesc_ie, value)                    \
904         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
905                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 3)
906 #define IE4_GET_TX_DESC_TXPWR_OFSET_TYPE(txdesc_ie)                            \
907         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
908                               0x3, 0)
909 #define IE4_SET_TX_DESC_TXPWR_OFSET_TYPE(txdesc_ie, value)                     \
910         HALMAC_SET_DESC_FIELD_CLR(                                             \
911                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 0)
912 #define IE4_SET_TX_DESC_TXPWR_OFSET_TYPE_NO_CLR(txdesc_ie, value)              \
913         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
914                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 0)
915 #define IE5_GET_TX_DESC_IE_END(txdesc_ie)                                      \
916         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
917                               0x1, 31)
918 #define IE5_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
919         HALMAC_SET_DESC_FIELD_CLR(                                             \
920                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
921 #define IE5_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
922         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
923                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
924 #define IE5_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
925         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
926                               0x1, 30)
927 #define IE5_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
928         HALMAC_SET_DESC_FIELD_CLR(                                             \
929                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
930 #define IE5_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
931         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
932                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
933 #define IE5_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
934         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
935                               0xf, 24)
936 #define IE5_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
937         HALMAC_SET_DESC_FIELD_CLR(                                             \
938                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
939 #define IE5_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
940         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
941                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
942 #define IE5_GET_TX_DESC_LEN1_L(txdesc_ie)                                      \
943         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
944                               0x7f, 17)
945 #define IE5_SET_TX_DESC_LEN1_L(txdesc_ie, value)                               \
946         HALMAC_SET_DESC_FIELD_CLR(                                             \
947                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7f, 17)
948 #define IE5_SET_TX_DESC_LEN1_L_NO_CLR(txdesc_ie, value)                        \
949         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
950                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7f, 17)
951 #define IE5_GET_TX_DESC_LEN0(txdesc_ie)                                        \
952         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
953                               0x1fff, 4)
954 #define IE5_SET_TX_DESC_LEN0(txdesc_ie, value)                                 \
955         HALMAC_SET_DESC_FIELD_CLR(                                             \
956                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1fff,   \
957                 4)
958 #define IE5_SET_TX_DESC_LEN0_NO_CLR(txdesc_ie, value)                          \
959         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
960                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1fff,   \
961                 4)
962 #define IE5_GET_TX_DESC_PKT_NUM(txdesc_ie)                                     \
963         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
964                               0xf, 0)
965 #define IE5_SET_TX_DESC_PKT_NUM(txdesc_ie, value)                              \
966         HALMAC_SET_DESC_FIELD_CLR(                                             \
967                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 0)
968 #define IE5_SET_TX_DESC_PKT_NUM_NO_CLR(txdesc_ie, value)                       \
969         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
970                 ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 0)
971 #define IE5_GET_TX_DESC_LEN3(txdesc_ie)                                        \
972         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
973                               0x1fff, 19)
974 #define IE5_SET_TX_DESC_LEN3(txdesc_ie, value)                                 \
975         HALMAC_SET_DESC_FIELD_CLR(                                             \
976                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1fff,   \
977                 19)
978 #define IE5_SET_TX_DESC_LEN3_NO_CLR(txdesc_ie, value)                          \
979         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
980                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1fff,   \
981                 19)
982 #define IE5_GET_TX_DESC_LEN2(txdesc_ie)                                        \
983         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
984                               0x1fff, 6)
985 #define IE5_SET_TX_DESC_LEN2(txdesc_ie, value)                                 \
986         HALMAC_SET_DESC_FIELD_CLR(                                             \
987                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1fff,   \
988                 6)
989 #define IE5_SET_TX_DESC_LEN2_NO_CLR(txdesc_ie, value)                          \
990         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
991                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1fff,   \
992                 6)
993 #define IE5_GET_TX_DESC_LEN1_H(txdesc_ie)                                      \
994         HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
995                               0x3f, 0)
996 #define IE5_SET_TX_DESC_LEN1_H(txdesc_ie, value)                               \
997         HALMAC_SET_DESC_FIELD_CLR(                                             \
998                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 0)
999 #define IE5_SET_TX_DESC_LEN1_H_NO_CLR(txdesc_ie, value)                        \
1000         HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
1001                 ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 0)
1002
1003 #endif
1004
1005 #endif