xref: /OK3568_Linux_fs/external/rkwifibt/drivers/infineon/bcmwifi_rates.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Indices for 802.11 a/b/g/n/ac 1-3 chain symmetric transmit rates
3  *
4  * Portions of this code are copyright (c) 2021 Cypress Semiconductor Corporation
5  *
6  * Copyright (C) 1999-2017, Broadcom Corporation
7  *
8  *      Unless you and Broadcom execute a separate written software license
9  * agreement governing use of this software, this software is licensed to you
10  * under the terms of the GNU General Public License version 2 (the "GPL"),
11  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
12  * following added to such license:
13  *
14  *      As a special exception, the copyright holders of this software give you
15  * permission to link this software with independent modules, and to copy and
16  * distribute the resulting executable under terms of your choice, provided that
17  * you also meet, for each linked independent module, the terms and conditions of
18  * the license of that module.  An independent module is a module which is not
19  * derived from this software.  The special exception does not apply to any
20  * modifications of the software.
21  *
22  *      Notwithstanding the above, under no circumstances may you combine this
23  * software in any way with any other Broadcom software provided under a license
24  * other than the GPL, without Broadcom's express prior written consent.
25  *
26  *
27  * <<Broadcom-WL-IPTag/Open:>>
28  *
29  * $Id: bcmwifi_rates.h 697006 2017-05-01 19:13:40Z $
30  */
31 
32 #ifndef _bcmwifi_rates_h_
33 #define _bcmwifi_rates_h_
34 
35 #include <typedefs.h>
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif /* __cplusplus */
40 
41 #define WL_RATESET_SZ_DSSS		4
42 #define WL_RATESET_SZ_OFDM		8
43 #define WL_RATESET_SZ_VHT_MCS		10
44 #define WL_RATESET_SZ_VHT_MCS_P		12	/* 10 VHT rates + 2 proprietary rates */
45 #define WL_RATESET_SZ_HE_MCS		12	/* 12 HE rates (mcs 0-11) */
46 
47 #define WL_RATESET_SZ_HT_MCS	8
48 
49 #define WL_RATESET_SZ_HT_IOCTL	8	/* MAC histogram, compatibility with wl utility */
50 
51 #define WL_TX_CHAINS_MAX		4
52 
53 #define WL_RATE_DISABLED		(-128) /* Power value corresponding to unsupported rate */
54 
55 /* Transmit channel bandwidths */
56 typedef enum wl_tx_bw {
57 	WL_TX_BW_20,
58 	WL_TX_BW_40,
59 	WL_TX_BW_80,
60 	WL_TX_BW_20IN40,
61 	WL_TX_BW_20IN80,
62 	WL_TX_BW_40IN80,
63 	WL_TX_BW_160,
64 	WL_TX_BW_20IN160,
65 	WL_TX_BW_40IN160,
66 	WL_TX_BW_80IN160,
67 	WL_TX_BW_ALL,
68 	WL_TX_BW_8080,
69 	WL_TX_BW_8080CHAN2,
70 	WL_TX_BW_20IN8080,
71 	WL_TX_BW_40IN8080,
72 	WL_TX_BW_80IN8080,
73 	WL_TX_BW_2P5,
74 	WL_TX_BW_5,
75 	WL_TX_BW_10
76 } wl_tx_bw_t;
77 
78 /*
79  * Transmit modes.
80  * Not all modes are listed here, only those required for disambiguation. e.g. SPEXP is not listed
81  */
82 typedef enum wl_tx_mode {
83 	WL_TX_MODE_NONE,
84 	WL_TX_MODE_STBC,
85 	WL_TX_MODE_CDD,
86 	WL_TX_MODE_TXBF,
87 	WL_NUM_TX_MODES
88 } wl_tx_mode_t;
89 
90 /* Number of transmit chains */
91 typedef enum wl_tx_chains {
92 	WL_TX_CHAINS_1 = 1,
93 	WL_TX_CHAINS_2,
94 	WL_TX_CHAINS_3,
95 	WL_TX_CHAINS_4
96 } wl_tx_chains_t;
97 
98 /* Number of transmit streams */
99 typedef enum wl_tx_nss {
100 	WL_TX_NSS_1 = 1,
101 	WL_TX_NSS_2,
102 	WL_TX_NSS_3,
103 	WL_TX_NSS_4
104 } wl_tx_nss_t;
105 
106 /* This enum maps each rate to a CLM index */
107 
108 typedef enum clm_rates {
109 	/************
110 	* 1 chain  *
111 	************
112 	*/
113 
114 	/* 1 Stream */
115 	WL_RATE_1X1_DSSS_1            = 0,
116 	WL_RATE_1X1_DSSS_2            = 1,
117 	WL_RATE_1X1_DSSS_5_5          = 2,
118 	WL_RATE_1X1_DSSS_11           = 3,
119 
120 	WL_RATE_1X1_OFDM_6            = 4,
121 	WL_RATE_1X1_OFDM_9            = 5,
122 	WL_RATE_1X1_OFDM_12           = 6,
123 	WL_RATE_1X1_OFDM_18           = 7,
124 	WL_RATE_1X1_OFDM_24           = 8,
125 	WL_RATE_1X1_OFDM_36           = 9,
126 	WL_RATE_1X1_OFDM_48           = 10,
127 	WL_RATE_1X1_OFDM_54           = 11,
128 
129 	WL_RATE_1X1_MCS0              = 12,
130 	WL_RATE_1X1_MCS1              = 13,
131 	WL_RATE_1X1_MCS2              = 14,
132 	WL_RATE_1X1_MCS3              = 15,
133 	WL_RATE_1X1_MCS4              = 16,
134 	WL_RATE_1X1_MCS5              = 17,
135 	WL_RATE_1X1_MCS6              = 18,
136 	WL_RATE_1X1_MCS7              = 19,
137 	WL_RATE_P_1X1_MCS87           = 20,
138 	WL_RATE_P_1X1_MCS88           = 21,
139 
140 	WL_RATE_1X1_VHT0SS1           = 12,
141 	WL_RATE_1X1_VHT1SS1           = 13,
142 	WL_RATE_1X1_VHT2SS1           = 14,
143 	WL_RATE_1X1_VHT3SS1           = 15,
144 	WL_RATE_1X1_VHT4SS1           = 16,
145 	WL_RATE_1X1_VHT5SS1           = 17,
146 	WL_RATE_1X1_VHT6SS1           = 18,
147 	WL_RATE_1X1_VHT7SS1           = 19,
148 	WL_RATE_1X1_VHT8SS1           = 20,
149 	WL_RATE_1X1_VHT9SS1           = 21,
150 	WL_RATE_P_1X1_VHT10SS1        = 22,
151 	WL_RATE_P_1X1_VHT11SS1        = 23,
152 
153 	/************
154 	* 2 chains *
155 	************
156 	*/
157 
158 	/* 1 Stream expanded + 1 */
159 	WL_RATE_1X2_DSSS_1            = 24,
160 	WL_RATE_1X2_DSSS_2            = 25,
161 	WL_RATE_1X2_DSSS_5_5          = 26,
162 	WL_RATE_1X2_DSSS_11           = 27,
163 
164 	WL_RATE_1X2_CDD_OFDM_6        = 28,
165 	WL_RATE_1X2_CDD_OFDM_9        = 29,
166 	WL_RATE_1X2_CDD_OFDM_12       = 30,
167 	WL_RATE_1X2_CDD_OFDM_18       = 31,
168 	WL_RATE_1X2_CDD_OFDM_24       = 32,
169 	WL_RATE_1X2_CDD_OFDM_36       = 33,
170 	WL_RATE_1X2_CDD_OFDM_48       = 34,
171 	WL_RATE_1X2_CDD_OFDM_54       = 35,
172 
173 	WL_RATE_1X2_CDD_MCS0          = 36,
174 	WL_RATE_1X2_CDD_MCS1          = 37,
175 	WL_RATE_1X2_CDD_MCS2          = 38,
176 	WL_RATE_1X2_CDD_MCS3          = 39,
177 	WL_RATE_1X2_CDD_MCS4          = 40,
178 	WL_RATE_1X2_CDD_MCS5          = 41,
179 	WL_RATE_1X2_CDD_MCS6          = 42,
180 	WL_RATE_1X2_CDD_MCS7          = 43,
181 	WL_RATE_P_1X2_CDD_MCS87       = 44,
182 	WL_RATE_P_1X2_CDD_MCS88       = 45,
183 
184 	WL_RATE_1X2_VHT0SS1           = 36,
185 	WL_RATE_1X2_VHT1SS1           = 37,
186 	WL_RATE_1X2_VHT2SS1           = 38,
187 	WL_RATE_1X2_VHT3SS1           = 39,
188 	WL_RATE_1X2_VHT4SS1           = 40,
189 	WL_RATE_1X2_VHT5SS1           = 41,
190 	WL_RATE_1X2_VHT6SS1           = 42,
191 	WL_RATE_1X2_VHT7SS1           = 43,
192 	WL_RATE_1X2_VHT8SS1           = 44,
193 	WL_RATE_1X2_VHT9SS1           = 45,
194 	WL_RATE_P_1X2_VHT10SS1        = 46,
195 	WL_RATE_P_1X2_VHT11SS1        = 47,
196 
197 	/* 2 Streams */
198 	WL_RATE_2X2_STBC_MCS0         = 48,
199 	WL_RATE_2X2_STBC_MCS1         = 49,
200 	WL_RATE_2X2_STBC_MCS2         = 50,
201 	WL_RATE_2X2_STBC_MCS3         = 51,
202 	WL_RATE_2X2_STBC_MCS4         = 52,
203 	WL_RATE_2X2_STBC_MCS5         = 53,
204 	WL_RATE_2X2_STBC_MCS6         = 54,
205 	WL_RATE_2X2_STBC_MCS7         = 55,
206 	WL_RATE_P_2X2_STBC_MCS87      = 56,
207 	WL_RATE_P_2X2_STBC_MCS88      = 57,
208 
209 	WL_RATE_2X2_STBC_VHT0SS1      = 48,
210 	WL_RATE_2X2_STBC_VHT1SS1      = 49,
211 	WL_RATE_2X2_STBC_VHT2SS1      = 50,
212 	WL_RATE_2X2_STBC_VHT3SS1      = 51,
213 	WL_RATE_2X2_STBC_VHT4SS1      = 52,
214 	WL_RATE_2X2_STBC_VHT5SS1      = 53,
215 	WL_RATE_2X2_STBC_VHT6SS1      = 54,
216 	WL_RATE_2X2_STBC_VHT7SS1      = 55,
217 	WL_RATE_2X2_STBC_VHT8SS1      = 56,
218 	WL_RATE_2X2_STBC_VHT9SS1      = 57,
219 	WL_RATE_P_2X2_STBC_VHT10SS1   = 58,
220 	WL_RATE_P_2X2_STBC_VHT11SS1   = 59,
221 
222 	WL_RATE_2X2_SDM_MCS8          = 60,
223 	WL_RATE_2X2_SDM_MCS9          = 61,
224 	WL_RATE_2X2_SDM_MCS10         = 62,
225 	WL_RATE_2X2_SDM_MCS11         = 63,
226 	WL_RATE_2X2_SDM_MCS12         = 64,
227 	WL_RATE_2X2_SDM_MCS13         = 65,
228 	WL_RATE_2X2_SDM_MCS14         = 66,
229 	WL_RATE_2X2_SDM_MCS15         = 67,
230 	WL_RATE_P_2X2_SDM_MCS99       = 68,
231 	WL_RATE_P_2X2_SDM_MCS100      = 69,
232 
233 	WL_RATE_2X2_VHT0SS2           = 60,
234 	WL_RATE_2X2_VHT1SS2           = 61,
235 	WL_RATE_2X2_VHT2SS2           = 62,
236 	WL_RATE_2X2_VHT3SS2           = 63,
237 	WL_RATE_2X2_VHT4SS2           = 64,
238 	WL_RATE_2X2_VHT5SS2           = 65,
239 	WL_RATE_2X2_VHT6SS2           = 66,
240 	WL_RATE_2X2_VHT7SS2           = 67,
241 	WL_RATE_2X2_VHT8SS2           = 68,
242 	WL_RATE_2X2_VHT9SS2           = 69,
243 	WL_RATE_P_2X2_VHT10SS2        = 70,
244 	WL_RATE_P_2X2_VHT11SS2        = 71,
245 
246 	/****************************
247 	 * TX Beamforming, 2 chains *
248 	 ****************************
249 	 */
250 
251 	/* 1 Stream expanded + 1 */
252 	WL_RATE_1X2_TXBF_OFDM_6       = 72,
253 	WL_RATE_1X2_TXBF_OFDM_9       = 73,
254 	WL_RATE_1X2_TXBF_OFDM_12      = 74,
255 	WL_RATE_1X2_TXBF_OFDM_18      = 75,
256 	WL_RATE_1X2_TXBF_OFDM_24      = 76,
257 	WL_RATE_1X2_TXBF_OFDM_36      = 77,
258 	WL_RATE_1X2_TXBF_OFDM_48      = 78,
259 	WL_RATE_1X2_TXBF_OFDM_54      = 79,
260 
261 	WL_RATE_1X2_TXBF_MCS0         = 80,
262 	WL_RATE_1X2_TXBF_MCS1         = 81,
263 	WL_RATE_1X2_TXBF_MCS2         = 82,
264 	WL_RATE_1X2_TXBF_MCS3         = 83,
265 	WL_RATE_1X2_TXBF_MCS4         = 84,
266 	WL_RATE_1X2_TXBF_MCS5         = 85,
267 	WL_RATE_1X2_TXBF_MCS6         = 86,
268 	WL_RATE_1X2_TXBF_MCS7         = 87,
269 	WL_RATE_P_1X2_TXBF_MCS87      = 88,
270 	WL_RATE_P_1X2_TXBF_MCS88      = 89,
271 
272 	WL_RATE_1X2_TXBF_VHT0SS1      = 80,
273 	WL_RATE_1X2_TXBF_VHT1SS1      = 81,
274 	WL_RATE_1X2_TXBF_VHT2SS1      = 82,
275 	WL_RATE_1X2_TXBF_VHT3SS1      = 83,
276 	WL_RATE_1X2_TXBF_VHT4SS1      = 84,
277 	WL_RATE_1X2_TXBF_VHT5SS1      = 85,
278 	WL_RATE_1X2_TXBF_VHT6SS1      = 86,
279 	WL_RATE_1X2_TXBF_VHT7SS1      = 87,
280 	WL_RATE_1X2_TXBF_VHT8SS1      = 88,
281 	WL_RATE_1X2_TXBF_VHT9SS1      = 89,
282 	WL_RATE_P_1X2_TXBF_VHT10SS1   = 90,
283 	WL_RATE_P_1X2_TXBF_VHT11SS1   = 91,
284 
285 	/* 2 Streams */
286 	WL_RATE_2X2_TXBF_SDM_MCS8     = 92,
287 	WL_RATE_2X2_TXBF_SDM_MCS9     = 93,
288 	WL_RATE_2X2_TXBF_SDM_MCS10    = 94,
289 	WL_RATE_2X2_TXBF_SDM_MCS11    = 95,
290 	WL_RATE_2X2_TXBF_SDM_MCS12    = 96,
291 	WL_RATE_2X2_TXBF_SDM_MCS13    = 97,
292 	WL_RATE_2X2_TXBF_SDM_MCS14    = 98,
293 	WL_RATE_2X2_TXBF_SDM_MCS15    = 99,
294 	WL_RATE_P_2X2_TXBF_SDM_MCS99  = 100,
295 	WL_RATE_P_2X2_TXBF_SDM_MCS100 = 101,
296 
297 	WL_RATE_2X2_TXBF_VHT0SS2      = 92,
298 	WL_RATE_2X2_TXBF_VHT1SS2      = 93,
299 	WL_RATE_2X2_TXBF_VHT2SS2      = 94,
300 	WL_RATE_2X2_TXBF_VHT3SS2      = 95,
301 	WL_RATE_2X2_TXBF_VHT4SS2      = 96,
302 	WL_RATE_2X2_TXBF_VHT5SS2      = 97,
303 	WL_RATE_2X2_TXBF_VHT6SS2      = 98,
304 	WL_RATE_2X2_TXBF_VHT7SS2      = 99,
305 	WL_RATE_2X2_TXBF_VHT8SS2      = 100,
306 	WL_RATE_2X2_TXBF_VHT9SS2      = 101,
307 	WL_RATE_P_2X2_TXBF_VHT10SS2   = 102,
308 	WL_RATE_P_2X2_TXBF_VHT11SS2   = 103,
309 
310 	/************
311 	* 3 chains *
312 	************
313 	*/
314 
315 	/* 1 Stream expanded + 2 */
316 	WL_RATE_1X3_DSSS_1            = 104,
317 	WL_RATE_1X3_DSSS_2            = 105,
318 	WL_RATE_1X3_DSSS_5_5          = 106,
319 	WL_RATE_1X3_DSSS_11           = 107,
320 
321 	WL_RATE_1X3_CDD_OFDM_6        = 108,
322 	WL_RATE_1X3_CDD_OFDM_9        = 109,
323 	WL_RATE_1X3_CDD_OFDM_12       = 110,
324 	WL_RATE_1X3_CDD_OFDM_18       = 111,
325 	WL_RATE_1X3_CDD_OFDM_24       = 112,
326 	WL_RATE_1X3_CDD_OFDM_36       = 113,
327 	WL_RATE_1X3_CDD_OFDM_48       = 114,
328 	WL_RATE_1X3_CDD_OFDM_54       = 115,
329 
330 	WL_RATE_1X3_CDD_MCS0          = 116,
331 	WL_RATE_1X3_CDD_MCS1          = 117,
332 	WL_RATE_1X3_CDD_MCS2          = 118,
333 	WL_RATE_1X3_CDD_MCS3          = 119,
334 	WL_RATE_1X3_CDD_MCS4          = 120,
335 	WL_RATE_1X3_CDD_MCS5          = 121,
336 	WL_RATE_1X3_CDD_MCS6          = 122,
337 	WL_RATE_1X3_CDD_MCS7          = 123,
338 	WL_RATE_P_1X3_CDD_MCS87       = 124,
339 	WL_RATE_P_1X3_CDD_MCS88       = 125,
340 
341 	WL_RATE_1X3_VHT0SS1           = 116,
342 	WL_RATE_1X3_VHT1SS1           = 117,
343 	WL_RATE_1X3_VHT2SS1           = 118,
344 	WL_RATE_1X3_VHT3SS1           = 119,
345 	WL_RATE_1X3_VHT4SS1           = 120,
346 	WL_RATE_1X3_VHT5SS1           = 121,
347 	WL_RATE_1X3_VHT6SS1           = 122,
348 	WL_RATE_1X3_VHT7SS1           = 123,
349 	WL_RATE_1X3_VHT8SS1           = 124,
350 	WL_RATE_1X3_VHT9SS1           = 125,
351 	WL_RATE_P_1X3_VHT10SS1        = 126,
352 	WL_RATE_P_1X3_VHT11SS1        = 127,
353 
354 	/* 2 Streams expanded + 1 */
355 	WL_RATE_2X3_STBC_MCS0         = 128,
356 	WL_RATE_2X3_STBC_MCS1         = 129,
357 	WL_RATE_2X3_STBC_MCS2         = 130,
358 	WL_RATE_2X3_STBC_MCS3         = 131,
359 	WL_RATE_2X3_STBC_MCS4         = 132,
360 	WL_RATE_2X3_STBC_MCS5         = 133,
361 	WL_RATE_2X3_STBC_MCS6         = 134,
362 	WL_RATE_2X3_STBC_MCS7         = 135,
363 	WL_RATE_P_2X3_STBC_MCS87      = 136,
364 	WL_RATE_P_2X3_STBC_MCS88      = 137,
365 
366 	WL_RATE_2X3_STBC_VHT0SS1      = 128,
367 	WL_RATE_2X3_STBC_VHT1SS1      = 129,
368 	WL_RATE_2X3_STBC_VHT2SS1      = 130,
369 	WL_RATE_2X3_STBC_VHT3SS1      = 131,
370 	WL_RATE_2X3_STBC_VHT4SS1      = 132,
371 	WL_RATE_2X3_STBC_VHT5SS1      = 133,
372 	WL_RATE_2X3_STBC_VHT6SS1      = 134,
373 	WL_RATE_2X3_STBC_VHT7SS1      = 135,
374 	WL_RATE_2X3_STBC_VHT8SS1      = 136,
375 	WL_RATE_2X3_STBC_VHT9SS1      = 137,
376 	WL_RATE_P_2X3_STBC_VHT10SS1   = 138,
377 	WL_RATE_P_2X3_STBC_VHT11SS1   = 139,
378 
379 	WL_RATE_2X3_SDM_MCS8          = 140,
380 	WL_RATE_2X3_SDM_MCS9          = 141,
381 	WL_RATE_2X3_SDM_MCS10         = 142,
382 	WL_RATE_2X3_SDM_MCS11         = 143,
383 	WL_RATE_2X3_SDM_MCS12         = 144,
384 	WL_RATE_2X3_SDM_MCS13         = 145,
385 	WL_RATE_2X3_SDM_MCS14         = 146,
386 	WL_RATE_2X3_SDM_MCS15         = 147,
387 	WL_RATE_P_2X3_SDM_MCS99       = 148,
388 	WL_RATE_P_2X3_SDM_MCS100      = 149,
389 
390 	WL_RATE_2X3_VHT0SS2           = 140,
391 	WL_RATE_2X3_VHT1SS2           = 141,
392 	WL_RATE_2X3_VHT2SS2           = 142,
393 	WL_RATE_2X3_VHT3SS2           = 143,
394 	WL_RATE_2X3_VHT4SS2           = 144,
395 	WL_RATE_2X3_VHT5SS2           = 145,
396 	WL_RATE_2X3_VHT6SS2           = 146,
397 	WL_RATE_2X3_VHT7SS2           = 147,
398 	WL_RATE_2X3_VHT8SS2           = 148,
399 	WL_RATE_2X3_VHT9SS2           = 149,
400 	WL_RATE_P_2X3_VHT10SS2        = 150,
401 	WL_RATE_P_2X3_VHT11SS2        = 151,
402 
403 	/* 3 Streams */
404 	WL_RATE_3X3_SDM_MCS16         = 152,
405 	WL_RATE_3X3_SDM_MCS17         = 153,
406 	WL_RATE_3X3_SDM_MCS18         = 154,
407 	WL_RATE_3X3_SDM_MCS19         = 155,
408 	WL_RATE_3X3_SDM_MCS20         = 156,
409 	WL_RATE_3X3_SDM_MCS21         = 157,
410 	WL_RATE_3X3_SDM_MCS22         = 158,
411 	WL_RATE_3X3_SDM_MCS23         = 159,
412 	WL_RATE_P_3X3_SDM_MCS101      = 160,
413 	WL_RATE_P_3X3_SDM_MCS102      = 161,
414 
415 	WL_RATE_3X3_VHT0SS3           = 152,
416 	WL_RATE_3X3_VHT1SS3           = 153,
417 	WL_RATE_3X3_VHT2SS3           = 154,
418 	WL_RATE_3X3_VHT3SS3           = 155,
419 	WL_RATE_3X3_VHT4SS3           = 156,
420 	WL_RATE_3X3_VHT5SS3           = 157,
421 	WL_RATE_3X3_VHT6SS3           = 158,
422 	WL_RATE_3X3_VHT7SS3           = 159,
423 	WL_RATE_3X3_VHT8SS3           = 160,
424 	WL_RATE_3X3_VHT9SS3           = 161,
425 	WL_RATE_P_3X3_VHT10SS3        = 162,
426 	WL_RATE_P_3X3_VHT11SS3        = 163,
427 
428 	/****************************
429 	 * TX Beamforming, 3 chains *
430 	 ****************************
431 	 */
432 
433 	/* 1 Stream expanded + 2 */
434 	WL_RATE_1X3_TXBF_OFDM_6       = 164,
435 	WL_RATE_1X3_TXBF_OFDM_9       = 165,
436 	WL_RATE_1X3_TXBF_OFDM_12      = 166,
437 	WL_RATE_1X3_TXBF_OFDM_18      = 167,
438 	WL_RATE_1X3_TXBF_OFDM_24      = 168,
439 	WL_RATE_1X3_TXBF_OFDM_36      = 169,
440 	WL_RATE_1X3_TXBF_OFDM_48      = 170,
441 	WL_RATE_1X3_TXBF_OFDM_54      = 171,
442 
443 	WL_RATE_1X3_TXBF_MCS0         = 172,
444 	WL_RATE_1X3_TXBF_MCS1         = 173,
445 	WL_RATE_1X3_TXBF_MCS2         = 174,
446 	WL_RATE_1X3_TXBF_MCS3         = 175,
447 	WL_RATE_1X3_TXBF_MCS4         = 176,
448 	WL_RATE_1X3_TXBF_MCS5         = 177,
449 	WL_RATE_1X3_TXBF_MCS6         = 178,
450 	WL_RATE_1X3_TXBF_MCS7         = 179,
451 	WL_RATE_P_1X3_TXBF_MCS87      = 180,
452 	WL_RATE_P_1X3_TXBF_MCS88      = 181,
453 
454 	WL_RATE_1X3_TXBF_VHT0SS1      = 172,
455 	WL_RATE_1X3_TXBF_VHT1SS1      = 173,
456 	WL_RATE_1X3_TXBF_VHT2SS1      = 174,
457 	WL_RATE_1X3_TXBF_VHT3SS1      = 175,
458 	WL_RATE_1X3_TXBF_VHT4SS1      = 176,
459 	WL_RATE_1X3_TXBF_VHT5SS1      = 177,
460 	WL_RATE_1X3_TXBF_VHT6SS1      = 178,
461 	WL_RATE_1X3_TXBF_VHT7SS1      = 179,
462 	WL_RATE_1X3_TXBF_VHT8SS1      = 180,
463 	WL_RATE_1X3_TXBF_VHT9SS1      = 181,
464 	WL_RATE_P_1X3_TXBF_VHT10SS1   = 182,
465 	WL_RATE_P_1X3_TXBF_VHT11SS1   = 183,
466 
467 	/* 2 Streams expanded + 1 */
468 	WL_RATE_2X3_TXBF_SDM_MCS8     = 184,
469 	WL_RATE_2X3_TXBF_SDM_MCS9     = 185,
470 	WL_RATE_2X3_TXBF_SDM_MCS10    = 186,
471 	WL_RATE_2X3_TXBF_SDM_MCS11    = 187,
472 	WL_RATE_2X3_TXBF_SDM_MCS12    = 188,
473 	WL_RATE_2X3_TXBF_SDM_MCS13    = 189,
474 	WL_RATE_2X3_TXBF_SDM_MCS14    = 190,
475 	WL_RATE_2X3_TXBF_SDM_MCS15    = 191,
476 	WL_RATE_P_2X3_TXBF_SDM_MCS99  = 192,
477 	WL_RATE_P_2X3_TXBF_SDM_MCS100 = 193,
478 
479 	WL_RATE_2X3_TXBF_VHT0SS2      = 184,
480 	WL_RATE_2X3_TXBF_VHT1SS2      = 185,
481 	WL_RATE_2X3_TXBF_VHT2SS2      = 186,
482 	WL_RATE_2X3_TXBF_VHT3SS2      = 187,
483 	WL_RATE_2X3_TXBF_VHT4SS2      = 188,
484 	WL_RATE_2X3_TXBF_VHT5SS2      = 189,
485 	WL_RATE_2X3_TXBF_VHT6SS2      = 190,
486 	WL_RATE_2X3_TXBF_VHT7SS2      = 191,
487 	WL_RATE_2X3_TXBF_VHT8SS2      = 192,
488 	WL_RATE_2X3_TXBF_VHT9SS2      = 193,
489 	WL_RATE_P_2X3_TXBF_VHT10SS2   = 194,
490 	WL_RATE_P_2X3_TXBF_VHT11SS2   = 195,
491 
492 	/* 3 Streams */
493 	WL_RATE_3X3_TXBF_SDM_MCS16    = 196,
494 	WL_RATE_3X3_TXBF_SDM_MCS17    = 197,
495 	WL_RATE_3X3_TXBF_SDM_MCS18    = 198,
496 	WL_RATE_3X3_TXBF_SDM_MCS19    = 199,
497 	WL_RATE_3X3_TXBF_SDM_MCS20    = 200,
498 	WL_RATE_3X3_TXBF_SDM_MCS21    = 201,
499 	WL_RATE_3X3_TXBF_SDM_MCS22    = 202,
500 	WL_RATE_3X3_TXBF_SDM_MCS23    = 203,
501 	WL_RATE_P_3X3_TXBF_SDM_MCS101 = 204,
502 	WL_RATE_P_3X3_TXBF_SDM_MCS102 = 205,
503 
504 	WL_RATE_3X3_TXBF_VHT0SS3      = 196,
505 	WL_RATE_3X3_TXBF_VHT1SS3      = 197,
506 	WL_RATE_3X3_TXBF_VHT2SS3      = 198,
507 	WL_RATE_3X3_TXBF_VHT3SS3      = 199,
508 	WL_RATE_3X3_TXBF_VHT4SS3      = 200,
509 	WL_RATE_3X3_TXBF_VHT5SS3      = 201,
510 	WL_RATE_3X3_TXBF_VHT6SS3      = 202,
511 	WL_RATE_3X3_TXBF_VHT7SS3      = 203,
512 	WL_RATE_3X3_TXBF_VHT8SS3      = 204,
513 	WL_RATE_3X3_TXBF_VHT9SS3      = 205,
514 	WL_RATE_P_3X3_TXBF_VHT10SS3   = 206,
515 	WL_RATE_P_3X3_TXBF_VHT11SS3   = 207,
516 
517 	/************
518 	* 4 chains *
519 	************
520 	*/
521 
522 	/* 1 Stream expanded + 3 */
523 	WL_RATE_1X4_DSSS_1            = 208,
524 	WL_RATE_1X4_DSSS_2            = 209,
525 	WL_RATE_1X4_DSSS_5_5          = 210,
526 	WL_RATE_1X4_DSSS_11           = 211,
527 
528 	WL_RATE_1X4_CDD_OFDM_6        = 212,
529 	WL_RATE_1X4_CDD_OFDM_9        = 213,
530 	WL_RATE_1X4_CDD_OFDM_12       = 214,
531 	WL_RATE_1X4_CDD_OFDM_18       = 215,
532 	WL_RATE_1X4_CDD_OFDM_24       = 216,
533 	WL_RATE_1X4_CDD_OFDM_36       = 217,
534 	WL_RATE_1X4_CDD_OFDM_48       = 218,
535 	WL_RATE_1X4_CDD_OFDM_54       = 219,
536 
537 	WL_RATE_1X4_CDD_MCS0          = 220,
538 	WL_RATE_1X4_CDD_MCS1          = 221,
539 	WL_RATE_1X4_CDD_MCS2          = 222,
540 	WL_RATE_1X4_CDD_MCS3          = 223,
541 	WL_RATE_1X4_CDD_MCS4          = 224,
542 	WL_RATE_1X4_CDD_MCS5          = 225,
543 	WL_RATE_1X4_CDD_MCS6          = 226,
544 	WL_RATE_1X4_CDD_MCS7          = 227,
545 	WL_RATE_P_1X4_CDD_MCS87       = 228,
546 	WL_RATE_P_1X4_CDD_MCS88       = 229,
547 
548 	WL_RATE_1X4_VHT0SS1           = 220,
549 	WL_RATE_1X4_VHT1SS1           = 221,
550 	WL_RATE_1X4_VHT2SS1           = 222,
551 	WL_RATE_1X4_VHT3SS1           = 223,
552 	WL_RATE_1X4_VHT4SS1           = 224,
553 	WL_RATE_1X4_VHT5SS1           = 225,
554 	WL_RATE_1X4_VHT6SS1           = 226,
555 	WL_RATE_1X4_VHT7SS1           = 227,
556 	WL_RATE_1X4_VHT8SS1           = 228,
557 	WL_RATE_1X4_VHT9SS1           = 229,
558 	WL_RATE_P_1X4_VHT10SS1        = 230,
559 	WL_RATE_P_1X4_VHT11SS1        = 231,
560 
561 	/* 2 Streams expanded + 2 */
562 	WL_RATE_2X4_STBC_MCS0         = 232,
563 	WL_RATE_2X4_STBC_MCS1         = 233,
564 	WL_RATE_2X4_STBC_MCS2         = 234,
565 	WL_RATE_2X4_STBC_MCS3         = 235,
566 	WL_RATE_2X4_STBC_MCS4         = 236,
567 	WL_RATE_2X4_STBC_MCS5         = 237,
568 	WL_RATE_2X4_STBC_MCS6         = 238,
569 	WL_RATE_2X4_STBC_MCS7         = 239,
570 	WL_RATE_P_2X4_STBC_MCS87      = 240,
571 	WL_RATE_P_2X4_STBC_MCS88      = 241,
572 
573 	WL_RATE_2X4_STBC_VHT0SS1      = 232,
574 	WL_RATE_2X4_STBC_VHT1SS1      = 233,
575 	WL_RATE_2X4_STBC_VHT2SS1      = 234,
576 	WL_RATE_2X4_STBC_VHT3SS1      = 235,
577 	WL_RATE_2X4_STBC_VHT4SS1      = 236,
578 	WL_RATE_2X4_STBC_VHT5SS1      = 237,
579 	WL_RATE_2X4_STBC_VHT6SS1      = 238,
580 	WL_RATE_2X4_STBC_VHT7SS1      = 239,
581 	WL_RATE_2X4_STBC_VHT8SS1      = 240,
582 	WL_RATE_2X4_STBC_VHT9SS1      = 241,
583 	WL_RATE_P_2X4_STBC_VHT10SS1   = 242,
584 	WL_RATE_P_2X4_STBC_VHT11SS1   = 243,
585 
586 	WL_RATE_2X4_SDM_MCS8          = 244,
587 	WL_RATE_2X4_SDM_MCS9          = 245,
588 	WL_RATE_2X4_SDM_MCS10         = 246,
589 	WL_RATE_2X4_SDM_MCS11         = 247,
590 	WL_RATE_2X4_SDM_MCS12         = 248,
591 	WL_RATE_2X4_SDM_MCS13         = 249,
592 	WL_RATE_2X4_SDM_MCS14         = 250,
593 	WL_RATE_2X4_SDM_MCS15         = 251,
594 	WL_RATE_P_2X4_SDM_MCS99       = 252,
595 	WL_RATE_P_2X4_SDM_MCS100      = 253,
596 
597 	WL_RATE_2X4_VHT0SS2           = 244,
598 	WL_RATE_2X4_VHT1SS2           = 245,
599 	WL_RATE_2X4_VHT2SS2           = 246,
600 	WL_RATE_2X4_VHT3SS2           = 247,
601 	WL_RATE_2X4_VHT4SS2           = 248,
602 	WL_RATE_2X4_VHT5SS2           = 249,
603 	WL_RATE_2X4_VHT6SS2           = 250,
604 	WL_RATE_2X4_VHT7SS2           = 251,
605 	WL_RATE_2X4_VHT8SS2           = 252,
606 	WL_RATE_2X4_VHT9SS2           = 253,
607 	WL_RATE_P_2X4_VHT10SS2        = 254,
608 	WL_RATE_P_2X4_VHT11SS2        = 255,
609 
610 	/* 3 Streams expanded + 1 */
611 	WL_RATE_3X4_SDM_MCS16         = 256,
612 	WL_RATE_3X4_SDM_MCS17         = 257,
613 	WL_RATE_3X4_SDM_MCS18         = 258,
614 	WL_RATE_3X4_SDM_MCS19         = 259,
615 	WL_RATE_3X4_SDM_MCS20         = 260,
616 	WL_RATE_3X4_SDM_MCS21         = 261,
617 	WL_RATE_3X4_SDM_MCS22         = 262,
618 	WL_RATE_3X4_SDM_MCS23         = 263,
619 	WL_RATE_P_3X4_SDM_MCS101      = 264,
620 	WL_RATE_P_3X4_SDM_MCS102      = 265,
621 
622 	WL_RATE_3X4_VHT0SS3           = 256,
623 	WL_RATE_3X4_VHT1SS3           = 257,
624 	WL_RATE_3X4_VHT2SS3           = 258,
625 	WL_RATE_3X4_VHT3SS3           = 259,
626 	WL_RATE_3X4_VHT4SS3           = 260,
627 	WL_RATE_3X4_VHT5SS3           = 261,
628 	WL_RATE_3X4_VHT6SS3           = 262,
629 	WL_RATE_3X4_VHT7SS3           = 263,
630 	WL_RATE_3X4_VHT8SS3           = 264,
631 	WL_RATE_3X4_VHT9SS3           = 265,
632 	WL_RATE_P_3X4_VHT10SS3        = 266,
633 	WL_RATE_P_3X4_VHT11SS3        = 267,
634 
635 	/* 4 Streams */
636 	WL_RATE_4X4_SDM_MCS24         = 268,
637 	WL_RATE_4X4_SDM_MCS25         = 269,
638 	WL_RATE_4X4_SDM_MCS26         = 270,
639 	WL_RATE_4X4_SDM_MCS27         = 271,
640 	WL_RATE_4X4_SDM_MCS28         = 272,
641 	WL_RATE_4X4_SDM_MCS29         = 273,
642 	WL_RATE_4X4_SDM_MCS30         = 274,
643 	WL_RATE_4X4_SDM_MCS31         = 275,
644 	WL_RATE_P_4X4_SDM_MCS103      = 276,
645 	WL_RATE_P_4X4_SDM_MCS104      = 277,
646 
647 	WL_RATE_4X4_VHT0SS4           = 268,
648 	WL_RATE_4X4_VHT1SS4           = 269,
649 	WL_RATE_4X4_VHT2SS4           = 270,
650 	WL_RATE_4X4_VHT3SS4           = 271,
651 	WL_RATE_4X4_VHT4SS4           = 272,
652 	WL_RATE_4X4_VHT5SS4           = 273,
653 	WL_RATE_4X4_VHT6SS4           = 274,
654 	WL_RATE_4X4_VHT7SS4           = 275,
655 	WL_RATE_4X4_VHT8SS4           = 276,
656 	WL_RATE_4X4_VHT9SS4           = 277,
657 	WL_RATE_P_4X4_VHT10SS4        = 278,
658 	WL_RATE_P_4X4_VHT11SS4        = 279,
659 
660 	/****************************
661 	 * TX Beamforming, 4 chains *
662 	 ****************************
663 	 */
664 
665 	/* 1 Stream expanded + 3 */
666 	WL_RATE_1X4_TXBF_OFDM_6       = 280,
667 	WL_RATE_1X4_TXBF_OFDM_9       = 281,
668 	WL_RATE_1X4_TXBF_OFDM_12      = 282,
669 	WL_RATE_1X4_TXBF_OFDM_18      = 283,
670 	WL_RATE_1X4_TXBF_OFDM_24      = 284,
671 	WL_RATE_1X4_TXBF_OFDM_36      = 285,
672 	WL_RATE_1X4_TXBF_OFDM_48      = 286,
673 	WL_RATE_1X4_TXBF_OFDM_54      = 287,
674 
675 	WL_RATE_1X4_TXBF_MCS0         = 288,
676 	WL_RATE_1X4_TXBF_MCS1         = 289,
677 	WL_RATE_1X4_TXBF_MCS2         = 290,
678 	WL_RATE_1X4_TXBF_MCS3         = 291,
679 	WL_RATE_1X4_TXBF_MCS4         = 292,
680 	WL_RATE_1X4_TXBF_MCS5         = 293,
681 	WL_RATE_1X4_TXBF_MCS6         = 294,
682 	WL_RATE_1X4_TXBF_MCS7         = 295,
683 	WL_RATE_P_1X4_TXBF_MCS87      = 296,
684 	WL_RATE_P_1X4_TXBF_MCS88      = 297,
685 
686 	WL_RATE_1X4_TXBF_VHT0SS1      = 288,
687 	WL_RATE_1X4_TXBF_VHT1SS1      = 289,
688 	WL_RATE_1X4_TXBF_VHT2SS1      = 290,
689 	WL_RATE_1X4_TXBF_VHT3SS1      = 291,
690 	WL_RATE_1X4_TXBF_VHT4SS1      = 292,
691 	WL_RATE_1X4_TXBF_VHT5SS1      = 293,
692 	WL_RATE_1X4_TXBF_VHT6SS1      = 294,
693 	WL_RATE_1X4_TXBF_VHT7SS1      = 295,
694 	WL_RATE_1X4_TXBF_VHT8SS1      = 296,
695 	WL_RATE_1X4_TXBF_VHT9SS1      = 297,
696 	WL_RATE_P_1X4_TXBF_VHT10SS1   = 298,
697 	WL_RATE_P_1X4_TXBF_VHT11SS1   = 299,
698 
699 	/* 2 Streams expanded + 2 */
700 	WL_RATE_2X4_TXBF_SDM_MCS8     = 300,
701 	WL_RATE_2X4_TXBF_SDM_MCS9     = 301,
702 	WL_RATE_2X4_TXBF_SDM_MCS10    = 302,
703 	WL_RATE_2X4_TXBF_SDM_MCS11    = 303,
704 	WL_RATE_2X4_TXBF_SDM_MCS12    = 304,
705 	WL_RATE_2X4_TXBF_SDM_MCS13    = 305,
706 	WL_RATE_2X4_TXBF_SDM_MCS14    = 306,
707 	WL_RATE_2X4_TXBF_SDM_MCS15    = 307,
708 	WL_RATE_P_2X4_TXBF_SDM_MCS99  = 308,
709 	WL_RATE_P_2X4_TXBF_SDM_MCS100 = 309,
710 
711 	WL_RATE_2X4_TXBF_VHT0SS2      = 300,
712 	WL_RATE_2X4_TXBF_VHT1SS2      = 301,
713 	WL_RATE_2X4_TXBF_VHT2SS2      = 302,
714 	WL_RATE_2X4_TXBF_VHT3SS2      = 303,
715 	WL_RATE_2X4_TXBF_VHT4SS2      = 304,
716 	WL_RATE_2X4_TXBF_VHT5SS2      = 305,
717 	WL_RATE_2X4_TXBF_VHT6SS2      = 306,
718 	WL_RATE_2X4_TXBF_VHT7SS2      = 307,
719 	WL_RATE_2X4_TXBF_VHT8SS2      = 308,
720 	WL_RATE_2X4_TXBF_VHT9SS2      = 309,
721 	WL_RATE_P_2X4_TXBF_VHT10SS2   = 310,
722 	WL_RATE_P_2X4_TXBF_VHT11SS2   = 311,
723 
724 	/* 3 Streams expanded + 1 */
725 	WL_RATE_3X4_TXBF_SDM_MCS16    = 312,
726 	WL_RATE_3X4_TXBF_SDM_MCS17    = 313,
727 	WL_RATE_3X4_TXBF_SDM_MCS18    = 314,
728 	WL_RATE_3X4_TXBF_SDM_MCS19    = 315,
729 	WL_RATE_3X4_TXBF_SDM_MCS20    = 316,
730 	WL_RATE_3X4_TXBF_SDM_MCS21    = 317,
731 	WL_RATE_3X4_TXBF_SDM_MCS22    = 318,
732 	WL_RATE_3X4_TXBF_SDM_MCS23    = 319,
733 	WL_RATE_P_3X4_TXBF_SDM_MCS101 = 320,
734 	WL_RATE_P_3X4_TXBF_SDM_MCS102 = 321,
735 
736 	WL_RATE_3X4_TXBF_VHT0SS3      = 312,
737 	WL_RATE_3X4_TXBF_VHT1SS3      = 313,
738 	WL_RATE_3X4_TXBF_VHT2SS3      = 314,
739 	WL_RATE_3X4_TXBF_VHT3SS3      = 315,
740 	WL_RATE_3X4_TXBF_VHT4SS3      = 316,
741 	WL_RATE_3X4_TXBF_VHT5SS3      = 317,
742 	WL_RATE_3X4_TXBF_VHT6SS3      = 318,
743 	WL_RATE_3X4_TXBF_VHT7SS3      = 319,
744 	WL_RATE_P_3X4_TXBF_VHT8SS3    = 320,
745 	WL_RATE_P_3X4_TXBF_VHT9SS3    = 321,
746 	WL_RATE_P_3X4_TXBF_VHT10SS3   = 322,
747 	WL_RATE_P_3X4_TXBF_VHT11SS3   = 323,
748 
749 	/* 4 Streams */
750 	WL_RATE_4X4_TXBF_SDM_MCS24    = 324,
751 	WL_RATE_4X4_TXBF_SDM_MCS25    = 325,
752 	WL_RATE_4X4_TXBF_SDM_MCS26    = 326,
753 	WL_RATE_4X4_TXBF_SDM_MCS27    = 327,
754 	WL_RATE_4X4_TXBF_SDM_MCS28    = 328,
755 	WL_RATE_4X4_TXBF_SDM_MCS29    = 329,
756 	WL_RATE_4X4_TXBF_SDM_MCS30    = 330,
757 	WL_RATE_4X4_TXBF_SDM_MCS31    = 331,
758 	WL_RATE_P_4X4_TXBF_SDM_MCS103 = 332,
759 	WL_RATE_P_4X4_TXBF_SDM_MCS104 = 333,
760 
761 	WL_RATE_4X4_TXBF_VHT0SS4      = 324,
762 	WL_RATE_4X4_TXBF_VHT1SS4      = 325,
763 	WL_RATE_4X4_TXBF_VHT2SS4      = 326,
764 	WL_RATE_4X4_TXBF_VHT3SS4      = 327,
765 	WL_RATE_4X4_TXBF_VHT4SS4      = 328,
766 	WL_RATE_4X4_TXBF_VHT5SS4      = 329,
767 	WL_RATE_4X4_TXBF_VHT6SS4      = 330,
768 	WL_RATE_4X4_TXBF_VHT7SS4      = 331,
769 	WL_RATE_P_4X4_TXBF_VHT8SS4    = 332,
770 	WL_RATE_P_4X4_TXBF_VHT9SS4    = 333,
771 	WL_RATE_P_4X4_TXBF_VHT10SS4   = 334,
772 	WL_RATE_P_4X4_TXBF_VHT11SS4   = 335
773 
774 } clm_rates_t;
775 
776 /* Number of rate codes */
777 #define WL_NUMRATES 336
778 
779 /* MCS rates */
780 #define WLC_MAX_VHT_MCS	11	/**< Std VHT MCS 0-9 plus prop VHT MCS 10-11 */
781 #define WLC_MAX_HE_MCS	11	/**< Std HE MCS 0-11 */
782 
783 /* Convert encoded rate value in plcp header to numerical rates in 500 KHz increments */
784 #define OFDM_PHY2MAC_RATE(rlpt)         plcp_ofdm_rate_tbl[(rlpt) & 0x7]
785 #define CCK_PHY2MAC_RATE(signal)	((signal)/5)
786 
787 /* given a proprietary MCS, get number of spatial streams */
788 #define GET_PROPRIETARY_11N_MCS_NSS(mcs) (1 + ((mcs) - 85) / 8)
789 
790 #define GET_11N_MCS_NSS(mcs) ((mcs) < 32 ? (1 + ((mcs) / 8)) : \
791 			      ((mcs) == 32 ? 1 : GET_PROPRIETARY_11N_MCS_NSS(mcs)))
792 
793 #define IS_PROPRIETARY_11N_MCS(mcs)	FALSE
794 #define IS_PROPRIETARY_11N_SS_MCS(mcs)	FALSE /**< is proprietary HT single stream MCS */
795 
796 /* Store HE mcs map for all NSS in a compact form:
797  *
798  * bit[0:2] mcs code for NSS 1
799  * bit[3:5] mcs code for NSS 2
800  * ...
801  * bit[21:23] mcs code for NSS 8
802  */
803 
804 /**
805  * 3 bits are used for encoding each NSS mcs map (HE MCS MAP is 24 bits)
806  */
807 #define HE_CAP_MCS_CODE_NONE		7
808 
809 /* macros to access above compact format */
810 #define HE_CAP_MCS_NSS_SET_MASK		0x00ffffff /* Field is to be 24 bits long */
811 #define HE_CAP_MCS_NSS_GET_SS_IDX(nss) (((nss)-1) * HE_CAP_MCS_CODE_SIZE)
812 #define HE_CAP_MCS_NSS_GET_MCS(nss, mcs_nss_map) \
813 	(((mcs_nss_map) >> HE_CAP_MCS_NSS_GET_SS_IDX(nss)) & HE_CAP_MCS_CODE_MASK)
814 #define HE_CAP_MCS_NSS_SET_MCS(nss, mcs_code, mcs_nss_map) \
815 	do { \
816 	(mcs_nss_map) &= (~(HE_CAP_MCS_CODE_MASK << HE_CAP_MCS_NSS_GET_SS_IDX(nss))); \
817 	(mcs_nss_map) |= (((mcs_code) & HE_CAP_MCS_CODE_MASK) << HE_CAP_MCS_NSS_GET_SS_IDX(nss)); \
818 	(mcs_nss_map) &= (HE_CAP_MCS_NSS_SET_MASK); \
819 	} while (0)
820 
821 extern const uint8 plcp_ofdm_rate_tbl[];
822 
823 uint8 wf_get_single_stream_mcs(uint mcs);
824 
825 uint8 wf_vht_plcp_to_rate(uint8 *plcp);
826 uint wf_mcs_to_rate(uint mcs, uint nss, uint bw, int sgi);
827 uint wf_he_mcs_to_rate(uint mcs, uint nss, uint bw, uint gi, bool dcm);
828 uint wf_mcs_to_Ndbps(uint mcs, uint nss, uint bw);
829 #ifdef __cplusplus
830 }
831 #endif /* __cplusplus */
832 
833 #endif /* _bcmwifi_rates_h_ */
834