blob: d71246972f0d648fcf1680e37b412e306c20a9a7 [file] [log] [blame]
/*
* Indices for 802.11 a/b/g/n/ac 1-3 chain symmetric transmit rates
*
* Copyright (C) 2020, Broadcom.
*
* Unless you and Broadcom execute a separate written software license
* agreement governing use of this software, this software is licensed to you
* under the terms of the GNU General Public License version 2 (the "GPL"),
* available at http://www.broadcom.com/licenses/GPLv2.php, with the
* following added to such license:
*
* As a special exception, the copyright holders of this software give you
* permission to link this software with independent modules, and to copy and
* distribute the resulting executable under terms of your choice, provided that
* you also meet, for each linked independent module, the terms and conditions of
* the license of that module. An independent module is a module which is not
* derived from this software. The special exception does not apply to any
* modifications of the software.
*
*
* <<Broadcom-WL-IPTag/Dual:>>
*/
#ifndef _bcmwifi_rates_h_
#define _bcmwifi_rates_h_
#include <typedefs.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define WL_RATESET_SZ_DSSS 4
#define WL_RATESET_SZ_OFDM 8
#define WL_RATESET_SZ_VHT_MCS 10
#define WL_RATESET_SZ_VHT_MCS_P 12 /* 10 VHT rates + 2 proprietary rates */
#define WL_RATESET_SZ_HE_MCS 12 /* 12 HE rates (mcs 0-11) */
typedef enum wl_he_rates {
HE_RATE_MCS0 = 0,
HE_RATE_MCS1,
HE_RATE_MCS2,
HE_RATE_MCS3,
HE_RATE_MCS4,
HE_RATE_MCS5,
HE_RATE_MCS6,
HE_RATE_MCS7,
HE_RATE_MCS8,
HE_RATE_MCS9,
HE_RATE_MCS10,
HE_RATE_MCS11
} wl_he_rates_t;
#define WL_RATESET_SZ_HT_MCS 8
#define WL_RATESET_SZ_HT_IOCTL 8 /* MAC histogram, compatibility with wl utility */
#define WL_TX_CHAINS_MAX 4
#define WL_RATE_DISABLED (-128) /* Power value corresponding to unsupported rate */
/* Transmit channel bandwidths */
typedef enum wl_tx_bw {
WL_TX_BW_20,
WL_TX_BW_40,
WL_TX_BW_80,
WL_TX_BW_20IN40,
WL_TX_BW_20IN80,
WL_TX_BW_40IN80,
WL_TX_BW_160,
WL_TX_BW_20IN160,
WL_TX_BW_40IN160,
WL_TX_BW_80IN160,
WL_TX_BW_ALL
} wl_tx_bw_t;
/*
* Transmit modes.
* Not all modes are listed here, only those required for disambiguation. e.g. SPEXP is not listed
*/
typedef enum wl_tx_mode {
WL_TX_MODE_NONE,
WL_TX_MODE_STBC,
WL_TX_MODE_CDD,
WL_TX_MODE_TXBF,
WL_NUM_TX_MODES
} wl_tx_mode_t;
/* Number of transmit chains */
typedef enum wl_tx_chains {
WL_TX_CHAINS_1 = 1,
WL_TX_CHAINS_2,
WL_TX_CHAINS_3,
WL_TX_CHAINS_4
} wl_tx_chains_t;
/* Number of transmit streams */
typedef enum wl_tx_nss {
WL_TX_NSS_1 = 1,
WL_TX_NSS_2,
WL_TX_NSS_3,
WL_TX_NSS_4
} wl_tx_nss_t;
/* 802.11ax rate types */
typedef enum wl_he_rate_type {
WL_HE_RT_SU = 0,
WL_HE_RT_RU26 = 1,
WL_HE_RT_RU52 = 2,
WL_HE_RT_RU106 = 3,
WL_HE_RT_UB = 4,
WL_HE_RT_LUB = 5,
WL_HE_RT_RU242 = 6,
WL_HE_RT_RU484 = 7,
WL_HE_RT_RU996 = 8
} wl_he_rate_type_t;
#define WL_NUM_HE_RT 9u
/* This enum maps each rate to a CLM index
* 802.11ax OFDMA (RU) rates are in separate enum
*/
typedef enum clm_rates {
/************
* 1 chain *
************
*/
/* 1 Stream */
WL_RATE_1X1_DSSS_1 = 0,
WL_RATE_1X1_DSSS_2 = 1,
WL_RATE_1X1_DSSS_5_5 = 2,
WL_RATE_1X1_DSSS_11 = 3,
WL_RATE_1X1_OFDM_6 = 4,
WL_RATE_1X1_OFDM_9 = 5,
WL_RATE_1X1_OFDM_12 = 6,
WL_RATE_1X1_OFDM_18 = 7,
WL_RATE_1X1_OFDM_24 = 8,
WL_RATE_1X1_OFDM_36 = 9,
WL_RATE_1X1_OFDM_48 = 10,
WL_RATE_1X1_OFDM_54 = 11,
WL_RATE_1X1_MCS0 = 12,
WL_RATE_1X1_MCS1 = 13,
WL_RATE_1X1_MCS2 = 14,
WL_RATE_1X1_MCS3 = 15,
WL_RATE_1X1_MCS4 = 16,
WL_RATE_1X1_MCS5 = 17,
WL_RATE_1X1_MCS6 = 18,
WL_RATE_1X1_MCS7 = 19,
WL_RATE_P_1X1_MCS87 = 20,
WL_RATE_P_1X1_MCS88 = 21,
WL_RATE_1X1_VHT0SS1 = 12,
WL_RATE_1X1_VHT1SS1 = 13,
WL_RATE_1X1_VHT2SS1 = 14,
WL_RATE_1X1_VHT3SS1 = 15,
WL_RATE_1X1_VHT4SS1 = 16,
WL_RATE_1X1_VHT5SS1 = 17,
WL_RATE_1X1_VHT6SS1 = 18,
WL_RATE_1X1_VHT7SS1 = 19,
WL_RATE_1X1_VHT8SS1 = 20,
WL_RATE_1X1_VHT9SS1 = 21,
WL_RATE_P_1X1_VHT10SS1 = 22,
WL_RATE_P_1X1_VHT11SS1 = 23,
WL_RATE_1X1_HE0SS1 = 24,
WL_RATE_1X1_HE1SS1 = 25,
WL_RATE_1X1_HE2SS1 = 26,
WL_RATE_1X1_HE3SS1 = 27,
WL_RATE_1X1_HE4SS1 = 28,
WL_RATE_1X1_HE5SS1 = 29,
WL_RATE_1X1_HE6SS1 = 30,
WL_RATE_1X1_HE7SS1 = 31,
WL_RATE_1X1_HE8SS1 = 32,
WL_RATE_1X1_HE9SS1 = 33,
WL_RATE_1X1_HE10SS1 = 34,
WL_RATE_1X1_HE11SS1 = 35,
/************
* 2 chains *
************
*/
/* 1 Stream expanded + 1 */
WL_RATE_1X2_DSSS_1 = 36,
WL_RATE_1X2_DSSS_2 = 37,
WL_RATE_1X2_DSSS_5_5 = 38,
WL_RATE_1X2_DSSS_11 = 39,
WL_RATE_1X2_CDD_OFDM_6 = 40,
WL_RATE_1X2_CDD_OFDM_9 = 41,
WL_RATE_1X2_CDD_OFDM_12 = 42,
WL_RATE_1X2_CDD_OFDM_18 = 43,
WL_RATE_1X2_CDD_OFDM_24 = 44,
WL_RATE_1X2_CDD_OFDM_36 = 45,
WL_RATE_1X2_CDD_OFDM_48 = 46,
WL_RATE_1X2_CDD_OFDM_54 = 47,
WL_RATE_1X2_CDD_MCS0 = 48,
WL_RATE_1X2_CDD_MCS1 = 49,
WL_RATE_1X2_CDD_MCS2 = 50,
WL_RATE_1X2_CDD_MCS3 = 51,
WL_RATE_1X2_CDD_MCS4 = 52,
WL_RATE_1X2_CDD_MCS5 = 53,
WL_RATE_1X2_CDD_MCS6 = 54,
WL_RATE_1X2_CDD_MCS7 = 55,
WL_RATE_P_1X2_CDD_MCS87 = 56,
WL_RATE_P_1X2_CDD_MCS88 = 57,
WL_RATE_1X2_VHT0SS1 = 48,
WL_RATE_1X2_VHT1SS1 = 49,
WL_RATE_1X2_VHT2SS1 = 50,
WL_RATE_1X2_VHT3SS1 = 51,
WL_RATE_1X2_VHT4SS1 = 52,
WL_RATE_1X2_VHT5SS1 = 53,
WL_RATE_1X2_VHT6SS1 = 54,
WL_RATE_1X2_VHT7SS1 = 55,
WL_RATE_1X2_VHT8SS1 = 56,
WL_RATE_1X2_VHT9SS1 = 57,
WL_RATE_P_1X2_VHT10SS1 = 58,
WL_RATE_P_1X2_VHT11SS1 = 59,
WL_RATE_1X2_HE0SS1 = 60,
WL_RATE_1X2_HE1SS1 = 61,
WL_RATE_1X2_HE2SS1 = 62,
WL_RATE_1X2_HE3SS1 = 63,
WL_RATE_1X2_HE4SS1 = 64,
WL_RATE_1X2_HE5SS1 = 65,
WL_RATE_1X2_HE6SS1 = 66,
WL_RATE_1X2_HE7SS1 = 67,
WL_RATE_1X2_HE8SS1 = 68,
WL_RATE_1X2_HE9SS1 = 69,
WL_RATE_1X2_HE10SS1 = 70,
WL_RATE_1X2_HE11SS1 = 71,
/* 2 Streams */
WL_RATE_2X2_STBC_MCS0 = 72,
WL_RATE_2X2_STBC_MCS1 = 73,
WL_RATE_2X2_STBC_MCS2 = 74,
WL_RATE_2X2_STBC_MCS3 = 75,
WL_RATE_2X2_STBC_MCS4 = 76,
WL_RATE_2X2_STBC_MCS5 = 77,
WL_RATE_2X2_STBC_MCS6 = 78,
WL_RATE_2X2_STBC_MCS7 = 79,
WL_RATE_P_2X2_STBC_MCS87 = 80,
WL_RATE_P_2X2_STBC_MCS88 = 81,
WL_RATE_2X2_STBC_VHT0SS1 = 72,
WL_RATE_2X2_STBC_VHT1SS1 = 73,
WL_RATE_2X2_STBC_VHT2SS1 = 74,
WL_RATE_2X2_STBC_VHT3SS1 = 75,
WL_RATE_2X2_STBC_VHT4SS1 = 76,
WL_RATE_2X2_STBC_VHT5SS1 = 77,
WL_RATE_2X2_STBC_VHT6SS1 = 78,
WL_RATE_2X2_STBC_VHT7SS1 = 79,
WL_RATE_2X2_STBC_VHT8SS1 = 80,
WL_RATE_2X2_STBC_VHT9SS1 = 81,
WL_RATE_P_2X2_STBC_VHT10SS1 = 82,
WL_RATE_P_2X2_STBC_VHT11SS1 = 83,
WL_RATE_2X2_SDM_MCS8 = 84,
WL_RATE_2X2_SDM_MCS9 = 85,
WL_RATE_2X2_SDM_MCS10 = 86,
WL_RATE_2X2_SDM_MCS11 = 87,
WL_RATE_2X2_SDM_MCS12 = 88,
WL_RATE_2X2_SDM_MCS13 = 89,
WL_RATE_2X2_SDM_MCS14 = 90,
WL_RATE_2X2_SDM_MCS15 = 91,
WL_RATE_P_2X2_SDM_MCS99 = 92,
WL_RATE_P_2X2_SDM_MCS100 = 93,
WL_RATE_2X2_VHT0SS2 = 84,
WL_RATE_2X2_VHT1SS2 = 85,
WL_RATE_2X2_VHT2SS2 = 86,
WL_RATE_2X2_VHT3SS2 = 87,
WL_RATE_2X2_VHT4SS2 = 88,
WL_RATE_2X2_VHT5SS2 = 89,
WL_RATE_2X2_VHT6SS2 = 90,
WL_RATE_2X2_VHT7SS2 = 91,
WL_RATE_2X2_VHT8SS2 = 92,
WL_RATE_2X2_VHT9SS2 = 93,
WL_RATE_P_2X2_VHT10SS2 = 94,
WL_RATE_P_2X2_VHT11SS2 = 95,
WL_RATE_2X2_HE0SS2 = 96,
WL_RATE_2X2_HE1SS2 = 97,
WL_RATE_2X2_HE2SS2 = 98,
WL_RATE_2X2_HE3SS2 = 99,
WL_RATE_2X2_HE4SS2 = 100,
WL_RATE_2X2_HE5SS2 = 101,
WL_RATE_2X2_HE6SS2 = 102,
WL_RATE_2X2_HE7SS2 = 103,
WL_RATE_2X2_HE8SS2 = 104,
WL_RATE_2X2_HE9SS2 = 105,
WL_RATE_2X2_HE10SS2 = 106,
WL_RATE_2X2_HE11SS2 = 107,
/****************************
* TX Beamforming, 2 chains *
****************************
*/
/* 1 Stream expanded + 1 */
WL_RATE_1X2_TXBF_OFDM_6 = 108,
WL_RATE_1X2_TXBF_OFDM_9 = 109,
WL_RATE_1X2_TXBF_OFDM_12 = 110,
WL_RATE_1X2_TXBF_OFDM_18 = 111,
WL_RATE_1X2_TXBF_OFDM_24 = 112,
WL_RATE_1X2_TXBF_OFDM_36 = 113,
WL_RATE_1X2_TXBF_OFDM_48 = 114,
WL_RATE_1X2_TXBF_OFDM_54 = 115,
WL_RATE_1X2_TXBF_MCS0 = 116,
WL_RATE_1X2_TXBF_MCS1 = 117,
WL_RATE_1X2_TXBF_MCS2 = 118,
WL_RATE_1X2_TXBF_MCS3 = 119,
WL_RATE_1X2_TXBF_MCS4 = 120,
WL_RATE_1X2_TXBF_MCS5 = 121,
WL_RATE_1X2_TXBF_MCS6 = 122,
WL_RATE_1X2_TXBF_MCS7 = 123,
WL_RATE_P_1X2_TXBF_MCS87 = 124,
WL_RATE_P_1X2_TXBF_MCS88 = 125,
WL_RATE_1X2_TXBF_VHT0SS1 = 116,
WL_RATE_1X2_TXBF_VHT1SS1 = 117,
WL_RATE_1X2_TXBF_VHT2SS1 = 118,
WL_RATE_1X2_TXBF_VHT3SS1 = 119,
WL_RATE_1X2_TXBF_VHT4SS1 = 120,
WL_RATE_1X2_TXBF_VHT5SS1 = 121,
WL_RATE_1X2_TXBF_VHT6SS1 = 122,
WL_RATE_1X2_TXBF_VHT7SS1 = 123,
WL_RATE_1X2_TXBF_VHT8SS1 = 124,
WL_RATE_1X2_TXBF_VHT9SS1 = 125,
WL_RATE_P_1X2_TXBF_VHT10SS1 = 126,
WL_RATE_P_1X2_TXBF_VHT11SS1 = 127,
WL_RATE_1X2_TXBF_HE0SS1 = 128,
WL_RATE_1X2_TXBF_HE1SS1 = 129,
WL_RATE_1X2_TXBF_HE2SS1 = 130,
WL_RATE_1X2_TXBF_HE3SS1 = 131,
WL_RATE_1X2_TXBF_HE4SS1 = 132,
WL_RATE_1X2_TXBF_HE5SS1 = 133,
WL_RATE_1X2_TXBF_HE6SS1 = 134,
WL_RATE_1X2_TXBF_HE7SS1 = 135,
WL_RATE_1X2_TXBF_HE8SS1 = 136,
WL_RATE_1X2_TXBF_HE9SS1 = 137,
WL_RATE_1X2_TXBF_HE10SS1 = 138,
WL_RATE_1X2_TXBF_HE11SS1 = 139,
/* 2 Streams */
WL_RATE_2X2_TXBF_SDM_MCS8 = 140,
WL_RATE_2X2_TXBF_SDM_MCS9 = 141,
WL_RATE_2X2_TXBF_SDM_MCS10 = 142,
WL_RATE_2X2_TXBF_SDM_MCS11 = 143,
WL_RATE_2X2_TXBF_SDM_MCS12 = 144,
WL_RATE_2X2_TXBF_SDM_MCS13 = 145,
WL_RATE_2X2_TXBF_SDM_MCS14 = 146,
WL_RATE_2X2_TXBF_SDM_MCS15 = 147,
WL_RATE_P_2X2_TXBF_SDM_MCS99 = 148,
WL_RATE_P_2X2_TXBF_SDM_MCS100 = 149,
WL_RATE_2X2_TXBF_VHT0SS2 = 140,
WL_RATE_2X2_TXBF_VHT1SS2 = 141,
WL_RATE_2X2_TXBF_VHT2SS2 = 142,
WL_RATE_2X2_TXBF_VHT3SS2 = 143,
WL_RATE_2X2_TXBF_VHT4SS2 = 144,
WL_RATE_2X2_TXBF_VHT5SS2 = 145,
WL_RATE_2X2_TXBF_VHT6SS2 = 146,
WL_RATE_2X2_TXBF_VHT7SS2 = 147,
WL_RATE_2X2_TXBF_VHT8SS2 = 148,
WL_RATE_2X2_TXBF_VHT9SS2 = 149,
WL_RATE_P_2X2_TXBF_VHT10SS2 = 150,
WL_RATE_P_2X2_TXBF_VHT11SS2 = 151,
WL_RATE_2X2_TXBF_HE0SS2 = 152,
WL_RATE_2X2_TXBF_HE1SS2 = 153,
WL_RATE_2X2_TXBF_HE2SS2 = 154,
WL_RATE_2X2_TXBF_HE3SS2 = 155,
WL_RATE_2X2_TXBF_HE4SS2 = 156,
WL_RATE_2X2_TXBF_HE5SS2 = 157,
WL_RATE_2X2_TXBF_HE6SS2 = 158,
WL_RATE_2X2_TXBF_HE7SS2 = 159,
WL_RATE_2X2_TXBF_HE8SS2 = 160,
WL_RATE_2X2_TXBF_HE9SS2 = 161,
WL_RATE_2X2_TXBF_HE10SS2 = 162,
WL_RATE_2X2_TXBF_HE11SS2 = 163,
/************
* 3 chains *
************
*/
/* 1 Stream expanded + 2 */
WL_RATE_1X3_DSSS_1 = 164,
WL_RATE_1X3_DSSS_2 = 165,
WL_RATE_1X3_DSSS_5_5 = 166,
WL_RATE_1X3_DSSS_11 = 167,
WL_RATE_1X3_CDD_OFDM_6 = 168,
WL_RATE_1X3_CDD_OFDM_9 = 169,
WL_RATE_1X3_CDD_OFDM_12 = 170,
WL_RATE_1X3_CDD_OFDM_18 = 171,
WL_RATE_1X3_CDD_OFDM_24 = 172,
WL_RATE_1X3_CDD_OFDM_36 = 173,
WL_RATE_1X3_CDD_OFDM_48 = 174,
WL_RATE_1X3_CDD_OFDM_54 = 175,
WL_RATE_1X3_CDD_MCS0 = 176,
WL_RATE_1X3_CDD_MCS1 = 177,
WL_RATE_1X3_CDD_MCS2 = 178,
WL_RATE_1X3_CDD_MCS3 = 179,
WL_RATE_1X3_CDD_MCS4 = 180,
WL_RATE_1X3_CDD_MCS5 = 181,
WL_RATE_1X3_CDD_MCS6 = 182,
WL_RATE_1X3_CDD_MCS7 = 183,
WL_RATE_P_1X3_CDD_MCS87 = 184,
WL_RATE_P_1X3_CDD_MCS88 = 185,
WL_RATE_1X3_VHT0SS1 = 176,
WL_RATE_1X3_VHT1SS1 = 177,
WL_RATE_1X3_VHT2SS1 = 178,
WL_RATE_1X3_VHT3SS1 = 179,
WL_RATE_1X3_VHT4SS1 = 180,
WL_RATE_1X3_VHT5SS1 = 181,
WL_RATE_1X3_VHT6SS1 = 182,
WL_RATE_1X3_VHT7SS1 = 183,
WL_RATE_1X3_VHT8SS1 = 184,
WL_RATE_1X3_VHT9SS1 = 185,
WL_RATE_P_1X3_VHT10SS1 = 186,
WL_RATE_P_1X3_VHT11SS1 = 187,
WL_RATE_1X3_HE0SS1 = 188,
WL_RATE_1X3_HE1SS1 = 189,
WL_RATE_1X3_HE2SS1 = 190,
WL_RATE_1X3_HE3SS1 = 191,
WL_RATE_1X3_HE4SS1 = 192,
WL_RATE_1X3_HE5SS1 = 193,
WL_RATE_1X3_HE6SS1 = 194,
WL_RATE_1X3_HE7SS1 = 195,
WL_RATE_1X3_HE8SS1 = 196,
WL_RATE_1X3_HE9SS1 = 197,
WL_RATE_1X3_HE10SS1 = 198,
WL_RATE_1X3_HE11SS1 = 199,
/* 2 Streams expanded + 1 */
WL_RATE_2X3_STBC_MCS0 = 200,
WL_RATE_2X3_STBC_MCS1 = 201,
WL_RATE_2X3_STBC_MCS2 = 202,
WL_RATE_2X3_STBC_MCS3 = 203,
WL_RATE_2X3_STBC_MCS4 = 204,
WL_RATE_2X3_STBC_MCS5 = 205,
WL_RATE_2X3_STBC_MCS6 = 206,
WL_RATE_2X3_STBC_MCS7 = 207,
WL_RATE_P_2X3_STBC_MCS87 = 208,
WL_RATE_P_2X3_STBC_MCS88 = 209,
WL_RATE_2X3_STBC_VHT0SS1 = 200,
WL_RATE_2X3_STBC_VHT1SS1 = 201,
WL_RATE_2X3_STBC_VHT2SS1 = 202,
WL_RATE_2X3_STBC_VHT3SS1 = 203,
WL_RATE_2X3_STBC_VHT4SS1 = 204,
WL_RATE_2X3_STBC_VHT5SS1 = 205,
WL_RATE_2X3_STBC_VHT6SS1 = 206,
WL_RATE_2X3_STBC_VHT7SS1 = 207,
WL_RATE_2X3_STBC_VHT8SS1 = 208,
WL_RATE_2X3_STBC_VHT9SS1 = 209,
WL_RATE_P_2X3_STBC_VHT10SS1 = 210,
WL_RATE_P_2X3_STBC_VHT11SS1 = 211,
WL_RATE_2X3_SDM_MCS8 = 212,
WL_RATE_2X3_SDM_MCS9 = 213,
WL_RATE_2X3_SDM_MCS10 = 214,
WL_RATE_2X3_SDM_MCS11 = 215,
WL_RATE_2X3_SDM_MCS12 = 216,
WL_RATE_2X3_SDM_MCS13 = 217,
WL_RATE_2X3_SDM_MCS14 = 218,
WL_RATE_2X3_SDM_MCS15 = 219,
WL_RATE_P_2X3_SDM_MCS99 = 220,
WL_RATE_P_2X3_SDM_MCS100 = 221,
WL_RATE_2X3_VHT0SS2 = 212,
WL_RATE_2X3_VHT1SS2 = 213,
WL_RATE_2X3_VHT2SS2 = 214,
WL_RATE_2X3_VHT3SS2 = 215,
WL_RATE_2X3_VHT4SS2 = 216,
WL_RATE_2X3_VHT5SS2 = 217,
WL_RATE_2X3_VHT6SS2 = 218,
WL_RATE_2X3_VHT7SS2 = 219,
WL_RATE_2X3_VHT8SS2 = 220,
WL_RATE_2X3_VHT9SS2 = 221,
WL_RATE_P_2X3_VHT10SS2 = 222,
WL_RATE_P_2X3_VHT11SS2 = 223,
WL_RATE_2X3_HE0SS2 = 224,
WL_RATE_2X3_HE1SS2 = 225,
WL_RATE_2X3_HE2SS2 = 226,
WL_RATE_2X3_HE3SS2 = 227,
WL_RATE_2X3_HE4SS2 = 228,
WL_RATE_2X3_HE5SS2 = 229,
WL_RATE_2X3_HE6SS2 = 230,
WL_RATE_2X3_HE7SS2 = 231,
WL_RATE_2X3_HE8SS2 = 232,
WL_RATE_2X3_HE9SS2 = 233,
WL_RATE_2X3_HE10SS2 = 234,
WL_RATE_2X3_HE11SS2 = 235,
/* 3 Streams */
WL_RATE_3X3_SDM_MCS16 = 236,
WL_RATE_3X3_SDM_MCS17 = 237,
WL_RATE_3X3_SDM_MCS18 = 238,
WL_RATE_3X3_SDM_MCS19 = 239,
WL_RATE_3X3_SDM_MCS20 = 240,
WL_RATE_3X3_SDM_MCS21 = 241,
WL_RATE_3X3_SDM_MCS22 = 242,
WL_RATE_3X3_SDM_MCS23 = 243,
WL_RATE_P_3X3_SDM_MCS101 = 244,
WL_RATE_P_3X3_SDM_MCS102 = 245,
WL_RATE_3X3_VHT0SS3 = 236,
WL_RATE_3X3_VHT1SS3 = 237,
WL_RATE_3X3_VHT2SS3 = 238,
WL_RATE_3X3_VHT3SS3 = 239,
WL_RATE_3X3_VHT4SS3 = 240,
WL_RATE_3X3_VHT5SS3 = 241,
WL_RATE_3X3_VHT6SS3 = 242,
WL_RATE_3X3_VHT7SS3 = 243,
WL_RATE_3X3_VHT8SS3 = 244,
WL_RATE_3X3_VHT9SS3 = 245,
WL_RATE_P_3X3_VHT10SS3 = 246,
WL_RATE_P_3X3_VHT11SS3 = 247,
WL_RATE_3X3_HE0SS3 = 248,
WL_RATE_3X3_HE1SS3 = 249,
WL_RATE_3X3_HE2SS3 = 250,
WL_RATE_3X3_HE3SS3 = 251,
WL_RATE_3X3_HE4SS3 = 252,
WL_RATE_3X3_HE5SS3 = 253,
WL_RATE_3X3_HE6SS3 = 254,
WL_RATE_3X3_HE7SS3 = 255,
WL_RATE_3X3_HE8SS3 = 256,
WL_RATE_3X3_HE9SS3 = 257,
WL_RATE_3X3_HE10SS3 = 258,
WL_RATE_3X3_HE11SS3 = 259,
/****************************
* TX Beamforming, 3 chains *
****************************
*/
/* 1 Stream expanded + 2 */
WL_RATE_1X3_TXBF_OFDM_6 = 260,
WL_RATE_1X3_TXBF_OFDM_9 = 261,
WL_RATE_1X3_TXBF_OFDM_12 = 262,
WL_RATE_1X3_TXBF_OFDM_18 = 263,
WL_RATE_1X3_TXBF_OFDM_24 = 264,
WL_RATE_1X3_TXBF_OFDM_36 = 265,
WL_RATE_1X3_TXBF_OFDM_48 = 266,
WL_RATE_1X3_TXBF_OFDM_54 = 267,
WL_RATE_1X3_TXBF_MCS0 = 268,
WL_RATE_1X3_TXBF_MCS1 = 269,
WL_RATE_1X3_TXBF_MCS2 = 270,
WL_RATE_1X3_TXBF_MCS3 = 271,
WL_RATE_1X3_TXBF_MCS4 = 272,
WL_RATE_1X3_TXBF_MCS5 = 273,
WL_RATE_1X3_TXBF_MCS6 = 274,
WL_RATE_1X3_TXBF_MCS7 = 275,
WL_RATE_P_1X3_TXBF_MCS87 = 276,
WL_RATE_P_1X3_TXBF_MCS88 = 277,
WL_RATE_1X3_TXBF_VHT0SS1 = 268,
WL_RATE_1X3_TXBF_VHT1SS1 = 269,
WL_RATE_1X3_TXBF_VHT2SS1 = 270,
WL_RATE_1X3_TXBF_VHT3SS1 = 271,
WL_RATE_1X3_TXBF_VHT4SS1 = 272,
WL_RATE_1X3_TXBF_VHT5SS1 = 273,
WL_RATE_1X3_TXBF_VHT6SS1 = 274,
WL_RATE_1X3_TXBF_VHT7SS1 = 275,
WL_RATE_1X3_TXBF_VHT8SS1 = 276,
WL_RATE_1X3_TXBF_VHT9SS1 = 277,
WL_RATE_P_1X3_TXBF_VHT10SS1 = 278,
WL_RATE_P_1X3_TXBF_VHT11SS1 = 279,
WL_RATE_1X3_TXBF_HE0SS1 = 280,
WL_RATE_1X3_TXBF_HE1SS1 = 281,
WL_RATE_1X3_TXBF_HE2SS1 = 282,
WL_RATE_1X3_TXBF_HE3SS1 = 283,
WL_RATE_1X3_TXBF_HE4SS1 = 284,
WL_RATE_1X3_TXBF_HE5SS1 = 285,
WL_RATE_1X3_TXBF_HE6SS1 = 286,
WL_RATE_1X3_TXBF_HE7SS1 = 287,
WL_RATE_1X3_TXBF_HE8SS1 = 288,
WL_RATE_1X3_TXBF_HE9SS1 = 289,
WL_RATE_1X3_TXBF_HE10SS1 = 290,
WL_RATE_1X3_TXBF_HE11SS1 = 291,
/* 2 Streams expanded + 1 */
WL_RATE_2X3_TXBF_SDM_MCS8 = 292,
WL_RATE_2X3_TXBF_SDM_MCS9 = 293,
WL_RATE_2X3_TXBF_SDM_MCS10 = 294,
WL_RATE_2X3_TXBF_SDM_MCS11 = 295,
WL_RATE_2X3_TXBF_SDM_MCS12 = 296,
WL_RATE_2X3_TXBF_SDM_MCS13 = 297,
WL_RATE_2X3_TXBF_SDM_MCS14 = 298,
WL_RATE_2X3_TXBF_SDM_MCS15 = 299,
WL_RATE_P_2X3_TXBF_SDM_MCS99 = 300,
WL_RATE_P_2X3_TXBF_SDM_MCS100 = 301,
WL_RATE_2X3_TXBF_VHT0SS2 = 292,
WL_RATE_2X3_TXBF_VHT1SS2 = 293,
WL_RATE_2X3_TXBF_VHT2SS2 = 294,
WL_RATE_2X3_TXBF_VHT3SS2 = 295,
WL_RATE_2X3_TXBF_VHT4SS2 = 296,
WL_RATE_2X3_TXBF_VHT5SS2 = 297,
WL_RATE_2X3_TXBF_VHT6SS2 = 298,
WL_RATE_2X3_TXBF_VHT7SS2 = 299,
WL_RATE_2X3_TXBF_VHT8SS2 = 300,
WL_RATE_2X3_TXBF_VHT9SS2 = 301,
WL_RATE_P_2X3_TXBF_VHT10SS2 = 302,
WL_RATE_P_2X3_TXBF_VHT11SS2 = 303,
WL_RATE_2X3_TXBF_HE0SS2 = 304,
WL_RATE_2X3_TXBF_HE1SS2 = 305,
WL_RATE_2X3_TXBF_HE2SS2 = 306,
WL_RATE_2X3_TXBF_HE3SS2 = 307,
WL_RATE_2X3_TXBF_HE4SS2 = 308,
WL_RATE_2X3_TXBF_HE5SS2 = 309,
WL_RATE_2X3_TXBF_HE6SS2 = 310,
WL_RATE_2X3_TXBF_HE7SS2 = 311,
WL_RATE_2X3_TXBF_HE8SS2 = 312,
WL_RATE_2X3_TXBF_HE9SS2 = 313,
WL_RATE_2X3_TXBF_HE10SS2 = 314,
WL_RATE_2X3_TXBF_HE11SS2 = 315,
/* 3 Streams */
WL_RATE_3X3_TXBF_SDM_MCS16 = 316,
WL_RATE_3X3_TXBF_SDM_MCS17 = 317,
WL_RATE_3X3_TXBF_SDM_MCS18 = 318,
WL_RATE_3X3_TXBF_SDM_MCS19 = 319,
WL_RATE_3X3_TXBF_SDM_MCS20 = 320,
WL_RATE_3X3_TXBF_SDM_MCS21 = 321,
WL_RATE_3X3_TXBF_SDM_MCS22 = 322,
WL_RATE_3X3_TXBF_SDM_MCS23 = 323,
WL_RATE_P_3X3_TXBF_SDM_MCS101 = 324,
WL_RATE_P_3X3_TXBF_SDM_MCS102 = 325,
WL_RATE_3X3_TXBF_VHT0SS3 = 316,
WL_RATE_3X3_TXBF_VHT1SS3 = 317,
WL_RATE_3X3_TXBF_VHT2SS3 = 318,
WL_RATE_3X3_TXBF_VHT3SS3 = 319,
WL_RATE_3X3_TXBF_VHT4SS3 = 320,
WL_RATE_3X3_TXBF_VHT5SS3 = 321,
WL_RATE_3X3_TXBF_VHT6SS3 = 322,
WL_RATE_3X3_TXBF_VHT7SS3 = 323,
WL_RATE_3X3_TXBF_VHT8SS3 = 324,
WL_RATE_3X3_TXBF_VHT9SS3 = 325,
WL_RATE_P_3X3_TXBF_VHT10SS3 = 326,
WL_RATE_P_3X3_TXBF_VHT11SS3 = 327,
WL_RATE_3X3_TXBF_HE0SS3 = 328,
WL_RATE_3X3_TXBF_HE1SS3 = 329,
WL_RATE_3X3_TXBF_HE2SS3 = 330,
WL_RATE_3X3_TXBF_HE3SS3 = 331,
WL_RATE_3X3_TXBF_HE4SS3 = 332,
WL_RATE_3X3_TXBF_HE5SS3 = 333,
WL_RATE_3X3_TXBF_HE6SS3 = 334,
WL_RATE_3X3_TXBF_HE7SS3 = 335,
WL_RATE_3X3_TXBF_HE8SS3 = 336,
WL_RATE_3X3_TXBF_HE9SS3 = 337,
WL_RATE_3X3_TXBF_HE10SS3 = 338,
WL_RATE_3X3_TXBF_HE11SS3 = 339,
/************
* 4 chains *
************
*/
/* 1 Stream expanded + 3 */
WL_RATE_1X4_DSSS_1 = 340,
WL_RATE_1X4_DSSS_2 = 341,
WL_RATE_1X4_DSSS_5_5 = 342,
WL_RATE_1X4_DSSS_11 = 343,
WL_RATE_1X4_CDD_OFDM_6 = 344,
WL_RATE_1X4_CDD_OFDM_9 = 345,
WL_RATE_1X4_CDD_OFDM_12 = 346,
WL_RATE_1X4_CDD_OFDM_18 = 347,
WL_RATE_1X4_CDD_OFDM_24 = 348,
WL_RATE_1X4_CDD_OFDM_36 = 349,
WL_RATE_1X4_CDD_OFDM_48 = 350,
WL_RATE_1X4_CDD_OFDM_54 = 351,
WL_RATE_1X4_CDD_MCS0 = 352,
WL_RATE_1X4_CDD_MCS1 = 353,
WL_RATE_1X4_CDD_MCS2 = 354,
WL_RATE_1X4_CDD_MCS3 = 355,
WL_RATE_1X4_CDD_MCS4 = 356,
WL_RATE_1X4_CDD_MCS5 = 357,
WL_RATE_1X4_CDD_MCS6 = 358,
WL_RATE_1X4_CDD_MCS7 = 359,
WL_RATE_P_1X4_CDD_MCS87 = 360,
WL_RATE_P_1X4_CDD_MCS88 = 361,
WL_RATE_1X4_VHT0SS1 = 352,
WL_RATE_1X4_VHT1SS1 = 353,
WL_RATE_1X4_VHT2SS1 = 354,
WL_RATE_1X4_VHT3SS1 = 355,
WL_RATE_1X4_VHT4SS1 = 356,
WL_RATE_1X4_VHT5SS1 = 357,
WL_RATE_1X4_VHT6SS1 = 358,
WL_RATE_1X4_VHT7SS1 = 359,
WL_RATE_1X4_VHT8SS1 = 360,
WL_RATE_1X4_VHT9SS1 = 361,
WL_RATE_P_1X4_VHT10SS1 = 362,
WL_RATE_P_1X4_VHT11SS1 = 363,
WL_RATE_1X4_HE0SS1 = 364,
WL_RATE_1X4_HE1SS1 = 365,
WL_RATE_1X4_HE2SS1 = 366,
WL_RATE_1X4_HE3SS1 = 367,
WL_RATE_1X4_HE4SS1 = 368,
WL_RATE_1X4_HE5SS1 = 369,
WL_RATE_1X4_HE6SS1 = 370,
WL_RATE_1X4_HE7SS1 = 371,
WL_RATE_1X4_HE8SS1 = 372,
WL_RATE_1X4_HE9SS1 = 373,
WL_RATE_1X4_HE10SS1 = 374,
WL_RATE_1X4_HE11SS1 = 375,
/* 2 Streams expanded + 2 */
WL_RATE_2X4_STBC_MCS0 = 376,
WL_RATE_2X4_STBC_MCS1 = 377,
WL_RATE_2X4_STBC_MCS2 = 378,
WL_RATE_2X4_STBC_MCS3 = 379,
WL_RATE_2X4_STBC_MCS4 = 380,
WL_RATE_2X4_STBC_MCS5 = 381,
WL_RATE_2X4_STBC_MCS6 = 382,
WL_RATE_2X4_STBC_MCS7 = 383,
WL_RATE_P_2X4_STBC_MCS87 = 384,
WL_RATE_P_2X4_STBC_MCS88 = 385,
WL_RATE_2X4_STBC_VHT0SS1 = 376,
WL_RATE_2X4_STBC_VHT1SS1 = 377,
WL_RATE_2X4_STBC_VHT2SS1 = 378,
WL_RATE_2X4_STBC_VHT3SS1 = 379,
WL_RATE_2X4_STBC_VHT4SS1 = 380,
WL_RATE_2X4_STBC_VHT5SS1 = 381,
WL_RATE_2X4_STBC_VHT6SS1 = 382,
WL_RATE_2X4_STBC_VHT7SS1 = 383,
WL_RATE_2X4_STBC_VHT8SS1 = 384,
WL_RATE_2X4_STBC_VHT9SS1 = 385,
WL_RATE_P_2X4_STBC_VHT10SS1 = 386,
WL_RATE_P_2X4_STBC_VHT11SS1 = 387,
WL_RATE_2X4_SDM_MCS8 = 388,
WL_RATE_2X4_SDM_MCS9 = 389,
WL_RATE_2X4_SDM_MCS10 = 390,
WL_RATE_2X4_SDM_MCS11 = 391,
WL_RATE_2X4_SDM_MCS12 = 392,
WL_RATE_2X4_SDM_MCS13 = 393,
WL_RATE_2X4_SDM_MCS14 = 394,
WL_RATE_2X4_SDM_MCS15 = 395,
WL_RATE_P_2X4_SDM_MCS99 = 396,
WL_RATE_P_2X4_SDM_MCS100 = 397,
WL_RATE_2X4_VHT0SS2 = 388,
WL_RATE_2X4_VHT1SS2 = 389,
WL_RATE_2X4_VHT2SS2 = 390,
WL_RATE_2X4_VHT3SS2 = 391,
WL_RATE_2X4_VHT4SS2 = 392,
WL_RATE_2X4_VHT5SS2 = 393,
WL_RATE_2X4_VHT6SS2 = 394,
WL_RATE_2X4_VHT7SS2 = 395,
WL_RATE_2X4_VHT8SS2 = 396,
WL_RATE_2X4_VHT9SS2 = 397,
WL_RATE_P_2X4_VHT10SS2 = 398,
WL_RATE_P_2X4_VHT11SS2 = 399,
WL_RATE_2X4_HE0SS2 = 400,
WL_RATE_2X4_HE1SS2 = 401,
WL_RATE_2X4_HE2SS2 = 402,
WL_RATE_2X4_HE3SS2 = 403,
WL_RATE_2X4_HE4SS2 = 404,
WL_RATE_2X4_HE5SS2 = 405,
WL_RATE_2X4_HE6SS2 = 406,
WL_RATE_2X4_HE7SS2 = 407,
WL_RATE_2X4_HE8SS2 = 408,
WL_RATE_2X4_HE9SS2 = 409,
WL_RATE_2X4_HE10SS2 = 410,
WL_RATE_2X4_HE11SS2 = 411,
/* 3 Streams expanded + 1 */
WL_RATE_3X4_SDM_MCS16 = 412,
WL_RATE_3X4_SDM_MCS17 = 413,
WL_RATE_3X4_SDM_MCS18 = 414,
WL_RATE_3X4_SDM_MCS19 = 415,
WL_RATE_3X4_SDM_MCS20 = 416,
WL_RATE_3X4_SDM_MCS21 = 417,
WL_RATE_3X4_SDM_MCS22 = 418,
WL_RATE_3X4_SDM_MCS23 = 419,
WL_RATE_P_3X4_SDM_MCS101 = 420,
WL_RATE_P_3X4_SDM_MCS102 = 421,
WL_RATE_3X4_VHT0SS3 = 412,
WL_RATE_3X4_VHT1SS3 = 413,
WL_RATE_3X4_VHT2SS3 = 414,
WL_RATE_3X4_VHT3SS3 = 415,
WL_RATE_3X4_VHT4SS3 = 416,
WL_RATE_3X4_VHT5SS3 = 417,
WL_RATE_3X4_VHT6SS3 = 418,
WL_RATE_3X4_VHT7SS3 = 419,
WL_RATE_3X4_VHT8SS3 = 420,
WL_RATE_3X4_VHT9SS3 = 421,
WL_RATE_P_3X4_VHT10SS3 = 422,
WL_RATE_P_3X4_VHT11SS3 = 423,
WL_RATE_3X4_HE0SS3 = 424,
WL_RATE_3X4_HE1SS3 = 425,
WL_RATE_3X4_HE2SS3 = 426,
WL_RATE_3X4_HE3SS3 = 427,
WL_RATE_3X4_HE4SS3 = 428,
WL_RATE_3X4_HE5SS3 = 429,
WL_RATE_3X4_HE6SS3 = 430,
WL_RATE_3X4_HE7SS3 = 431,
WL_RATE_3X4_HE8SS3 = 432,
WL_RATE_3X4_HE9SS3 = 433,
WL_RATE_3X4_HE10SS3 = 434,
WL_RATE_3X4_HE11SS3 = 435,
/* 4 Streams */
WL_RATE_4X4_SDM_MCS24 = 436,
WL_RATE_4X4_SDM_MCS25 = 437,
WL_RATE_4X4_SDM_MCS26 = 438,
WL_RATE_4X4_SDM_MCS27 = 439,
WL_RATE_4X4_SDM_MCS28 = 440,
WL_RATE_4X4_SDM_MCS29 = 441,
WL_RATE_4X4_SDM_MCS30 = 442,
WL_RATE_4X4_SDM_MCS31 = 443,
WL_RATE_P_4X4_SDM_MCS103 = 444,
WL_RATE_P_4X4_SDM_MCS104 = 445,
WL_RATE_4X4_VHT0SS4 = 436,
WL_RATE_4X4_VHT1SS4 = 437,
WL_RATE_4X4_VHT2SS4 = 438,
WL_RATE_4X4_VHT3SS4 = 439,
WL_RATE_4X4_VHT4SS4 = 440,
WL_RATE_4X4_VHT5SS4 = 441,
WL_RATE_4X4_VHT6SS4 = 442,
WL_RATE_4X4_VHT7SS4 = 443,
WL_RATE_4X4_VHT8SS4 = 444,
WL_RATE_4X4_VHT9SS4 = 445,
WL_RATE_P_4X4_VHT10SS4 = 446,
WL_RATE_P_4X4_VHT11SS4 = 447,
WL_RATE_4X4_HE0SS4 = 448,
WL_RATE_4X4_HE1SS4 = 449,
WL_RATE_4X4_HE2SS4 = 450,
WL_RATE_4X4_HE3SS4 = 451,
WL_RATE_4X4_HE4SS4 = 452,
WL_RATE_4X4_HE5SS4 = 453,
WL_RATE_4X4_HE6SS4 = 454,
WL_RATE_4X4_HE7SS4 = 455,
WL_RATE_4X4_HE8SS4 = 456,
WL_RATE_4X4_HE9SS4 = 457,
WL_RATE_4X4_HE10SS4 = 458,
WL_RATE_4X4_HE11SS4 = 459,
/****************************
* TX Beamforming, 4 chains *
****************************
*/
/* 1 Stream expanded + 3 */
WL_RATE_1X4_TXBF_OFDM_6 = 460,
WL_RATE_1X4_TXBF_OFDM_9 = 461,
WL_RATE_1X4_TXBF_OFDM_12 = 462,
WL_RATE_1X4_TXBF_OFDM_18 = 463,
WL_RATE_1X4_TXBF_OFDM_24 = 464,
WL_RATE_1X4_TXBF_OFDM_36 = 465,
WL_RATE_1X4_TXBF_OFDM_48 = 466,
WL_RATE_1X4_TXBF_OFDM_54 = 467,
WL_RATE_1X4_TXBF_MCS0 = 468,
WL_RATE_1X4_TXBF_MCS1 = 469,
WL_RATE_1X4_TXBF_MCS2 = 470,
WL_RATE_1X4_TXBF_MCS3 = 471,
WL_RATE_1X4_TXBF_MCS4 = 472,
WL_RATE_1X4_TXBF_MCS5 = 473,
WL_RATE_1X4_TXBF_MCS6 = 474,
WL_RATE_1X4_TXBF_MCS7 = 475,
WL_RATE_P_1X4_TXBF_MCS87 = 476,
WL_RATE_P_1X4_TXBF_MCS88 = 477,
WL_RATE_1X4_TXBF_VHT0SS1 = 468,
WL_RATE_1X4_TXBF_VHT1SS1 = 469,
WL_RATE_1X4_TXBF_VHT2SS1 = 470,
WL_RATE_1X4_TXBF_VHT3SS1 = 471,
WL_RATE_1X4_TXBF_VHT4SS1 = 472,
WL_RATE_1X4_TXBF_VHT5SS1 = 473,
WL_RATE_1X4_TXBF_VHT6SS1 = 474,
WL_RATE_1X4_TXBF_VHT7SS1 = 475,
WL_RATE_1X4_TXBF_VHT8SS1 = 476,
WL_RATE_1X4_TXBF_VHT9SS1 = 477,
WL_RATE_P_1X4_TXBF_VHT10SS1 = 478,
WL_RATE_P_1X4_TXBF_VHT11SS1 = 479,
WL_RATE_1X4_TXBF_HE0SS1 = 480,
WL_RATE_1X4_TXBF_HE1SS1 = 481,
WL_RATE_1X4_TXBF_HE2SS1 = 482,
WL_RATE_1X4_TXBF_HE3SS1 = 483,
WL_RATE_1X4_TXBF_HE4SS1 = 484,
WL_RATE_1X4_TXBF_HE5SS1 = 485,
WL_RATE_1X4_TXBF_HE6SS1 = 486,
WL_RATE_1X4_TXBF_HE7SS1 = 487,
WL_RATE_1X4_TXBF_HE8SS1 = 488,
WL_RATE_1X4_TXBF_HE9SS1 = 489,
WL_RATE_1X4_TXBF_HE10SS1 = 490,
WL_RATE_1X4_TXBF_HE11SS1 = 491,
/* 2 Streams expanded + 2 */
WL_RATE_2X4_TXBF_SDM_MCS8 = 492,
WL_RATE_2X4_TXBF_SDM_MCS9 = 493,
WL_RATE_2X4_TXBF_SDM_MCS10 = 494,
WL_RATE_2X4_TXBF_SDM_MCS11 = 495,
WL_RATE_2X4_TXBF_SDM_MCS12 = 496,
WL_RATE_2X4_TXBF_SDM_MCS13 = 497,
WL_RATE_2X4_TXBF_SDM_MCS14 = 498,
WL_RATE_2X4_TXBF_SDM_MCS15 = 499,
WL_RATE_P_2X4_TXBF_SDM_MCS99 = 500,
WL_RATE_P_2X4_TXBF_SDM_MCS100 = 501,
WL_RATE_2X4_TXBF_VHT0SS2 = 492,
WL_RATE_2X4_TXBF_VHT1SS2 = 493,
WL_RATE_2X4_TXBF_VHT2SS2 = 494,
WL_RATE_2X4_TXBF_VHT3SS2 = 495,
WL_RATE_2X4_TXBF_VHT4SS2 = 496,
WL_RATE_2X4_TXBF_VHT5SS2 = 497,
WL_RATE_2X4_TXBF_VHT6SS2 = 498,
WL_RATE_2X4_TXBF_VHT7SS2 = 499,
WL_RATE_2X4_TXBF_VHT8SS2 = 500,
WL_RATE_2X4_TXBF_VHT9SS2 = 501,
WL_RATE_P_2X4_TXBF_VHT10SS2 = 502,
WL_RATE_P_2X4_TXBF_VHT11SS2 = 503,
WL_RATE_2X4_TXBF_HE0SS2 = 504,
WL_RATE_2X4_TXBF_HE1SS2 = 505,
WL_RATE_2X4_TXBF_HE2SS2 = 506,
WL_RATE_2X4_TXBF_HE3SS2 = 507,
WL_RATE_2X4_TXBF_HE4SS2 = 508,
WL_RATE_2X4_TXBF_HE5SS2 = 509,
WL_RATE_2X4_TXBF_HE6SS2 = 510,
WL_RATE_2X4_TXBF_HE7SS2 = 511,
WL_RATE_2X4_TXBF_HE8SS2 = 512,
WL_RATE_2X4_TXBF_HE9SS2 = 513,
WL_RATE_2X4_TXBF_HE10SS2 = 514,
WL_RATE_2X4_TXBF_HE11SS2 = 515,
/* 3 Streams expanded + 1 */
WL_RATE_3X4_TXBF_SDM_MCS16 = 516,
WL_RATE_3X4_TXBF_SDM_MCS17 = 517,
WL_RATE_3X4_TXBF_SDM_MCS18 = 518,
WL_RATE_3X4_TXBF_SDM_MCS19 = 519,
WL_RATE_3X4_TXBF_SDM_MCS20 = 520,
WL_RATE_3X4_TXBF_SDM_MCS21 = 521,
WL_RATE_3X4_TXBF_SDM_MCS22 = 522,
WL_RATE_3X4_TXBF_SDM_MCS23 = 523,
WL_RATE_P_3X4_TXBF_SDM_MCS101 = 524,
WL_RATE_P_3X4_TXBF_SDM_MCS102 = 525,
WL_RATE_3X4_TXBF_VHT0SS3 = 516,
WL_RATE_3X4_TXBF_VHT1SS3 = 517,
WL_RATE_3X4_TXBF_VHT2SS3 = 518,
WL_RATE_3X4_TXBF_VHT3SS3 = 519,
WL_RATE_3X4_TXBF_VHT4SS3 = 520,
WL_RATE_3X4_TXBF_VHT5SS3 = 521,
WL_RATE_3X4_TXBF_VHT6SS3 = 522,
WL_RATE_3X4_TXBF_VHT7SS3 = 523,
WL_RATE_P_3X4_TXBF_VHT8SS3 = 524,
WL_RATE_P_3X4_TXBF_VHT9SS3 = 525,
WL_RATE_P_3X4_TXBF_VHT10SS3 = 526,
WL_RATE_P_3X4_TXBF_VHT11SS3 = 527,
WL_RATE_3X4_TXBF_HE0SS3 = 528,
WL_RATE_3X4_TXBF_HE1SS3 = 529,
WL_RATE_3X4_TXBF_HE2SS3 = 530,
WL_RATE_3X4_TXBF_HE3SS3 = 531,
WL_RATE_3X4_TXBF_HE4SS3 = 532,
WL_RATE_3X4_TXBF_HE5SS3 = 533,
WL_RATE_3X4_TXBF_HE6SS3 = 534,
WL_RATE_3X4_TXBF_HE7SS3 = 535,
WL_RATE_3X4_TXBF_HE8SS3 = 536,
WL_RATE_3X4_TXBF_HE9SS3 = 537,
WL_RATE_3X4_TXBF_HE10SS3 = 538,
WL_RATE_3X4_TXBF_HE11SS3 = 539,
/* 4 Streams */
WL_RATE_4X4_TXBF_SDM_MCS24 = 540,
WL_RATE_4X4_TXBF_SDM_MCS25 = 541,
WL_RATE_4X4_TXBF_SDM_MCS26 = 542,
WL_RATE_4X4_TXBF_SDM_MCS27 = 543,
WL_RATE_4X4_TXBF_SDM_MCS28 = 544,
WL_RATE_4X4_TXBF_SDM_MCS29 = 545,
WL_RATE_4X4_TXBF_SDM_MCS30 = 546,
WL_RATE_4X4_TXBF_SDM_MCS31 = 547,
WL_RATE_P_4X4_TXBF_SDM_MCS103 = 548,
WL_RATE_P_4X4_TXBF_SDM_MCS104 = 549,
WL_RATE_4X4_TXBF_VHT0SS4 = 540,
WL_RATE_4X4_TXBF_VHT1SS4 = 541,
WL_RATE_4X4_TXBF_VHT2SS4 = 542,
WL_RATE_4X4_TXBF_VHT3SS4 = 543,
WL_RATE_4X4_TXBF_VHT4SS4 = 544,
WL_RATE_4X4_TXBF_VHT5SS4 = 545,
WL_RATE_4X4_TXBF_VHT6SS4 = 546,
WL_RATE_4X4_TXBF_VHT7SS4 = 547,
WL_RATE_P_4X4_TXBF_VHT8SS4 = 548,
WL_RATE_P_4X4_TXBF_VHT9SS4 = 549,
WL_RATE_P_4X4_TXBF_VHT10SS4 = 550,
WL_RATE_P_4X4_TXBF_VHT11SS4 = 551,
WL_RATE_4X4_TXBF_HE0SS4 = 552,
WL_RATE_4X4_TXBF_HE1SS4 = 553,
WL_RATE_4X4_TXBF_HE2SS4 = 554,
WL_RATE_4X4_TXBF_HE3SS4 = 555,
WL_RATE_4X4_TXBF_HE4SS4 = 556,
WL_RATE_4X4_TXBF_HE5SS4 = 557,
WL_RATE_4X4_TXBF_HE6SS4 = 558,
WL_RATE_4X4_TXBF_HE7SS4 = 559,
WL_RATE_4X4_TXBF_HE8SS4 = 560,
WL_RATE_4X4_TXBF_HE9SS4 = 561,
WL_RATE_4X4_TXBF_HE10SS4 = 562,
WL_RATE_4X4_TXBF_HE11SS4 = 563
} clm_rates_t;
/* Number of rate codes */
#define WL_NUMRATES 564
/* This enum maps 802.11ax OFDMA (RU) 'rates' to a CLM index */
typedef enum clm_ru_rates {
/* RU26 OFDMA UL rates */
WL_RU_RATE_1X1_26SS1 = 0,
WL_RU_RATE_1X2_26SS1 = 1,
WL_RU_RATE_2X2_26SS2 = 2,
WL_RU_RATE_1X2_TXBF_26SS1 = 3,
WL_RU_RATE_2X2_TXBF_26SS2 = 4,
WL_RU_RATE_1X3_26SS1 = 5,
WL_RU_RATE_2X3_26SS2 = 6,
WL_RU_RATE_3X3_26SS3 = 7,
WL_RU_RATE_1X3_TXBF_26SS1 = 8,
WL_RU_RATE_2X3_TXBF_26SS2 = 9,
WL_RU_RATE_3X3_TXBF_26SS3 = 10,
WL_RU_RATE_1X4_26SS1 = 11,
WL_RU_RATE_2X4_26SS2 = 12,
WL_RU_RATE_3X4_26SS3 = 13,
WL_RU_RATE_4X4_26SS4 = 14,
WL_RU_RATE_1X4_TXBF_26SS1 = 15,
WL_RU_RATE_2X4_TXBF_26SS2 = 16,
WL_RU_RATE_3X4_TXBF_26SS3 = 17,
WL_RU_RATE_4X4_TXBF_26SS4 = 18,
/* RU52 OFDMA UL rates */
WL_RU_RATE_1X1_52SS1 = 19,
WL_RU_RATE_1X2_52SS1 = 20,
WL_RU_RATE_2X2_52SS2 = 21,
WL_RU_RATE_1X2_TXBF_52SS1 = 22,
WL_RU_RATE_2X2_TXBF_52SS2 = 23,
WL_RU_RATE_1X3_52SS1 = 24,
WL_RU_RATE_2X3_52SS2 = 25,
WL_RU_RATE_3X3_52SS3 = 26,
WL_RU_RATE_1X3_TXBF_52SS1 = 27,
WL_RU_RATE_2X3_TXBF_52SS2 = 28,
WL_RU_RATE_3X3_TXBF_52SS3 = 29,
WL_RU_RATE_1X4_52SS1 = 30,
WL_RU_RATE_2X4_52SS2 = 31,
WL_RU_RATE_3X4_52SS3 = 32,
WL_RU_RATE_4X4_52SS4 = 33,
WL_RU_RATE_1X4_TXBF_52SS1 = 34,
WL_RU_RATE_2X4_TXBF_52SS2 = 35,
WL_RU_RATE_3X4_TXBF_52SS3 = 36,
WL_RU_RATE_4X4_TXBF_52SS4 = 37,
/* RU106 OFDMA UL rates */
WL_RU_RATE_1X1_106SS1 = 38,
WL_RU_RATE_1X2_106SS1 = 39,
WL_RU_RATE_2X2_106SS2 = 40,
WL_RU_RATE_1X2_TXBF_106SS1 = 41,
WL_RU_RATE_2X2_TXBF_106SS2 = 42,
WL_RU_RATE_1X3_106SS1 = 43,
WL_RU_RATE_2X3_106SS2 = 44,
WL_RU_RATE_3X3_106SS3 = 45,
WL_RU_RATE_1X3_TXBF_106SS1 = 46,
WL_RU_RATE_2X3_TXBF_106SS2 = 47,
WL_RU_RATE_3X3_TXBF_106SS3 = 48,
WL_RU_RATE_1X4_106SS1 = 49,
WL_RU_RATE_2X4_106SS2 = 50,
WL_RU_RATE_3X4_106SS3 = 51,
WL_RU_RATE_4X4_106SS4 = 52,
WL_RU_RATE_1X4_TXBF_106SS1 = 53,
WL_RU_RATE_2X4_TXBF_106SS2 = 54,
WL_RU_RATE_3X4_TXBF_106SS3 = 55,
WL_RU_RATE_4X4_TXBF_106SS4 = 56,
/* Upper Bound OFDMA DL 'rates' */
WL_RU_RATE_1X1_UBSS1 = 57,
WL_RU_RATE_1X2_UBSS1 = 58,
WL_RU_RATE_2X2_UBSS2 = 59,
WL_RU_RATE_1X2_TXBF_UBSS1 = 60,
WL_RU_RATE_2X2_TXBF_UBSS2 = 61,
WL_RU_RATE_1X3_UBSS1 = 62,
WL_RU_RATE_2X3_UBSS2 = 63,
WL_RU_RATE_3X3_UBSS3 = 64,
WL_RU_RATE_1X3_TXBF_UBSS1 = 65,
WL_RU_RATE_2X3_TXBF_UBSS2 = 66,
WL_RU_RATE_3X3_TXBF_UBSS3 = 67,
WL_RU_RATE_1X4_UBSS1 = 68,
WL_RU_RATE_2X4_UBSS2 = 69,
WL_RU_RATE_3X4_UBSS3 = 70,
WL_RU_RATE_4X4_UBSS4 = 71,
WL_RU_RATE_1X4_TXBF_UBSS1 = 72,
WL_RU_RATE_2X4_TXBF_UBSS2 = 73,
WL_RU_RATE_3X4_TXBF_UBSS3 = 74,
WL_RU_RATE_4X4_TXBF_UBSS4 = 75,
/* Less Upper Bound OFDMA DL 'rates' */
WL_RU_RATE_1X1_LUBSS1 = 76,
WL_RU_RATE_1X2_LUBSS1 = 77,
WL_RU_RATE_2X2_LUBSS2 = 78,
WL_RU_RATE_1X2_TXBF_LUBSS1 = 79,
WL_RU_RATE_2X2_TXBF_LUBSS2 = 80,
WL_RU_RATE_1X3_LUBSS1 = 81,
WL_RU_RATE_2X3_LUBSS2 = 82,
WL_RU_RATE_3X3_LUBSS3 = 83,
WL_RU_RATE_1X3_TXBF_LUBSS1 = 84,
WL_RU_RATE_2X3_TXBF_LUBSS2 = 85,
WL_RU_RATE_3X3_TXBF_LUBSS3 = 86,
WL_RU_RATE_1X4_LUBSS1 = 87,
WL_RU_RATE_2X4_LUBSS2 = 88,
WL_RU_RATE_3X4_LUBSS3 = 89,
WL_RU_RATE_4X4_LUBSS4 = 90,
WL_RU_RATE_1X4_TXBF_LUBSS1 = 91,
WL_RU_RATE_2X4_TXBF_LUBSS2 = 92,
WL_RU_RATE_3X4_TXBF_LUBSS3 = 93,
WL_RU_RATE_4X4_TXBF_LUBSS4 = 94,
/* RU242 OFDMA UL rates */
WL_RU_RATE_1X1_242SS1 = 95,
WL_RU_RATE_1X2_242SS1 = 96,
WL_RU_RATE_2X2_242SS2 = 97,
WL_RU_RATE_1X2_TXBF_242SS1 = 98,
WL_RU_RATE_2X2_TXBF_242SS2 = 99,
WL_RU_RATE_1X3_242SS1 = 100,
WL_RU_RATE_2X3_242SS2 = 101,
WL_RU_RATE_3X3_242SS3 = 102,
WL_RU_RATE_1X3_TXBF_242SS1 = 103,
WL_RU_RATE_2X3_TXBF_242SS2 = 104,
WL_RU_RATE_3X3_TXBF_242SS3 = 105,
WL_RU_RATE_1X4_242SS1 = 106,
WL_RU_RATE_2X4_242SS2 = 107,
WL_RU_RATE_3X4_242SS3 = 108,
WL_RU_RATE_4X4_242SS4 = 109,
WL_RU_RATE_1X4_TXBF_242SS1 = 110,
WL_RU_RATE_2X4_TXBF_242SS2 = 111,
WL_RU_RATE_3X4_TXBF_242SS3 = 112,
WL_RU_RATE_4X4_TXBF_242SS4 = 113,
/* RU484 OFDMA UL rates */
WL_RU_RATE_1X1_484SS1 = 114,
WL_RU_RATE_1X2_484SS1 = 115,
WL_RU_RATE_2X2_484SS2 = 116,
WL_RU_RATE_1X2_TXBF_484SS1 = 117,
WL_RU_RATE_2X2_TXBF_484SS2 = 118,
WL_RU_RATE_1X3_484SS1 = 119,
WL_RU_RATE_2X3_484SS2 = 120,
WL_RU_RATE_3X3_484SS3 = 121,
WL_RU_RATE_1X3_TXBF_484SS1 = 122,
WL_RU_RATE_2X3_TXBF_484SS2 = 123,
WL_RU_RATE_3X3_TXBF_484SS3 = 124,
WL_RU_RATE_1X4_484SS1 = 125,
WL_RU_RATE_2X4_484SS2 = 126,
WL_RU_RATE_3X4_484SS3 = 127,
WL_RU_RATE_4X4_484SS4 = 128,
WL_RU_RATE_1X4_TXBF_484SS1 = 129,
WL_RU_RATE_2X4_TXBF_484SS2 = 130,
WL_RU_RATE_3X4_TXBF_484SS3 = 131,
WL_RU_RATE_4X4_TXBF_484SS4 = 132,
/* RU996 OFDMA UL rates */
WL_RU_RATE_1X1_996SS1 = 133,
WL_RU_RATE_1X2_996SS1 = 134,
WL_RU_RATE_2X2_996SS2 = 135,
WL_RU_RATE_1X2_TXBF_996SS1 = 136,
WL_RU_RATE_2X2_TXBF_996SS2 = 137,
WL_RU_RATE_1X3_996SS1 = 138,
WL_RU_RATE_2X3_996SS2 = 139,
WL_RU_RATE_3X3_996SS3 = 140,
WL_RU_RATE_1X3_TXBF_996SS1 = 141,
WL_RU_RATE_2X3_TXBF_996SS2 = 142,
WL_RU_RATE_3X3_TXBF_996SS3 = 143,
WL_RU_RATE_1X4_996SS1 = 144,
WL_RU_RATE_2X4_996SS2 = 145,
WL_RU_RATE_3X4_996SS3 = 146,
WL_RU_RATE_4X4_996SS4 = 147,
WL_RU_RATE_1X4_TXBF_996SS1 = 148,
WL_RU_RATE_2X4_TXBF_996SS2 = 149,
WL_RU_RATE_3X4_TXBF_996SS3 = 150,
WL_RU_RATE_4X4_TXBF_996SS4 = 151
} clm_ru_rates_t;
/* Number of OFDMA rate codes */
#define WL_RU_NUMRATES 152
/* MCS rates */
#define WLC_MAX_VHT_MCS 11 /**< Std VHT MCS 0-9 plus prop VHT MCS 10-11 */
#define WLC_MAX_HE_MCS 11 /**< Std HE MCS 0-11 */
/* Convert encoded rate value in plcp header to numerical rates in 500 KHz increments */
#define OFDM_PHY2MAC_RATE(rlpt) plcp_ofdm_rate_tbl[(rlpt) & 0x7]
#define CCK_PHY2MAC_RATE(signal) ((signal)/5)
/* 'proprietary' string should not exist in open source(OEM_ANDROID) */
/* given a proprietary MCS, get number of spatial streams */
#define GET_PROPRIETARY_11N_MCS_NSS(mcs) (1 + ((mcs) - 85) / 8)
#define GET_11N_MCS_NSS(mcs) ((mcs) < 32 ? (1 + ((mcs) / 8)) : \
((mcs) == 32 ? 1 : GET_PROPRIETARY_11N_MCS_NSS(mcs)))
#define IS_PROPRIETARY_11N_MCS(mcs) FALSE
#define IS_PROPRIETARY_11N_SS_MCS(mcs) FALSE /**< is proprietary HT single stream MCS */
/* Macros to be used for calculating rate from PLCP (wf_he_plcp_to_rate) */
#define HE_SU_PLCP2RATE_MCS_MASK 0x0F
#define HE_SU_PLCP2RATE_MCS_SHIFT 0
#define HE_SU_PLCP2RATE_NSS_MASK 0x70
#define HE_SU_PLCP2RATE_NSS_SHIFT 4
#define HE_MU_PLCP2RATE_LTF_GI_MASK 0x30
#define HE_MU_PLCP2RATE_LTF_GI_SHIFT 4
#define HE_MU_PLCP2RATE_STBC_MASK 0x40
#define HE_MU_PLCP2RATE_STBC_SHIFT 6
/* Macros for HE LTF and GI */
#define HE_IS_1X_LTF(gi) ((gi) == WL_RSPEC_HE_1x_LTF_GI_0_8us)
#define HE_IS_2X_LTF(gi) (((gi) == WL_RSPEC_HE_2x_LTF_GI_0_8us) || \
((gi) == WL_RSPEC_HE_2x_LTF_GI_1_6us))
#define HE_IS_4X_LTF(gi) ((gi) == WL_RSPEC_HE_4x_LTF_GI_3_2us)
#define HE_IS_GI_0_8us(gi) (((gi) == WL_RSPEC_HE_1x_LTF_GI_0_8us) || \
((gi) == WL_RSPEC_HE_2x_LTF_GI_0_8us))
#define HE_IS_GI_1_6us(gi) ((gi) == WL_RSPEC_HE_2x_LTF_GI_1_6us)
#define HE_IS_GI_3_2us(gi) ((gi) == WL_RSPEC_HE_4x_LTF_GI_3_2us)
extern const uint8 plcp_ofdm_rate_tbl[];
uint8 wf_get_single_stream_mcs(uint mcs);
/* extract NSS:MCS portions of the rspec */
#define WF_NON_HT_MCS 0x80
uint8 wf_vht_plcp_to_rate(uint8 *plcp);
uint8 wf_he_plcp_to_rate(uint8 *plcp, bool is_mu);
/* convert rate from mcs to Kbps */
uint wf_mcs_to_rate(uint mcs, uint nss, uint bw, int sgi);
uint wf_he_mcs_to_rate(uint mcs, uint nss, uint bw, uint gi, bool dcm);
uint wf_mcs_to_Ndbps(uint mcs, uint nss, uint bw);
uint wf_he_mcs_to_Ndbps(uint mcs, uint nss, uint bw, bool dcm);
uint32 wf_he_mcs_ru_to_ndbps(uint8 mcs, uint8 nss, bool dcm, uint8 ru_index);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _bcmwifi_rates_h_ */