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