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