• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  * Copyright(c) 2016 - 2019 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_BUFFER_NIC_H_
17 #define _HALMAC_TX_DESC_BUFFER_NIC_H_
18 #if (HALMAC_8814B_SUPPORT)
19 
20 /*TXDESC_WORD0*/
21 
22 #define SET_TX_DESC_BUFFER_RDG_EN(txdesc, value)                               \
23 	SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 31, 1, value)
24 #define GET_TX_DESC_BUFFER_RDG_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x00, 31, 1)
25 #define SET_TX_DESC_BUFFER_BCNPKT_TSF_CTRL(txdesc, value)                      \
26 	SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 30, 1, value)
27 #define GET_TX_DESC_BUFFER_BCNPKT_TSF_CTRL(txdesc)                             \
28 	LE_BITS_TO_4BYTE(txdesc + 0x00, 30, 1)
29 #define SET_TX_DESC_BUFFER_AGG_EN(txdesc, value)                               \
30 	SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 29, 1, value)
31 #define GET_TX_DESC_BUFFER_AGG_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x00, 29, 1)
32 #define SET_TX_DESC_BUFFER_PKT_OFFSET(txdesc, value)                           \
33 	SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 24, 5, value)
34 #define GET_TX_DESC_BUFFER_PKT_OFFSET(txdesc)                                  \
35 	LE_BITS_TO_4BYTE(txdesc + 0x00, 24, 5)
36 #define SET_TX_DESC_BUFFER_OFFSET(txdesc, value)                               \
37 	SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 16, 8, value)
38 #define GET_TX_DESC_BUFFER_OFFSET(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x00, 16, 8)
39 #define SET_TX_DESC_BUFFER_TXPKTSIZE(txdesc, value)                            \
40 	SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 0, 16, value)
41 #define GET_TX_DESC_BUFFER_TXPKTSIZE(txdesc)                                   \
42 	LE_BITS_TO_4BYTE(txdesc + 0x00, 0, 16)
43 
44 /*TXDESC_WORD1*/
45 
46 #define SET_TX_DESC_BUFFER_USERATE(txdesc, value)                              \
47 	SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 31, 1, value)
48 #define GET_TX_DESC_BUFFER_USERATE(txdesc)                                     \
49 	LE_BITS_TO_4BYTE(txdesc + 0x04, 31, 1)
50 #define SET_TX_DESC_BUFFER_AMSDU(txdesc, value)                                \
51 	SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 30, 1, value)
52 #define GET_TX_DESC_BUFFER_AMSDU(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x04, 30, 1)
53 #define SET_TX_DESC_BUFFER_EN_HWSEQ(txdesc, value)                             \
54 	SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 29, 1, value)
55 #define GET_TX_DESC_BUFFER_EN_HWSEQ(txdesc)                                    \
56 	LE_BITS_TO_4BYTE(txdesc + 0x04, 29, 1)
57 #define SET_TX_DESC_BUFFER_EN_HWEXSEQ(txdesc, value)                           \
58 	SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 28, 1, value)
59 #define GET_TX_DESC_BUFFER_EN_HWEXSEQ(txdesc)                                  \
60 	LE_BITS_TO_4BYTE(txdesc + 0x04, 28, 1)
61 #define SET_TX_DESC_BUFFER_SW_SEQ(txdesc, value)                               \
62 	SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 16, 12, value)
63 #define GET_TX_DESC_BUFFER_SW_SEQ(txdesc)                                      \
64 	LE_BITS_TO_4BYTE(txdesc + 0x04, 16, 12)
65 #define SET_TX_DESC_BUFFER_DROP_ID(txdesc, value)                              \
66 	SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 14, 2, value)
67 #define GET_TX_DESC_BUFFER_DROP_ID(txdesc)                                     \
68 	LE_BITS_TO_4BYTE(txdesc + 0x04, 14, 2)
69 #define SET_TX_DESC_BUFFER_MOREDATA(txdesc, value)                             \
70 	SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 13, 1, value)
71 #define GET_TX_DESC_BUFFER_MOREDATA(txdesc)                                    \
72 	LE_BITS_TO_4BYTE(txdesc + 0x04, 13, 1)
73 #define SET_TX_DESC_BUFFER_QSEL(txdesc, value)                                 \
74 	SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 8, 5, value)
75 #define GET_TX_DESC_BUFFER_QSEL(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x04, 8, 5)
76 #define SET_TX_DESC_BUFFER_MACID(txdesc, value)                                \
77 	SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 0, 8, value)
78 #define GET_TX_DESC_BUFFER_MACID(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x04, 0, 8)
79 
80 /*TXDESC_WORD2*/
81 
82 #define SET_TX_DESC_BUFFER_CHK_EN(txdesc, value)                               \
83 	SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 31, 1, value)
84 #define GET_TX_DESC_BUFFER_CHK_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x08, 31, 1)
85 #define SET_TX_DESC_BUFFER_DISQSELSEQ(txdesc, value)                           \
86 	SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 30, 1, value)
87 #define GET_TX_DESC_BUFFER_DISQSELSEQ(txdesc)                                  \
88 	LE_BITS_TO_4BYTE(txdesc + 0x08, 30, 1)
89 #define SET_TX_DESC_BUFFER_SND_PKT_SEL(txdesc, value)                          \
90 	SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 28, 2, value)
91 #define GET_TX_DESC_BUFFER_SND_PKT_SEL(txdesc)                                 \
92 	LE_BITS_TO_4BYTE(txdesc + 0x08, 28, 2)
93 #define SET_TX_DESC_BUFFER_DMA_PRI(txdesc, value)                              \
94 	SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 27, 1, value)
95 #define GET_TX_DESC_BUFFER_DMA_PRI(txdesc)                                     \
96 	LE_BITS_TO_4BYTE(txdesc + 0x08, 27, 1)
97 #define SET_TX_DESC_BUFFER_MAX_AMSDU_MODE(txdesc, value)                       \
98 	SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 24, 3, value)
99 #define GET_TX_DESC_BUFFER_MAX_AMSDU_MODE(txdesc)                              \
100 	LE_BITS_TO_4BYTE(txdesc + 0x08, 24, 3)
101 #define SET_TX_DESC_BUFFER_DMA_TXAGG_NUM(txdesc, value)                        \
102 	SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 16, 8, value)
103 #define GET_TX_DESC_BUFFER_DMA_TXAGG_NUM(txdesc)                               \
104 	LE_BITS_TO_4BYTE(txdesc + 0x08, 16, 8)
105 #define SET_TX_DESC_BUFFER_TXDESC_CHECKSUM(txdesc, value)                      \
106 	SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 0, 16, value)
107 #define GET_TX_DESC_BUFFER_TXDESC_CHECKSUM(txdesc)                             \
108 	LE_BITS_TO_4BYTE(txdesc + 0x08, 0, 16)
109 
110 /*TXDESC_WORD3*/
111 
112 #define SET_TX_DESC_BUFFER_OFFLOAD_SIZE(txdesc, value)                         \
113 	SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 16, 15, value)
114 #define GET_TX_DESC_BUFFER_OFFLOAD_SIZE(txdesc)                                \
115 	LE_BITS_TO_4BYTE(txdesc + 0x0C, 16, 15)
116 #define SET_TX_DESC_BUFFER_CHANNEL_DMA(txdesc, value)                          \
117 	SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 11, 5, value)
118 #define GET_TX_DESC_BUFFER_CHANNEL_DMA(txdesc)                                 \
119 	LE_BITS_TO_4BYTE(txdesc + 0x0C, 11, 5)
120 #define SET_TX_DESC_BUFFER_MBSSID(txdesc, value)                               \
121 	SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 7, 4, value)
122 #define GET_TX_DESC_BUFFER_MBSSID(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x0C, 7, 4)
123 #define SET_TX_DESC_BUFFER_BK(txdesc, value)                                   \
124 	SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 6, 1, value)
125 #define GET_TX_DESC_BUFFER_BK(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x0C, 6, 1)
126 #define SET_TX_DESC_BUFFER_WHEADER_LEN(txdesc, value)                          \
127 	SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 0, 5, value)
128 #define GET_TX_DESC_BUFFER_WHEADER_LEN(txdesc)                                 \
129 	LE_BITS_TO_4BYTE(txdesc + 0x0C, 0, 5)
130 
131 /*TXDESC_WORD4*/
132 
133 #define SET_TX_DESC_BUFFER_TRY_RATE(txdesc, value)                             \
134 	SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 26, 1, value)
135 #define GET_TX_DESC_BUFFER_TRY_RATE(txdesc)                                    \
136 	LE_BITS_TO_4BYTE(txdesc + 0x10, 26, 1)
137 #define SET_TX_DESC_BUFFER_DATA_BW(txdesc, value)                              \
138 	SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 24, 2, value)
139 #define GET_TX_DESC_BUFFER_DATA_BW(txdesc)                                     \
140 	LE_BITS_TO_4BYTE(txdesc + 0x10, 24, 2)
141 #define SET_TX_DESC_BUFFER_DATA_SHORT(txdesc, value)                           \
142 	SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 23, 1, value)
143 #define GET_TX_DESC_BUFFER_DATA_SHORT(txdesc)                                  \
144 	LE_BITS_TO_4BYTE(txdesc + 0x10, 23, 1)
145 #define SET_TX_DESC_BUFFER_DATARATE(txdesc, value)                             \
146 	SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 16, 7, value)
147 #define GET_TX_DESC_BUFFER_DATARATE(txdesc)                                    \
148 	LE_BITS_TO_4BYTE(txdesc + 0x10, 16, 7)
149 #define SET_TX_DESC_BUFFER_TXBF_PATH(txdesc, value)                            \
150 	SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 11, 1, value)
151 #define GET_TX_DESC_BUFFER_TXBF_PATH(txdesc)                                   \
152 	LE_BITS_TO_4BYTE(txdesc + 0x10, 11, 1)
153 #define SET_TX_DESC_BUFFER_GROUP_BIT_IE_OFFSET(txdesc, value)                  \
154 	SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 0, 11, value)
155 #define GET_TX_DESC_BUFFER_GROUP_BIT_IE_OFFSET(txdesc)                         \
156 	LE_BITS_TO_4BYTE(txdesc + 0x10, 0, 11)
157 
158 /*TXDESC_WORD5*/
159 
160 #define SET_TX_DESC_BUFFER_RTY_LMT_EN(txdesc, value)                           \
161 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 31, 1, value)
162 #define GET_TX_DESC_BUFFER_RTY_LMT_EN(txdesc)                                  \
163 	LE_BITS_TO_4BYTE(txdesc + 0x14, 31, 1)
164 #define SET_TX_DESC_BUFFER_HW_RTS_EN(txdesc, value)                            \
165 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 30, 1, value)
166 #define GET_TX_DESC_BUFFER_HW_RTS_EN(txdesc)                                   \
167 	LE_BITS_TO_4BYTE(txdesc + 0x14, 30, 1)
168 #define SET_TX_DESC_BUFFER_RTS_EN(txdesc, value)                               \
169 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 29, 1, value)
170 #define GET_TX_DESC_BUFFER_RTS_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x14, 29, 1)
171 #define SET_TX_DESC_BUFFER_CTS2SELF(txdesc, value)                             \
172 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 28, 1, value)
173 #define GET_TX_DESC_BUFFER_CTS2SELF(txdesc)                                    \
174 	LE_BITS_TO_4BYTE(txdesc + 0x14, 28, 1)
175 #define SET_TX_DESC_BUFFER_TAILPAGE_H(txdesc, value)                           \
176 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 24, 4, value)
177 #define GET_TX_DESC_BUFFER_TAILPAGE_H(txdesc)                                  \
178 	LE_BITS_TO_4BYTE(txdesc + 0x14, 24, 4)
179 #define SET_TX_DESC_BUFFER_TAILPAGE_L(txdesc, value)                           \
180 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 16, 8, value)
181 #define GET_TX_DESC_BUFFER_TAILPAGE_L(txdesc)                                  \
182 	LE_BITS_TO_4BYTE(txdesc + 0x14, 16, 8)
183 #define SET_TX_DESC_BUFFER_NAVUSEHDR(txdesc, value)                            \
184 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 15, 1, value)
185 #define GET_TX_DESC_BUFFER_NAVUSEHDR(txdesc)                                   \
186 	LE_BITS_TO_4BYTE(txdesc + 0x14, 15, 1)
187 #define SET_TX_DESC_BUFFER_BMC(txdesc, value)                                  \
188 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 14, 1, value)
189 #define GET_TX_DESC_BUFFER_BMC(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x14, 14, 1)
190 #define SET_TX_DESC_BUFFER_RTS_DATA_RTY_LMT(txdesc, value)                     \
191 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 8, 6, value)
192 #define GET_TX_DESC_BUFFER_RTS_DATA_RTY_LMT(txdesc)                            \
193 	LE_BITS_TO_4BYTE(txdesc + 0x14, 8, 6)
194 #define SET_TX_DESC_BUFFER_HW_AES_IV(txdesc, value)                            \
195 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 7, 1, value)
196 #define GET_TX_DESC_BUFFER_HW_AES_IV(txdesc)                                   \
197 	LE_BITS_TO_4BYTE(txdesc + 0x14, 7, 1)
198 #define SET_TX_DESC_BUFFER_BT_NULL(txdesc, value)                              \
199 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 3, 1, value)
200 #define GET_TX_DESC_BUFFER_BT_NULL(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x14, 3, 1)
201 #define SET_TX_DESC_BUFFER_EN_DESC_ID(txdesc, value)                           \
202 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 2, 1, value)
203 #define GET_TX_DESC_BUFFER_EN_DESC_ID(txdesc)                                  \
204 	LE_BITS_TO_4BYTE(txdesc + 0x14, 2, 1)
205 #define SET_TX_DESC_BUFFER_SECTYPE(txdesc, value)                              \
206 	SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 0, 2, value)
207 #define GET_TX_DESC_BUFFER_SECTYPE(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x14, 0, 2)
208 
209 /*TXDESC_WORD6*/
210 
211 #define SET_TX_DESC_BUFFER_MULTIPLE_PORT(txdesc, value)                        \
212 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 29, 3, value)
213 #define GET_TX_DESC_BUFFER_MULTIPLE_PORT(txdesc)                               \
214 	LE_BITS_TO_4BYTE(txdesc + 0x18, 29, 3)
215 #define SET_TX_DESC_BUFFER_POLLUTED(txdesc, value)                             \
216 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 28, 1, value)
217 #define GET_TX_DESC_BUFFER_POLLUTED(txdesc)                                    \
218 	LE_BITS_TO_4BYTE(txdesc + 0x18, 28, 1)
219 #define SET_TX_DESC_BUFFER_NULL_1(txdesc, value)                               \
220 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 27, 1, value)
221 #define GET_TX_DESC_BUFFER_NULL_1(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 27, 1)
222 #define SET_TX_DESC_BUFFER_NULL_0(txdesc, value)                               \
223 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 26, 1, value)
224 #define GET_TX_DESC_BUFFER_NULL_0(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 26, 1)
225 #define SET_TX_DESC_BUFFER_TRI_FRAME(txdesc, value)                            \
226 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 25, 1, value)
227 #define GET_TX_DESC_BUFFER_TRI_FRAME(txdesc)                                   \
228 	LE_BITS_TO_4BYTE(txdesc + 0x18, 25, 1)
229 #define SET_TX_DESC_BUFFER_SPE_RPT(txdesc, value)                              \
230 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 24, 1, value)
231 #define GET_TX_DESC_BUFFER_SPE_RPT(txdesc)                                     \
232 	LE_BITS_TO_4BYTE(txdesc + 0x18, 24, 1)
233 #define SET_TX_DESC_BUFFER_FTM_EN(txdesc, value)                               \
234 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 23, 1, value)
235 #define GET_TX_DESC_BUFFER_FTM_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 23, 1)
236 #define SET_TX_DESC_BUFFER_MU_DATARATE(txdesc, value)                          \
237 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 16, 7, value)
238 #define GET_TX_DESC_BUFFER_MU_DATARATE(txdesc)                                 \
239 	LE_BITS_TO_4BYTE(txdesc + 0x18, 16, 7)
240 #define SET_TX_DESC_BUFFER_CCA_RTS(txdesc, value)                              \
241 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 14, 2, value)
242 #define GET_TX_DESC_BUFFER_CCA_RTS(txdesc)                                     \
243 	LE_BITS_TO_4BYTE(txdesc + 0x18, 14, 2)
244 #define SET_TX_DESC_BUFFER_NDPA(txdesc, value)                                 \
245 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 12, 2, value)
246 #define GET_TX_DESC_BUFFER_NDPA(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 12, 2)
247 #define SET_TX_DESC_BUFFER_TXPWR_OFSET_TYPE(txdesc, value)                     \
248 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 9, 2, value)
249 #define GET_TX_DESC_BUFFER_TXPWR_OFSET_TYPE(txdesc)                            \
250 	LE_BITS_TO_4BYTE(txdesc + 0x18, 9, 2)
251 #define SET_TX_DESC_BUFFER_P_AID(txdesc, value)                                \
252 	SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 0, 9, value)
253 #define GET_TX_DESC_BUFFER_P_AID(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 0, 9)
254 
255 /*TXDESC_WORD7*/
256 
257 #define SET_TX_DESC_BUFFER_SW_DEFINE(txdesc, value)                            \
258 	SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 16, 12, value)
259 #define GET_TX_DESC_BUFFER_SW_DEFINE(txdesc)                                   \
260 	LE_BITS_TO_4BYTE(txdesc + 0x1C, 16, 12)
261 #define SET_TX_DESC_BUFFER_CTRL_CNT_VALID(txdesc, value)                       \
262 	SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 9, 1, value)
263 #define GET_TX_DESC_BUFFER_CTRL_CNT_VALID(txdesc)                              \
264 	LE_BITS_TO_4BYTE(txdesc + 0x1C, 9, 1)
265 #define SET_TX_DESC_BUFFER_CTRL_CNT(txdesc, value)                             \
266 	SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 5, 4, value)
267 #define GET_TX_DESC_BUFFER_CTRL_CNT(txdesc)                                    \
268 	LE_BITS_TO_4BYTE(txdesc + 0x1C, 5, 4)
269 #define SET_TX_DESC_BUFFER_DATA_RTY_LOWEST_RATE(txdesc, value)                 \
270 	SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 0, 5, value)
271 #define GET_TX_DESC_BUFFER_DATA_RTY_LOWEST_RATE(txdesc)                        \
272 	LE_BITS_TO_4BYTE(txdesc + 0x1C, 0, 5)
273 
274 /*TXDESC_WORD8*/
275 
276 #define SET_TX_DESC_BUFFER_PATH_MAPA(txdesc, value)                            \
277 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 30, 2, value)
278 #define GET_TX_DESC_BUFFER_PATH_MAPA(txdesc)                                   \
279 	LE_BITS_TO_4BYTE(txdesc + 0x20, 30, 2)
280 #define SET_TX_DESC_BUFFER_PATH_MAPB(txdesc, value)                            \
281 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 28, 2, value)
282 #define GET_TX_DESC_BUFFER_PATH_MAPB(txdesc)                                   \
283 	LE_BITS_TO_4BYTE(txdesc + 0x20, 28, 2)
284 #define SET_TX_DESC_BUFFER_PATH_MAPC(txdesc, value)                            \
285 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 26, 2, value)
286 #define GET_TX_DESC_BUFFER_PATH_MAPC(txdesc)                                   \
287 	LE_BITS_TO_4BYTE(txdesc + 0x20, 26, 2)
288 #define SET_TX_DESC_BUFFER_PATH_MAPD(txdesc, value)                            \
289 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 24, 2, value)
290 #define GET_TX_DESC_BUFFER_PATH_MAPD(txdesc)                                   \
291 	LE_BITS_TO_4BYTE(txdesc + 0x20, 24, 2)
292 #define SET_TX_DESC_BUFFER_ANTSEL_A(txdesc, value)                             \
293 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 20, 4, value)
294 #define GET_TX_DESC_BUFFER_ANTSEL_A(txdesc)                                    \
295 	LE_BITS_TO_4BYTE(txdesc + 0x20, 20, 4)
296 #define SET_TX_DESC_BUFFER_ANTSEL_B(txdesc, value)                             \
297 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 16, 4, value)
298 #define GET_TX_DESC_BUFFER_ANTSEL_B(txdesc)                                    \
299 	LE_BITS_TO_4BYTE(txdesc + 0x20, 16, 4)
300 #define SET_TX_DESC_BUFFER_ANTSEL_C(txdesc, value)                             \
301 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 12, 4, value)
302 #define GET_TX_DESC_BUFFER_ANTSEL_C(txdesc)                                    \
303 	LE_BITS_TO_4BYTE(txdesc + 0x20, 12, 4)
304 #define SET_TX_DESC_BUFFER_ANTSEL_D(txdesc, value)                             \
305 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 8, 4, value)
306 #define GET_TX_DESC_BUFFER_ANTSEL_D(txdesc)                                    \
307 	LE_BITS_TO_4BYTE(txdesc + 0x20, 8, 4)
308 #define SET_TX_DESC_BUFFER_NTX_PATH_EN(txdesc, value)                          \
309 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 4, 4, value)
310 #define GET_TX_DESC_BUFFER_NTX_PATH_EN(txdesc)                                 \
311 	LE_BITS_TO_4BYTE(txdesc + 0x20, 4, 4)
312 #define SET_TX_DESC_BUFFER_ANTLSEL_EN(txdesc, value)                           \
313 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 3, 1, value)
314 #define GET_TX_DESC_BUFFER_ANTLSEL_EN(txdesc)                                  \
315 	LE_BITS_TO_4BYTE(txdesc + 0x20, 3, 1)
316 #define SET_TX_DESC_BUFFER_AMPDU_DENSITY(txdesc, value)                        \
317 	SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 0, 3, value)
318 #define GET_TX_DESC_BUFFER_AMPDU_DENSITY(txdesc)                               \
319 	LE_BITS_TO_4BYTE(txdesc + 0x20, 0, 3)
320 
321 /*TXDESC_WORD9*/
322 
323 #define SET_TX_DESC_BUFFER_VCS_STBC(txdesc, value)                             \
324 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 30, 2, value)
325 #define GET_TX_DESC_BUFFER_VCS_STBC(txdesc)                                    \
326 	LE_BITS_TO_4BYTE(txdesc + 0x24, 30, 2)
327 #define SET_TX_DESC_BUFFER_DATA_STBC(txdesc, value)                            \
328 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 28, 2, value)
329 #define GET_TX_DESC_BUFFER_DATA_STBC(txdesc)                                   \
330 	LE_BITS_TO_4BYTE(txdesc + 0x24, 28, 2)
331 #define SET_TX_DESC_BUFFER_RTS_RTY_LOWEST_RATE(txdesc, value)                  \
332 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 24, 4, value)
333 #define GET_TX_DESC_BUFFER_RTS_RTY_LOWEST_RATE(txdesc)                         \
334 	LE_BITS_TO_4BYTE(txdesc + 0x24, 24, 4)
335 #define SET_TX_DESC_BUFFER_SIGNALING_TA_PKT_EN(txdesc, value)                  \
336 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 23, 1, value)
337 #define GET_TX_DESC_BUFFER_SIGNALING_TA_PKT_EN(txdesc)                         \
338 	LE_BITS_TO_4BYTE(txdesc + 0x24, 23, 1)
339 #define SET_TX_DESC_BUFFER_MHR_CP(txdesc, value)                               \
340 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 22, 1, value)
341 #define GET_TX_DESC_BUFFER_MHR_CP(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x24, 22, 1)
342 #define SET_TX_DESC_BUFFER_SMH_EN(txdesc, value)                               \
343 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 21, 1, value)
344 #define GET_TX_DESC_BUFFER_SMH_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x24, 21, 1)
345 #define SET_TX_DESC_BUFFER_RTSRATE(txdesc, value)                              \
346 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 16, 5, value)
347 #define GET_TX_DESC_BUFFER_RTSRATE(txdesc)                                     \
348 	LE_BITS_TO_4BYTE(txdesc + 0x24, 16, 5)
349 #define SET_TX_DESC_BUFFER_SMH_CAM(txdesc, value)                              \
350 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 8, 8, value)
351 #define GET_TX_DESC_BUFFER_SMH_CAM(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x24, 8, 8)
352 #define SET_TX_DESC_BUFFER_ARFR_TABLE_SEL(txdesc, value)                       \
353 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 7, 1, value)
354 #define GET_TX_DESC_BUFFER_ARFR_TABLE_SEL(txdesc)                              \
355 	LE_BITS_TO_4BYTE(txdesc + 0x24, 7, 1)
356 #define SET_TX_DESC_BUFFER_ARFR_HT_EN(txdesc, value)                           \
357 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 6, 1, value)
358 #define GET_TX_DESC_BUFFER_ARFR_HT_EN(txdesc)                                  \
359 	LE_BITS_TO_4BYTE(txdesc + 0x24, 6, 1)
360 #define SET_TX_DESC_BUFFER_ARFR_OFDM_EN(txdesc, value)                         \
361 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 5, 1, value)
362 #define GET_TX_DESC_BUFFER_ARFR_OFDM_EN(txdesc)                                \
363 	LE_BITS_TO_4BYTE(txdesc + 0x24, 5, 1)
364 #define SET_TX_DESC_BUFFER_ARFR_CCK_EN(txdesc, value)                          \
365 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 4, 1, value)
366 #define GET_TX_DESC_BUFFER_ARFR_CCK_EN(txdesc)                                 \
367 	LE_BITS_TO_4BYTE(txdesc + 0x24, 4, 1)
368 #define SET_TX_DESC_BUFFER_RTS_SHORT(txdesc, value)                            \
369 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 3, 1, value)
370 #define GET_TX_DESC_BUFFER_RTS_SHORT(txdesc)                                   \
371 	LE_BITS_TO_4BYTE(txdesc + 0x24, 3, 1)
372 #define SET_TX_DESC_BUFFER_DISDATAFB(txdesc, value)                            \
373 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 2, 1, value)
374 #define GET_TX_DESC_BUFFER_DISDATAFB(txdesc)                                   \
375 	LE_BITS_TO_4BYTE(txdesc + 0x24, 2, 1)
376 #define SET_TX_DESC_BUFFER_DISRTSFB(txdesc, value)                             \
377 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 1, 1, value)
378 #define GET_TX_DESC_BUFFER_DISRTSFB(txdesc)                                    \
379 	LE_BITS_TO_4BYTE(txdesc + 0x24, 1, 1)
380 #define SET_TX_DESC_BUFFER_EXT_EDCA(txdesc, value)                             \
381 	SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 0, 1, value)
382 #define GET_TX_DESC_BUFFER_EXT_EDCA(txdesc)                                    \
383 	LE_BITS_TO_4BYTE(txdesc + 0x24, 0, 1)
384 
385 /*TXDESC_WORD10*/
386 
387 #define SET_TX_DESC_BUFFER_AMPDU_MAX_TIME(txdesc, value)                       \
388 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 24, 8, value)
389 #define GET_TX_DESC_BUFFER_AMPDU_MAX_TIME(txdesc)                              \
390 	LE_BITS_TO_4BYTE(txdesc + 0x28, 24, 8)
391 #define SET_TX_DESC_BUFFER_SPECIAL_CW(txdesc, value)                           \
392 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 23, 1, value)
393 #define GET_TX_DESC_BUFFER_SPECIAL_CW(txdesc)                                  \
394 	LE_BITS_TO_4BYTE(txdesc + 0x28, 23, 1)
395 #define SET_TX_DESC_BUFFER_RDG_NAV_EXT(txdesc, value)                          \
396 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 22, 1, value)
397 #define GET_TX_DESC_BUFFER_RDG_NAV_EXT(txdesc)                                 \
398 	LE_BITS_TO_4BYTE(txdesc + 0x28, 22, 1)
399 #define SET_TX_DESC_BUFFER_RAW(txdesc, value)                                  \
400 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 21, 1, value)
401 #define GET_TX_DESC_BUFFER_RAW(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x28, 21, 1)
402 #define SET_TX_DESC_BUFFER_MAX_AGG_NUM(txdesc, value)                          \
403 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 16, 5, value)
404 #define GET_TX_DESC_BUFFER_MAX_AGG_NUM(txdesc)                                 \
405 	LE_BITS_TO_4BYTE(txdesc + 0x28, 16, 5)
406 #define SET_TX_DESC_BUFFER_FINAL_DATA_RATE(txdesc, value)                      \
407 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 8, 8, value)
408 #define GET_TX_DESC_BUFFER_FINAL_DATA_RATE(txdesc)                             \
409 	LE_BITS_TO_4BYTE(txdesc + 0x28, 8, 8)
410 #define SET_TX_DESC_BUFFER_GF(txdesc, value)                                   \
411 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 7, 1, value)
412 #define GET_TX_DESC_BUFFER_GF(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x28, 7, 1)
413 #define SET_TX_DESC_BUFFER_MOREFRAG(txdesc, value)                             \
414 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 6, 1, value)
415 #define GET_TX_DESC_BUFFER_MOREFRAG(txdesc)                                    \
416 	LE_BITS_TO_4BYTE(txdesc + 0x28, 6, 1)
417 #define SET_TX_DESC_BUFFER_NOACM(txdesc, value)                                \
418 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 5, 1, value)
419 #define GET_TX_DESC_BUFFER_NOACM(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x28, 5, 1)
420 #define SET_TX_DESC_BUFFER_HTC(txdesc, value)                                  \
421 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 4, 1, value)
422 #define GET_TX_DESC_BUFFER_HTC(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x28, 4, 1)
423 #define SET_TX_DESC_BUFFER_TX_PKT_AFTER_PIFS(txdesc, value)                    \
424 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 3, 1, value)
425 #define GET_TX_DESC_BUFFER_TX_PKT_AFTER_PIFS(txdesc)                           \
426 	LE_BITS_TO_4BYTE(txdesc + 0x28, 3, 1)
427 #define SET_TX_DESC_BUFFER_USE_MAX_TIME_EN(txdesc, value)                      \
428 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 2, 1, value)
429 #define GET_TX_DESC_BUFFER_USE_MAX_TIME_EN(txdesc)                             \
430 	LE_BITS_TO_4BYTE(txdesc + 0x28, 2, 1)
431 #define SET_TX_DESC_BUFFER_HW_SSN_SEL(txdesc, value)                           \
432 	SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 0, 2, value)
433 #define GET_TX_DESC_BUFFER_HW_SSN_SEL(txdesc)                                  \
434 	LE_BITS_TO_4BYTE(txdesc + 0x28, 0, 2)
435 
436 /*TXDESC_WORD11*/
437 
438 #define SET_TX_DESC_BUFFER_ADDR_CAM(txdesc, value)                             \
439 	SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 24, 8, value)
440 #define GET_TX_DESC_BUFFER_ADDR_CAM(txdesc)                                    \
441 	LE_BITS_TO_4BYTE(txdesc + 0x2C, 24, 8)
442 #define SET_TX_DESC_BUFFER_SND_TARGET(txdesc, value)                           \
443 	SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 16, 8, value)
444 #define GET_TX_DESC_BUFFER_SND_TARGET(txdesc)                                  \
445 	LE_BITS_TO_4BYTE(txdesc + 0x2C, 16, 8)
446 #define SET_TX_DESC_BUFFER_DATA_LDPC(txdesc, value)                            \
447 	SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 15, 1, value)
448 #define GET_TX_DESC_BUFFER_DATA_LDPC(txdesc)                                   \
449 	LE_BITS_TO_4BYTE(txdesc + 0x2C, 15, 1)
450 #define SET_TX_DESC_BUFFER_LSIG_TXOP_EN(txdesc, value)                         \
451 	SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 14, 1, value)
452 #define GET_TX_DESC_BUFFER_LSIG_TXOP_EN(txdesc)                                \
453 	LE_BITS_TO_4BYTE(txdesc + 0x2C, 14, 1)
454 #define SET_TX_DESC_BUFFER_G_ID(txdesc, value)                                 \
455 	SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 8, 6, value)
456 #define GET_TX_DESC_BUFFER_G_ID(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x2C, 8, 6)
457 #define SET_TX_DESC_BUFFER_SIGNALING_TA_PKT_SC(txdesc, value)                  \
458 	SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 4, 4, value)
459 #define GET_TX_DESC_BUFFER_SIGNALING_TA_PKT_SC(txdesc)                         \
460 	LE_BITS_TO_4BYTE(txdesc + 0x2C, 4, 4)
461 #define SET_TX_DESC_BUFFER_DATA_SC(txdesc, value)                              \
462 	SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 0, 4, value)
463 #define GET_TX_DESC_BUFFER_DATA_SC(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x2C, 0, 4)
464 
465 /*TXDESC_WORD12*/
466 
467 #define SET_TX_DESC_BUFFER_LEN1_L(txdesc, value)                               \
468 	SET_BITS_TO_LE_4BYTE(txdesc + 0x30, 17, 7, value)
469 #define GET_TX_DESC_BUFFER_LEN1_L(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x30, 17, 7)
470 #define SET_TX_DESC_BUFFER_LEN0(txdesc, value)                                 \
471 	SET_BITS_TO_LE_4BYTE(txdesc + 0x30, 4, 13, value)
472 #define GET_TX_DESC_BUFFER_LEN0(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x30, 4, 13)
473 #define SET_TX_DESC_BUFFER_PKT_NUM(txdesc, value)                              \
474 	SET_BITS_TO_LE_4BYTE(txdesc + 0x30, 0, 4, value)
475 #define GET_TX_DESC_BUFFER_PKT_NUM(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x30, 0, 4)
476 
477 /*TXDESC_WORD13*/
478 
479 #define SET_TX_DESC_BUFFER_LEN3(txdesc, value)                                 \
480 	SET_BITS_TO_LE_4BYTE(txdesc + 0x34, 19, 13, value)
481 #define GET_TX_DESC_BUFFER_LEN3(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x34, 19, 13)
482 #define SET_TX_DESC_BUFFER_LEN2(txdesc, value)                                 \
483 	SET_BITS_TO_LE_4BYTE(txdesc + 0x34, 6, 13, value)
484 #define GET_TX_DESC_BUFFER_LEN2(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x34, 6, 13)
485 #define SET_TX_DESC_BUFFER_LEN1_H(txdesc, value)                               \
486 	SET_BITS_TO_LE_4BYTE(txdesc + 0x34, 0, 6, value)
487 #define GET_TX_DESC_BUFFER_LEN1_H(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x34, 0, 6)
488 
489 #endif
490 
491 #endif
492