blob: 78bc187a1b6d2aeff924329e9987b9fe6a52f6f1 [file] [log] [blame]
Pranita Solankea1e18aa2018-06-09 23:15:50 +05301/*
Amir Patel78824b12019-02-23 10:54:32 +05302 * Copyright (c) 2016-2019 The Linux Foundation. All rights reserved.
Pranita Solankea1e18aa2018-06-09 23:15:50 +05303 *
4 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all
7 * copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
17 */
18
19#include "dp_ratetable.h"
20#include "qdf_module.h"
Anish Nataraj376d9b12018-08-13 14:12:01 +053021#include "cdp_txrx_mon_struct.h"
Pranita Solankea1e18aa2018-06-09 23:15:50 +053022
23enum {
24 MODE_11A = 0, /* 11a Mode */
25 MODE_11G = 1, /* 11b/g Mode */
26 MODE_11B = 2, /* 11b Mode */
27 MODE_11GONLY = 3, /* 11g only Mode */
28 MODE_11NA_HT20 = 4, /* 11a HT20 mode */
29 MODE_11NG_HT20 = 5, /* 11g HT20 mode */
30 MODE_11NA_HT40 = 6, /* 11a HT40 mode */
31 MODE_11NG_HT40 = 7, /* 11g HT40 mode */
32 MODE_11AC_VHT20 = 8,
33 MODE_11AC_VHT40 = 9,
34 MODE_11AC_VHT80 = 10,
35 MODE_11AC_VHT20_2G = 11,
36 MODE_11AC_VHT40_2G = 12,
37 MODE_11AC_VHT80_2G = 13,
38 MODE_11AC_VHT80_80 = 14,
39 MODE_11AC_VHT160 = 15,
40 MODE_11AX_HE20 = 16,
41 MODE_11AX_HE40 = 17,
42 MODE_11AX_HE80 = 18,
43 MODE_11AX_HE80_80 = 19,
44 MODE_11AX_HE160 = 20,
45 MODE_11AX_HE20_2G = 21,
46 MODE_11AX_HE40_2G = 22,
47 MODE_11AX_HE80_2G = 23,
48 /* MODE_UNKNOWN should not be used within the host / target interface.
49 * Thus, it is permissible for ODE_UNKNOWN to be conditionally-defined,
50 * taking different values when compiling for different targets.
51 */
52 MODE_UNKNOWN,
53 MODE_UNKNOWN_NO_160MHZ_SUPPORT = 14, /* not needed? */
54 MODE_UNKNOWN_160MHZ_SUPPORT = MODE_UNKNOWN, /* not needed? */
55} DP_PHY_MODE;
56
57/* The following would span more than one octet
58 * when 160MHz BW defined for VHT
59 * Also it's important to maintain the ordering of this enum
60 * else it would break other rate adapation functions
61 */
62
63enum DP_CMN_RATECODE_PREAM_TYPE {
64 DP_CMN_RATECODE_PREAM_OFDM,
65 DP_CMN_RATECODE_PREAM_CCK,
66 DP_CMN_RATECODE_PREAM_HT,
67 DP_CMN_RATECODE_PREAM_VHT,
68 DP_CMN_RATECODE_PREAM_HE,
69 DP_CMN_RATECODE_PREAM_COUNT,
70};
71
72/*
73 * @validmodemask : bit mask where 1 indicates the rate is valid for that mode
74 * @DP_CMN_MODULATION : modulation CCK/OFDM/MCS
75 * @propmask : bit mask of rate property. NSS/STBC/TXBF/LDPC
76 * @ratekbps : Rate in Kbits per second
77 * @ratebpdsgi : Rate in kbits per second if HT SGI is enabled
78 * @ratekbpsdgi : Rate in kbits per second if 1.6us GI is enabled
79 * @ratekbpsqgi : Rate in kbits per second if 3.2us GI is enabled
80 * @ratekbpsdcm : Rate in kbits per second if DCM is applied
81 * @userratekabps : User rate in KBits per second
82 * @dot11rate : Value that goes into supported rates info element of MLME
83 * @ratecode : rate that goes into hw descriptors
84 */
85const struct DP_CMN_RATE_TABLE {
86 struct {
87 uint32_t validmodemask;
88 enum DP_CMN_MODULATION_TYPE phy;
Pranita Solankea1e18aa2018-06-09 23:15:50 +053089 uint32_t ratekbps;
90 uint32_t ratekbpssgi;
91 uint32_t ratekbpsdgi;
92 uint32_t ratekbpsqgi;
93 uint32_t ratekbpsdcm;
94 uint32_t userratekbps;
Pranita Solankea1e18aa2018-06-09 23:15:50 +053095 uint16_t ratecode;
96 } info[DP_RATE_TABLE_SIZE];
97} DP_CMN_RATE_TABLE;
98
99/*Use the highest bit to indicate the invalid bcc rates accorss
100 *different PHYMODE
101 */
102#define INVALID_BCC_RATE BIT(MODE_UNKNOWN)
103
104#define CCK_MODE_VALID_MASK ((1 << MODE_11G) | (1 << MODE_11B) | \
105 (1 << MODE_11NG_HT20) | (1 << MODE_11NG_HT40) | \
106 (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) |\
107 (1 << MODE_11AC_VHT80_2G))
108
109#define OFDM_MODE_VALID_MASK ((1 << MODE_11A) | (1 << MODE_11G) | \
110 (1 << MODE_11GONLY) | (1 << MODE_11NA_HT20) | \
111 (1 << MODE_11NG_HT20) \
112 | (1 << MODE_11NA_HT40) | (1 << MODE_11NG_HT40) \
113 | (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT20) | \
114 (1 << MODE_11AC_VHT80) \
115 | (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) | \
116 (1 << MODE_11AC_VHT80_2G) \
117 | (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80))
118
119#define HT20_MODE_VALID_MASK ((1 << MODE_11NA_HT20) | \
120 (1 << MODE_11NG_HT20) \
121 | (1 << MODE_11NA_HT40) | (1 << MODE_11NG_HT40) \
122 | (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT20) | \
123 (1 << MODE_11AC_VHT80) \
124 | (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) | \
125 (1 << MODE_11AC_VHT80_2G) \
126 | (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80))
127
128#define HT40_MODE_VALID_MASK ((1 << MODE_11NA_HT40) | \
129 (1 << MODE_11NG_HT40) \
130 | (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT80) \
131 | (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT80_2G) \
132 | (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80))
133
134#define VHT20_MODE_VALID_MASK ((1 << MODE_11AC_VHT20) | \
135 (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT80) | \
136 (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) | \
137 (1 << MODE_11AC_VHT80_2G) | \
138 (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80))
139
140#define VHT40_MODE_VALID_MASK ((1 << MODE_11AC_VHT40) | \
141 (1 << MODE_11AC_VHT80) | \
142 (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT80_2G) | \
143 (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80))
144
145#define VHT80_MODE_VALID_MASK ((1 << MODE_11AC_VHT80) | \
146 (1 << MODE_11AC_VHT80_2G) | \
147 (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80))
148
149#define VHT160_MODE_VALID_MASK ((1 << MODE_11AC_VHT160) | \
150 (1 << MODE_11AC_VHT80_80))
151
152#define VHT20_LDPC_ONLY_MASKS (VHT20_MODE_VALID_MASK | INVALID_BCC_RATE)
153#define VHT40_LDPC_ONLY_MASKS (VHT40_MODE_VALID_MASK | INVALID_BCC_RATE)
154#define VHT80_LDPC_ONLY_MASKS (VHT80_MODE_VALID_MASK | INVALID_BCC_RATE)
155#define VHT160_LDPC_ONLY_MASKS (VHT160_MODE_VALID_MASK | INVALID_BCC_RATE)
156
157#define VHT_INVALID_MCS (0xFF)
158#define VHT_INVALID_RATES_MASK 0
159
160#define HE20_MODE_VALID_MASK ((1 << MODE_11AX_HE20) |\
161 (1 << MODE_11AX_HE40) | \
162 (1 << MODE_11AX_HE80) | (1 << MODE_11AX_HE20_2G) | \
163 (1 << MODE_11AX_HE40_2G) | \
164 (1 << MODE_11AX_HE80_2G) | (1 << MODE_11AX_HE80_80) | \
165 (1 << MODE_11AX_HE160))
166
167#define HE40_MODE_VALID_MASK ((1 << MODE_11AX_HE40) | \
168 (1 << MODE_11AX_HE80) | (1 << MODE_11AX_HE40_2G) | \
169 (1 << MODE_11AX_HE80_2G) | (1 << MODE_11AX_HE80_80) | \
170 (1 << MODE_11AX_HE160))
171
172#define HE80_MODE_VALID_MASK ((1 << MODE_11AX_HE80) | \
173 (1 << MODE_11AX_HE80_2G) | \
174 (1 << MODE_11AX_HE80_80) | (1 << MODE_11AX_HE160))
175
176#define HE160_MODE_VALID_MASK ((1 << MODE_11AX_HE80_80) | \
177 (1 << MODE_11AX_HE160))
178
179#define HE20_LDPC_ONLY_MASKS (HE20_MODE_VALID_MASK | INVALID_BCC_RATE)
180#define HE40_LDPC_ONLY_MASKS (HE40_MODE_VALID_MASK | INVALID_BCC_RATE)
181#define HE80_LDPC_ONLY_MASKS (HE80_MODE_VALID_MASK | INVALID_BCC_RATE)
182#define HE160_LDPC_ONLY_MASKS (HE160_MODE_VALID_MASK | INVALID_BCC_RATE)
183
184#define HE_INVALID_RATES_MASK 0
185
186static const struct DP_CMN_RATE_TABLE dp_11abgnratetable = {
187 {
188 /* When number of spatial strams > 4 or 11AX support is enabled */
189
190 /* 0 11 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK,
191 11000, 11000, 0, 0, 0, 11000,
192 0x100 },
193 /* 1 5.5 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK,
194 5500, 5500, 0, 0, 0, 5500, 0x101
195 },
196 /* 2 2 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK,
197 2000, 2000, 0, 0, 0, 2000, 0x102
198 },
199 /* 3 1 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK,
200 1000, 1000, 0, 0, 0, 1000, 0x103
201 },
202 /* 4 48 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM,
203 48000, 48000, 0, 0, 0, 48000,
204 0x000 },
205 /* 5 24 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM,
206 24000, 24000, 0, 0, 0, 24000,
207 0x001 },
208 /* 6 12 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM,
209 12000, 12000, 0, 0, 0, 12000,
210 0x002 },
211 /* 7 6 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM,
212 6000, 6000, 0, 0, 0, 6000,
213 0x003 },
214 /* 8 54 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM,
215 54000, 54000, 0, 0, 0, 54000,
216 0x004 },
217 /* 9 36 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM,
218 36000, 36000, 0, 0, 0, 36000,
219 0x005 },
220 /* 10 18 Mb */ { OFDM_MODE_VALID_MASK,
221 DP_CMN_MOD_IEEE80211_T_OFDM,
222 18000, 18000, 0, 0, 0, 18000,
223 0x006 },
224 /* 11 9 Mb */ { OFDM_MODE_VALID_MASK,
225 DP_CMN_MOD_IEEE80211_T_OFDM,
226 9000, 9000, 0, 0, 0, 9000,
227 0x007},
228
229 /* 12 MCS-00 */ { HT20_MODE_VALID_MASK,
230 DP_CMN_MOD_IEEE80211_T_HT_20, 6500,
231 7200, 0, 0, 0, 6500, 0x200 },
232 /* 13 MCS-01 */ { HT20_MODE_VALID_MASK,
233 DP_CMN_MOD_IEEE80211_T_HT_20, 13000,
234 14400, 0, 0, 0, 13000, 0x201 },
235 /* 14 MCS-02 */ { HT20_MODE_VALID_MASK,
236 DP_CMN_MOD_IEEE80211_T_HT_20, 19500,
237 21700, 0, 0, 0, 19500, 0x202 },
238 /* 15 MCS-03 */ { HT20_MODE_VALID_MASK,
239 DP_CMN_MOD_IEEE80211_T_HT_20, 26000,
240 28900, 0, 0, 0, 26000, 0x203 },
241 /* 16 MCS-04 */ { HT20_MODE_VALID_MASK,
242 DP_CMN_MOD_IEEE80211_T_HT_20, 39000,
243 43300, 0, 0, 0, 39000, 0x204 },
244 /* 17 MCS-05 */ { HT20_MODE_VALID_MASK,
245 DP_CMN_MOD_IEEE80211_T_HT_20, 52000,
246 57800, 0, 0, 0, 52000, 0x205 },
247 /* 18 MCS-06 */ { HT20_MODE_VALID_MASK,
248 DP_CMN_MOD_IEEE80211_T_HT_20, 58500,
249 65000, 0, 0, 0, 58500, 0x206 },
250 /* 19 MCS-07 */ { HT20_MODE_VALID_MASK,
251 DP_CMN_MOD_IEEE80211_T_HT_20, 65000,
252 72200, 0, 0, 0, 65000, 0x207 },
253 /* When number of spatial streams > 1 */
254 /* 20 MCS-00 */ { HT20_MODE_VALID_MASK,
255 DP_CMN_MOD_IEEE80211_T_HT_20, 13000,
256 14400, 0, 0, 0, 13000, 0x220 },
257 /* 21 MCS-01 */ { HT20_MODE_VALID_MASK,
258 DP_CMN_MOD_IEEE80211_T_HT_20, 26000,
259 28900, 0, 0, 0, 26000, 0x221 },
260 /* 22 MCS-02 */ { HT20_MODE_VALID_MASK,
261 DP_CMN_MOD_IEEE80211_T_HT_20, 39000,
262 43300, 0, 0, 0, 39000, 0x222 },
263 /* 23 MCS-03 */ { HT20_MODE_VALID_MASK,
264 DP_CMN_MOD_IEEE80211_T_HT_20, 52000,
265 57800, 0, 0, 0, 52000, 0x223 },
266 /* 24 MCS-04 */ { HT20_MODE_VALID_MASK,
267 DP_CMN_MOD_IEEE80211_T_HT_20, 78000,
268 86700, 0, 0, 0, 78000, 0x224 },
269 /* 25 MCS-05 */ { HT20_MODE_VALID_MASK,
270 DP_CMN_MOD_IEEE80211_T_HT_20, 104000,
271 115600, 0, 0, 0, 104000, 0x225 },
272 /* 26 MCS-06 */ { HT20_MODE_VALID_MASK,
273 DP_CMN_MOD_IEEE80211_T_HT_20, 117000,
274 130000, 0, 0, 0, 117000, 0x226 },
275 /* 27 MCS-07 */ { HT20_MODE_VALID_MASK,
276 DP_CMN_MOD_IEEE80211_T_HT_20, 130000,
277 144000, 0, 0, 0, 130000, 0x227 },
278 /* When number of spatial streams > 2 */
279 /* 28 MCS-00 */ { HT20_MODE_VALID_MASK,
280 DP_CMN_MOD_IEEE80211_T_HT_20, 19500,
281 21700, 0, 0, 0, 19500, 0x240 },
282 /* 29 MCS-01 */ { HT20_MODE_VALID_MASK,
283 DP_CMN_MOD_IEEE80211_T_HT_20, 39000,
284 43300, 0, 0, 0, 39000, 0x241 },
285 /* 30 MCS-02 */ { HT20_MODE_VALID_MASK,
286 DP_CMN_MOD_IEEE80211_T_HT_20, 58500,
287 65000, 0, 0, 0, 58500, 0x242 },
288 /* 31 MCS-03 */ { HT20_MODE_VALID_MASK,
289 DP_CMN_MOD_IEEE80211_T_HT_20, 78000,
290 86700, 0, 0, 0, 78000, 0x243 },
291 /* 32 MCS-04 */ { HT20_MODE_VALID_MASK,
292 DP_CMN_MOD_IEEE80211_T_HT_20, 117000,
293 130000, 0, 0, 0, 117000, 0x244 },
294 /* 33 MCS-05 */ { HT20_MODE_VALID_MASK,
295 DP_CMN_MOD_IEEE80211_T_HT_20, 156000,
296 173300, 0, 0, 0, 156000, 0x245 },
297 /* 34 MCS-06 */ { HT20_MODE_VALID_MASK,
298 DP_CMN_MOD_IEEE80211_T_HT_20, 175500,
299 195000, 0, 0, 0, 175500, 0x246 },
300 /* 35 MCS-07 */ { HT20_MODE_VALID_MASK,
301 DP_CMN_MOD_IEEE80211_T_HT_20, 195000,
302 216700, 0, 0, 0, 195000, 0x247 },
303 /* When number of spatial streams > 3 */
304 /* 36 MCS-00 */ { HT20_MODE_VALID_MASK,
305 DP_CMN_MOD_IEEE80211_T_HT_20, 26000,
306 28900, 0, 0, 0, 26000, 0x260 },
307 /* 37 MCS-01 */ { HT20_MODE_VALID_MASK,
308 DP_CMN_MOD_IEEE80211_T_HT_20, 52000,
309 57800, 0, 0, 0, 52000, 0x261 },
310 /* 38 MCS-02 */ { HT20_MODE_VALID_MASK,
311 DP_CMN_MOD_IEEE80211_T_HT_20, 78000,
312 86700, 0, 0, 0, 78000, 0x262 },
313 /* 39 MCS-03 */ { HT20_MODE_VALID_MASK,
314 DP_CMN_MOD_IEEE80211_T_HT_20, 104000,
315 115600, 0, 0, 0, 104000, 0x263 },
316 /* 40 MCS-04 */ { HT20_MODE_VALID_MASK,
317 DP_CMN_MOD_IEEE80211_T_HT_20, 156000,
318 173300, 0, 0, 0, 156000, 0x264 },
319 /* 41 MCS-05 */ { HT20_MODE_VALID_MASK,
320 DP_CMN_MOD_IEEE80211_T_HT_20, 208000,
321 231100, 0, 0, 0, 208000, 0x265 },
322 /* 42 MCS-06 */ { HT20_MODE_VALID_MASK,
323 DP_CMN_MOD_IEEE80211_T_HT_20, 234000,
324 260000, 0, 0, 0, 234000, 0x266 },
325 /* 43 MCS-07 */ { HT20_MODE_VALID_MASK,
326 DP_CMN_MOD_IEEE80211_T_HT_20, 260000,
327 288900, 0, 0, 0, 260000, 0x267 },
328
329 /* 11n HT40 rates */
330 /* 44 MCS-00 */ { HT40_MODE_VALID_MASK,
331 DP_CMN_MOD_IEEE80211_T_HT_40, 13500,
332 15000, 0, 0, 0, 13500, 0x200 },
333 /* 45 MCS-01 */ { HT40_MODE_VALID_MASK,
334 DP_CMN_MOD_IEEE80211_T_HT_40, 27000,
335 30000, 0, 0, 0, 27000, 0x201 },
336 /* 46 MCS-02 */ { HT40_MODE_VALID_MASK,
337 DP_CMN_MOD_IEEE80211_T_HT_40, 40500,
338 45000, 0, 0, 0, 40500, 0x202 },
339 /* 47 MCS-03 */ { HT40_MODE_VALID_MASK,
340 DP_CMN_MOD_IEEE80211_T_HT_40, 54000,
341 60000, 0, 0, 0, 54000, 0x203 },
342 /* 48 MCS-04 */ { HT40_MODE_VALID_MASK,
343 DP_CMN_MOD_IEEE80211_T_HT_40, 81500,
344 90000, 0, 0, 0, 81500, 0x204 },
345 /* 49 MCS-05 */ { HT40_MODE_VALID_MASK,
346 DP_CMN_MOD_IEEE80211_T_HT_40, 108000,
347 120000, 0, 0, 0, 108000, 0x205 },
348 /* 50 MCS-06 */ { HT40_MODE_VALID_MASK,
349 DP_CMN_MOD_IEEE80211_T_HT_40, 121500,
350 135000, 0, 0, 0, 121500, 0x206 },
351 /* 51 MCS-07 */ { HT40_MODE_VALID_MASK,
352 DP_CMN_MOD_IEEE80211_T_HT_40, 135000,
353 150000, 0, 0, 0, 135000, 0x207 },
354 /* When number of spatial streams > 1 */
355 /* 52 MCS-00 */ { HT40_MODE_VALID_MASK,
356 DP_CMN_MOD_IEEE80211_T_HT_40, 27000,
357 30000, 0, 0, 0, 27000, 0x220 },
358 /* 53 MCS-01 */ { HT40_MODE_VALID_MASK,
359 DP_CMN_MOD_IEEE80211_T_HT_40, 54000,
360 60000, 0, 0, 0, 54000, 0x221 },
361 /* 54 MCS-02 */ { HT40_MODE_VALID_MASK,
362 DP_CMN_MOD_IEEE80211_T_HT_40, 81000,
363 90000, 0, 0, 0, 81000, 0x222 },
364 /* 55 MCS-03 */ { HT40_MODE_VALID_MASK,
365 DP_CMN_MOD_IEEE80211_T_HT_40, 108000,
366 120000, 0, 0, 0, 108000, 0x223 },
367 /* 56 MCS-04 */ { HT40_MODE_VALID_MASK,
368 DP_CMN_MOD_IEEE80211_T_HT_40, 162000,
369 180000, 0, 0, 0, 162000, 0x224 },
370 /* 57 MCS-05 */ { HT40_MODE_VALID_MASK,
371 DP_CMN_MOD_IEEE80211_T_HT_40, 216000,
372 240000, 0, 0, 0, 216000, 0x225 },
373 /* 58 MCS-06 */ { HT40_MODE_VALID_MASK,
374 DP_CMN_MOD_IEEE80211_T_HT_40, 243000,
375 270000, 0, 0, 0, 243000, 0x226 },
376 /* 59 MCS-07 */ { HT40_MODE_VALID_MASK,
377 DP_CMN_MOD_IEEE80211_T_HT_40, 270000,
378 300000, 0, 0, 0, 270000, 0x227 },
379 /* When number of spatial streams > 2 */
380 /* 60 MCS-00 */ { HT40_MODE_VALID_MASK,
381 DP_CMN_MOD_IEEE80211_T_HT_40, 40500,
382 45000, 0, 0, 0, 40500, 0x240 },
383 /* 61 MCS-01 */ { HT40_MODE_VALID_MASK,
384 DP_CMN_MOD_IEEE80211_T_HT_40, 81000,
385 90000, 0, 0, 0, 81000, 0x241 },
386 /* 62 MCS-02 */ { HT40_MODE_VALID_MASK,
387 DP_CMN_MOD_IEEE80211_T_HT_40, 121500,
388 135000, 0, 0, 0, 121500, 0x242 },
389 /* 63 MCS-03 */ { HT40_MODE_VALID_MASK,
390 DP_CMN_MOD_IEEE80211_T_HT_40, 162000,
391 180000, 0, 0, 0, 162000, 0x243 },
392 /* 64 MCS-04 */ { HT40_MODE_VALID_MASK,
393 DP_CMN_MOD_IEEE80211_T_HT_40, 243000,
394 270000, 0, 0, 0, 243000, 0x244 },
395 /* 65 MCS-05 */ { HT40_MODE_VALID_MASK,
396 DP_CMN_MOD_IEEE80211_T_HT_40, 324000,
397 360000, 0, 0, 0, 324000, 0x245 },
398 /* 66 MCS-06 */ { HT40_MODE_VALID_MASK,
399 DP_CMN_MOD_IEEE80211_T_HT_40, 364500,
400 405000, 0, 0, 0, 364500, 0x246 },
401 /* 67 MCS-07 */ { HT40_MODE_VALID_MASK,
402 DP_CMN_MOD_IEEE80211_T_HT_40, 405000,
403 450000, 0, 0, 0, 405000, 0x247 },
404 /* When number of spatial streams > 3 */
405 /* 68 MCS-00 */ { HT40_MODE_VALID_MASK,
406 DP_CMN_MOD_IEEE80211_T_HT_40, 54000,
407 60000, 0, 0, 0, 54000, 0x260 },
408 /* 69 MCS-01 */ { HT40_MODE_VALID_MASK,
409 DP_CMN_MOD_IEEE80211_T_HT_40, 108000,
410 120000, 0, 0, 0, 108000, 0x261 },
411 /* 70 MCS-02 */ { HT40_MODE_VALID_MASK,
412 DP_CMN_MOD_IEEE80211_T_HT_40, 162000,
413 180000, 0, 0, 0, 162000, 0x262 },
414 /* 71 MCS-03 */ { HT40_MODE_VALID_MASK,
415 DP_CMN_MOD_IEEE80211_T_HT_40, 216000,
416 240000, 0, 0, 0, 216000, 0x263 },
417 /* 72 MCS-04 */ { HT40_MODE_VALID_MASK,
418 DP_CMN_MOD_IEEE80211_T_HT_40, 324000,
419 360000, 0, 0, 0, 324000, 0x264 },
420 /* 73 MCS-05 */ { HT40_MODE_VALID_MASK,
421 DP_CMN_MOD_IEEE80211_T_HT_40, 432000,
422 480000, 0, 0, 0, 432000, 0x265 },
423 /* 74 MCS-06 */ { HT40_MODE_VALID_MASK,
424 DP_CMN_MOD_IEEE80211_T_HT_40, 486000,
425 540000, 0, 0, 0, 486000, 0x266 },
426 /* 75 MCS-07 */ { HT40_MODE_VALID_MASK,
427 DP_CMN_MOD_IEEE80211_T_HT_40, 540000,
428 600000, 0, 0, 0, 540000, 0x267 },
429
430 /* 11ac VHT20 rates */
431 /* 76 MCS-00 */ { VHT20_MODE_VALID_MASK,
432 DP_CMN_MOD_IEEE80211_T_VHT_20, 6500,
433 7200, 0, 0, 0, 6500, 0x300 },
434 /* 77 MCS-01 */ { VHT20_MODE_VALID_MASK,
435 DP_CMN_MOD_IEEE80211_T_VHT_20, 13000,
436 14400, 0, 0, 0, 13000, 0x301 },
437 /* 78 MCS-02 */ { VHT20_MODE_VALID_MASK,
438 DP_CMN_MOD_IEEE80211_T_VHT_20, 19500,
439 21700, 0, 0, 0, 19500, 0x302 },
440 /* 79 MCS-03 */ { VHT20_MODE_VALID_MASK,
441 DP_CMN_MOD_IEEE80211_T_VHT_20, 26000,
442 28900, 0, 0, 0, 26000, 0x303 },
443 /* 80 MCS-04 */ { VHT20_MODE_VALID_MASK,
444 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000,
445 43300, 0, 0, 0, 39000, 0x304 },
446 /* 81 MCS-05 */ { VHT20_MODE_VALID_MASK,
447 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000,
448 57800, 0, 0, 0, 52000, 0x305 },
449 /* 82 MCS-06 */ { VHT20_MODE_VALID_MASK,
450 DP_CMN_MOD_IEEE80211_T_VHT_20, 58500,
451 65000, 0, 0, 0, 58500, 0x306 },
452 /* 83 MCS-07 */ { VHT20_MODE_VALID_MASK,
453 DP_CMN_MOD_IEEE80211_T_VHT_20, 65000,
454 72200, 0, 0, 0, 65000, 0x307 },
455 /* 84 MCS-08 */ { VHT20_MODE_VALID_MASK,
456 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000,
457 86700, 0, 0, 0, 78000, 0x308 },
458 /* 85 MCS-09 */ { VHT20_LDPC_ONLY_MASKS,
459 DP_CMN_MOD_IEEE80211_T_VHT_20, 86500,
460 96000, 0, 0, 0, 86500, 0x309 },
461 /* When we support very hight throughput MCS */
462 /* 86 MCS-10 */ { VHT20_LDPC_ONLY_MASKS,
463 DP_CMN_MOD_IEEE80211_T_VHT_20,
464 97500, 108300, 0, 0, 0,
465 97500, 0x30a},
466 /* 87 MCS-11 */ { VHT20_LDPC_ONLY_MASKS,
467 DP_CMN_MOD_IEEE80211_T_VHT_20,
468 108300, 120400, 0, 0, 0,
469 108300, 0x30b},
470
471 /* When number of spatial streams > 1 */
472 /* 88 MCS-00 */ { VHT20_MODE_VALID_MASK,
473 DP_CMN_MOD_IEEE80211_T_VHT_20, 13000,
474 14400, 0, 0, 0, 13000, 0x320 },
475 /* 89 MCS-01 */ { VHT20_MODE_VALID_MASK,
476 DP_CMN_MOD_IEEE80211_T_VHT_20, 26000,
477 28900, 0, 0, 0, 26000, 0x321 },
478 /* 90 MCS-02 */ { VHT20_MODE_VALID_MASK,
479 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000,
480 43300, 0, 0, 0, 39000, 0x322 },
481 /* 91 MCS-03 */ { VHT20_MODE_VALID_MASK,
482 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000,
483 57800, 0, 0, 0, 52000, 0x323 },
484 /* 92 MCS-04 */ { VHT20_MODE_VALID_MASK,
485 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000,
486 86700, 0, 0, 0, 78000, 0x324 },
487 /* 93 MCS-05 */ { VHT20_MODE_VALID_MASK,
488 DP_CMN_MOD_IEEE80211_T_VHT_20, 104000,
489 115600, 0, 0, 0, 104000, 0x325 },
490 /* 94 MCS-06 */ { VHT20_MODE_VALID_MASK,
491 DP_CMN_MOD_IEEE80211_T_VHT_20, 117000,
492 130000, 0, 0, 0, 117000, 0x326 },
493 /* 95 MCS-07 */ { VHT20_MODE_VALID_MASK,
494 DP_CMN_MOD_IEEE80211_T_VHT_20, 130000,
495 144400, 0, 0, 0, 130000, 0x327 },
496 /* 96 MCS-08 */ { VHT20_MODE_VALID_MASK,
497 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000,
498 173300, 0, 0, 0, 156000, 0x328 },
499 /* 97 MCS-09 */ { VHT20_LDPC_ONLY_MASKS,
500 DP_CMN_MOD_IEEE80211_T_VHT_20, 173000,
501 192000, 0, 0, 0, 173000, 0x329 },
502 /* 98 MCS-10 */ { VHT20_LDPC_ONLY_MASKS,
503 DP_CMN_MOD_IEEE80211_T_VHT_20,
504 195000, 216700, 0, 0, 0,
505 195000, 0x32a },
506 /* 99 MCS-11 */ { VHT20_LDPC_ONLY_MASKS,
507 DP_CMN_MOD_IEEE80211_T_VHT_20,
508 216700, 240700, 0, 0, 0,
509 216700, 0x32b },
510
511 /* when number of spatial streams > 2 */
512 /* 100 MCS-00 */ { VHT20_MODE_VALID_MASK,
513 DP_CMN_MOD_IEEE80211_T_VHT_20, 19500,
514 21700, 0, 0, 0, 19500, 0x340 },
515 /* 101 MCS-01 */ { VHT20_MODE_VALID_MASK,
516 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000,
517 43300, 0, 0, 0, 39000, 0x341 },
518 /* 102 MCS-02 */ { VHT20_MODE_VALID_MASK,
519 DP_CMN_MOD_IEEE80211_T_VHT_20, 58500,
520 65000, 0, 0, 0, 58500, 0x342 },
521 /* 103 MCS-03 */ { VHT20_MODE_VALID_MASK,
522 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000,
523 86700, 0, 0, 0, 78000, 0x343 },
524 /* 104 MCS-04 */ { VHT20_MODE_VALID_MASK,
525 DP_CMN_MOD_IEEE80211_T_VHT_20, 117000,
526 130000, 0, 0, 0, 117000, 0x344 },
527 /* 105 MCS-05 */ { VHT20_MODE_VALID_MASK,
528 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000,
529 173300, 0, 0, 0, 156000, 0x345 },
530 /* 106 MCS-06 */ { VHT20_MODE_VALID_MASK,
531 DP_CMN_MOD_IEEE80211_T_VHT_20, 175500,
532 195000, 0, 0, 0, 175500, 0x346 },
533 /* 107 MCS-07 */ { VHT20_MODE_VALID_MASK,
534 DP_CMN_MOD_IEEE80211_T_VHT_20, 195000,
535 216700, 0, 0, 0, 195000, 0x347 },
536 /* 108 MCS-08 */ { VHT20_MODE_VALID_MASK,
537 DP_CMN_MOD_IEEE80211_T_VHT_20, 234000,
538 260000, 0, 0, 0, 234000, 0x348 },
539 /* 109 MCS-09 */ { VHT20_MODE_VALID_MASK,
540 DP_CMN_MOD_IEEE80211_T_VHT_20, 260000,
541 288900, 0, 0, 0, 260000, 0x349 },
542 /* 110 MCS-10 */ { VHT20_LDPC_ONLY_MASKS,
543 DP_CMN_MOD_IEEE80211_T_VHT_20,
544 292500, 325000, 0, 0, 0,
545 292500, 0x34a},
546 /* 111 MCS-11 */ { VHT20_LDPC_ONLY_MASKS,
547 DP_CMN_MOD_IEEE80211_T_VHT_20,
548 325000, 361100, 0, 0, 0,
549 325000, 0x34b},
550
551 /* when number of spatial streams > 3 */
552 /* 112 MCS-00 */ { VHT20_MODE_VALID_MASK,
553 DP_CMN_MOD_IEEE80211_T_VHT_20, 26000,
554 28900, 0, 0, 0, 26000, 0x360 },
555 /* 113 MCS-01 */ { VHT20_MODE_VALID_MASK,
556 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000,
557 57800, 0, 0, 0, 52000, 0x361 },
558 /* 114 MCS-02 */ { VHT20_MODE_VALID_MASK,
559 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000,
560 86700, 0, 0, 0, 78000, 0x362 },
561 /* 115 MCS-03 */ { VHT20_MODE_VALID_MASK,
562 DP_CMN_MOD_IEEE80211_T_VHT_20, 104000,
563 115600, 0, 0, 0, 104000, 0x363 },
564 /* 116 MCS-04 */ { VHT20_MODE_VALID_MASK,
565 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000,
566 173300, 0, 0, 0, 156000, 0x364 },
567 /* 117 MCS-05 */ { VHT20_MODE_VALID_MASK,
568 DP_CMN_MOD_IEEE80211_T_VHT_20, 208000,
569 231100, 0, 0, 0, 208000, 0x365 },
570 /* 118 MCS-06 */ { VHT20_MODE_VALID_MASK,
571 DP_CMN_MOD_IEEE80211_T_VHT_20, 234000,
572 260000, 0, 0, 0, 234000, 0x366 },
573 /* 119 MCS-07 */ { VHT20_MODE_VALID_MASK,
574 DP_CMN_MOD_IEEE80211_T_VHT_20, 260000,
575 288900, 0, 0, 0, 260000, 0x367 },
576 /* 120 MCS-08 */ { VHT20_MODE_VALID_MASK,
577 DP_CMN_MOD_IEEE80211_T_VHT_20, 312000,
578 346700, 0, 0, 0, 312000, 0x368 },
579 /* 121 MCS-09 */ { VHT20_LDPC_ONLY_MASKS,
580 DP_CMN_MOD_IEEE80211_T_VHT_20, 344000,
581 378400, 0, 0, 0, 344000, 0x369 },
582 /* 122 MCS-10 */ { VHT20_LDPC_ONLY_MASKS,
583 DP_CMN_MOD_IEEE80211_T_VHT_20,
584 390000, 433300, 0, 0, 0, 390000,
585 0x36a},
586 /* 123 MCS-11 */ { VHT20_LDPC_ONLY_MASKS,
587 DP_CMN_MOD_IEEE80211_T_VHT_20, 433300,
588 481500, 0, 0, 0, 433300, 0x36b},
589
590 /* when number of spatial streams > 4 */
591 /* 124 MCS-00 */ { VHT20_LDPC_ONLY_MASKS,
592 DP_CMN_MOD_IEEE80211_T_VHT_20, 32500,
593 36100, 0, 0, 0, 32500, 0x380 },
594 /* 125 MCS-01 */ { VHT20_LDPC_ONLY_MASKS,
595 DP_CMN_MOD_IEEE80211_T_VHT_20, 65000,
596 72200, 0, 0, 0, 65000, 0x381 },
597 /* 126 MCS-02 */ { VHT20_LDPC_ONLY_MASKS,
598 DP_CMN_MOD_IEEE80211_T_VHT_20, 97500,
599 108300, 0, 0, 0, 97500, 0x382 },
600 /* 127 MCS-03 */ { VHT20_LDPC_ONLY_MASKS,
601 DP_CMN_MOD_IEEE80211_T_VHT_20, 130000,
602 144400, 0, 0, 0, 130000, 0x383 },
603 /* 128 MCS-04 */ { VHT20_LDPC_ONLY_MASKS,
604 DP_CMN_MOD_IEEE80211_T_VHT_20, 195000,
605 216700, 0, 0, 0, 195000, 0x384 },
606 /* 129 MCS-05 */ { VHT20_LDPC_ONLY_MASKS,
607 DP_CMN_MOD_IEEE80211_T_VHT_20, 260000,
608 288900, 0, 0, 0, 260000, 0x385 },
609 /* 130 MCS-06 */ { VHT20_LDPC_ONLY_MASKS,
610 DP_CMN_MOD_IEEE80211_T_VHT_20, 292500,
611 325000, 0, 0, 0, 292500, 0x386 },
612 /* 131 MCS-07 */ { VHT20_LDPC_ONLY_MASKS,
613 DP_CMN_MOD_IEEE80211_T_VHT_20, 325000,
614 361100, 0, 0, 0, 325000, 0x387 },
615 /* 132 MCS-08 */ { VHT20_LDPC_ONLY_MASKS,
616 DP_CMN_MOD_IEEE80211_T_VHT_20, 390000,
617 433300, 0, 0, 0, 390000, 0x388 },
618 /* 133 MCS-09 */ { VHT20_LDPC_ONLY_MASKS,
619 DP_CMN_MOD_IEEE80211_T_VHT_20, 433300,
620 481500, 0, 0, 0, 433300, 0x389 },
621 /* 134 MCS-10 */ { VHT20_LDPC_ONLY_MASKS,
622 DP_CMN_MOD_IEEE80211_T_VHT_20, 487500,
623 541700, 0, 0, 0, 487500, 0x38a },
624 /* 135 MCS-11 */ { VHT20_LDPC_ONLY_MASKS,
625 DP_CMN_MOD_IEEE80211_T_VHT_20, 541700,
626 601900, 0, 0, 0, 541700, 0x38b },
627
628 /* When number of spatial streams > 5 */
629 /* 136 MCS-00 */ { VHT20_LDPC_ONLY_MASKS,
630 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000,
631 43300, 0, 0, 0, 39000, 0x3a0 },
632 /* 137 MCS-01 */ { VHT20_LDPC_ONLY_MASKS,
633 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000,
634 86700, 0, 0, 0, 78000, 0x3a1 },
635 /* 138 MCS-02 */ { VHT20_LDPC_ONLY_MASKS,
636 DP_CMN_MOD_IEEE80211_T_VHT_20, 117000,
637 130000, 0, 0, 0, 117000, 0x3a2 },
638 /* 139 MCS-03 */ { VHT20_LDPC_ONLY_MASKS,
639 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000,
640 173300, 0, 0, 0, 156000, 0x3a3 },
641 /* 140 MCS-04 */ { VHT20_LDPC_ONLY_MASKS,
642 DP_CMN_MOD_IEEE80211_T_VHT_20, 234000,
643 260000, 0, 0, 0, 234000, 0x3a4 },
644 /* 141 MCS-05 */ { VHT20_LDPC_ONLY_MASKS,
645 DP_CMN_MOD_IEEE80211_T_VHT_20, 312000,
646 346700, 0, 0, 0, 312000, 0x3a5 },
647 /* 142 MCS-06 */ { VHT20_LDPC_ONLY_MASKS,
648 DP_CMN_MOD_IEEE80211_T_VHT_20, 351000,
649 390000, 0, 0, 0, 351000, 0x3a6 },
650 /* 143 MCS-07 */ { VHT20_LDPC_ONLY_MASKS,
651 DP_CMN_MOD_IEEE80211_T_VHT_20, 390000,
652 433300, 0, 0, 0, 390000, 0x3a7 },
653 /* 144 MCS-08 */ { VHT20_LDPC_ONLY_MASKS,
654 DP_CMN_MOD_IEEE80211_T_VHT_20, 468000,
655 520000, 0, 0, 0, 468000, 0x3a8 },
656 /* 145 MCS-09 */ { VHT20_LDPC_ONLY_MASKS,
657 DP_CMN_MOD_IEEE80211_T_VHT_20, 520000,
658 577800, 0, 0, 0, 520000, 0x3a9 },
659 /* 146 MCS-10 */ { VHT20_LDPC_ONLY_MASKS,
660 DP_CMN_MOD_IEEE80211_T_VHT_20,
661 585000, 650000, 0, 0, 0,
662 585000, 0x3aa },
663 /* 147 MCS-11 */ { VHT20_LDPC_ONLY_MASKS,
664 DP_CMN_MOD_IEEE80211_T_VHT_20,
665 650000, 722200, 0, 0,
666 0, 650000, 0x3ab },
667
668 /* when number of spatial streams > 6 */
669 /* 148 MCS-00 */ { VHT20_LDPC_ONLY_MASKS,
670 DP_CMN_MOD_IEEE80211_T_VHT_20, 45500,
671 50600, 0, 0, 0, 45500, 0x3c0 },
672 /* 149 MCS-01 */ { VHT20_LDPC_ONLY_MASKS,
673 DP_CMN_MOD_IEEE80211_T_VHT_20, 91000,
674 101100, 0, 0, 0, 91000, 0x3c1 },
675 /* 150 MCS-02 */ { VHT20_LDPC_ONLY_MASKS,
676 DP_CMN_MOD_IEEE80211_T_VHT_20, 136500,
677 151700, 0, 0, 0, 136500, 0x3c2 },
678 /* 151 MCS-03 */ { VHT20_LDPC_ONLY_MASKS,
679 DP_CMN_MOD_IEEE80211_T_VHT_20, 182000,
680 202200, 0, 0, 0, 182000, 0x3c3 },
681 /* 152 MCS-04 */ { VHT20_LDPC_ONLY_MASKS,
682 DP_CMN_MOD_IEEE80211_T_VHT_20, 273000,
683 303300, 0, 0, 0, 273000, 0x3c4 },
684 /* 153 MCS-05 */ { VHT20_LDPC_ONLY_MASKS,
685 DP_CMN_MOD_IEEE80211_T_VHT_20, 364000,
686 404400, 0, 0, 0, 364000, 0x3c5 },
687 /* 154 MCS-06 */ { VHT20_LDPC_ONLY_MASKS,
688 DP_CMN_MOD_IEEE80211_T_VHT_20, 409500,
689 455000, 0, 0, 0, 409500, 0x3c6 },
690 /* 155 MCS-07 */ { VHT20_LDPC_ONLY_MASKS,
691 DP_CMN_MOD_IEEE80211_T_VHT_20, 455000,
692 505600, 0, 0, 0, 455000, 0x3c7 },
693 /* 156 MCS-08 */ { VHT20_LDPC_ONLY_MASKS,
694 DP_CMN_MOD_IEEE80211_T_VHT_20, 546000,
695 606700, 0, 0, 0, 546000, 0x3c8 },
696 /* 157 MCS-09 */ { VHT20_LDPC_ONLY_MASKS,
697 DP_CMN_MOD_IEEE80211_T_VHT_20, 606700,
698 674100, 0, 0, 0, 606700, 0x3c9 },
699 /* 158 MCS-10 */ { VHT20_LDPC_ONLY_MASKS,
700 DP_CMN_MOD_IEEE80211_T_VHT_20, 682500,
701 758300, 0, 0, 0, 682500, 0x3ca },
702 /* 159 MCS-11 */ { VHT20_LDPC_ONLY_MASKS,
703 DP_CMN_MOD_IEEE80211_T_VHT_20, 758300,
704 842600, 0, 0, 0, 758300, 0x3cb },
705
706 /* when number of spatial streams > 7 */
707 /* 160 MCS-00 */ { VHT20_LDPC_ONLY_MASKS,
708 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000,
709 57800, 0, 0, 0, 52000, 0x3e0 },
710 /* 161 MCS-01 */ { VHT20_LDPC_ONLY_MASKS,
711 DP_CMN_MOD_IEEE80211_T_VHT_20, 104000,
712 115600, 0, 0, 0, 104000, 0x3e1 },
713 /* 162 MCS-02 */ { VHT20_LDPC_ONLY_MASKS,
714 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000,
715 173300, 0, 0, 0, 156000, 0x3e2 },
716 /* 163 MCS-03 */ { VHT20_LDPC_ONLY_MASKS,
717 DP_CMN_MOD_IEEE80211_T_VHT_20, 208000,
718 231100, 0, 0, 0, 208000, 0x3e3 },
719 /* 164 MCS-04 */ { VHT20_LDPC_ONLY_MASKS,
720 DP_CMN_MOD_IEEE80211_T_VHT_20, 312000,
721 346700, 0, 0, 0, 312000, 0x3e4 },
722 /* 165 MCS-05 */ { VHT20_LDPC_ONLY_MASKS,
723 DP_CMN_MOD_IEEE80211_T_VHT_20, 416000,
724 462200, 0, 0, 0, 416000, 0x3e5 },
725 /* 166 MCS-06 */ { VHT20_LDPC_ONLY_MASKS,
726 DP_CMN_MOD_IEEE80211_T_VHT_20, 468000,
727 520000, 0, 0, 0, 468000, 0x3e6 },
728 /* 167 MCS-07 */ { VHT20_LDPC_ONLY_MASKS,
729 DP_CMN_MOD_IEEE80211_T_VHT_20, 520000,
730 577800, 0, 0, 0, 520000, 0x3e7 },
731 /* 168 MCS-08 */ { VHT20_LDPC_ONLY_MASKS,
732 DP_CMN_MOD_IEEE80211_T_VHT_20, 624000,
733 693300, 0, 0, 0, 624000, 0x3e8 },
734 /* 169 MCS-09 */ { VHT20_LDPC_ONLY_MASKS,
735 DP_CMN_MOD_IEEE80211_T_VHT_20, 693300,
736 770400, 0, 0, 0, 693300, 0x3e9 },
737 /* 170 MCS-10 */ { VHT20_LDPC_ONLY_MASKS,
738 DP_CMN_MOD_IEEE80211_T_VHT_20, 780000,
739 866700, 0, 0, 0, 780000, 0x3ea },
740 /* 171 MCS-11 */ { VHT20_LDPC_ONLY_MASKS,
741 DP_CMN_MOD_IEEE80211_T_VHT_20, 866700,
742 963000, 0, 0, 0, 866700, 0x3eb },
743
744 /* 11ac VHT40 rates */
745 /* 172 MCS-00 */ { VHT40_MODE_VALID_MASK,
746 DP_CMN_MOD_IEEE80211_T_VHT_40, 13500,
747 15000, 0, 0, 0, 13500, 0x300 },
748 /* 173 MCS-01 */ { VHT40_MODE_VALID_MASK,
749 DP_CMN_MOD_IEEE80211_T_VHT_40, 27000,
750 30000, 0, 0, 0, 27000, 0x301 },
751 /* 174 MCS-02 */ { VHT40_MODE_VALID_MASK,
752 DP_CMN_MOD_IEEE80211_T_VHT_40, 40500,
753 45000, 0, 0, 0, 40500, 0x302 },
754 /* 175 MCS-03 */ { VHT40_MODE_VALID_MASK,
755 DP_CMN_MOD_IEEE80211_T_VHT_40, 54000,
756 60000, 0, 0, 0, 54000, 0x303 },
757 /* 176 MCS-04 */ { VHT40_MODE_VALID_MASK,
758 DP_CMN_MOD_IEEE80211_T_VHT_40, 81000,
759 90000, 0, 0, 0, 81000, 0x304 },
760 /* 177 MCS-05 */ { VHT40_MODE_VALID_MASK,
761 DP_CMN_MOD_IEEE80211_T_VHT_40, 108000,
762 120000, 0, 0, 0, 108000, 0x305 },
763 /* 178 MCS-06 */ { VHT40_MODE_VALID_MASK,
764 DP_CMN_MOD_IEEE80211_T_VHT_40, 121500,
765 135000, 0, 0, 0, 121500, 0x306 },
766 /* 179 MCS-07 */ { VHT40_MODE_VALID_MASK,
767 DP_CMN_MOD_IEEE80211_T_VHT_40, 135000,
768 150000, 0, 0, 0, 135000, 0x307 },
769 /* 180 MCS-08 */ { VHT40_MODE_VALID_MASK,
770 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000,
771 180000, 0, 0, 0, 162000, 0x308 },
772 /* 181 MCS-09 */ { VHT40_MODE_VALID_MASK,
773 DP_CMN_MOD_IEEE80211_T_VHT_40, 180000,
774 200000, 0, 0, 0, 180000, 0x309 },
775 /* 182 MCS-10 */ { VHT40_LDPC_ONLY_MASKS,
776 DP_CMN_MOD_IEEE80211_T_VHT_40, 202500,
777 225000, 0, 0, 0, 202500, 0x30a },
778 /* 183 MCS-11 */ { VHT40_LDPC_ONLY_MASKS,
779 DP_CMN_MOD_IEEE80211_T_VHT_40, 225000,
780 250000, 0, 0, 0, 225000, 0x30b },
781
782 /* when number of spatial streams > 1 */
783 /* 184 MCS-00 */ { VHT40_MODE_VALID_MASK,
784 DP_CMN_MOD_IEEE80211_T_VHT_40, 27000,
785 30000, 0, 0, 0, 27000, 0x320 },
786 /* 185 MCS-01 */ { VHT40_MODE_VALID_MASK,
787 DP_CMN_MOD_IEEE80211_T_VHT_40, 54000,
788 60000, 0, 0, 0, 54000, 0x321 },
789 /* 186 MCS-02 */ { VHT40_MODE_VALID_MASK,
790 DP_CMN_MOD_IEEE80211_T_VHT_40, 81000,
791 90000, 0, 0, 0, 81000, 0x322 },
792 /* 187 MCS-03 */ { VHT40_MODE_VALID_MASK,
793 DP_CMN_MOD_IEEE80211_T_VHT_40, 108000,
794 120000, 0, 0, 0, 108000, 0x323 },
795 /* 188 MCS-04 */ { VHT40_MODE_VALID_MASK,
796 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000,
797 180000, 0, 0, 0, 162000, 0x324 },
798 /* 189 MCS-05 */ { VHT40_MODE_VALID_MASK,
799 DP_CMN_MOD_IEEE80211_T_VHT_40, 216000,
800 240000, 0, 0, 0, 216000, 0x325 },
801 /* 190 MCS-06 */ { VHT40_MODE_VALID_MASK,
802 DP_CMN_MOD_IEEE80211_T_VHT_40, 243000,
803 270000, 0, 0, 0, 243000, 0x326 },
804 /* 191 MCS-07 */ { VHT40_MODE_VALID_MASK,
805 DP_CMN_MOD_IEEE80211_T_VHT_40, 270000,
806 300000, 0, 0, 0, 270000, 0x327 },
807 /* 192 MCS-08 */ { VHT40_MODE_VALID_MASK,
808 DP_CMN_MOD_IEEE80211_T_VHT_40, 324000,
809 360000, 0, 0, 0, 324000, 0x328 },
810 /* 193 MCS-09 */ { VHT40_MODE_VALID_MASK,
811 DP_CMN_MOD_IEEE80211_T_VHT_40, 360000,
812 400000, 0, 0, 0, 360000, 0x329 },
813 /* 194 MCS-10 */ { VHT40_LDPC_ONLY_MASKS,
814 DP_CMN_MOD_IEEE80211_T_VHT_40, 405000,
815 450000, 0, 0, 0, 405000, 0x32a },
816 /* 195 MCS-11 */ { VHT40_LDPC_ONLY_MASKS,
817 DP_CMN_MOD_IEEE80211_T_VHT_40, 450000,
818 500000, 0, 0, 0, 450000, 0x32b },
819
820 /* When number of spatial streams > 2 use below rate*/
821 /* 196 MCS-00 */ { VHT40_MODE_VALID_MASK,
822 DP_CMN_MOD_IEEE80211_T_VHT_40, 40500,
823 45000, 0, 0, 0, 40500, 0x340 },
824 /* 197 MCS-01 */ { VHT40_MODE_VALID_MASK,
825 DP_CMN_MOD_IEEE80211_T_VHT_40, 81000,
826 90000, 0, 0, 0, 81000, 0x341 },
827 /* 198 MCS-02 */ { VHT40_MODE_VALID_MASK,
828 DP_CMN_MOD_IEEE80211_T_VHT_40, 121500,
829 135000, 0, 0, 0, 121500, 0x342 },
830 /* 199 MCS-03 */ { VHT40_MODE_VALID_MASK,
831 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000,
832 180000, 0, 0, 0, 162000, 0x343 },
833 /* 200 MCS-04 */ { VHT40_MODE_VALID_MASK,
834 DP_CMN_MOD_IEEE80211_T_VHT_40, 243000,
835 270000, 0, 0, 0, 243000, 0x344 },
836 /* 201 MCS-05 */ { VHT40_MODE_VALID_MASK,
837 DP_CMN_MOD_IEEE80211_T_VHT_40, 324000,
838 360000, 0, 0, 0, 324000, 0x345 },
839 /* 202 MCS-06 */ { VHT40_MODE_VALID_MASK,
840 DP_CMN_MOD_IEEE80211_T_VHT_40, 364500,
841 405000, 0, 0, 0, 364500, 0x346 },
842 /* 203 MCS-07 */ { VHT40_MODE_VALID_MASK,
843 DP_CMN_MOD_IEEE80211_T_VHT_40, 405000,
844 450000, 0, 0, 0, 405000, 0x347 },
845 /* 204 MCS-08 */ { VHT40_MODE_VALID_MASK,
846 DP_CMN_MOD_IEEE80211_T_VHT_40, 486000,
847 540000, 0, 0, 0, 486000, 0x348 },
848 /* 205 MCS-09 */ { VHT40_MODE_VALID_MASK,
849 DP_CMN_MOD_IEEE80211_T_VHT_40, 540000,
850 600000, 0, 0, 0, 540000, 0x349 },
851 /* 206 MCS-10 */ { VHT40_LDPC_ONLY_MASKS,
852 DP_CMN_MOD_IEEE80211_T_VHT_40, 607500,
853 675000, 0, 0, 0, 607500, 0x34a},
854 /* 207 MCS-11 */ { VHT40_LDPC_ONLY_MASKS,
855 DP_CMN_MOD_IEEE80211_T_VHT_40, 675000,
856 750000, 0, 0, 0, 675000, 0x34b},
857
858 /* When number of spatial streams > 3 use below rates */
859 /* 208 MCS-00 */ { VHT40_MODE_VALID_MASK,
860 DP_CMN_MOD_IEEE80211_T_VHT_40, 54000,
861 60000, 0, 0, 0, 54000, 0x360},
862 /* 209 MCS-01 */ { VHT40_MODE_VALID_MASK,
863 DP_CMN_MOD_IEEE80211_T_VHT_40, 108000,
864 120000, 0, 0, 0, 108000, 0x361},
865 /* 210 MCS-02 */ { VHT40_MODE_VALID_MASK,
866 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000,
867 180000, 0, 0, 0, 162000, 0x362},
868 /* 211 MCS-03 */ { VHT40_MODE_VALID_MASK,
869 DP_CMN_MOD_IEEE80211_T_VHT_40, 216000,
870 240000, 0, 0, 0, 216000, 0x363},
871 /* 212 MCS-04 */ { VHT40_MODE_VALID_MASK,
872 DP_CMN_MOD_IEEE80211_T_VHT_40, 324000,
873 260000, 0, 0, 0, 324000, 0x364},
874 /* 213 MCS-05 */ { VHT40_MODE_VALID_MASK,
875 DP_CMN_MOD_IEEE80211_T_VHT_40, 432000,
876 480000, 0, 0, 0, 432000, 0x365},
877 /* 214 MCS-06 */ { VHT40_MODE_VALID_MASK,
878 DP_CMN_MOD_IEEE80211_T_VHT_40, 486000,
879 540000, 0, 0, 0, 486000, 0x366},
880 /* 215 MCS-07 */ { VHT40_MODE_VALID_MASK,
881 DP_CMN_MOD_IEEE80211_T_VHT_40, 540000,
882 600000, 0, 0, 0, 540000, 0x367},
883 /* 216 MCS-08 */ { VHT40_MODE_VALID_MASK,
884 DP_CMN_MOD_IEEE80211_T_VHT_40, 648000,
885 720000, 0, 0, 0, 648000, 0x368},
886 /* 217 MCS-09 */ { VHT40_MODE_VALID_MASK,
887 DP_CMN_MOD_IEEE80211_T_VHT_40, 720000,
888 800000, 0, 0, 0, 720000, 0x369},
889 /* 218 MCS-10 */ { VHT40_LDPC_ONLY_MASKS,
890 DP_CMN_MOD_IEEE80211_T_VHT_40, 810000,
891 900000, 0, 0, 0, 810000, 0x36a },
892 /* 219 MCS-11 */ { VHT40_LDPC_ONLY_MASKS,
893 DP_CMN_MOD_IEEE80211_T_VHT_40, 900000,
894 1000000, 0, 0, 0, 900000, 0x36b },
895
896 /* when number of spatial streams > 4 use below rates */
897 /* 220 MCS-00 */ { VHT40_LDPC_ONLY_MASKS,
898 DP_CMN_MOD_IEEE80211_T_VHT_40, 67500,
899 75000, 0, 0, 0, 67500, 0x380 },
900 /* 221 MCS-01 */ { VHT40_LDPC_ONLY_MASKS,
901 DP_CMN_MOD_IEEE80211_T_VHT_40, 135000,
902 150000, 0, 0, 0, 135000, 0x381 },
903 /* 222 MCS-02 */ { VHT40_LDPC_ONLY_MASKS,
904 DP_CMN_MOD_IEEE80211_T_VHT_40, 202500,
905 225000, 0, 0, 0, 202500, 0x382 },
906 /* 223 MCS-03 */ { VHT40_LDPC_ONLY_MASKS,
907 DP_CMN_MOD_IEEE80211_T_VHT_40, 270000,
908 300000, 0, 0, 0, 270000, 0x383 },
909 /* 224 MCS-04 */ { VHT40_LDPC_ONLY_MASKS,
910 DP_CMN_MOD_IEEE80211_T_VHT_40, 405000,
911 450000, 0, 0, 0, 405000, 0x384 },
912 /* 225 MCS-05 */ { VHT40_LDPC_ONLY_MASKS,
913 DP_CMN_MOD_IEEE80211_T_VHT_40, 540000,
914 600000, 0, 0, 0, 540000, 0x385 },
915 /* 226 MCS-06 */ { VHT40_LDPC_ONLY_MASKS,
916 DP_CMN_MOD_IEEE80211_T_VHT_40, 607500,
917 675000, 0, 0, 0, 607500, 0x386 },
918 /* 227 MCS-07 */ { VHT40_LDPC_ONLY_MASKS,
919 DP_CMN_MOD_IEEE80211_T_VHT_40, 675000,
920 750000, 0, 0, 0, 675000, 0x387 },
921 /* 228 MCS-08 */ { VHT40_LDPC_ONLY_MASKS,
922 DP_CMN_MOD_IEEE80211_T_VHT_40,
923 810000, 900000, 0, 0, 0, 810000,
924 0x388 },
925 /* 229 MCS-09 */ { VHT40_LDPC_ONLY_MASKS,
926 DP_CMN_MOD_IEEE80211_T_VHT_40,
927 900000, 1000000, 0, 0, 0, 900000,
928 0x389 },
929 /* 230 MCS-10 */ { VHT40_LDPC_ONLY_MASKS,
930 DP_CMN_MOD_IEEE80211_T_VHT_40,
931 1012500, 1125000, 0, 0, 0, 1012500,
932 0x38a },
933 /* 231 MCS-11 */ { VHT40_LDPC_ONLY_MASKS,
934 DP_CMN_MOD_IEEE80211_T_VHT_40,
935 1125000, 1250000, 0, 0, 0, 1125000,
936 0x38b },
937
938 /* when number of spatial streams > 5 use below rates*/
939 /* 232 MCS-00 */ { VHT40_LDPC_ONLY_MASKS,
940 DP_CMN_MOD_IEEE80211_T_VHT_40,
941 81000, 90000, 0, 0, 0, 81000, 0x3a0
942 },
943 /* 233 MCS-01 */ { VHT40_LDPC_ONLY_MASKS,
944 DP_CMN_MOD_IEEE80211_T_VHT_40,
945 162000, 180000, 0, 0, 0, 162000,
946 0x3a1 },
947 /* 234 MCS-02 */ { VHT40_LDPC_ONLY_MASKS,
948 DP_CMN_MOD_IEEE80211_T_VHT_40,
949 243000, 270000, 0, 0, 0, 243000,
950 0x3a2 },
951 /* 235 MCS-03 */ { VHT40_LDPC_ONLY_MASKS,
952 DP_CMN_MOD_IEEE80211_T_VHT_40,
953 324000, 360000, 0, 0, 0, 324000,
954 0x3a3 },
955 /* 236 MCS-04 */ { VHT40_LDPC_ONLY_MASKS,
956 DP_CMN_MOD_IEEE80211_T_VHT_40,
957 486000, 540000, 0, 0, 0, 486000,
958 0x3a4 },
959 /* 237 MCS-05 */ { VHT40_LDPC_ONLY_MASKS,
960 DP_CMN_MOD_IEEE80211_T_VHT_40,
961 648000, 720000, 0, 0, 0, 648000,
962 0x3a5 },
963 /* 238 MCS-06 */ { VHT40_LDPC_ONLY_MASKS,
964 DP_CMN_MOD_IEEE80211_T_VHT_40,
965 729000, 815000, 0, 0, 0, 729000,
966 0x3a6 },
967 /* 239 MCS-07 */ { VHT40_LDPC_ONLY_MASKS,
968 DP_CMN_MOD_IEEE80211_T_VHT_40,
969 810000, 900000, 0, 0, 0, 810000,
970 0x3a7 },
971 /* 240 MCS-08 */ { VHT40_LDPC_ONLY_MASKS,
972 DP_CMN_MOD_IEEE80211_T_VHT_40,
973 972000, 1080000, 0, 0, 0, 972000,
974 0x3a8 },
975 /* 241 MCS-09 */ { VHT40_LDPC_ONLY_MASKS,
976 DP_CMN_MOD_IEEE80211_T_VHT_40,
977 1080000, 1200000, 0, 0, 0, 1080000,
978 0x3a9 },
979 /* 242 MCS-10 */ { VHT40_LDPC_ONLY_MASKS,
980 DP_CMN_MOD_IEEE80211_T_VHT_40,
981 1215000, 1350000, 0, 0, 0, 1215000,
982 0x3aa },
983 /* 243 MCS-11 */ { VHT40_LDPC_ONLY_MASKS,
984 DP_CMN_MOD_IEEE80211_T_VHT_40,
985 1350000, 1500000, 0, 0, 0, 1350000,
986 0x3ab },
987
988 /* when number of spatial streams > 6 use below rates */
989 /* 244 MCS-00 */ { VHT40_LDPC_ONLY_MASKS,
990 DP_CMN_MOD_IEEE80211_T_VHT_40,
991 94500, 105000, 0, 0, 0, 94500, 0x3c0
992 },
993 /* 245 MCS-01 */ { VHT40_LDPC_ONLY_MASKS,
994 DP_CMN_MOD_IEEE80211_T_VHT_40,
995 189000, 210000, 0, 0, 0, 189000,
996 0x3c1 },
997 /* 246 MCS-02 */ { VHT40_LDPC_ONLY_MASKS,
998 DP_CMN_MOD_IEEE80211_T_VHT_40,
999 283500, 315000, 0, 0, 0, 283500,
1000 0x3c2 },
1001 /* 247 MCS-03 */ { VHT40_LDPC_ONLY_MASKS,
1002 DP_CMN_MOD_IEEE80211_T_VHT_40,
1003 378000, 420000, 0, 0, 0, 378000,
1004 0x3c3 },
1005 /* 248 MCS-04 */ { VHT40_LDPC_ONLY_MASKS,
1006 DP_CMN_MOD_IEEE80211_T_VHT_40,
1007 567000, 630000, 0, 0, 0, 567000,
1008 0x3c4 },
1009 /* 249 MCS-05 */ { VHT40_LDPC_ONLY_MASKS,
1010 DP_CMN_MOD_IEEE80211_T_VHT_40,
1011 756000, 840000, 0, 0, 0, 756000,
1012 0x3c5 },
1013 /* 250 MCS-06 */ { VHT40_LDPC_ONLY_MASKS,
1014 DP_CMN_MOD_IEEE80211_T_VHT_40,
1015 850500, 945000, 0, 0, 0, 850500,
1016 0x3c6 },
1017 /* 251 MCS-07 */ { VHT40_LDPC_ONLY_MASKS,
1018 DP_CMN_MOD_IEEE80211_T_VHT_40,
1019 945000, 1050000, 0, 0, 0, 945000,
1020 0x3c7 },
1021 /* 252 MCS-08 */ { VHT40_LDPC_ONLY_MASKS,
1022 DP_CMN_MOD_IEEE80211_T_VHT_40,
1023 1134000, 1260000, 0, 0, 0, 1134000,
1024 0x3c8 },
1025 /* 253 MCS-09 */ { VHT40_LDPC_ONLY_MASKS,
1026 DP_CMN_MOD_IEEE80211_T_VHT_40,
1027 1260000, 1400000, 0, 0, 0, 1260000,
1028 0x3c9 },
1029 /* 254 MCS-10 */ { VHT40_LDPC_ONLY_MASKS,
1030 DP_CMN_MOD_IEEE80211_T_VHT_40,
1031 1417500, 1575000, 0, 0, 0, 1417500,
1032 0x3ca },
1033 /* 255 MCS-11 */ { VHT40_LDPC_ONLY_MASKS,
1034 DP_CMN_MOD_IEEE80211_T_VHT_40,
1035 1575000, 1750000, 0, 0, 0, 1575000,
1036 0x3cb },
1037
1038 /* when number of spatial streams > 7 use below rates */
1039 /* 256 MCS-00 */ { VHT40_LDPC_ONLY_MASKS,
1040 DP_CMN_MOD_IEEE80211_T_VHT_40,
1041 108000, 120000, 0, 0, 0, 108000,
1042 0x3e0 },
1043 /* 257 MCS-01 */ { VHT40_LDPC_ONLY_MASKS,
1044 DP_CMN_MOD_IEEE80211_T_VHT_40,
1045 216000, 240000, 0, 0, 0, 216000,
1046 0x3e1 },
1047 /* 258 MCS-02 */ { VHT40_LDPC_ONLY_MASKS,
1048 DP_CMN_MOD_IEEE80211_T_VHT_40,
1049 324000, 360000, 0, 0, 0, 324000,
1050 0x3e2 },
1051 /* 259 MCS-03 */ { VHT40_LDPC_ONLY_MASKS,
1052 DP_CMN_MOD_IEEE80211_T_VHT_40,
1053 432000, 480000, 0, 0, 0, 432000,
1054 0x3e3 },
1055 /* 260 MCS-04 */ { VHT40_LDPC_ONLY_MASKS,
1056 DP_CMN_MOD_IEEE80211_T_VHT_40,
1057 648000, 720000, 0, 0, 0, 648000,
1058 0x3e4 },
1059 /* 261 MCS-05 */ { VHT40_LDPC_ONLY_MASKS,
1060 DP_CMN_MOD_IEEE80211_T_VHT_40,
1061 864000, 960000, 0, 0, 0, 864000,
1062 0x3e5 },
1063 /* 262 MCS-06 */ { VHT40_LDPC_ONLY_MASKS,
1064 DP_CMN_MOD_IEEE80211_T_VHT_40,
1065 972000, 1080000, 0, 0, 0, 972000,
1066 0x3e6 },
1067 /* 263 MCS-07 */ { VHT40_LDPC_ONLY_MASKS,
1068 DP_CMN_MOD_IEEE80211_T_VHT_40,
1069 1080000, 1200000, 0, 0, 0, 1080000,
1070 0x3e7 },
1071 /* 264 MCS-08 */ { VHT40_LDPC_ONLY_MASKS,
1072 DP_CMN_MOD_IEEE80211_T_VHT_40,
1073 1296000, 1440000, 0, 0, 0, 1296000,
1074 0x3e8 },
1075 /* 265 MCS-09 */ { VHT40_LDPC_ONLY_MASKS,
1076 DP_CMN_MOD_IEEE80211_T_VHT_40,
1077 1440000, 1600000, 0, 0, 0, 1440000,
1078 0x3e9 },
1079 /* 266 MCS-10 */ { VHT40_LDPC_ONLY_MASKS,
1080 DP_CMN_MOD_IEEE80211_T_VHT_40,
1081 1620000, 1800000, 0, 0, 0, 1620000,
1082 0x3ea },
1083 /* 267 MCS-11 */ { VHT40_LDPC_ONLY_MASKS,
1084 DP_CMN_MOD_IEEE80211_T_VHT_40,
1085 1800000, 2000000, 0, 0, 0, 1800000,
1086 0x3eb },
1087
1088 /* 11ac VHT80 rates
1089 */
1090 /* 268 MCS-00 */ { VHT80_MODE_VALID_MASK,
1091 DP_CMN_MOD_IEEE80211_T_VHT_80,
1092 29300, 32500, 0, 0, 0, 29300,
1093 0x300},
1094 /* 269 MCS-01 */ { VHT80_MODE_VALID_MASK,
1095 DP_CMN_MOD_IEEE80211_T_VHT_80,
1096 58500, 65000, 0, 0, 0, 58500,
1097 0x301},
1098 /* 270 MCS-02 */ { VHT80_MODE_VALID_MASK,
1099 DP_CMN_MOD_IEEE80211_T_VHT_80,
1100 87800, 97500, 0, 0, 0, 87800,
1101 0x302},
1102 /* 271 MCS-03 */ { VHT80_MODE_VALID_MASK,
1103 DP_CMN_MOD_IEEE80211_T_VHT_80,
1104 117000, 130000, 0, 0, 0, 117000,
1105 0x303},
1106 /* 272 MCS-04 */ { VHT80_MODE_VALID_MASK,
1107 DP_CMN_MOD_IEEE80211_T_VHT_80,
1108 175500, 195000, 0, 0, 0, 175500,
1109 0x304},
1110 /* 273 MCS-05 */ { VHT80_MODE_VALID_MASK,
1111 DP_CMN_MOD_IEEE80211_T_VHT_80,
1112 234000, 260000, 0, 0, 0, 234000,
1113 0x305},
1114 /* 274 MCS-06 */ { VHT80_MODE_VALID_MASK,
1115 DP_CMN_MOD_IEEE80211_T_VHT_80,
1116 263300, 292500, 0, 0, 0, 263300,
1117 0x306},
1118 /* 275 MCS-07 */ { VHT80_MODE_VALID_MASK,
1119 DP_CMN_MOD_IEEE80211_T_VHT_80,
1120 292500, 325000, 0, 0, 0, 292500,
1121 0x307},
1122 /* 276 MCS-08 */ { VHT80_MODE_VALID_MASK,
1123 DP_CMN_MOD_IEEE80211_T_VHT_80,
1124 351000, 390000, 0, 0, 0, 351000,
1125 0x308},
1126 /* 277 MCS-09 */ { VHT80_MODE_VALID_MASK,
1127 DP_CMN_MOD_IEEE80211_T_VHT_80,
1128 390000, 433300, 0, 0, 0, 390000,
1129 0x309},
1130 /* 278 MCS-10 */ { VHT80_LDPC_ONLY_MASKS,
1131 DP_CMN_MOD_IEEE80211_T_VHT_80,
1132 438800, 487500, 0, 0, 0, 438800,
1133 0x30a},
1134 /* 279 MCS-11 */ { VHT80_LDPC_ONLY_MASKS,
1135 DP_CMN_MOD_IEEE80211_T_VHT_80,
1136 487500, 541700, 0, 0, 0, 487500,
1137 0x30b},
1138
1139 /* When number of spatial streams > 1 use below rates*/
1140 /* 280 MCS-00 */ { VHT80_MODE_VALID_MASK,
1141 DP_CMN_MOD_IEEE80211_T_VHT_80,
1142 58500, 65000, 0, 0, 0, 58500,
1143 0x320},
1144 /* 281 MCS-01 */ { VHT80_MODE_VALID_MASK,
1145 DP_CMN_MOD_IEEE80211_T_VHT_80,
1146 117000, 130000, 0, 0, 0, 117000,
1147 0x321},
1148 /* 282 MCS-02 */ { VHT80_MODE_VALID_MASK,
1149 DP_CMN_MOD_IEEE80211_T_VHT_80,
1150 175500, 195000, 0, 0, 0, 175500,
1151 0x322},
1152 /* 283 MCS-03 */ { VHT80_MODE_VALID_MASK,
1153 DP_CMN_MOD_IEEE80211_T_VHT_80,
1154 234000, 260000, 0, 0, 0, 234000,
1155 0x323},
1156 /* 284 MCS-04 */ { VHT80_MODE_VALID_MASK,
1157 DP_CMN_MOD_IEEE80211_T_VHT_80,
1158 351000, 390000, 0, 0, 0, 351000,
1159 0x324},
1160 /* 285 MCS-05 */ { VHT80_MODE_VALID_MASK,
1161 DP_CMN_MOD_IEEE80211_T_VHT_80,
1162 468000, 520000, 0, 0, 0, 468000,
1163 0x325},
1164 /* 286 MCS-06 */ { VHT80_MODE_VALID_MASK,
1165 DP_CMN_MOD_IEEE80211_T_VHT_80,
1166 526500, 585000, 0, 0, 0, 526500,
1167 0x326},
1168 /* 287 MCS-07 */ { VHT80_MODE_VALID_MASK,
1169 DP_CMN_MOD_IEEE80211_T_VHT_80,
1170 585000, 650000, 0, 0, 0, 585000,
1171 0x327},
1172 /* 288 MCS-08 */ { VHT80_MODE_VALID_MASK,
1173 DP_CMN_MOD_IEEE80211_T_VHT_80,
1174 702000, 780000, 0, 0, 0, 702000,
1175 0x328},
1176 /* 289 MCS-09 */ { VHT80_MODE_VALID_MASK,
1177 DP_CMN_MOD_IEEE80211_T_VHT_80,
1178 780000, 866700, 0, 0, 0, 780000,
1179 0x329},
1180 /* 290 MCS-10 */ { VHT80_LDPC_ONLY_MASKS,
1181 DP_CMN_MOD_IEEE80211_T_VHT_80,
1182 877500, 975000, 0, 0, 0, 877500,
1183 0x32a},
1184 /* 291 MCS-11 */ { VHT80_LDPC_ONLY_MASKS,
1185 DP_CMN_MOD_IEEE80211_T_VHT_80,
1186 975000, 1083300, 0, 0, 0, 975000,
1187 0x32b},
1188
1189 /* When number of spatial streams > 2 use below rates */
1190 /* 292 MCS-00 */ { VHT80_MODE_VALID_MASK,
1191 DP_CMN_MOD_IEEE80211_T_VHT_80,
1192 87800, 97500, 0, 0, 0, 87800, 0x340
1193 },
1194 /* 293 MCS-01 */ { VHT80_MODE_VALID_MASK,
1195 DP_CMN_MOD_IEEE80211_T_VHT_80,
1196 175500, 195000, 0, 0, 0, 175500,
1197 0x341 },
1198 /* 294 MCS-02 */ { VHT80_MODE_VALID_MASK,
1199 DP_CMN_MOD_IEEE80211_T_VHT_80,
1200 263300, 292500, 0, 0, 0, 263300,
1201 0x342 },
1202 /* 295 MCS-03 */ { VHT80_MODE_VALID_MASK,
1203 DP_CMN_MOD_IEEE80211_T_VHT_80,
1204 351000, 390000, 0, 0, 0, 351000,
1205 0x343 },
1206 /* 296 MCS-04 */ { VHT80_MODE_VALID_MASK,
1207 DP_CMN_MOD_IEEE80211_T_VHT_80,
1208 526500, 585000, 0, 0, 0, 526500,
1209 0x344 },
1210 /* 297 MCS-05 */ { VHT80_MODE_VALID_MASK,
1211 DP_CMN_MOD_IEEE80211_T_VHT_80,
1212 702000, 780000, 0, 0, 0, 702000,
1213 0x345 },
1214 /* 298 MCS-06 */ { VHT_INVALID_RATES_MASK,
1215 DP_CMN_MOD_IEEE80211_T_VHT_80,
1216 789800, 877500, 0, 0, 0, 789800,
1217 0x346 },
1218 /* 299 MCS-07 */ { VHT80_MODE_VALID_MASK,
1219 DP_CMN_MOD_IEEE80211_T_VHT_80,
1220 877500, 975000, 0, 0, 0, 877500,
1221 0x347 },
1222 /* 300 MCS-08 */ { VHT80_MODE_VALID_MASK,
1223 DP_CMN_MOD_IEEE80211_T_VHT_80,
1224 1053000, 1170000, 0, 0, 0, 1053000,
1225 0x348 },
1226 /* 301 MCS-09 */ { VHT80_MODE_VALID_MASK,
1227 DP_CMN_MOD_IEEE80211_T_VHT_80,
1228 1170000, 1300000, 0, 0, 0, 1170000,
1229 0x349 },
1230 /* 302 MCS-10 */ { VHT80_LDPC_ONLY_MASKS,
1231 DP_CMN_MOD_IEEE80211_T_VHT_80,
1232 1316300, 1462500, 0, 0, 0, 1316300,
1233 0x34a },
1234 /* 303 MCS-11 */ { VHT80_LDPC_ONLY_MASKS,
1235 DP_CMN_MOD_IEEE80211_T_VHT_80,
1236 1462500, 1625000, 0, 0, 0, 1462500,
1237 0x34b },
1238 /* When number of spatial streams > 3 use below rates */
1239 /* 304 MCS-00 */ { VHT80_MODE_VALID_MASK,
1240 DP_CMN_MOD_IEEE80211_T_VHT_80,
1241 117000, 130000, 0, 0, 0, 117000,
1242 0x360 },
1243 /* 305 MCS-01 */ { VHT80_MODE_VALID_MASK,
1244 DP_CMN_MOD_IEEE80211_T_VHT_80,
1245 234000, 260000, 0, 0, 0, 234000,
1246 0x361 },
1247 /* 306 MCS-02 */ { VHT80_MODE_VALID_MASK,
1248 DP_CMN_MOD_IEEE80211_T_VHT_80,
1249 351000, 390000, 0, 0, 0, 351000,
1250 0x362 },
1251 /* 307 MCS-03 */ { VHT80_MODE_VALID_MASK,
1252 DP_CMN_MOD_IEEE80211_T_VHT_80,
1253 468000, 520000, 0, 0, 0, 468000,
1254 0x363 },
1255 /* 308 MCS-04 */ { VHT80_MODE_VALID_MASK,
1256 DP_CMN_MOD_IEEE80211_T_VHT_80,
1257 702000, 780000, 0, 0, 0, 702000,
1258 0x364 },
1259 /* 309 MCS-05 */ { VHT80_MODE_VALID_MASK,
1260 DP_CMN_MOD_IEEE80211_T_VHT_80,
1261 936000, 1040000, 0, 0, 0, 936000,
1262 0x365 },
1263 /* 310 MCS-06 */ { VHT80_MODE_VALID_MASK,
1264 DP_CMN_MOD_IEEE80211_T_VHT_80,
1265 1053000, 1170000, 0, 0, 0, 1053000,
1266 0x366 },
1267 /* 311 MCS-07 */ { VHT80_MODE_VALID_MASK,
1268 DP_CMN_MOD_IEEE80211_T_VHT_80,
1269 1170000, 1300000, 0, 0, 0, 1170000,
1270 0x367 },
1271 /* 312 MCS-08 */ { VHT80_MODE_VALID_MASK,
1272 DP_CMN_MOD_IEEE80211_T_VHT_80,
1273 1404000, 1560000, 0, 0, 0, 1404000,
1274 0x368 },
1275 /* 313 MCS-09 */ { VHT80_MODE_VALID_MASK,
1276 DP_CMN_MOD_IEEE80211_T_VHT_80,
1277 1560000, 1733000, 0, 0, 0, 1560000,
1278 0x369 },
1279 /* 314 MCS-08 */ { VHT80_LDPC_ONLY_MASKS,
1280 DP_CMN_MOD_IEEE80211_T_VHT_80,
1281 1755000, 1950000, 0, 0, 0, 1755000,
1282 0x36a },
1283 /* 315 MCS-09 */ { VHT80_LDPC_ONLY_MASKS,
1284 DP_CMN_MOD_IEEE80211_T_VHT_80,
1285 1950000, 2166700, 0, 0, 0, 1950000,
1286 0x36b },
1287 /* When number of spatial streams > 4 use below rates */
1288 /* 316 MCS-00 */ { VHT80_LDPC_ONLY_MASKS,
1289 DP_CMN_MOD_IEEE80211_T_VHT_80,
1290 146300, 162500, 0, 0, 0, 146300,
1291 0x380 },
1292 /* 317 MCS-01 */ { VHT80_LDPC_ONLY_MASKS,
1293 DP_CMN_MOD_IEEE80211_T_VHT_80,
1294 292500, 325000, 0, 0, 0, 292500,
1295 0x381 },
1296 /* 318 MCS-02 */ { VHT80_LDPC_ONLY_MASKS,
1297 DP_CMN_MOD_IEEE80211_T_VHT_80,
1298 438800, 487500, 0, 0, 0, 438800,
1299 0x382 },
1300 /* 319 MCS-03 */ { VHT80_LDPC_ONLY_MASKS,
1301 DP_CMN_MOD_IEEE80211_T_VHT_80,
1302 585000, 650000, 0, 0, 0, 585000,
1303 0x383 },
1304 /* 320 MCS-04 */ { VHT80_LDPC_ONLY_MASKS,
1305 DP_CMN_MOD_IEEE80211_T_VHT_80,
1306 877500, 975000, 0, 0, 0, 877500,
1307 0x384 },
1308 /* 321 MCS-05 */ { VHT80_LDPC_ONLY_MASKS,
1309 DP_CMN_MOD_IEEE80211_T_VHT_80,
1310 1170000, 1300000, 0, 0, 0, 1170000,
1311 0x385 },
1312 /* 322 MCS-06 */ { VHT80_LDPC_ONLY_MASKS,
1313 DP_CMN_MOD_IEEE80211_T_VHT_80,
1314 1316300, 1462500, 0, 0, 0, 1316300,
1315 0x386 },
1316 /* 323 MCS-07 */ { VHT80_LDPC_ONLY_MASKS,
1317 DP_CMN_MOD_IEEE80211_T_VHT_80,
1318 1462500, 1625000, 0, 0, 0, 1462500,
1319 0x387 },
1320 /* 324 MCS-08 */ { VHT80_LDPC_ONLY_MASKS,
1321 DP_CMN_MOD_IEEE80211_T_VHT_80,
1322 1755000, 1950000, 0, 0, 0, 1755000,
1323 0x388 },
1324 /* 325 MCS-09 */ { VHT80_LDPC_ONLY_MASKS,
1325 DP_CMN_MOD_IEEE80211_T_VHT_80,
1326 1950000, 2166700, 0, 0, 0, 1950000,
1327 0x389 },
1328 /* 326 MCS-10 */ { VHT80_LDPC_ONLY_MASKS,
1329 DP_CMN_MOD_IEEE80211_T_VHT_80,
1330 2193800, 2437500, 0, 0, 0, 2193800,
1331 0x38a },
1332 /* 327 MCS-11 */ { VHT80_LDPC_ONLY_MASKS,
1333 DP_CMN_MOD_IEEE80211_T_VHT_80,
1334 2437500, 2708300, 0, 0, 0, 2437500,
1335 0x38b },
1336 /* When number of spatial streams > 5 use below rates */
1337 /* 328 MCS-00 */ { VHT80_LDPC_ONLY_MASKS,
1338 DP_CMN_MOD_IEEE80211_T_VHT_80,
1339 175500, 195000, 0, 0, 0, 175500,
1340 0x3a0 },
1341 /* 329 MCS-01 */ { VHT80_LDPC_ONLY_MASKS,
1342 DP_CMN_MOD_IEEE80211_T_VHT_80,
1343 351000, 390000, 0, 0, 0, 351000,
1344 0x3a1 },
1345 /* 330 MCS-02 */ { VHT80_LDPC_ONLY_MASKS,
1346 DP_CMN_MOD_IEEE80211_T_VHT_80,
1347 526500, 585500, 0, 0, 0, 526500,
1348 0x3a2 },
1349 /* 331 MCS-03 */ { VHT80_LDPC_ONLY_MASKS,
1350 DP_CMN_MOD_IEEE80211_T_VHT_80,
1351 702000, 780000, 0, 0, 0, 702000,
1352 0x3a3 },
1353 /* 332 MCS-04 */ { VHT80_LDPC_ONLY_MASKS,
1354 DP_CMN_MOD_IEEE80211_T_VHT_80,
1355 1053000, 1170000, 0, 0, 0, 1053000,
1356 0x3a4 },
1357 /* 333 MCS-05 */ { VHT80_LDPC_ONLY_MASKS,
1358 DP_CMN_MOD_IEEE80211_T_VHT_80,
1359 1404000, 1560000, 0, 0, 0, 1404000,
1360 0x3a5 },
1361 /* 334 MCS-06 */ { VHT80_LDPC_ONLY_MASKS,
1362 DP_CMN_MOD_IEEE80211_T_VHT_80,
1363 1579500, 1755000, 0, 0, 0, 1579500,
1364 0x3a6 },
1365 /* 335 MCS-07 */ { VHT80_LDPC_ONLY_MASKS,
1366 DP_CMN_MOD_IEEE80211_T_VHT_80,
1367 1755000, 1950000, 0, 0, 0, 1755000,
1368 0x3a7 },
1369 /* 336 MCS-08 */ { VHT80_LDPC_ONLY_MASKS,
1370 DP_CMN_MOD_IEEE80211_T_VHT_80,
1371 2106000, 2340000, 0, 0, 0, 2106000,
1372 0x3a8 },
1373 /* 337 MCS-09 */ { VHT80_LDPC_ONLY_MASKS,
1374 DP_CMN_MOD_IEEE80211_T_VHT_80,
1375 2340000, 2600000, 0, 0, 0, 2340000,
1376 0x3a9 },
1377 /* 338 MCS-10 */ { VHT80_LDPC_ONLY_MASKS,
1378 DP_CMN_MOD_IEEE80211_T_VHT_80,
1379 2632500, 2925000, 0, 0, 0, 2632500,
1380 0x3aa },
1381 /* 339 MCS-11 */ { VHT80_LDPC_ONLY_MASKS,
1382 DP_CMN_MOD_IEEE80211_T_VHT_80,
1383 2925000, 3250000, 0, 0, 0, 2925000,
1384 0x3ab },
1385 /* When number of spatial streams > 6 use below rates*/
1386 /* 340 MCS-00 */ { VHT80_LDPC_ONLY_MASKS,
1387 DP_CMN_MOD_IEEE80211_T_VHT_80,
1388 204800, 227500, 0, 0, 0, 204800,
1389 0x3c0 },
1390 /* 341 MCS-01 */ { VHT80_LDPC_ONLY_MASKS,
1391 DP_CMN_MOD_IEEE80211_T_VHT_80,
1392 409500, 455000, 0, 0, 0, 409500,
1393 0x3c1 },
1394 /* 342 MCS-02 */ { VHT80_LDPC_ONLY_MASKS,
1395 DP_CMN_MOD_IEEE80211_T_VHT_80,
1396 614300, 682500, 0, 0, 0, 614300,
1397 0x3c2 },
1398 /* 343 MCS-03 */ { VHT80_LDPC_ONLY_MASKS,
1399 DP_CMN_MOD_IEEE80211_T_VHT_80,
1400 819000, 910000, 0, 0, 0, 819000,
1401 0x3c3 },
1402 /* 344 MCS-04 */ { VHT80_LDPC_ONLY_MASKS,
1403 DP_CMN_MOD_IEEE80211_T_VHT_80,
1404 1288500, 1365000, 0, 0, 0, 1288500,
1405 0x3c4 },
1406 /* 345 MCS-05 */ { VHT80_LDPC_ONLY_MASKS,
1407 DP_CMN_MOD_IEEE80211_T_VHT_80,
1408 1638000, 1820000, 0, 0, 0, 1638000,
1409 0x3c5 },
1410 /* 346 MCS-06 */ { VHT80_LDPC_ONLY_MASKS,
1411 DP_CMN_MOD_IEEE80211_T_VHT_80,
1412 1842800, 2047500, 0, 0, 0, 1842800,
1413 0x3c6 },
1414 /* 347 MCS-07 */ { VHT80_LDPC_ONLY_MASKS,
1415 DP_CMN_MOD_IEEE80211_T_VHT_80,
1416 2047500, 2275000, 0, 0, 0, 2047500,
1417 0x3c7 },
1418 /* 348 MCS-08 */ { VHT80_LDPC_ONLY_MASKS,
1419 DP_CMN_MOD_IEEE80211_T_VHT_80,
1420 2457000, 2730000, 0, 0, 0, 2457000,
1421 0x3c8 },
1422 /* 349 MCS-09 */ { VHT80_LDPC_ONLY_MASKS,
1423 DP_CMN_MOD_IEEE80211_T_VHT_80,
1424 2730000, 3033300, 0, 0, 0, 2730000,
1425 0x3c9 },
1426 /* 350 MCS-10 */ { VHT80_LDPC_ONLY_MASKS,
1427 DP_CMN_MOD_IEEE80211_T_VHT_80,
1428 3071300, 3412500, 0, 0, 0, 3071300,
1429 0x3ca },
1430 /* 351 MCS-11 */ { VHT80_LDPC_ONLY_MASKS,
1431 DP_CMN_MOD_IEEE80211_T_VHT_80,
1432 3412500, 3791700, 0, 0, 0, 3412500,
1433 0x3cb },
1434 /* When number of spatial streams > 7 use below rates*/
1435 /* 352 MCS-00 */ { VHT80_LDPC_ONLY_MASKS,
1436 DP_CMN_MOD_IEEE80211_T_VHT_80,
1437 234000, 260000, 0, 0, 0, 234000,
1438 0x3e0 },
1439 /* 353 MCS-01 */ { VHT80_LDPC_ONLY_MASKS,
1440 DP_CMN_MOD_IEEE80211_T_VHT_80,
1441 468000, 520000, 0, 0, 0, 468000,
1442 0x3e1},
1443 /* 354 MCS-02 */ { VHT80_LDPC_ONLY_MASKS,
1444 DP_CMN_MOD_IEEE80211_T_VHT_80,
1445 702000, 780000, 0, 0, 0, 702000,
1446 0x3e2},
1447 /* 355 MCS-03 */ { VHT80_LDPC_ONLY_MASKS,
1448 DP_CMN_MOD_IEEE80211_T_VHT_80,
1449 936000, 1040000, 0, 0, 0, 936000,
1450 0x3e3},
1451 /* 356 MCS-04 */ { VHT80_LDPC_ONLY_MASKS,
1452 DP_CMN_MOD_IEEE80211_T_VHT_80,
1453 1404000, 1560000, 0, 0, 0, 1404000,
1454 0x3e4},
1455 /* 357 MCS-05 */ { VHT80_LDPC_ONLY_MASKS,
1456 DP_CMN_MOD_IEEE80211_T_VHT_80,
1457 1872000, 2080000, 0, 0, 0, 1872000,
1458 0x3e5},
1459 /* 358 MCS-06 */ { VHT80_LDPC_ONLY_MASKS,
1460 DP_CMN_MOD_IEEE80211_T_VHT_80,
1461 2106000, 2340000, 0, 0, 0, 2106000,
1462 0x3e6},
1463 /* 359 MCS-07 */ { VHT80_LDPC_ONLY_MASKS,
1464 DP_CMN_MOD_IEEE80211_T_VHT_80,
1465 2340000, 2600000, 0, 0, 0, 2340000,
1466 0x3e7},
1467 /* 360 MCS-08 */ { VHT80_LDPC_ONLY_MASKS,
1468 DP_CMN_MOD_IEEE80211_T_VHT_80,
1469 2808000, 3120000, 0, 0, 0, 2808000,
1470 0x3e8},
1471 /* 361 MCS-09 */ { VHT80_LDPC_ONLY_MASKS,
1472 DP_CMN_MOD_IEEE80211_T_VHT_80,
1473 3120000, 3466700, 0, 0, 0, 3120000,
1474 0x3e9},
1475 /* 362 MCS-10 */ { VHT80_LDPC_ONLY_MASKS,
1476 DP_CMN_MOD_IEEE80211_T_VHT_80,
1477 3510000, 3900000, 0, 0, 0, 3510000,
1478 0x3ea},
1479 /* 363 MCS-11 */ { VHT80_LDPC_ONLY_MASKS,
1480 DP_CMN_MOD_IEEE80211_T_VHT_80,
1481 3900000, 4333300, 0, 0, 0, 3900000,
1482 0x3eb},
1483
1484 /* 11ac VHT160 rates
1485 */
1486 /* 364 MCS-00 */ { VHT160_MODE_VALID_MASK,
1487 DP_CMN_MOD_IEEE80211_T_VHT_160,
1488 58500, 65000, 0, 0, 0, 58500,
1489 0x300},
1490 /* 365 MCS-01 */ { VHT160_MODE_VALID_MASK,
1491 DP_CMN_MOD_IEEE80211_T_VHT_160,
1492 117000, 130000, 0, 0, 0, 117000,
1493 0x301},
1494 /* 366 MCS-02 */ { VHT160_MODE_VALID_MASK,
1495 DP_CMN_MOD_IEEE80211_T_VHT_160,
1496 175500, 195000, 0, 0, 0, 175500,
1497 0x302},
1498 /* 367 MCS-03 */ { VHT160_MODE_VALID_MASK,
1499 DP_CMN_MOD_IEEE80211_T_VHT_160,
1500 234000, 260000, 0, 0, 0, 234000,
1501 0x303},
1502 /* 368 MCS-04 */ { VHT160_MODE_VALID_MASK,
1503 DP_CMN_MOD_IEEE80211_T_VHT_160,
1504 351000, 390000, 0, 0, 0, 351000,
1505 0x304},
1506 /* 369 MCS-05 */ { VHT160_MODE_VALID_MASK,
1507 DP_CMN_MOD_IEEE80211_T_VHT_160,
1508 468000, 520000, 0, 0, 0, 468000,
1509 0x305},
1510 /* 370 MCS-06 */ { VHT160_MODE_VALID_MASK,
1511 DP_CMN_MOD_IEEE80211_T_VHT_160,
1512 526500, 585000, 0, 0, 0, 526500,
1513 0x306},
1514 /* 371 MCS-07 */ { VHT160_MODE_VALID_MASK,
1515 DP_CMN_MOD_IEEE80211_T_VHT_160,
1516 585000, 650000, 0, 0, 0, 585000,
1517 0x307},
1518 /* 372 MCS-08 */ { VHT160_MODE_VALID_MASK,
1519 DP_CMN_MOD_IEEE80211_T_VHT_160,
1520 702000, 780000, 0, 0, 0, 702000,
1521 0x308},
1522 /* 373 MCS-09 */ { VHT160_MODE_VALID_MASK,
1523 DP_CMN_MOD_IEEE80211_T_VHT_160,
1524 780000, 866700, 0, 0, 0, 780000,
1525 0x309},
1526 /* 374 MCS-10 */ { VHT160_LDPC_ONLY_MASKS,
1527 DP_CMN_MOD_IEEE80211_T_VHT_160,
1528 877500, 975000, 0, 0, 0, 877500,
1529 0x30a },
1530 /* 375 MCS-11 */ { VHT160_LDPC_ONLY_MASKS,
1531 DP_CMN_MOD_IEEE80211_T_VHT_160,
1532 975000, 1083300, 0, 0, 0, 975000,
1533 0x30b },
1534 /* If maximum number of spatial streams supported
1535 * at 160MHZ > 1 use below rates
1536 */
1537 /* 376 MCS-00 */ { VHT160_MODE_VALID_MASK,
1538 DP_CMN_MOD_IEEE80211_T_VHT_160,
1539 117000, 130000, 0, 0, 0, 117000,
1540 0x320},
1541 /* 377 MCS-01 */ { VHT160_MODE_VALID_MASK,
1542 DP_CMN_MOD_IEEE80211_T_VHT_160,
1543 234000, 260000, 0, 0, 0, 234000,
1544 0x321},
1545 /* 378 MCS-02 */ { VHT160_MODE_VALID_MASK,
1546 DP_CMN_MOD_IEEE80211_T_VHT_160,
1547 351000, 390000, 0, 0, 0, 351000,
1548 0x322},
1549 /* 379 MCS-03 */ { VHT160_MODE_VALID_MASK,
1550 DP_CMN_MOD_IEEE80211_T_VHT_160,
1551 468000, 520000, 0, 0, 0, 468000,
1552 0x323},
1553 /* 380 MCS-04 */ { VHT160_MODE_VALID_MASK,
1554 DP_CMN_MOD_IEEE80211_T_VHT_160,
1555 702000, 780000, 0, 0, 0, 702000,
1556 0x324},
1557 /* 381 MCS-05 */ { VHT160_MODE_VALID_MASK,
1558 DP_CMN_MOD_IEEE80211_T_VHT_160,
1559 936000, 1040000, 0, 0, 0, 936000,
1560 0x325},
1561 /* 382 MCS-06 */ { VHT160_MODE_VALID_MASK,
1562 DP_CMN_MOD_IEEE80211_T_VHT_160,
1563 1053000, 1170000, 0, 0, 0, 1053000,
1564 0x326},
1565 /* 383 MCS-07 */ { VHT160_MODE_VALID_MASK,
1566 DP_CMN_MOD_IEEE80211_T_VHT_160,
1567 1170000, 1300000, 0, 0, 0, 1170000,
1568 0x327},
1569 /* 384 MCS-08 */ { VHT160_MODE_VALID_MASK,
1570 DP_CMN_MOD_IEEE80211_T_VHT_160,
1571 1404000, 1560000, 0, 0, 0, 1404000,
1572 0x328},
1573 /* 385 MCS-09 */ { VHT160_MODE_VALID_MASK,
1574 DP_CMN_MOD_IEEE80211_T_VHT_160,
1575 1560000, 1733300, 0, 0, 0, 1560000,
1576 0x329},
1577 /* 386 MCS-10 */ { VHT160_LDPC_ONLY_MASKS,
1578 DP_CMN_MOD_IEEE80211_T_VHT_160,
1579 1755000, 1950000, 0, 0, 0, 1755000,
1580 0x32a},
1581 /* 387 MCS-11 */ { VHT160_LDPC_ONLY_MASKS,
1582 DP_CMN_MOD_IEEE80211_T_VHT_160,
1583 1950000, 2166700, 0, 0, 0, 1950000,
1584 0x32b},
1585 /* If maximum number of spatial streams supported
1586 * at 160MHZ > 2 use below rates
1587 */
1588 /* 388 MCS-00 */ { VHT160_MODE_VALID_MASK,
1589 DP_CMN_MOD_IEEE80211_T_VHT_160,
1590 175500, 195000, 0, 0, 0, 175500,
1591 0x340 },
1592 /* 389 MCS-01 */ { VHT160_MODE_VALID_MASK,
1593 DP_CMN_MOD_IEEE80211_T_VHT_160,
1594 351000, 390000, 0, 0, 0, 351000,
1595 0x341 },
1596 /* 390 MCS-02 */ { VHT160_MODE_VALID_MASK,
1597 DP_CMN_MOD_IEEE80211_T_VHT_160,
1598 526500, 585000, 0, 0, 0, 526500,
1599 0x342 },
1600 /* 391 MCS-03 */ { VHT160_MODE_VALID_MASK,
1601 DP_CMN_MOD_IEEE80211_T_VHT_160,
1602 702000, 780000, 0, 0, 0, 702000,
1603 0x343 },
1604 /* 392 MCS-04 */ { VHT160_MODE_VALID_MASK,
1605 DP_CMN_MOD_IEEE80211_T_VHT_160,
1606 1053000, 1170000, 0, 0, 0, 1053000,
1607 0x344 },
1608 /* 393 MCS-05 */ { VHT160_MODE_VALID_MASK,
1609 DP_CMN_MOD_IEEE80211_T_VHT_160,
1610 1404000, 1560000, 0, 0, 0, 1404000,
1611 0x345 },
1612 /* 394 MCS-06 */ { VHT160_MODE_VALID_MASK,
1613 DP_CMN_MOD_IEEE80211_T_VHT_160,
1614 1579500, 1755000, 0, 0, 0, 1579500,
1615 0x346 },
1616 /* 395 MCS-07 */ { VHT160_MODE_VALID_MASK,
1617 DP_CMN_MOD_IEEE80211_T_VHT_160,
1618 1755000, 1755000, 0, 0, 0, 1755000,
1619 0x347 },
1620 /* 396 MCS-08 */ { VHT160_MODE_VALID_MASK,
1621 DP_CMN_MOD_IEEE80211_T_VHT_160,
1622 2106000, 2340000, 0, 0, 0, 2106000,
1623 0x348 },
1624 /* 397 MCS-09 */ { VHT160_MODE_VALID_MASK,
1625 DP_CMN_MOD_IEEE80211_T_VHT_160,
1626 2340000, 2600000, 0, 0, 0, 2340000,
1627 0x349 },
1628 /* 398 MCS-10 */ { VHT160_LDPC_ONLY_MASKS,
1629 DP_CMN_MOD_IEEE80211_T_VHT_160,
1630 2632500, 2925000, 0, 0, 0, 2632500,
1631 0x34a },
1632 /* 399 MCS-11 */ { VHT160_LDPC_ONLY_MASKS,
1633 DP_CMN_MOD_IEEE80211_T_VHT_160,
1634 2925000, 3250000, 0, 0, 0, 2925000,
1635 0x34b },
1636 /* If maximum number of spatial streams supported
1637 * at 160MHZ > 3 use below rates
1638 */
1639 /* 400 MCS-00 */ { VHT160_MODE_VALID_MASK,
1640 DP_CMN_MOD_IEEE80211_T_VHT_160,
1641 234000, 260000, 0, 0, 0, 234000,
1642 0x360 },
1643 /* 401 MCS-01 */ { VHT160_MODE_VALID_MASK,
1644 DP_CMN_MOD_IEEE80211_T_VHT_160,
1645 468000, 520000, 0, 0, 0, 468000,
1646 0x361 },
1647 /* 402 MCS-02 */ { VHT160_MODE_VALID_MASK,
1648 DP_CMN_MOD_IEEE80211_T_VHT_160,
1649 702000, 780000, 0, 0, 0, 702000,
1650 0x362 },
1651 /* 403 MCS-03 */ { VHT160_MODE_VALID_MASK,
1652 DP_CMN_MOD_IEEE80211_T_VHT_160,
1653 936000, 1040000, 0, 0, 0, 936000,
1654 0x363 },
1655 /* 404 MCS-04 */ { VHT160_MODE_VALID_MASK,
1656 DP_CMN_MOD_IEEE80211_T_VHT_160,
1657 1404000, 1560000, 0, 0, 0, 1404000,
1658 0x364 },
1659 /* 405 MCS-05 */ { VHT160_MODE_VALID_MASK,
1660 DP_CMN_MOD_IEEE80211_T_VHT_160,
1661 1872000, 2080000, 0, 0, 0, 1872000,
1662 0x365 },
1663 /* 406 MCS-06 */ { VHT160_MODE_VALID_MASK,
1664 DP_CMN_MOD_IEEE80211_T_VHT_160,
1665 2106000, 2340000, 0, 0, 0, 2106000,
1666 0x366 },
1667 /* 407 MCS-07 */ { VHT160_MODE_VALID_MASK,
1668 DP_CMN_MOD_IEEE80211_T_VHT_160,
1669 2340000, 2600000, 0, 0, 0, 2340000,
1670 0x367 },
1671 /* 408 MCS-08 */ { VHT160_MODE_VALID_MASK,
1672 DP_CMN_MOD_IEEE80211_T_VHT_160,
1673 2808000, 3120000, 0, 0, 0, 2808000,
1674 0x368 },
1675 /* 409 MCS-09 */ { VHT160_LDPC_ONLY_MASKS,
1676 DP_CMN_MOD_IEEE80211_T_VHT_160,
1677 3120000, 3466700, 0, 0, 0, 3120000,
1678 0x369 },
1679 /* 410 MCS-10 */ { VHT160_LDPC_ONLY_MASKS,
1680 DP_CMN_MOD_IEEE80211_T_VHT_160,
1681 3510000, 3900000, 0, 0, 0, 3510000,
1682 0x36a },
1683 /* 411 MCS-11 */ { VHT160_LDPC_ONLY_MASKS,
1684 DP_CMN_MOD_IEEE80211_T_VHT_160,
1685 3900000, 4333300, 0, 0, 0, 3900000,
1686 0x36b },
1687
1688 /* 11ax RU242 rates
1689 */
1690 /* 412 MCS-00 */ { HE20_MODE_VALID_MASK,
1691 DP_CMN_MOD_IEEE80211_T_HE_20,
1692 8600, 8900, 8100, 7300, 4300, 8600, 0x400},
1693 /* 413 MCS-01 */ { HE20_MODE_VALID_MASK,
1694 DP_CMN_MOD_IEEE80211_T_HE_20,
1695 17200, 17700, 16300, 14600, 8600, 17200,
1696 0x401},
1697 /* 414 MCS-02 */ { HE20_MODE_VALID_MASK,
1698 DP_CMN_MOD_IEEE80211_T_HE_20,
1699 25800, 26600, 24400, 21900, 0, 25800,
1700 0x402},
1701 /* 415 MCS-03 */ { HE20_MODE_VALID_MASK,
1702 DP_CMN_MOD_IEEE80211_T_HE_20,
1703 34400, 35500, 32500, 29300, 17700, 34400,
1704 0x403},
1705 /* 416 MCS-04 */ { HE20_MODE_VALID_MASK,
1706 DP_CMN_MOD_IEEE80211_T_HE_20,
1707 51600, 53200, 48800, 43900, 25800, 51600,
1708 0x404},
1709 /* 417 MCS-05 */ { HE20_MODE_VALID_MASK,
1710 DP_CMN_MOD_IEEE80211_T_HE_20,
1711 68800, 70900, 65000, 58500, 0, 68800,
1712 0x405},
1713 /* 418 MCS-06 */ { HE20_MODE_VALID_MASK,
1714 DP_CMN_MOD_IEEE80211_T_HE_20,
1715 77400, 79800, 73100, 65800, 0, 77400,
1716 0x406},
1717 /* 419 MCS-07 */ { HE20_MODE_VALID_MASK,
1718 DP_CMN_MOD_IEEE80211_T_HE_20,
1719 86000, 88600, 81300, 73100, 0, 86000,
1720 0x407},
1721 /* 420 MCS-08 */ { HE20_MODE_VALID_MASK,
1722 DP_CMN_MOD_IEEE80211_T_HE_20,
1723 103200, 106400, 97500, 87800, 0, 103200,
1724 0x408},
1725 /* 421 MCS-09 */ { HE20_MODE_VALID_MASK,
1726 DP_CMN_MOD_IEEE80211_T_HE_20,
1727 114700, 118200, 108300, 97500, 0, 114700,
1728 0x409},
1729 /* 422 MCS-10 */ { HE20_LDPC_ONLY_MASKS,
1730 DP_CMN_MOD_IEEE80211_T_HE_20,
1731 129000, 133000, 121900, 109700, 0, 129000,
1732 0x40a},
1733 /* 423 MCS-11 */ { HE20_LDPC_ONLY_MASKS,
1734 DP_CMN_MOD_IEEE80211_T_HE_20,
1735 143400, 147700, 135400, 121900, 0, 143400,
1736 0x40b},
1737 /* When number spatial streams > 1 use below rates */
1738 /* 424 MCS-00 */ { HE20_MODE_VALID_MASK,
1739 DP_CMN_MOD_IEEE80211_T_HE_20,
1740 17200, 17700, 16300, 14600, 8600, 17200,
1741 0x420},
1742 /* 425 MCS-01 */ { HE20_MODE_VALID_MASK,
1743 DP_CMN_MOD_IEEE80211_T_HE_20,
1744 34400, 35500, 32500, 29300, 17700, 34400,
1745 0x421},
1746 /* 426 MCS-02 */ { HE20_MODE_VALID_MASK,
1747 DP_CMN_MOD_IEEE80211_T_HE_20,
1748 51600, 53200, 48800, 43900, 0, 51600,
1749 0x422},
1750 /* 427 MCS-03 */ { HE20_MODE_VALID_MASK,
1751 DP_CMN_MOD_IEEE80211_T_HE_20,
1752 68800, 70900, 65000, 58500, 34400, 68800,
1753 0x423},
1754 /* 428 MCS-04 */ { HE20_MODE_VALID_MASK,
1755 DP_CMN_MOD_IEEE80211_T_HE_20,
1756 103200, 106400, 97500, 87800, 51600, 103200,
1757 0x424},
1758 /* 429 MCS-05 */ { HE20_MODE_VALID_MASK,
1759 DP_CMN_MOD_IEEE80211_T_HE_20,
1760 137600, 141800, 130000, 117000, 0, 137600,
1761 0x425},
1762 /* 430 MCS-06 */ { HE20_MODE_VALID_MASK,
1763 DP_CMN_MOD_IEEE80211_T_HE_20,
1764 154900, 159500, 146300, 131600, 0, 154900,
1765 0x426},
1766 /* 431 MCS-07 */ { HE20_MODE_VALID_MASK,
1767 DP_CMN_MOD_IEEE80211_T_HE_20,
1768 172100, 177300, 162500, 146300, 0, 172100,
1769 0x427},
1770 /* 432 MCS-08 */ { HE20_MODE_VALID_MASK,
1771 DP_CMN_MOD_IEEE80211_T_HE_20,
1772 206500, 212700, 195000, 175500, 0, 206500,
1773 0x428},
1774 /* 433 MCS-09 */ { HE20_MODE_VALID_MASK,
1775 DP_CMN_MOD_IEEE80211_T_HE_20,
1776 229400, 236400, 216700, 195000, 0, 229400,
1777 0x429},
1778 /* 434 MCS-10 */ { HE20_LDPC_ONLY_MASKS,
1779 DP_CMN_MOD_IEEE80211_T_HE_20,
1780 258100, 265900, 243800, 219400, 0, 258100,
1781 0x42a},
1782 /* 435 MCS-11 */ { HE20_LDPC_ONLY_MASKS,
1783 DP_CMN_MOD_IEEE80211_T_HE_20,
1784 286800, 295500, 270800, 243800, 0, 286800,
1785 0x42b},
1786
1787 /* When number of spatial streams > 2
1788 * use below rates
1789 */
1790 /* 436 MCS-00 */ { HE20_MODE_VALID_MASK,
1791 DP_CMN_MOD_IEEE80211_T_HE_20,
1792 25800, 26600, 24400, 21900, 12900, 25800,
1793 0x440},
1794 /* 437 MCS-01 */ { HE20_MODE_VALID_MASK,
1795 DP_CMN_MOD_IEEE80211_T_HE_20,
1796 51600, 53200, 48800, 43900, 25800, 51600,
1797 0x441},
1798 /* 438 MCS-02 */ { HE20_MODE_VALID_MASK,
1799 DP_CMN_MOD_IEEE80211_T_HE_20,
1800 77400, 79800, 73100, 65800, 0, 77400,
1801 0x442},
1802 /* 439 MCS-03 */ { HE20_MODE_VALID_MASK,
1803 DP_CMN_MOD_IEEE80211_T_HE_20,
1804 103200, 106400, 97500, 87800, 51600, 103200,
1805 0x443},
1806 /* 440 MCS-04 */ { HE20_MODE_VALID_MASK,
1807 DP_CMN_MOD_IEEE80211_T_HE_20,
1808 154900, 159500, 146300, 131600, 77400, 154900,
1809 0x444},
1810 /* 441 MCS-05 */ { HE20_MODE_VALID_MASK,
1811 DP_CMN_MOD_IEEE80211_T_HE_20,
1812 206500, 212700, 195000, 175500, 0, 206500,
1813 0x445},
1814 /* 442 MCS-06 */ { HE20_MODE_VALID_MASK,
1815 DP_CMN_MOD_IEEE80211_T_HE_20,
1816 232300, 239300, 219400, 197400, 0, 232300,
1817 0x446},
1818 /* 443 MCS-07 */ { HE20_MODE_VALID_MASK,
1819 DP_CMN_MOD_IEEE80211_T_HE_20,
1820 258100, 265900, 243800, 219400, 0, 258100,
1821 0x447},
1822 /* 444 MCS-08 */ { HE20_MODE_VALID_MASK,
1823 DP_CMN_MOD_IEEE80211_T_HE_20,
1824 309700, 319100, 292500, 263300, 0, 309700,
1825 0x448},
1826 /* 445 MCS-09 */ { HE20_MODE_VALID_MASK,
1827 DP_CMN_MOD_IEEE80211_T_HE_20,
1828 344100, 354500, 325000, 292500, 0, 344100,
1829 0x449},
1830 /* 446 MCS-10 */ { HE20_LDPC_ONLY_MASKS,
1831 DP_CMN_MOD_IEEE80211_T_HE_20,
1832 387100, 398900, 365600, 329100, 0, 387100,
1833 0x44a},
1834 /* 447 MCS-11 */ { HE20_LDPC_ONLY_MASKS,
1835 DP_CMN_MOD_IEEE80211_T_HE_20,
1836 430100, 443200, 406300, 365600, 0, 430100,
1837 0x44b},
1838
1839 /* When number of spatial streams > 3
1840 * use below rates
1841 */
1842 /* 448 MCS-00 */ { HE20_MODE_VALID_MASK,
1843 DP_CMN_MOD_IEEE80211_T_HE_20,
1844 34400, 35500, 32500, 29300, 17700, 34400,
1845 0x460},
1846 /* 449 MCS-01 */ { HE20_MODE_VALID_MASK,
1847 DP_CMN_MOD_IEEE80211_T_HE_20,
1848 68800, 70900, 65000, 58500, 34400, 68800,
1849 0x461},
1850 /* 450 MCS-02 */ { HE20_MODE_VALID_MASK,
1851 DP_CMN_MOD_IEEE80211_T_HE_20,
1852 103200, 106400, 97500, 87800, 0, 103200,
1853 0x462},
1854 /* 451 MCS-03 */ { HE20_MODE_VALID_MASK,
1855 DP_CMN_MOD_IEEE80211_T_HE_20,
1856 137600, 141800, 130000, 117000, 68800, 137600,
1857 0x463},
1858 /* 452 MCS-04 */ { HE20_MODE_VALID_MASK,
1859 DP_CMN_MOD_IEEE80211_T_HE_20,
1860 206500, 212700, 195000, 175500, 103200, 206500,
1861 0x464},
1862 /* 453 MCS-05 */ { HE20_MODE_VALID_MASK,
1863 DP_CMN_MOD_IEEE80211_T_HE_20,
1864 275300, 283600, 260000, 234000, 0, 275300,
1865 0x465},
1866 /* 454 MCS-06 */ { HE20_MODE_VALID_MASK,
1867 DP_CMN_MOD_IEEE80211_T_HE_20,
1868 309700, 319100, 292500, 263300, 0, 309700,
1869 0x466},
1870 /* 455 MCS-07 */ { HE20_MODE_VALID_MASK,
1871 DP_CMN_MOD_IEEE80211_T_HE_20,
1872 344100, 354500, 325000, 292500, 0, 344100,
1873 0x467},
1874 /* 456 MCS-08 */ { HE20_MODE_VALID_MASK,
1875 DP_CMN_MOD_IEEE80211_T_HE_20,
1876 412900, 425500, 390000, 351000, 0, 412900,
1877 0x468},
1878 /* 457 MCS-09 */ { HE20_MODE_VALID_MASK,
1879 DP_CMN_MOD_IEEE80211_T_HE_20,
1880 455800, 472700, 433300, 390000, 0, 455800,
1881 0x469},
1882 /* 458 MCS-10 */ { HE20_LDPC_ONLY_MASKS,
1883 DP_CMN_MOD_IEEE80211_T_HE_20,
1884 516200, 531800, 487500, 438800, 0, 516200,
1885 0x46a},
1886 /* 459 MCS-11 */ { HE20_LDPC_ONLY_MASKS,
1887 DP_CMN_MOD_IEEE80211_T_HE_20,
1888 573500, 590900, 541700, 487500, 0, 573500,
1889 0x46b},
1890
1891 /* When number of spatial streams > 4
1892 * use below rates
1893 */
1894 /* 460 MCS-00 */ { HE20_LDPC_ONLY_MASKS,
1895 DP_CMN_MOD_IEEE80211_T_HE_20,
1896 43000, 43300, 40600, 36600, 21500, 43000,
1897 0x480},
1898 /* 461 MCS-01 */ { HE20_LDPC_ONLY_MASKS,
1899 DP_CMN_MOD_IEEE80211_T_HE_20,
1900 86000, 88600, 81300, 73100, 43000, 86000,
1901 0x481},
1902 /* 462 MCS-02 */ { HE20_LDPC_ONLY_MASKS,
1903 DP_CMN_MOD_IEEE80211_T_HE_20,
1904 129000, 133000, 121900, 109700, 0, 129000,
1905 0x482},
1906 /* 463 MCS-03 */ { HE20_LDPC_ONLY_MASKS,
1907 DP_CMN_MOD_IEEE80211_T_HE_20,
1908 172100, 177300, 162500, 146300, 86000, 172100,
1909 0x483},
1910 /* 464 MCS-04 */ { HE20_LDPC_ONLY_MASKS,
1911 DP_CMN_MOD_IEEE80211_T_HE_20,
1912 258100, 265900, 243800, 219400, 129000, 258100,
1913 0x484},
1914 /* 465 MCS-05 */ { HE20_LDPC_ONLY_MASKS,
1915 DP_CMN_MOD_IEEE80211_T_HE_20,
1916 344100, 354500, 325000, 292500, 0, 344100,
1917 0x485},
1918 /* 466 MCS-06 */ { HE20_LDPC_ONLY_MASKS,
1919 DP_CMN_MOD_IEEE80211_T_HE_20,
1920 387100, 398900, 365600, 329100, 0, 387100,
1921 0x486},
1922 /* 467 MCS-07 */ { HE20_LDPC_ONLY_MASKS,
1923 DP_CMN_MOD_IEEE80211_T_HE_20,
1924 430100, 443200, 406300, 365600, 0, 430100,
1925 0x487},
1926 /* 468 MCS-08 */ { HE20_LDPC_ONLY_MASKS,
1927 DP_CMN_MOD_IEEE80211_T_HE_20,
1928 516200, 531800, 487500, 438800, 0, 516200,
1929 0x488},
1930 /* 469 MCS-09 */ { HE20_LDPC_ONLY_MASKS,
1931 DP_CMN_MOD_IEEE80211_T_HE_20,
1932 573500, 590900, 541700, 487500, 0, 573500,
1933 0x489},
1934 /* 470 MCS-10 */ { HE20_LDPC_ONLY_MASKS,
1935 DP_CMN_MOD_IEEE80211_T_HE_20,
1936 645200, 664800, 609400, 548400, 0, 645200,
1937 0x48a},
1938 /* 471 MCS-11 */ { HE20_LDPC_ONLY_MASKS,
1939 DP_CMN_MOD_IEEE80211_T_HE_20,
1940 716900, 738600, 677100, 609400, 0, 716900,
1941 0x48b},
1942
1943 /* When number of spatial streams > 5
1944 * use below rates
1945 */
1946 /* 472 MCS-00 */ { HE20_LDPC_ONLY_MASKS,
1947 DP_CMN_MOD_IEEE80211_T_HE_20,
1948 51600, 53200, 48800, 43900, 25800, 51600,
1949 0x4a0},
1950 /* 473 MCS-01 */ { HE20_LDPC_ONLY_MASKS,
1951 DP_CMN_MOD_IEEE80211_T_HE_20,
1952 103200, 106400, 97500, 87800, 51600, 103200,
1953 0x4a1},
1954 /* 474 MCS-02 */ { HE20_LDPC_ONLY_MASKS,
1955 DP_CMN_MOD_IEEE80211_T_HE_20,
1956 154900, 159500, 146300, 131600, 0, 154900,
1957 0x4a2},
1958 /* 475 MCS-03 */ { HE20_LDPC_ONLY_MASKS,
1959 DP_CMN_MOD_IEEE80211_T_HE_20,
1960 206500, 212700, 195000, 175500, 103200, 206500,
1961 0x4a3},
1962 /* 476 MCS-04 */ { HE20_LDPC_ONLY_MASKS,
1963 DP_CMN_MOD_IEEE80211_T_HE_20,
1964 309700, 319100, 292500, 263300, 154900, 309700,
1965 0x4a4},
1966 /* 477 MCS-05 */ { HE20_LDPC_ONLY_MASKS,
1967 DP_CMN_MOD_IEEE80211_T_HE_20,
1968 412900, 425500, 390000, 351000, 0, 412900,
1969 0x4a5},
1970 /* 478 MCS-06 */ { HE20_LDPC_ONLY_MASKS,
1971 DP_CMN_MOD_IEEE80211_T_HE_20,
1972 464600, 478600, 438000, 394900, 0, 464600,
1973 0x4a6},
1974 /* 479 MCS-07 */ { HE20_LDPC_ONLY_MASKS,
1975 DP_CMN_MOD_IEEE80211_T_HE_20,
1976 516200, 531800, 487500, 438800, 0, 516200,
1977 0x4a7},
1978 /* 480 MCS-08 */ { HE20_LDPC_ONLY_MASKS,
1979 DP_CMN_MOD_IEEE80211_T_HE_20,
1980 619400, 638200, 585000, 526500, 0, 619400,
1981 0x4a8},
1982 /* 481 MCS-09 */ { HE20_LDPC_ONLY_MASKS,
1983 DP_CMN_MOD_IEEE80211_T_HE_20,
1984 688200, 709100, 650000, 585000, 0, 688200,
1985 0x4a9},
1986 /* 482 MCS-10 */ { HE20_LDPC_ONLY_MASKS,
1987 DP_CMN_MOD_IEEE80211_T_HE_20,
1988 774300, 797700, 731300, 658100, 0, 774300,
1989 0x4aa},
1990 /* 483 MCS-11 */ { HE20_LDPC_ONLY_MASKS,
1991 DP_CMN_MOD_IEEE80211_T_HE_20,
1992 860300, 886400, 812500, 731300, 0, 860300,
1993 0x4ab},
1994
1995 /* When number of spatial streams > 6
1996 * use below rates
1997 */
1998 /* 484 MCS-00 */ { HE20_LDPC_ONLY_MASKS,
1999 DP_CMN_MOD_IEEE80211_T_HE_20,
2000 60200, 62000, 56900, 51200, 30100, 60200,
2001 0x4c0},
2002 /* 485 MCS-01 */ { HE20_LDPC_ONLY_MASKS,
2003 DP_CMN_MOD_IEEE80211_T_HE_20,
2004 120400, 124100, 113800, 102400, 60200, 120400,
2005 0x4c1},
2006 /* 486 MCS-02 */ { HE20_LDPC_ONLY_MASKS,
2007 DP_CMN_MOD_IEEE80211_T_HE_20,
2008 180700, 186100, 170600, 153600, 0, 180700,
2009 0x4c2},
2010 /* 487 MCS-03 */ { HE20_LDPC_ONLY_MASKS,
2011 DP_CMN_MOD_IEEE80211_T_HE_20,
2012 240900, 248200, 227500, 204800, 120400, 240900,
2013 0x4c3},
2014 /* 488 MCS-04 */ { HE20_LDPC_ONLY_MASKS,
2015 DP_CMN_MOD_IEEE80211_T_HE_20,
2016 361300, 372300, 341300, 307100, 180700, 361300,
2017 0x4c4},
2018 /* 489 MCS-05 */ { HE20_LDPC_ONLY_MASKS,
2019 DP_CMN_MOD_IEEE80211_T_HE_20,
2020 481800, 496400, 455000, 409500, 0, 481800,
2021 0x4c5},
2022 /* 490 MCS-06 */ { HE20_LDPC_ONLY_MASKS,
2023 DP_CMN_MOD_IEEE80211_T_HE_20,
2024 542000, 558400, 511900, 460700, 0, 542000,
2025 0x4c6},
2026 /* 491 MCS-07 */ { HE20_LDPC_ONLY_MASKS,
2027 DP_CMN_MOD_IEEE80211_T_HE_20,
2028 602200, 620500, 568800, 511900, 0, 602200,
2029 0x4c7},
2030 /* 492 MCS-08 */ { HE20_LDPC_ONLY_MASKS,
2031 DP_CMN_MOD_IEEE80211_T_HE_20,
2032 722600, 744500, 682500, 614300, 0, 722600,
2033 0x4c8},
2034 /* 493 MCS-09 */ { HE20_LDPC_ONLY_MASKS,
2035 DP_CMN_MOD_IEEE80211_T_HE_20,
2036 802900, 827300, 758300, 682500, 0, 802900,
2037 0x4c9},
2038 /* 494 MCS-10 */ { HE20_LDPC_ONLY_MASKS,
2039 DP_CMN_MOD_IEEE80211_T_HE_20,
2040 903300, 930700, 853100, 767800, 0, 903300,
2041 0x4ca},
2042 /* 495 MCS-11 */ { HE20_LDPC_ONLY_MASKS,
2043 DP_CMN_MOD_IEEE80211_T_HE_20,
2044 1003700, 1034100, 947900, 853100, 0, 1003700,
2045 0x4cb},
2046
2047 /* When number of spatial streams > 7
2048 * use below rates
2049 */
2050 /* 496 MCS-00 */ { HE20_LDPC_ONLY_MASKS,
2051 DP_CMN_MOD_IEEE80211_T_HE_20,
2052 68800, 70900, 65000, 58500, 34400, 68800,
2053 0x4e0},
2054 /* 497 MCS-01 */ { HE20_LDPC_ONLY_MASKS,
2055 DP_CMN_MOD_IEEE80211_T_HE_20,
2056 137600, 141800, 130000, 117000, 68800, 137600,
2057 0x4e1},
2058 /* 498 MCS-02 */ { HE20_LDPC_ONLY_MASKS,
2059 DP_CMN_MOD_IEEE80211_T_HE_20,
2060 206500, 212700, 195000, 175500, 0, 206500,
2061 0x4e2},
2062 /* 499 MCS-03 */ { HE20_LDPC_ONLY_MASKS,
2063 DP_CMN_MOD_IEEE80211_T_HE_20,
2064 275300, 283600, 260000, 234000, 137600, 275300,
2065 0x4e3},
2066 /* 500 MCS-04 */ { HE20_LDPC_ONLY_MASKS,
2067 DP_CMN_MOD_IEEE80211_T_HE_20,
2068 412900, 425500, 390000, 351000, 206500, 412900,
2069 0x4e4},
2070 /* 501 MCS-05 */ { HE20_LDPC_ONLY_MASKS,
2071 DP_CMN_MOD_IEEE80211_T_HE_20,
2072 550600, 567300, 520000, 468000, 0, 550600,
2073 0x4e5},
2074 /* 502 MCS-06 */ { HE20_LDPC_ONLY_MASKS,
2075 DP_CMN_MOD_IEEE80211_T_HE_20,
2076 619400, 638200, 585000, 526500, 0, 619400,
2077 0x4e6},
2078 /* 503 MCS-07 */ { HE20_LDPC_ONLY_MASKS,
2079 DP_CMN_MOD_IEEE80211_T_HE_20,
2080 688200, 709100, 650000, 585000, 0, 688200,
2081 0x4e7},
2082 /* 504 MCS-08 */ { HE20_LDPC_ONLY_MASKS,
2083 DP_CMN_MOD_IEEE80211_T_HE_20,
2084 825900, 850900, 780000, 702000, 0, 825900,
2085 0x4e8},
2086 /* 505 MCS-09 */ { HE20_LDPC_ONLY_MASKS,
2087 DP_CMN_MOD_IEEE80211_T_HE_20,
2088 917600, 945500, 866700, 780000, 0, 917600,
2089 0x4e9},
2090 /* 506 MCS-10 */ { HE20_LDPC_ONLY_MASKS,
2091 DP_CMN_MOD_IEEE80211_T_HE_20,
2092 1032400, 1063600, 975000, 877500, 0, 1032400,
2093 0x4ea},
2094 /* 507 MCS-11 */ { HE20_LDPC_ONLY_MASKS,
2095 DP_CMN_MOD_IEEE80211_T_HE_20,
2096 1147100, 1181800, 1083300, 975000, 0, 1147100,
2097 0x4eb},
2098
2099 /* 11ax RU484 rates
2100 */
2101 /* 508 MCS-00 */ { HE40_LDPC_ONLY_MASKS,
2102 DP_CMN_MOD_IEEE80211_T_HE_40,
2103 17200, 17700, 16300, 14600, 8600, 17200, 0x400
2104 },
2105 /* 509 MCS-01 */ { HE40_LDPC_ONLY_MASKS,
2106 DP_CMN_MOD_IEEE80211_T_HE_40,
2107 34400, 35500, 32500, 29300, 17700, 34400, 0x401
2108 },
2109 /* 510 MCS-02 */ { HE40_LDPC_ONLY_MASKS,
2110 DP_CMN_MOD_IEEE80211_T_HE_40,
2111 51600, 53200, 48800, 43900, 25800, 51600, 0x402
2112 },
2113 /* 511 MCS-03 */ { HE40_LDPC_ONLY_MASKS,
2114 DP_CMN_MOD_IEEE80211_T_HE_40,
2115 68800, 70900, 65000, 58500, 0, 68800, 0x403
2116 },
2117 /* 512 MCS-04 */ { HE40_LDPC_ONLY_MASKS,
2118 DP_CMN_MOD_IEEE80211_T_HE_40,
2119 103200, 106400, 97500, 87800, 0, 103200,
2120 0x404 },
2121 /* 513 MCS-05 */ { HE40_LDPC_ONLY_MASKS,
2122 DP_CMN_MOD_IEEE80211_T_HE_40,
2123 137600, 141800, 130000, 117000, 0, 137600,
2124 0x405 },
2125 /* 514 MCS-06 */ { HE40_LDPC_ONLY_MASKS,
2126 DP_CMN_MOD_IEEE80211_T_HE_40,
2127 154900, 159500, 146300, 131600, 0, 154900,
2128 0x406 },
2129 /* 515 MCS-07 */ { HE40_LDPC_ONLY_MASKS,
2130 DP_CMN_MOD_IEEE80211_T_HE_40,
2131 172100, 177300, 162500, 146300, 0, 172100,
2132 0x407 },
2133 /* 516 MCS-08 */ { HE40_LDPC_ONLY_MASKS,
2134 DP_CMN_MOD_IEEE80211_T_HE_40,
2135 206500, 212700, 195000, 175500, 0, 206500,
2136 0x408 },
2137 /* 517 MCS-09 */ { HE40_LDPC_ONLY_MASKS,
2138 DP_CMN_MOD_IEEE80211_T_HE_40,
2139 229400, 236400, 216700, 195000, 0, 229400,
2140 0x409 },
2141 /* 518 MCS-10 */ { HE40_LDPC_ONLY_MASKS,
2142 DP_CMN_MOD_IEEE80211_T_HE_40,
2143 258100, 265900, 243800, 219400, 0, 258100,
2144 0x40a },
2145 /* 519 MCS-11 */ { HE40_LDPC_ONLY_MASKS,
2146 DP_CMN_MOD_IEEE80211_T_HE_40,
2147 286800, 295500, 270800, 243800, 0, 286800,
2148 0x40b },
2149 /* When number of spatial streams > 1
2150 * use below rates
2151 */
2152 /* 520 MCS-00 */ { HE40_LDPC_ONLY_MASKS,
2153 DP_CMN_MOD_IEEE80211_T_HE_40,
2154 34400, 35500, 32500, 29300, 17700, 34400, 0x420
2155 },
2156 /* 521 MCS-01 */ { HE40_LDPC_ONLY_MASKS,
2157 DP_CMN_MOD_IEEE80211_T_HE_40,
2158 68800, 70900, 65000, 58500, 34400, 68800, 0x421
2159 },
2160 /* 522 MCS-02 */ { HE40_LDPC_ONLY_MASKS,
2161 DP_CMN_MOD_IEEE80211_T_HE_40,
2162 103200, 106400, 97500, 87800, 0, 103200,
2163 0x422 },
2164 /* 523 MCS-03 */ { HE40_LDPC_ONLY_MASKS,
2165 DP_CMN_MOD_IEEE80211_T_HE_40,
2166 137600, 141800, 130000, 117000, 68800, 137600,
2167 0x423 },
2168 /* 524 MCS-04 */ { HE40_LDPC_ONLY_MASKS,
2169 DP_CMN_MOD_IEEE80211_T_HE_40,
2170 206500, 212700, 195000, 175500, 103200, 206500,
2171 0x424 },
2172 /* 525 MCS-05 */ { HE40_LDPC_ONLY_MASKS,
2173 DP_CMN_MOD_IEEE80211_T_HE_40,
2174 275300, 283600, 260000, 234000, 0, 275300,
2175 0x425 },
2176 /* 526 MCS-06 */ { HE40_LDPC_ONLY_MASKS,
2177 DP_CMN_MOD_IEEE80211_T_HE_40,
2178 309700, 319100, 292500, 263300, 0, 309700,
2179 0x426 },
2180 /* 527 MCS-07 */ { HE40_LDPC_ONLY_MASKS,
2181 DP_CMN_MOD_IEEE80211_T_HE_40,
2182 344100, 354500, 325000, 292500, 0, 344100,
2183 0x427 },
2184 /* 528 MCS-08 */ { HE40_LDPC_ONLY_MASKS,
2185 DP_CMN_MOD_IEEE80211_T_HE_40,
2186 412900, 425500, 390000, 351000, 0, 412900,
2187 0x428 },
2188 /* 529 MCS-09 */ { HE40_LDPC_ONLY_MASKS,
2189 DP_CMN_MOD_IEEE80211_T_HE_40,
2190 455800, 472700, 433300, 390000, 0, 455800,
2191 0x429 },
2192 /* 530 MCS-10 */ { HE40_LDPC_ONLY_MASKS,
2193 DP_CMN_MOD_IEEE80211_T_HE_40,
2194 516200, 531800, 487500, 438800, 0, 516200,
2195 0x42a },
2196 /* 531 MCS-11 */ { HE40_LDPC_ONLY_MASKS,
2197 DP_CMN_MOD_IEEE80211_T_HE_40,
2198 573500, 590900, 541700, 487500, 0, 573500,
2199 0x42b },
2200
2201 /* When number of spatial streams > 2
2202 * use below rates
2203 */
2204 /* 532 MCS-00 */ { HE40_LDPC_ONLY_MASKS,
2205 DP_CMN_MOD_IEEE80211_T_HE_40,
2206 51600, 53200, 48800, 43900, 25800, 51600, 0x440
2207 },
2208 /* 533 MCS-01 */ { HE40_LDPC_ONLY_MASKS,
2209 DP_CMN_MOD_IEEE80211_T_HE_40,
2210 103200, 106400, 97500, 87800, 51600, 103200,
2211 0x441 },
2212 /* 534 MCS-02 */ { HE40_LDPC_ONLY_MASKS,
2213 DP_CMN_MOD_IEEE80211_T_HE_40,
2214 154900, 159500, 146300, 131600, 0, 154900,
2215 0x442 },
2216 /* 535 MCS-03 */ { HE40_LDPC_ONLY_MASKS,
2217 DP_CMN_MOD_IEEE80211_T_HE_40,
2218 206500, 212700, 195000, 175500, 103200, 206500,
2219 0x443 },
2220 /* 536 MCS-04 */ { HE40_LDPC_ONLY_MASKS,
2221 DP_CMN_MOD_IEEE80211_T_HE_40,
2222 309700, 319100, 292500, 263300, 154900, 309700,
2223 0x444 },
2224 /* 537 MCS-05 */ { HE40_LDPC_ONLY_MASKS,
2225 DP_CMN_MOD_IEEE80211_T_HE_40,
2226 412900, 425500, 390000, 351000, 0, 412900,
2227 0x445 },
2228 /* 538 MCS-06 */ { HE40_LDPC_ONLY_MASKS,
2229 DP_CMN_MOD_IEEE80211_T_HE_40,
2230 464600, 478600, 438000, 394900, 0, 464600,
2231 0x446 },
2232 /* 539 MCS-07 */ { HE40_LDPC_ONLY_MASKS,
2233 DP_CMN_MOD_IEEE80211_T_HE_40,
2234 516200, 531800, 487500, 438800, 0, 516200,
2235 0x447 },
2236 /* 540 MCS-08 */ { HE40_LDPC_ONLY_MASKS,
2237 DP_CMN_MOD_IEEE80211_T_HE_40,
2238 619400, 638200, 585000, 526500, 0, 619400,
2239 0x448 },
2240 /* 541 MCS-09 */ { HE40_LDPC_ONLY_MASKS,
2241 DP_CMN_MOD_IEEE80211_T_HE_40,
2242 688200, 709100, 650000, 585000, 0, 688200,
2243 0x449 },
2244 /* 542 MCS-10 */ { HE40_LDPC_ONLY_MASKS,
2245 DP_CMN_MOD_IEEE80211_T_HE_40,
2246 774300, 797700, 731300, 658100, 0, 774300,
2247 0x44a },
2248 /* 543 MCS-11 */ { HE40_LDPC_ONLY_MASKS,
2249 DP_CMN_MOD_IEEE80211_T_HE_40,
2250 860300, 886400, 812500, 731300, 0, 860300,
2251 0x44b },
2252
2253 /* When number of spatial streams > 3
2254 * use below rates
2255 */
2256 /* 544 MCS-00 */ { HE40_LDPC_ONLY_MASKS,
2257 DP_CMN_MOD_IEEE80211_T_HE_40,
2258 68800, 70900, 65000, 58500, 34400, 68800, 0x460
2259 },
2260 /* 545 MCS-01 */ { HE40_LDPC_ONLY_MASKS,
2261 DP_CMN_MOD_IEEE80211_T_HE_40,
2262 137600, 141800, 130000, 117000, 68800, 137600,
2263 0x461 },
2264 /* 546 MCS-02 */ { HE40_LDPC_ONLY_MASKS,
2265 DP_CMN_MOD_IEEE80211_T_HE_40,
2266 206500, 212700, 195000, 175500, 0, 206500,
2267 0x462 },
2268 /* 547 MCS-03 */ { HE40_LDPC_ONLY_MASKS,
2269 DP_CMN_MOD_IEEE80211_T_HE_40,
2270 275300, 283600, 260000, 234000, 137600, 275300,
2271 0x463 },
2272 /* 548 MCS-04 */ { HE40_LDPC_ONLY_MASKS,
2273 DP_CMN_MOD_IEEE80211_T_HE_40,
2274 412900, 425500, 390000, 351000, 206500, 412900,
2275 0x464 },
2276 /* 549 MCS-05 */ { HE40_LDPC_ONLY_MASKS,
2277 DP_CMN_MOD_IEEE80211_T_HE_40,
2278 550600, 567300, 520000, 468000, 0, 550600,
2279 0x465 },
2280 /* 550 MCS-06 */ { HE40_LDPC_ONLY_MASKS,
2281 DP_CMN_MOD_IEEE80211_T_HE_40,
2282 619400, 638200, 585000, 526500, 0, 619400,
2283 0x466 },
2284 /* 551 MCS-07 */ { HE40_LDPC_ONLY_MASKS,
2285 DP_CMN_MOD_IEEE80211_T_HE_40,
2286 688200, 709100, 650000, 585000, 0, 688200,
2287 0x467 },
2288 /* 552 MCS-08 */ { HE40_LDPC_ONLY_MASKS,
2289 DP_CMN_MOD_IEEE80211_T_HE_40,
2290 825900, 850900, 780000, 702000, 0, 825900,
2291 0x468 },
2292 /* 553 MCS-09 */ { HE40_LDPC_ONLY_MASKS,
2293 DP_CMN_MOD_IEEE80211_T_HE_40,
2294 917600, 945500, 866700, 780000, 0, 917600,
2295 0x469 },
2296 /* 554 MCS-10 */ { HE40_LDPC_ONLY_MASKS,
2297 DP_CMN_MOD_IEEE80211_T_HE_40,
2298 1032400, 1063600, 975000, 877500, 0, 1032400,
2299 0x46a },
2300 /* 555 MCS-11 */ { HE40_LDPC_ONLY_MASKS,
2301 DP_CMN_MOD_IEEE80211_T_HE_40,
2302 1147100, 1181800, 1083300, 975000, 0, 1147100,
2303 0x46b },
2304
2305 /* When number of spatial streams > 4
2306 * use below rates
2307 */
2308 /* 556 MCS-00 */ { HE40_LDPC_ONLY_MASKS,
2309 DP_CMN_MOD_IEEE80211_T_HE_40,
2310 86000, 88600, 81300, 73100, 43000, 86000, 0x480
2311 },
2312 /* 557 MCS-01 */ { HE40_LDPC_ONLY_MASKS,
2313 DP_CMN_MOD_IEEE80211_T_HE_40,
2314 172100, 177300, 162500, 146300, 86000, 172100,
2315 0x481 },
2316 /* 558 MCS-02 */ { HE40_LDPC_ONLY_MASKS,
2317 DP_CMN_MOD_IEEE80211_T_HE_40,
2318 258100, 265900, 243800, 219400, 0, 258100,
2319 0x482 },
2320 /* 559 MCS-03 */ { HE40_LDPC_ONLY_MASKS,
2321 DP_CMN_MOD_IEEE80211_T_HE_40,
2322 344100, 354500, 325000, 292500, 172100, 344100,
2323 0x483 },
2324 /* 560 MCS-04 */ { HE40_LDPC_ONLY_MASKS,
2325 DP_CMN_MOD_IEEE80211_T_HE_40,
2326 516200, 531800, 487500, 438800, 258100, 516200,
2327 0x484 },
2328 /* 561 MCS-05 */ { HE40_LDPC_ONLY_MASKS,
2329 DP_CMN_MOD_IEEE80211_T_HE_40,
2330 688200, 709100, 650000, 585000, 0, 688200,
2331 0x485 },
2332 /* 562 MCS-06 */ { HE40_LDPC_ONLY_MASKS,
2333 DP_CMN_MOD_IEEE80211_T_HE_40,
2334 774300, 797700, 731300, 658100, 0, 774300,
2335 0x486 },
2336 /* 563 MCS-07 */ { HE40_LDPC_ONLY_MASKS,
2337 DP_CMN_MOD_IEEE80211_T_HE_40,
2338 860300, 886400, 812500, 731300, 0, 860300,
2339 0x487 },
2340 /* 564 MCS-08 */ { HE40_LDPC_ONLY_MASKS,
2341 DP_CMN_MOD_IEEE80211_T_HE_40,
2342 1032400, 1063600, 975000, 877500, 0, 1032400,
2343 0x488 },
2344 /* 565 MCS-09 */ { HE40_LDPC_ONLY_MASKS,
2345 DP_CMN_MOD_IEEE80211_T_HE_40,
2346 1147100, 1181800, 1083300, 975000, 0, 1147100,
2347 0x489 },
2348 /* 566 MCS-10 */ { HE40_LDPC_ONLY_MASKS,
2349 DP_CMN_MOD_IEEE80211_T_HE_40,
2350 1290400, 1329500, 1218800, 1096900, 0, 1290400,
2351 0x48a },
2352 /* 567 MCS-11 */ { HE40_LDPC_ONLY_MASKS,
2353 DP_CMN_MOD_IEEE80211_T_HE_40,
2354 1433800, 1477300, 1354200, 1218800, 0, 1433800,
2355 0x48b },
2356
2357 /* When number of spatial streams > 5
2358 * use below rates
2359 */
2360 /* 568 MCS-00 */ { HE40_LDPC_ONLY_MASKS,
2361 DP_CMN_MOD_IEEE80211_T_HE_40,
2362 103200, 106400, 97500, 87800, 51600, 103200,
2363 0x4a0 },
2364 /* 569 MCS-01 */ { HE40_LDPC_ONLY_MASKS,
2365 DP_CMN_MOD_IEEE80211_T_HE_40,
2366 206500, 212700, 195000, 175500, 103200, 206500,
2367 0x4a1 },
2368 /* 570 MCS-02 */ { HE40_LDPC_ONLY_MASKS,
2369 DP_CMN_MOD_IEEE80211_T_HE_40,
2370 309700, 319100, 292500, 263300, 0, 309700,
2371 0x4a2 },
2372 /* 571 MCS-03 */ { HE40_LDPC_ONLY_MASKS,
2373 DP_CMN_MOD_IEEE80211_T_HE_40,
2374 412900, 425500, 390000, 351000, 206500, 412900,
2375 0x4a3 },
2376 /* 572 MCS-04 */ { HE40_LDPC_ONLY_MASKS,
2377 DP_CMN_MOD_IEEE80211_T_HE_40,
2378 619400, 638200, 585000, 526500, 309700, 619400,
2379 0x4a4 },
2380 /* 573 MCS-05 */ { HE40_LDPC_ONLY_MASKS,
2381 DP_CMN_MOD_IEEE80211_T_HE_40,
2382 825900, 850900, 780000, 702000, 0, 825900,
2383 0x4a5 },
2384 /* 574 MCS-06 */ { HE40_LDPC_ONLY_MASKS,
2385 DP_CMN_MOD_IEEE80211_T_HE_40,
2386 929100, 957300, 877500, 789800, 0, 929100,
2387 0x4a6 },
2388 /* 575 MCS-07 */ { HE40_LDPC_ONLY_MASKS,
2389 DP_CMN_MOD_IEEE80211_T_HE_40,
2390 1032400, 1063600, 975000, 877500, 0, 1032400,
2391 0x4a7 },
2392 /* 576 MCS-08 */ { HE40_LDPC_ONLY_MASKS,
2393 DP_CMN_MOD_IEEE80211_T_HE_40,
2394 1238800, 1276400, 1170000, 1053000, 0, 1238800,
2395 0x4a8 },
2396 /* 577 MCS-09 */ { HE40_LDPC_ONLY_MASKS,
2397 DP_CMN_MOD_IEEE80211_T_HE_40,
2398 1376500, 1418200, 1300000, 1170000, 0, 1376500,
2399 0x4a9 },
2400 /* 578 MCS-10 */ { HE40_LDPC_ONLY_MASKS,
2401 DP_CMN_MOD_IEEE80211_T_HE_40,
2402 1548500, 1595500, 1462500, 1316300, 0, 1548500,
2403 0x4aa },
2404 /* 579 MCS-11 */ { HE40_LDPC_ONLY_MASKS,
2405 DP_CMN_MOD_IEEE80211_T_HE_40,
2406 1720600, 1772700, 1625000, 1462500, 0, 1720600,
2407 0x4ab },
2408 /* When number spatial streams > 6
2409 * use below rates
2410 */
2411 /* 580 MCS-00 */ { HE40_LDPC_ONLY_MASKS,
2412 DP_CMN_MOD_IEEE80211_T_HE_40,
2413 120400, 124100, 113800, 102400, 60200, 120400,
2414 0x4c0 },
2415 /* 581 MCS-01 */ { HE40_LDPC_ONLY_MASKS,
2416 DP_CMN_MOD_IEEE80211_T_HE_40,
2417 240900, 248200, 227500, 204800, 120400, 240900,
2418 0x4c1 },
2419 /* 582 MCS-02 */ { HE40_LDPC_ONLY_MASKS,
2420 DP_CMN_MOD_IEEE80211_T_HE_40,
2421 361300, 372300, 341300, 307100, 180600, 361300,
2422 0x4c2 },
2423 /* 583 MCS-03 */ { HE40_LDPC_ONLY_MASKS,
2424 DP_CMN_MOD_IEEE80211_T_HE_40,
2425 481800, 496400, 455000, 409500, 0, 481800,
2426 0x4c3 },
2427 /* 584 MCS-04 */ { HE40_LDPC_ONLY_MASKS,
2428 DP_CMN_MOD_IEEE80211_T_HE_40,
2429 722600, 744500, 682500, 614300, 0, 722600,
2430 0x4c4 },
2431 /* 585 MCS-05 */ { HE40_LDPC_ONLY_MASKS,
2432 DP_CMN_MOD_IEEE80211_T_HE_40,
2433 963500, 992700, 910000, 819000, 0, 963500,
2434 0x4c5 },
2435 /* 586 MCS-06 */ { HE40_LDPC_ONLY_MASKS,
2436 DP_CMN_MOD_IEEE80211_T_HE_40,
2437 1084000, 1116800, 1023800, 921400, 0, 1084000,
2438 0x4c6 },
2439 /* 587 MCS-07 */ { HE40_LDPC_ONLY_MASKS,
2440 DP_CMN_MOD_IEEE80211_T_HE_40,
2441 1204400, 1240900, 1137500, 1023800, 0, 1204400,
2442 0x4c7 },
2443 /* 588 MCS-08 */ { HE40_LDPC_ONLY_MASKS,
2444 DP_CMN_MOD_IEEE80211_T_HE_40,
2445 1445300, 1489100, 1365000, 1228500, 0, 1445300,
2446 0x4c8 },
2447 /* 589 MCS-09 */ { HE40_LDPC_ONLY_MASKS,
2448 DP_CMN_MOD_IEEE80211_T_HE_40,
2449 1605900, 1654500, 1516700, 1365000, 0, 1605900,
2450 0x4c9 },
2451 /* 590 MCS-10 */ { HE40_LDPC_ONLY_MASKS,
2452 DP_CMN_MOD_IEEE80211_T_HE_40,
2453 1806600, 1861400, 1706300, 1535600, 0, 1806600,
2454 0x4ca },
2455 /* 591 MCS-11 */ { HE40_LDPC_ONLY_MASKS,
2456 DP_CMN_MOD_IEEE80211_T_HE_40,
2457 2007400, 2068200, 1895800, 1706300, 0, 2007400,
2458 0x4cb },
2459
2460 /* When number of spatial streams > 7
2461 * use below rates
2462 */
2463 /* 592 MCS-00 */ { HE40_LDPC_ONLY_MASKS,
2464 DP_CMN_MOD_IEEE80211_T_HE_40,
2465 137600, 141800, 130000, 117000, 68800, 137600,
2466 0x4e0 },
2467 /* 593 MCS-01 */ { HE40_LDPC_ONLY_MASKS,
2468 DP_CMN_MOD_IEEE80211_T_HE_40,
2469 275300, 283600, 260000, 234000, 137600, 275300,
2470 0x4e1 },
2471 /* 594 MCS-02 */ { HE40_LDPC_ONLY_MASKS,
2472 DP_CMN_MOD_IEEE80211_T_HE_40,
2473 412900, 425500, 390000, 351000, 206500, 412900,
2474 0x4e2 },
2475 /* 595 MCS-03 */ { HE40_LDPC_ONLY_MASKS,
2476 DP_CMN_MOD_IEEE80211_T_HE_40,
2477 550600, 567300, 520000, 468000, 0, 550600,
2478 0x4e3 },
2479 /* 596 MCS-04 */ { HE40_LDPC_ONLY_MASKS,
2480 DP_CMN_MOD_IEEE80211_T_HE_40,
2481 825900, 850900, 780000, 702000, 0, 825900,
2482 0x4e4 },
2483 /* 597 MCS-05 */ { HE40_LDPC_ONLY_MASKS,
2484 DP_CMN_MOD_IEEE80211_T_HE_40,
2485 1101200, 1134500, 1040000, 936000, 0, 1101200,
2486 0x4e5 },
2487 /* 598 MCS-06 */ { HE40_LDPC_ONLY_MASKS,
2488 DP_CMN_MOD_IEEE80211_T_HE_40,
2489 1238800, 1276400, 1170000, 1053000, 0, 1238800,
2490 0x4e6 },
2491 /* 599 MCS-07 */ { HE40_LDPC_ONLY_MASKS,
2492 DP_CMN_MOD_IEEE80211_T_HE_40,
2493 1376500, 1418200, 1300000, 1170000, 0, 1376500,
2494 0x4e7 },
2495 /* 600 MCS-08 */ { HE40_LDPC_ONLY_MASKS,
2496 DP_CMN_MOD_IEEE80211_T_HE_40,
2497 1651800, 1701800, 1560000, 1404000, 0, 1651800,
2498 0x4e8 },
2499 /* 601 MCS-09 */ { HE40_LDPC_ONLY_MASKS,
2500 DP_CMN_MOD_IEEE80211_T_HE_40,
2501 1835300, 1890900, 1733300, 1560000, 0, 1835300,
2502 0x4e9 },
2503 /* 602 MCS-10 */ { HE40_LDPC_ONLY_MASKS,
2504 DP_CMN_MOD_IEEE80211_T_HE_40,
2505 2064700, 2127300, 1950000, 1755000, 0, 2064700,
2506 0x4ea },
2507 /* 603 MCS-11 */ { HE40_LDPC_ONLY_MASKS,
2508 DP_CMN_MOD_IEEE80211_T_HE_40,
2509 2294100, 2363600, 2166700, 1950000, 0, 2294100,
2510 0x4eb },
2511
2512 /* 11ax RU996 rates
2513 */
2514 /* 604 MCS-00 */ { HE80_LDPC_ONLY_MASKS,
2515 DP_CMN_MOD_IEEE80211_T_HE_80,
2516 36000, 37100, 34000, 30600, 18000, 36000, 0x400
2517 },
2518 /* 605 MCS-01 */ { HE80_LDPC_ONLY_MASKS,
2519 DP_CMN_MOD_IEEE80211_T_HE_80,
2520 72100, 74200, 68100, 61300, 36000, 72100, 0x401
2521 },
2522 /* 606 MCS-02 */ { HE80_LDPC_ONLY_MASKS,
2523 DP_CMN_MOD_IEEE80211_T_HE_80,
2524 108100, 111400, 102100, 91900, 0, 108100,
2525 0x402 },
2526 /* 607 MCS-03 */ { HE80_LDPC_ONLY_MASKS,
2527 DP_CMN_MOD_IEEE80211_T_HE_80,
2528 144100, 148500, 136100, 122500, 72100, 144100,
2529 0x403 },
2530 /* 608 MCS-04 */ { HE80_LDPC_ONLY_MASKS,
2531 DP_CMN_MOD_IEEE80211_T_HE_80,
2532 216200, 222700, 204200, 183800, 108100, 216200,
2533 0x404 },
2534 /* 609 MCS-05 */ { HE80_LDPC_ONLY_MASKS,
2535 DP_CMN_MOD_IEEE80211_T_HE_80,
2536 288200, 297000, 272200, 245000, 0, 288200,
2537 0x405 },
2538 /* 610 MCS-06 */ { HE80_LDPC_ONLY_MASKS,
2539 DP_CMN_MOD_IEEE80211_T_HE_80,
2540 324300, 334100, 306300, 275600, 0, 324300,
2541 0x406 },
2542 /* 611 MCS-07 */ { HE80_LDPC_ONLY_MASKS,
2543 DP_CMN_MOD_IEEE80211_T_HE_80,
2544 360300, 371200, 340300, 306300, 0, 360300,
2545 0x407 },
2546 /* 612 MCS-08 */ { HE80_LDPC_ONLY_MASKS,
2547 DP_CMN_MOD_IEEE80211_T_HE_80,
2548 432400, 445500, 408300, 367500, 0, 432400,
2549 0x408 },
2550 /* 613 MCS-09 */ { HE80_LDPC_ONLY_MASKS,
2551 DP_CMN_MOD_IEEE80211_T_HE_80,
2552 480400, 494900, 453700, 408300, 0, 480400,
2553 0x409 },
2554 /* 614 MCS-10 */ { HE80_LDPC_ONLY_MASKS,
2555 DP_CMN_MOD_IEEE80211_T_HE_80,
2556 540400, 556800, 510400, 459400, 0, 540400,
2557 0x40a },
2558 /* 615 MCS-11 */ { HE80_LDPC_ONLY_MASKS,
2559 DP_CMN_MOD_IEEE80211_T_HE_80,
2560 600500, 618700, 567100, 510400, 0, 600500,
2561 0x40b },
2562 /* When number spatial streams > 1
2563 * use below rates
2564 */
2565 /* 616 MCS-00 */ { HE80_LDPC_ONLY_MASKS,
2566 DP_CMN_MOD_IEEE80211_T_HE_80,
2567 72100, 74200, 68100, 61300, 36000, 72100, 0x420
2568 },
2569 /* 617 MCS-01 */ { HE80_LDPC_ONLY_MASKS,
2570 DP_CMN_MOD_IEEE80211_T_HE_80,
2571 144100, 148500, 136100, 122500, 72100, 144100,
2572 0x421 },
2573 /* 618 MCS-02 */ { HE80_LDPC_ONLY_MASKS,
2574 DP_CMN_MOD_IEEE80211_T_HE_80,
2575 216200, 222700, 204200, 183800, 0, 216200,
2576 0x422 },
2577 /* 619 MCS-03 */ { HE80_LDPC_ONLY_MASKS,
2578 DP_CMN_MOD_IEEE80211_T_HE_80,
2579 288200, 297000, 272200, 245000, 144100, 288200,
2580 0x423 },
2581 /* 620 MCS-04 */ { HE80_LDPC_ONLY_MASKS,
2582 DP_CMN_MOD_IEEE80211_T_HE_80,
2583 432400, 445500, 408300, 367500, 216200, 432400,
2584 0x424 },
2585 /* 621 MCS-05 */ { HE80_LDPC_ONLY_MASKS,
2586 DP_CMN_MOD_IEEE80211_T_HE_80,
2587 576500, 593900, 544400, 490000, 0, 576500,
2588 0x425 },
2589 /* 622 MCS-06 */ { HE80_LDPC_ONLY_MASKS,
2590 DP_CMN_MOD_IEEE80211_T_HE_80,
2591 648500, 668200, 612500, 551300, 0, 648500,
2592 0x426 },
2593 /* 623 MCS-07 */ { HE80_LDPC_ONLY_MASKS,
2594 DP_CMN_MOD_IEEE80211_T_HE_80,
2595 720600, 742400, 680600, 612500, 0, 720600,
2596 0x427 },
2597 /* 624 MCS-08 */ { HE80_LDPC_ONLY_MASKS,
2598 DP_CMN_MOD_IEEE80211_T_HE_80,
2599 864700, 890900, 816700, 735000, 0, 864700,
2600 0x428 },
2601 /* 625 MCS-09 */ { HE80_LDPC_ONLY_MASKS,
2602 DP_CMN_MOD_IEEE80211_T_HE_80,
2603 960800, 989900, 907400, 816700, 0, 960800,
2604 0x429 },
2605 /* 626 MCS-10 */ { HE80_LDPC_ONLY_MASKS,
2606 DP_CMN_MOD_IEEE80211_T_HE_80,
2607 1080900, 1113600, 1020800, 918800, 0, 1080900,
2608 0x42a },
2609 /* 627 MCS-11 */ { HE80_LDPC_ONLY_MASKS,
2610 DP_CMN_MOD_IEEE80211_T_HE_80,
2611 1201000, 1237400, 1134300, 1020800, 0, 1201000,
2612 0x42b },
2613
2614 /* When number of spatial streams > 2
2615 * use below rates
2616 */
2617 /* 628 MCS-00 */ { HE80_LDPC_ONLY_MASKS,
2618 DP_CMN_MOD_IEEE80211_T_HE_80,
2619 108100, 111400, 102100, 91900, 54000, 108100,
2620 0x440 },
2621 /* 629 MCS-01 */ { HE80_LDPC_ONLY_MASKS,
2622 DP_CMN_MOD_IEEE80211_T_HE_80,
2623 216200, 222700, 204200, 183800, 108100, 216200,
2624 0x441 },
2625 /* 630 MCS-02 */ { HE80_LDPC_ONLY_MASKS,
2626 DP_CMN_MOD_IEEE80211_T_HE_80,
2627 324300, 334100, 306300, 275600, 0, 324300,
2628 0x442 },
2629 /* 631 MCS-03 */ { HE80_LDPC_ONLY_MASKS,
2630 DP_CMN_MOD_IEEE80211_T_HE_80,
2631 432400, 445500, 408300, 367500, 0, 432400,
2632 0x443 },
2633 /* 632 MCS-04 */ { HE80_LDPC_ONLY_MASKS,
2634 DP_CMN_MOD_IEEE80211_T_HE_80,
2635 648500, 668200, 612500, 551300, 0, 648500,
2636 0x444 },
2637 /* 633 MCS-05 */ { HE80_LDPC_ONLY_MASKS,
2638 DP_CMN_MOD_IEEE80211_T_HE_80,
2639 864700, 890900, 816700, 735000, 0, 864700,
2640 0x445 },
2641 /* 634 MCS-06 */ { HE80_LDPC_ONLY_MASKS,
2642 DP_CMN_MOD_IEEE80211_T_HE_80,
2643 972800, 1002300, 918800, 826900, 0, 972800,
2644 0x446 },
2645 /* 635 MCS-07 */ { HE80_LDPC_ONLY_MASKS,
2646 DP_CMN_MOD_IEEE80211_T_HE_80,
2647 1080900, 1113600, 1020800, 918800, 0, 1080900,
2648 0x447 },
2649 /* 636 MCS-08 */ { HE80_LDPC_ONLY_MASKS,
2650 DP_CMN_MOD_IEEE80211_T_HE_80,
2651 1297100, 1336400, 1225000, 1102500, 0, 1297100,
2652 0x448 },
2653 /* 637 MCS-09 */ { HE80_LDPC_ONLY_MASKS,
2654 DP_CMN_MOD_IEEE80211_T_HE_80,
2655 1441200, 1484800, 1361100, 1225000, 0, 1441200,
2656 0x449 },
2657 /* 638 MCS-10 */ { HE80_LDPC_ONLY_MASKS,
2658 DP_CMN_MOD_IEEE80211_T_HE_80,
2659 1621300, 1670500, 1531300, 1378100, 0, 1621300,
2660 0x44a },
2661 /* 639 MCS-11 */ { HE80_LDPC_ONLY_MASKS,
2662 DP_CMN_MOD_IEEE80211_T_HE_80,
2663 1801500, 1856100, 1701400, 1531300, 0, 1801500,
2664 0x44b },
2665
2666 /* When number of spatial streams > 3
2667 * use below rates
2668 */
2669 /* 640 MCS-00 */ { HE80_LDPC_ONLY_MASKS,
2670 DP_CMN_MOD_IEEE80211_T_HE_80,
2671 144100, 148500, 136100, 122500, 72100, 144100,
2672 0x460 },
2673 /* 641 MCS-01 */ { HE80_LDPC_ONLY_MASKS,
2674 DP_CMN_MOD_IEEE80211_T_HE_80,
2675 288200, 297000, 272200, 245000, 144100, 288200,
2676 0x461 },
2677 /* 642 MCS-02 */ { HE80_LDPC_ONLY_MASKS,
2678 DP_CMN_MOD_IEEE80211_T_HE_80,
2679 432400, 445500, 408300, 367500, 0, 432400,
2680 0x462 },
2681 /* 643 MCS-03 */ { HE80_LDPC_ONLY_MASKS,
2682 DP_CMN_MOD_IEEE80211_T_HE_80,
2683 576500, 593900, 544400, 490000, 288200, 576500,
2684 0x463 },
2685 /* 644 MCS-04 */ { HE80_LDPC_ONLY_MASKS,
2686 DP_CMN_MOD_IEEE80211_T_HE_80,
2687 864700, 890900, 816700, 735000, 432400, 864700,
2688 0x464 },
2689 /* 645 MCS-05 */ { HE80_LDPC_ONLY_MASKS,
2690 DP_CMN_MOD_IEEE80211_T_HE_80,
2691 1152900, 1187900, 1088900, 980000, 0, 1152900,
2692 0x465 },
2693 /* 646 MCS-06 */ { HE80_LDPC_ONLY_MASKS,
2694 DP_CMN_MOD_IEEE80211_T_HE_80,
2695 1297100, 1336400, 1225000, 1102500, 0, 1297100,
2696 0x466 },
2697 /* 647 MCS-07 */ { HE80_LDPC_ONLY_MASKS,
2698 DP_CMN_MOD_IEEE80211_T_HE_80,
2699 1441200, 1484800, 1361100, 1225000, 0, 1441200,
2700 0x467 },
2701 /* 648 MCS-08 */ { HE80_LDPC_ONLY_MASKS,
2702 DP_CMN_MOD_IEEE80211_T_HE_80,
2703 1729400, 1781800, 1633300, 1470000, 0, 1729400,
2704 0x468 },
2705 /* 649 MCS-09 */ { HE80_LDPC_ONLY_MASKS,
2706 DP_CMN_MOD_IEEE80211_T_HE_80,
2707 1921600, 1979800, 1814800, 1633300, 0, 1921600,
2708 0x469 },
2709 /* 650 MCS-10 */ { HE80_LDPC_ONLY_MASKS,
2710 DP_CMN_MOD_IEEE80211_T_HE_80,
2711 2161800, 2227300, 2041700, 1837500, 0, 2161800,
2712 0x46a },
2713 /* 651 MCS-11 */ { HE80_LDPC_ONLY_MASKS,
2714 DP_CMN_MOD_IEEE80211_T_HE_80,
2715 2402000, 2474700, 2268500, 2041700, 0, 2402000,
2716 0x46b },
2717
2718 /* When number spatial streams > 4
2719 * use below rates
2720 */
2721 /* 652 MCS-00 */ { HE80_LDPC_ONLY_MASKS,
2722 DP_CMN_MOD_IEEE80211_T_HE_80,
2723 180100, 185600, 170100, 153100, 90100, 180100,
2724 0x480 },
2725 /* 653 MCS-01 */ { HE80_LDPC_ONLY_MASKS,
2726 DP_CMN_MOD_IEEE80211_T_HE_80,
2727 360300, 371200, 340300, 306300, 180100, 360300,
2728 0x481 },
2729 /* 654 MCS-02 */ { HE80_LDPC_ONLY_MASKS,
2730 DP_CMN_MOD_IEEE80211_T_HE_80,
2731 540400, 556800, 510400, 459400, 0, 540400,
2732 0x482 },
2733 /* 655 MCS-03 */ { HE80_LDPC_ONLY_MASKS,
2734 DP_CMN_MOD_IEEE80211_T_HE_80,
2735 720600, 742400, 680600, 612500, 0, 720600,
2736 0x483 },
2737 /* 656 MCS-04 */ { HE80_LDPC_ONLY_MASKS,
2738 DP_CMN_MOD_IEEE80211_T_HE_80,
2739 1080900, 1113600, 1020800, 918800, 0, 1080900,
2740 0x484 },
2741 /* 657 MCS-05 */ { HE80_LDPC_ONLY_MASKS,
2742 DP_CMN_MOD_IEEE80211_T_HE_80,
2743 1441200, 1484800, 1361100, 1225000, 0, 1441200,
2744 0x485 },
2745 /* 658 MCS-06 */ { HE80_LDPC_ONLY_MASKS,
2746 DP_CMN_MOD_IEEE80211_T_HE_80,
2747 1621300, 1670500, 1531300, 1378100, 0, 1621300,
2748 0x486 },
2749 /* 659 MCS-07 */ { HE80_LDPC_ONLY_MASKS,
2750 DP_CMN_MOD_IEEE80211_T_HE_80,
2751 1801500, 1856100, 1701400, 1531300, 0, 1801500,
2752 0x487 },
2753 /* 660 MCS-08 */ { HE80_LDPC_ONLY_MASKS,
2754 DP_CMN_MOD_IEEE80211_T_HE_80,
2755 2161800, 2227300, 2041700, 1837500, 0, 2161800,
2756 0x488 },
2757 /* 661 MCS-09 */ { HE80_LDPC_ONLY_MASKS,
2758 DP_CMN_MOD_IEEE80211_T_HE_80,
2759 2402000, 2474700, 2268500, 2041700, 0, 2402000,
2760 0x489 },
2761 /* 662 MCS-10 */ { HE80_LDPC_ONLY_MASKS,
2762 DP_CMN_MOD_IEEE80211_T_HE_80,
2763 2702200, 2784100, 2552100, 2296900, 0, 2702200,
2764 0x48a },
2765 /* 663 MCS-11 */ { HE80_LDPC_ONLY_MASKS,
2766 DP_CMN_MOD_IEEE80211_T_HE_80,
2767 3002500, 3093400, 2835600, 2552100, 0, 3002500,
2768 0x48b },
2769
2770 /* When number of spatial streams > 5
2771 * use below rates
2772 */
2773 /* 664 MCS-00 */ { HE80_LDPC_ONLY_MASKS,
2774 DP_CMN_MOD_IEEE80211_T_HE_80,
2775 216200, 222700, 204200, 183800, 108100, 216200,
2776 0x4a0 },
2777 /* 665 MCS-01 */ { HE80_LDPC_ONLY_MASKS,
2778 DP_CMN_MOD_IEEE80211_T_HE_80,
2779 432400, 445500, 408300, 367500, 216200, 432400,
2780 0x4a1 },
2781 /* 666 MCS-02 */ { HE80_LDPC_ONLY_MASKS,
2782 DP_CMN_MOD_IEEE80211_T_HE_80,
2783 648500, 668200, 612500, 551300, 0, 648500,
2784 0x4a2 },
2785 /* 667 MCS-03 */ { HE80_LDPC_ONLY_MASKS,
2786 DP_CMN_MOD_IEEE80211_T_HE_80,
2787 864700, 890900, 816700, 735000, 432400, 864700,
2788 0x4a3 },
2789 /* 668 MCS-04 */ { HE80_LDPC_ONLY_MASKS,
2790 DP_CMN_MOD_IEEE80211_T_HE_80,
2791 1297100, 1336400, 1225000, 1102500, 648500, 1297100,
2792 0x4a4 },
2793 /* 669 MCS-05 */ { HE80_LDPC_ONLY_MASKS,
2794 DP_CMN_MOD_IEEE80211_T_HE_80,
2795 1729400, 1781800, 1633300, 1470000, 0, 1729400,
2796 0x4a5 },
2797 /* 670 MCS-06 */ { HE80_LDPC_ONLY_MASKS,
2798 DP_CMN_MOD_IEEE80211_T_HE_80,
2799 1945600, 2004500, 1837500, 1653800, 0, 1945600,
2800 0x4a6 },
2801 /* 671 MCS-07 */ { HE80_LDPC_ONLY_MASKS,
2802 DP_CMN_MOD_IEEE80211_T_HE_80,
2803 2161800, 2227300, 2041700, 1837500, 0, 2161800,
2804 0x4a7 },
2805 /* 672 MCS-08 */ { HE80_LDPC_ONLY_MASKS,
2806 DP_CMN_MOD_IEEE80211_T_HE_80,
2807 2594100, 2672700, 2450000, 2205000, 0, 2594100,
2808 0x4a8 },
2809 /* 673 MCS-09 */ { HE80_LDPC_ONLY_MASKS,
2810 DP_CMN_MOD_IEEE80211_T_HE_80,
2811 2882400, 2969700, 2722200, 2450000, 0, 2882400,
2812 0x4a9 },
2813 /* 674 MCS-10 */ { HE80_LDPC_ONLY_MASKS,
2814 DP_CMN_MOD_IEEE80211_T_HE_80,
2815 3242600, 3340900, 3062500, 2756300, 0, 3242600,
2816 0x4aa },
2817 /* 675 MCS-11 */ { HE80_LDPC_ONLY_MASKS,
2818 DP_CMN_MOD_IEEE80211_T_HE_80,
2819 3602900, 3712100, 3402800, 3062500, 0, 3602900,
2820 0x4ab },
2821
2822 /* When number of spatial streams > 6
2823 * use below rates
2824 */
2825 /* 676 MCS-00 */ { HE80_LDPC_ONLY_MASKS,
2826 DP_CMN_MOD_IEEE80211_T_HE_80,
2827 252200, 259800, 238200, 214400, 129900, 252200,
2828 0x4c0 },
2829 /* 677 MCS-01 */ { HE80_LDPC_ONLY_MASKS,
2830 DP_CMN_MOD_IEEE80211_T_HE_80,
2831 504400, 519700, 476400, 428800, 252200, 504400,
2832 0x4c1 },
2833 /* 678 MCS-02 */ { HE80_LDPC_ONLY_MASKS,
2834 DP_CMN_MOD_IEEE80211_T_HE_80,
2835 756600, 779500, 714600, 643100, 0, 756600,
2836 0x4c2 },
2837 /* 679 MCS-03 */ { HE80_LDPC_ONLY_MASKS,
2838 DP_CMN_MOD_IEEE80211_T_HE_80,
2839 1008800, 1039400, 952800, 857500, 504400, 1008800,
2840 0x4c3 },
2841 /* 680 MCS-04 */ { HE80_LDPC_ONLY_MASKS,
2842 DP_CMN_MOD_IEEE80211_T_HE_80,
2843 1513200, 1559100, 1429200, 1286300, 756600, 1513200,
2844 0x4c4 },
2845 /* 681 MCS-05 */ { HE80_LDPC_ONLY_MASKS,
2846 DP_CMN_MOD_IEEE80211_T_HE_80,
2847 2017600, 2078800, 1905600, 1715000, 0, 2017600,
2848 0x4c5 },
2849 /* 682 MCS-06 */ { HE80_LDPC_ONLY_MASKS,
2850 DP_CMN_MOD_IEEE80211_T_HE_80,
2851 2269900, 2338600, 2143800, 1929400, 0, 2269900,
2852 0x4c6 },
2853 /* 683 MCS-07 */ { HE80_LDPC_ONLY_MASKS,
2854 DP_CMN_MOD_IEEE80211_T_HE_80,
2855 2522100, 2598500, 2381900, 2143800, 0, 2522100,
2856 0x4c7 },
2857 /* 684 MCS-08 */ { HE80_LDPC_ONLY_MASKS,
2858 DP_CMN_MOD_IEEE80211_T_HE_80,
2859 3026500, 3118200, 2858300, 2572500, 0, 3026500,
2860 0x4c8 },
2861 /* 685 MCS-09 */ { HE80_LDPC_ONLY_MASKS,
2862 DP_CMN_MOD_IEEE80211_T_HE_80,
2863 3362700, 3464600, 3175900, 2858300, 0, 3362700,
2864 0x4c9 },
2865 /* 686 MCS-10 */ { HE80_LDPC_ONLY_MASKS,
2866 DP_CMN_MOD_IEEE80211_T_HE_80,
2867 3783100, 3897700, 3572900, 3215600, 0, 3783100,
2868 0x4ca },
2869 /* 687 MCS-11 */ { HE80_LDPC_ONLY_MASKS,
2870 DP_CMN_MOD_IEEE80211_T_HE_80,
2871 4203400, 4330800, 3969900, 3572900, 0, 4203400,
2872 0x4cb },
2873
2874 /* When number of spatial streams > 7
2875 * use below rates
2876 */
2877 /* 688 MCS-00 */ { HE80_LDPC_ONLY_MASKS,
2878 DP_CMN_MOD_IEEE80211_T_HE_80,
2879 288200, 297000, 272200, 245000, 144100, 288200,
2880 0x4e0 },
2881 /* 689 MCS-01 */ { HE80_LDPC_ONLY_MASKS,
2882 DP_CMN_MOD_IEEE80211_T_HE_80,
2883 576500, 593900, 544400, 490000, 288200, 576500,
2884 0x4e1 },
2885 /* 690 MCS-02 */ { HE80_LDPC_ONLY_MASKS,
2886 DP_CMN_MOD_IEEE80211_T_HE_80,
2887 864700, 890900, 816700, 735000, 0, 864700,
2888 0x4e2 },
2889 /* 691 MCS-03 */ { HE80_LDPC_ONLY_MASKS,
2890 DP_CMN_MOD_IEEE80211_T_HE_80,
2891 1152900, 1187900, 1088900, 980000, 576500, 1152900,
2892 0x4e3 },
2893 /* 692 MCS-04 */ { HE80_LDPC_ONLY_MASKS,
2894 DP_CMN_MOD_IEEE80211_T_HE_80,
2895 1729400, 1781800, 1633300, 1470000, 864700, 1729400,
2896 0x4e4 },
2897 /* 693 MCS-05 */ { HE80_LDPC_ONLY_MASKS,
2898 DP_CMN_MOD_IEEE80211_T_HE_80,
2899 2305900, 2375800, 2177800, 1960000, 0, 2305900,
2900 0x4e5 },
2901 /* 694 MCS-06 */ { HE80_LDPC_ONLY_MASKS,
2902 DP_CMN_MOD_IEEE80211_T_HE_80,
2903 2594100, 2672700, 2450000, 2205000, 0, 2594100,
2904 0x4e6 },
2905 /* 695 MCS-07 */ { HE80_LDPC_ONLY_MASKS,
2906 DP_CMN_MOD_IEEE80211_T_HE_80,
2907 2882400, 2969700, 2722200, 2450000, 0, 2882400,
2908 0x4e7 },
2909 /* 696 MCS-08 */ { HE80_LDPC_ONLY_MASKS,
2910 DP_CMN_MOD_IEEE80211_T_HE_80,
2911 3458800, 3563600, 3266700, 2940000, 0, 3458800,
2912 0x4e8 },
2913 /* 697 MCS-09 */ { HE80_LDPC_ONLY_MASKS,
2914 DP_CMN_MOD_IEEE80211_T_HE_80,
2915 3843100, 3959600, 3629600, 3266700, 0, 3843100,
2916 0x4e9 },
2917 /* 698 MCS-10 */ { HE80_LDPC_ONLY_MASKS,
2918 DP_CMN_MOD_IEEE80211_T_HE_80,
2919 4323500, 4454500, 4083300, 3675000, 0, 4323500,
2920 0x4ea },
2921 /* 699 MCS-11 */ { HE80_LDPC_ONLY_MASKS,
2922 DP_CMN_MOD_IEEE80211_T_HE_80,
2923 4803900, 4949500, 4537000, 4083300, 0, 4803900,
2924 0x4eb },
2925
2926 /* 11ax RU996x2 rates
2927 */
2928 /* 700 MCS-00 */ { HE160_LDPC_ONLY_MASKS,
2929 DP_CMN_MOD_IEEE80211_T_HE_160,
2930 72100, 74200, 68100, 61300, 36000, 72100,
2931 0x400},
2932 /* 701 MCS-01 */ { HE160_LDPC_ONLY_MASKS,
2933 DP_CMN_MOD_IEEE80211_T_HE_160,
2934 144100, 148500, 136100, 122500, 72100, 144100,
2935 0x401},
2936 /* 702 MCS-02 */ { HE160_LDPC_ONLY_MASKS,
2937 DP_CMN_MOD_IEEE80211_T_HE_160,
2938 216200, 222700, 204200, 183800, 0, 216200,
2939 0x402},
2940 /* 703 MCS-03 */ { HE160_LDPC_ONLY_MASKS,
2941 DP_CMN_MOD_IEEE80211_T_HE_160,
2942 288200, 297000, 272200, 245000, 144100, 288200,
2943 0x403},
2944 /* 704 MCS-04 */ { HE160_LDPC_ONLY_MASKS,
2945 DP_CMN_MOD_IEEE80211_T_HE_160,
2946 432400, 445500, 408300, 367500, 216200, 432400,
2947 0x404},
2948 /* 705 MCS-05 */ { HE160_LDPC_ONLY_MASKS,
2949 DP_CMN_MOD_IEEE80211_T_HE_160,
2950 576500, 593900, 544400, 490000, 0, 576500,
2951 0x405},
2952 /* 706 MCS-06 */ { HE160_LDPC_ONLY_MASKS,
2953 DP_CMN_MOD_IEEE80211_T_HE_160,
2954 648500, 668200, 612500, 551300, 0, 648500,
2955 0x406},
2956 /* 707 MCS-07 */ { HE160_LDPC_ONLY_MASKS,
2957 DP_CMN_MOD_IEEE80211_T_HE_160,
2958 720600, 742400, 680600, 612500, 0, 720600,
2959 0x407},
2960 /* 708 MCS-08 */ { HE160_LDPC_ONLY_MASKS,
2961 DP_CMN_MOD_IEEE80211_T_HE_160,
2962 864700, 890900, 816700, 735000, 0, 864700,
2963 0x408},
2964 /* 709 MCS-09 */ { HE160_LDPC_ONLY_MASKS,
2965 DP_CMN_MOD_IEEE80211_T_HE_160,
2966 960800, 989900, 907400, 816700, 0, 960800,
2967 0x409},
2968 /* 710 MCS-10 */ { HE160_LDPC_ONLY_MASKS,
2969 DP_CMN_MOD_IEEE80211_T_HE_160,
2970 1080900, 1113600, 1020800, 918800, 0, 1080900,
2971 0x40a},
2972 /* 711 MCS-11 */ { HE160_LDPC_ONLY_MASKS,
2973 DP_CMN_MOD_IEEE80211_T_HE_160,
2974 1201000, 1237400, 1134300, 1020800, 0, 1201000,
2975 0x40b},
2976 /* When maximum spatial streams supported at 160MHZ > 1
2977 * use below rates
2978 */
2979 /* 712 MCS-00 */ { HE160_LDPC_ONLY_MASKS,
2980 DP_CMN_MOD_IEEE80211_T_HE_160,
2981 144100, 148500, 136100, 122500, 72100, 144100,
2982 0x420},
2983 /* 713 MCS-01 */ { HE160_LDPC_ONLY_MASKS,
2984 DP_CMN_MOD_IEEE80211_T_HE_160,
2985 288200, 297000, 272200, 245000, 144100, 288200,
2986 0x421},
2987 /* 714 MCS-02 */ { HE160_LDPC_ONLY_MASKS,
2988 DP_CMN_MOD_IEEE80211_T_HE_160,
2989 432400, 445500, 408300, 367500, 0, 432400,
2990 0x422},
2991 /* 715 MCS-03 */ { HE160_LDPC_ONLY_MASKS,
2992 DP_CMN_MOD_IEEE80211_T_HE_160,
2993 576500, 593900, 544400, 490000, 288200, 576500,
2994 0x423},
2995 /* 716 MCS-04 */ { HE160_LDPC_ONLY_MASKS,
2996 DP_CMN_MOD_IEEE80211_T_HE_160,
2997 864700, 890900, 816700, 735000, 432400, 864700,
2998 0x424},
2999 /* 717 MCS-05 */ { HE160_LDPC_ONLY_MASKS,
3000 DP_CMN_MOD_IEEE80211_T_HE_160,
3001 1152900, 1187900, 1088900, 980000, 0, 1152900,
3002 0x425},
3003 /* 718 MCS-06 */ { HE160_LDPC_ONLY_MASKS,
3004 DP_CMN_MOD_IEEE80211_T_HE_160,
3005 1297100, 1336400, 1225000, 1102500, 0, 1297100,
3006 0x426},
3007 /* 719 MCS-07 */ { HE160_LDPC_ONLY_MASKS,
3008 DP_CMN_MOD_IEEE80211_T_HE_160,
3009 1441200, 1484800, 1361100, 1225000, 0, 1441200,
3010 0x427},
3011 /* 720 MCS-08 */ { HE160_LDPC_ONLY_MASKS,
3012 DP_CMN_MOD_IEEE80211_T_HE_160,
3013 1729400, 1781800, 1633300, 1470000, 0, 1729400,
3014 0x428},
3015 /* 721 MCS-09 */ { HE160_LDPC_ONLY_MASKS,
3016 DP_CMN_MOD_IEEE80211_T_HE_160,
3017 1921600, 1979800, 1814800, 1633300, 0, 1921600,
3018 0x429},
3019 /* 722 MCS-10 */ { HE160_LDPC_ONLY_MASKS,
3020 DP_CMN_MOD_IEEE80211_T_HE_160,
3021 2161800, 2227300, 2041700, 1837500, 0, 2161800,
3022 0x42a},
3023 /* 723 MCS-11 */ { HE160_LDPC_ONLY_MASKS,
3024 DP_CMN_MOD_IEEE80211_T_HE_160,
3025 2402000, 2474700, 2268500, 2041700, 0, 2402000,
3026 0x42b},
3027
3028 /* When maximum spatial streams supported at 160MHZ > 2
3029 * use below rates
3030 */
3031 /* 724 MCS-00 */ { HE160_LDPC_ONLY_MASKS,
3032 DP_CMN_MOD_IEEE80211_T_HE_160,
3033 216200, 222700, 204200, 183800, 108100, 216200,
3034 0x440},
3035 /* 725 MCS-01 */ { HE160_LDPC_ONLY_MASKS,
3036 DP_CMN_MOD_IEEE80211_T_HE_160,
3037 432400, 445500, 408300, 367500, 216200, 432400,
3038 0x441},
3039 /* 726 MCS-02 */ { HE160_LDPC_ONLY_MASKS,
3040 DP_CMN_MOD_IEEE80211_T_HE_160,
3041 648500, 668200, 612500, 551300, 0, 648500,
3042 0x442},
3043 /* 727 MCS-03 */ { HE160_LDPC_ONLY_MASKS,
3044 DP_CMN_MOD_IEEE80211_T_HE_160,
3045 864700, 890900, 816700, 735000, 432400, 864700,
3046 0x443},
3047 /* 728 MCS-04 */ { HE160_LDPC_ONLY_MASKS,
3048 DP_CMN_MOD_IEEE80211_T_HE_160,
3049 1297100, 1336400, 1225000, 1102500, 648500, 1297100,
3050 0x444},
3051 /* 729 MCS-05 */ { HE160_LDPC_ONLY_MASKS,
3052 DP_CMN_MOD_IEEE80211_T_HE_160,
3053 1729400, 1781800, 1633300, 1470000, 0, 1729400,
3054 0x445},
3055 /* 730 MCS-06 */ { HE160_LDPC_ONLY_MASKS,
3056 DP_CMN_MOD_IEEE80211_T_HE_160,
3057 1945600, 2004500, 1837500, 1653800, 0, 1945600,
3058 0x446},
3059 /* 731 MCS-07 */ { HE160_LDPC_ONLY_MASKS,
3060 DP_CMN_MOD_IEEE80211_T_HE_160,
3061 2161800, 2227300, 2041700, 1837500, 0, 2161800,
3062 0x447},
3063 /* 732 MCS-08 */ { HE160_LDPC_ONLY_MASKS,
3064 DP_CMN_MOD_IEEE80211_T_HE_160,
3065 2594100, 2672700, 2450000, 2205000, 0, 2594100,
3066 0x448},
3067 /* 733 MCS-09 */ { HE160_LDPC_ONLY_MASKS,
3068 DP_CMN_MOD_IEEE80211_T_HE_160,
3069 2882400, 2969700, 2722200, 2450000, 0, 2882400,
3070 0x449},
3071 /* 734 MCS-10 */ { HE160_LDPC_ONLY_MASKS,
3072 DP_CMN_MOD_IEEE80211_T_HE_160,
3073 3242600, 3340900, 3062500, 2756300, 0, 3242600,
3074 0x44a},
3075 /* 735 MCS-11 */ { HE160_LDPC_ONLY_MASKS,
3076 DP_CMN_MOD_IEEE80211_T_HE_160,
3077 3602900, 3712100, 3402800, 3062500, 0, 3602900,
3078 0x44b},
3079
3080 /* When maximum spatial streams supported at 160MHZ > 3
3081 * use below rates
3082 */
3083 /* 736 MCS-00 */ { HE160_LDPC_ONLY_MASKS,
3084 DP_CMN_MOD_IEEE80211_T_HE_160,
3085 288200, 297000, 272200, 245000, 144100, 288200,
3086 0x460},
3087 /* 737 MCS-01 */ { HE160_LDPC_ONLY_MASKS,
3088 DP_CMN_MOD_IEEE80211_T_HE_160,
3089 576500, 593900, 544400, 490000, 288200, 576500,
3090 0x461},
3091 /* 738 MCS-02 */ { HE160_LDPC_ONLY_MASKS,
3092 DP_CMN_MOD_IEEE80211_T_HE_160,
3093 864700, 890900, 816700, 735000, 0, 864700,
3094 0x462},
3095 /* 739 MCS-03 */ { HE160_LDPC_ONLY_MASKS,
3096 DP_CMN_MOD_IEEE80211_T_HE_160,
3097 1152900, 1187900, 1088900, 980000, 576500, 1152900,
3098 0x463},
3099 /* 740 MCS-04 */ { HE160_LDPC_ONLY_MASKS,
3100 DP_CMN_MOD_IEEE80211_T_HE_160,
3101 1729400, 1781800, 1633300, 1470000, 864700, 1729400,
3102 0x464},
3103 /* 741 MCS-05 */ { HE160_LDPC_ONLY_MASKS,
3104 DP_CMN_MOD_IEEE80211_T_HE_160,
3105 2305900, 2375800, 2177800, 1960000, 0, 2305900,
3106 0x465},
3107 /* 742 MCS-06 */ { HE160_LDPC_ONLY_MASKS,
3108 DP_CMN_MOD_IEEE80211_T_HE_160,
3109 2594100, 2672700, 2450000, 2205000, 0, 2594100,
3110 0x466},
3111 /* 743 MCS-07 */ { HE160_LDPC_ONLY_MASKS,
3112 DP_CMN_MOD_IEEE80211_T_HE_160,
3113 2882400, 2969700, 2722200, 2450000, 0, 2882400,
3114 0x467},
3115 /* 744 MCS-08 */ { HE160_LDPC_ONLY_MASKS,
3116 DP_CMN_MOD_IEEE80211_T_HE_160,
3117 3458800, 3563600, 3266700, 2940000, 0, 3458800,
3118 0x468},
3119 /* 745 MCS-09 */ { HE160_LDPC_ONLY_MASKS,
3120 DP_CMN_MOD_IEEE80211_T_HE_160,
3121 3843100, 3959600, 3629600, 3266700, 0, 3843100,
3122 0x469},
3123 /* 746 MCS-10 */ { HE160_LDPC_ONLY_MASKS,
3124 DP_CMN_MOD_IEEE80211_T_HE_160,
3125 4323500, 4454500, 4083300, 3675000, 0, 4323500,
3126 0x46a},
3127 /* 747 MCS-11 */ { HE160_LDPC_ONLY_MASKS,
3128 DP_CMN_MOD_IEEE80211_T_HE_160,
3129 4803900, 4949500, 4537000, 4083300, 0, 4803900,
3130 0x46b}
3131 },
3132};
3133
3134static const uint16_t _rc_idx[DP_CMN_MOD_IEEE80211_T_MAX_PHY] = {
3135 CCK_RATE_TABLE_INDEX,
3136 OFDM_RATE_TABLE_INDEX,
3137 HT_20_RATE_TABLE_INDEX,
3138 HT_40_RATE_TABLE_INDEX,
3139 VHT_20_RATE_TABLE_INDEX,
3140 VHT_40_RATE_TABLE_INDEX,
3141 VHT_80_RATE_TABLE_INDEX,
3142 VHT_160_RATE_TABLE_INDEX,
3143 HE_20_RATE_TABLE_INDEX,
3144 HE_40_RATE_TABLE_INDEX,
3145 HE_80_RATE_TABLE_INDEX,
3146 HE_160_RATE_TABLE_INDEX,
3147};
3148
3149/*
3150 * dp_getmodulation - return rate modulation given code spatial width
3151 * @pream_type - preamble type
3152 * @width - bandwidth
3153 *
3154 * return - modulation type
3155 */
3156enum DP_CMN_MODULATION_TYPE dp_getmodulation(
3157 uint16_t pream_type,
3158 uint8_t width)
3159{
3160 static const enum DP_CMN_MODULATION_TYPE _vht_bw_mod[] = {
3161 DP_CMN_MOD_IEEE80211_T_VHT_20,
3162 DP_CMN_MOD_IEEE80211_T_VHT_40,
3163 DP_CMN_MOD_IEEE80211_T_VHT_80,
3164 DP_CMN_MOD_IEEE80211_T_VHT_160
3165 };
3166
3167 static const enum DP_CMN_MODULATION_TYPE _he_bw_mod[] = {
3168 DP_CMN_MOD_IEEE80211_T_HE_20,
3169 DP_CMN_MOD_IEEE80211_T_HE_40,
3170 DP_CMN_MOD_IEEE80211_T_HE_80,
3171 DP_CMN_MOD_IEEE80211_T_HE_160
3172 };
3173
3174 enum DP_CMN_MODULATION_TYPE modulation;
3175
3176 CMN_DP_ASSERT(width < CMN_BW_CNT);
3177
3178 switch (pream_type) {
3179 case DP_CMN_RATECODE_PREAM_HT:
3180 if (width)
3181 modulation = DP_CMN_MOD_IEEE80211_T_HT_40;
3182 else
3183 modulation = DP_CMN_MOD_IEEE80211_T_HT_20;
3184 break;
3185
3186 case DP_CMN_RATECODE_PREAM_CCK:
3187 modulation = DP_CMN_MOD_IEEE80211_T_CCK;
3188 break;
3189
3190 case DP_CMN_RATECODE_PREAM_VHT:
3191 modulation = _vht_bw_mod[width];
3192 break;
3193
3194 case DP_CMN_RATECODE_PREAM_HE:
3195 modulation = _he_bw_mod[width];
3196 break;
3197
3198 default:
3199 modulation = DP_CMN_MOD_IEEE80211_T_OFDM;
3200 break;
3201 }
3202
3203 return modulation;
3204}
3205
3206/* dp_getrateindex - calculate ratekbps
3207 * @mcs - MCS index
3208 * @nss - NSS 1...8
3209 * preamble - preamble
3210 * @bw - Transmission Bandwidth
Amir Patel78824b12019-02-23 10:54:32 +05303211 * @rix: rate index to be populated
Ankit Kumarcd66fff2019-07-02 20:54:44 +05303212 * @ratecode: ratecode
Pranita Solankea1e18aa2018-06-09 23:15:50 +05303213 *
3214 * return - rate in kbps
3215 */
3216uint32_t
Anish Nataraj376d9b12018-08-13 14:12:01 +05303217dp_getrateindex(uint32_t gi, uint16_t mcs, uint8_t nss, uint8_t preamble,
Ankit Kumarcd66fff2019-07-02 20:54:44 +05303218 uint8_t bw, uint32_t *rix, uint16_t *ratecode)
Pranita Solankea1e18aa2018-06-09 23:15:50 +05303219{
3220 uint32_t ratekbps = 0, res = RT_INVALID_INDEX; /* represents failure */
3221 uint16_t rc;
3222 enum DP_CMN_MODULATION_TYPE mod;
3223
Ankit Kumarcd66fff2019-07-02 20:54:44 +05303224 /* For error case, where idx exceeds bountry limit */
3225 *ratecode = 0;
Pranita Solankea1e18aa2018-06-09 23:15:50 +05303226 mod = dp_getmodulation(preamble, bw);
3227 rc = mcs;
3228
3229 /* get the base of corresponding rate table entry */
3230 res = _rc_idx[mod];
3231
3232 switch (preamble) {
3233 case DP_CMN_RATECODE_PREAM_HE:
3234 res += rc + nss * NUM_HE_MCS;
3235 break;
3236
3237 case DP_CMN_RATECODE_PREAM_VHT:
3238 res += rc + nss * NUM_VHT_MCS;
3239 break;
3240
3241 case DP_CMN_RATECODE_PREAM_HT:
3242 res += rc + nss * NUM_HT_MCS;
3243 break;
3244
3245 case DP_CMN_RATECODE_PREAM_CCK:
3246 rc &= ~HW_RATECODE_CCK_SHORT_PREAM_MASK;
3247 res += rc;
3248 break;
3249
3250 case DP_CMN_RATECODE_PREAM_OFDM:
3251 res += rc;
3252 break;
3253
3254 default:
3255 break;
3256 }
3257 if (res >= DP_RATE_TABLE_SIZE)
Amir Patel78824b12019-02-23 10:54:32 +05303258 goto done;
Pranita Solankea1e18aa2018-06-09 23:15:50 +05303259
Anish Nataraj376d9b12018-08-13 14:12:01 +05303260 if (!gi) {
3261 ratekbps = dp_11abgnratetable.info[res].userratekbps;
3262 } else {
3263 switch (gi) {
3264 case CDP_SGI_0_4_US:
3265 ratekbps = dp_11abgnratetable.info[res].ratekbpssgi;
3266 break;
3267 case CDP_SGI_1_6_US:
3268 ratekbps = dp_11abgnratetable.info[res].ratekbpsdgi;
3269 break;
3270 case CDP_SGI_3_2_US:
3271 ratekbps = dp_11abgnratetable.info[res].ratekbpsqgi;
3272 break;
3273 }
3274 }
Ankit Kumarcd66fff2019-07-02 20:54:44 +05303275 *ratecode = dp_11abgnratetable.info[res].ratecode;
Amir Patel78824b12019-02-23 10:54:32 +05303276done:
3277 *rix = res;
Pranita Solankea1e18aa2018-06-09 23:15:50 +05303278
3279 return ratekbps;
3280}
3281
3282qdf_export_symbol(dp_getrateindex);
3283
3284/* dp_rate_idx_to_kbps - get rate kbps from index
3285 * @rate_idx - rate index
3286 * @gintval - guard interval
3287 *
3288 * return - rate index in kbps with help of ratetable
3289 */
3290int dp_rate_idx_to_kbps(uint8_t rate_idx, uint8_t gintval)
3291{
3292 if (rate_idx >= DP_RATE_TABLE_SIZE)
3293 return 0;
3294
3295 if (!gintval)
3296 return RT_GET_RAW_KBPS(&dp_11abgnratetable, rate_idx);
3297 else
3298 return RT_GET_SGI_KBPS(&dp_11abgnratetable, rate_idx);
3299 return 0;
3300}
3301
3302qdf_export_symbol(dp_rate_idx_to_kbps);