blob: 4b6399ebc3bcf68c83d9f1c9990c435eddbcdf50 [file] [log] [blame]
/*
* Indices for 802.11 a/b/g/n/ac 1-3 chain symmetric transmit rates
*
* Copyright (C) 1999-2013, Broadcom Corporation
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $Id: bcmwifi_rates.h 5187 2012-06-29 06:17:50Z $
*/
#ifndef _bcmwifi_rates_h_
#define _bcmwifi_rates_h_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define WL_RATESET_SZ_DSSS 4
#define WL_RATESET_SZ_OFDM 8
#define WL_RATESET_SZ_HT_MCS 8
#define WL_RATESET_SZ_VHT_MCS 10
#define WL_TX_CHAINS_MAX 3
#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_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_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_t;
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_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,
/************
* 2 chains *
************
*/
/* 1 Stream expanded + 1 */
WL_RATE_1X2_DSSS_1 = 22,
WL_RATE_1X2_DSSS_2 = 23,
WL_RATE_1X2_DSSS_5_5 = 24,
WL_RATE_1X2_DSSS_11 = 25,
WL_RATE_1X2_CDD_OFDM_6 = 26,
WL_RATE_1X2_CDD_OFDM_9 = 27,
WL_RATE_1X2_CDD_OFDM_12 = 28,
WL_RATE_1X2_CDD_OFDM_18 = 29,
WL_RATE_1X2_CDD_OFDM_24 = 30,
WL_RATE_1X2_CDD_OFDM_36 = 31,
WL_RATE_1X2_CDD_OFDM_48 = 32,
WL_RATE_1X2_CDD_OFDM_54 = 33,
WL_RATE_1X2_CDD_MCS0 = 34,
WL_RATE_1X2_CDD_MCS1 = 35,
WL_RATE_1X2_CDD_MCS2 = 36,
WL_RATE_1X2_CDD_MCS3 = 37,
WL_RATE_1X2_CDD_MCS4 = 38,
WL_RATE_1X2_CDD_MCS5 = 39,
WL_RATE_1X2_CDD_MCS6 = 40,
WL_RATE_1X2_CDD_MCS7 = 41,
WL_RATE_1X2_VHT0SS1 = 34,
WL_RATE_1X2_VHT1SS1 = 35,
WL_RATE_1X2_VHT2SS1 = 36,
WL_RATE_1X2_VHT3SS1 = 37,
WL_RATE_1X2_VHT4SS1 = 38,
WL_RATE_1X2_VHT5SS1 = 39,
WL_RATE_1X2_VHT6SS1 = 40,
WL_RATE_1X2_VHT7SS1 = 41,
WL_RATE_1X2_VHT8SS1 = 42,
WL_RATE_1X2_VHT9SS1 = 43,
/* 2 Streams */
WL_RATE_2X2_STBC_MCS0 = 44,
WL_RATE_2X2_STBC_MCS1 = 45,
WL_RATE_2X2_STBC_MCS2 = 46,
WL_RATE_2X2_STBC_MCS3 = 47,
WL_RATE_2X2_STBC_MCS4 = 48,
WL_RATE_2X2_STBC_MCS5 = 49,
WL_RATE_2X2_STBC_MCS6 = 50,
WL_RATE_2X2_STBC_MCS7 = 51,
WL_RATE_2X2_STBC_VHT0SS1 = 44,
WL_RATE_2X2_STBC_VHT1SS1 = 45,
WL_RATE_2X2_STBC_VHT2SS1 = 46,
WL_RATE_2X2_STBC_VHT3SS1 = 47,
WL_RATE_2X2_STBC_VHT4SS1 = 48,
WL_RATE_2X2_STBC_VHT5SS1 = 49,
WL_RATE_2X2_STBC_VHT6SS1 = 50,
WL_RATE_2X2_STBC_VHT7SS1 = 51,
WL_RATE_2X2_STBC_VHT8SS1 = 52,
WL_RATE_2X2_STBC_VHT9SS1 = 53,
WL_RATE_2X2_SDM_MCS8 = 54,
WL_RATE_2X2_SDM_MCS9 = 55,
WL_RATE_2X2_SDM_MCS10 = 56,
WL_RATE_2X2_SDM_MCS11 = 57,
WL_RATE_2X2_SDM_MCS12 = 58,
WL_RATE_2X2_SDM_MCS13 = 59,
WL_RATE_2X2_SDM_MCS14 = 60,
WL_RATE_2X2_SDM_MCS15 = 61,
WL_RATE_2X2_VHT0SS2 = 54,
WL_RATE_2X2_VHT1SS2 = 55,
WL_RATE_2X2_VHT2SS2 = 56,
WL_RATE_2X2_VHT3SS2 = 57,
WL_RATE_2X2_VHT4SS2 = 58,
WL_RATE_2X2_VHT5SS2 = 59,
WL_RATE_2X2_VHT6SS2 = 60,
WL_RATE_2X2_VHT7SS2 = 61,
WL_RATE_2X2_VHT8SS2 = 62,
WL_RATE_2X2_VHT9SS2 = 63,
/************
* 3 chains *
************
*/
/* 1 Stream expanded + 2 */
WL_RATE_1X3_DSSS_1 = 64,
WL_RATE_1X3_DSSS_2 = 65,
WL_RATE_1X3_DSSS_5_5 = 66,
WL_RATE_1X3_DSSS_11 = 67,
WL_RATE_1X3_CDD_OFDM_6 = 68,
WL_RATE_1X3_CDD_OFDM_9 = 69,
WL_RATE_1X3_CDD_OFDM_12 = 70,
WL_RATE_1X3_CDD_OFDM_18 = 71,
WL_RATE_1X3_CDD_OFDM_24 = 72,
WL_RATE_1X3_CDD_OFDM_36 = 73,
WL_RATE_1X3_CDD_OFDM_48 = 74,
WL_RATE_1X3_CDD_OFDM_54 = 75,
WL_RATE_1X3_CDD_MCS0 = 76,
WL_RATE_1X3_CDD_MCS1 = 77,
WL_RATE_1X3_CDD_MCS2 = 78,
WL_RATE_1X3_CDD_MCS3 = 79,
WL_RATE_1X3_CDD_MCS4 = 80,
WL_RATE_1X3_CDD_MCS5 = 81,
WL_RATE_1X3_CDD_MCS6 = 82,
WL_RATE_1X3_CDD_MCS7 = 83,
WL_RATE_1X3_VHT0SS1 = 76,
WL_RATE_1X3_VHT1SS1 = 77,
WL_RATE_1X3_VHT2SS1 = 78,
WL_RATE_1X3_VHT3SS1 = 79,
WL_RATE_1X3_VHT4SS1 = 80,
WL_RATE_1X3_VHT5SS1 = 81,
WL_RATE_1X3_VHT6SS1 = 82,
WL_RATE_1X3_VHT7SS1 = 83,
WL_RATE_1X3_VHT8SS1 = 84,
WL_RATE_1X3_VHT9SS1 = 85,
/* 2 Streams expanded + 1 */
WL_RATE_2X3_STBC_MCS0 = 86,
WL_RATE_2X3_STBC_MCS1 = 87,
WL_RATE_2X3_STBC_MCS2 = 88,
WL_RATE_2X3_STBC_MCS3 = 89,
WL_RATE_2X3_STBC_MCS4 = 90,
WL_RATE_2X3_STBC_MCS5 = 91,
WL_RATE_2X3_STBC_MCS6 = 92,
WL_RATE_2X3_STBC_MCS7 = 93,
WL_RATE_2X3_STBC_VHT0SS1 = 86,
WL_RATE_2X3_STBC_VHT1SS1 = 87,
WL_RATE_2X3_STBC_VHT2SS1 = 88,
WL_RATE_2X3_STBC_VHT3SS1 = 89,
WL_RATE_2X3_STBC_VHT4SS1 = 90,
WL_RATE_2X3_STBC_VHT5SS1 = 91,
WL_RATE_2X3_STBC_VHT6SS1 = 92,
WL_RATE_2X3_STBC_VHT7SS1 = 93,
WL_RATE_2X3_STBC_VHT8SS1 = 94,
WL_RATE_2X3_STBC_VHT9SS1 = 95,
WL_RATE_2X3_SDM_MCS8 = 96,
WL_RATE_2X3_SDM_MCS9 = 97,
WL_RATE_2X3_SDM_MCS10 = 98,
WL_RATE_2X3_SDM_MCS11 = 99,
WL_RATE_2X3_SDM_MCS12 = 100,
WL_RATE_2X3_SDM_MCS13 = 101,
WL_RATE_2X3_SDM_MCS14 = 102,
WL_RATE_2X3_SDM_MCS15 = 103,
WL_RATE_2X3_VHT0SS2 = 96,
WL_RATE_2X3_VHT1SS2 = 97,
WL_RATE_2X3_VHT2SS2 = 98,
WL_RATE_2X3_VHT3SS2 = 99,
WL_RATE_2X3_VHT4SS2 = 100,
WL_RATE_2X3_VHT5SS2 = 101,
WL_RATE_2X3_VHT6SS2 = 102,
WL_RATE_2X3_VHT7SS2 = 103,
WL_RATE_2X3_VHT8SS2 = 104,
WL_RATE_2X3_VHT9SS2 = 105,
/* 3 Streams */
WL_RATE_3X3_SDM_MCS16 = 106,
WL_RATE_3X3_SDM_MCS17 = 107,
WL_RATE_3X3_SDM_MCS18 = 108,
WL_RATE_3X3_SDM_MCS19 = 109,
WL_RATE_3X3_SDM_MCS20 = 110,
WL_RATE_3X3_SDM_MCS21 = 111,
WL_RATE_3X3_SDM_MCS22 = 112,
WL_RATE_3X3_SDM_MCS23 = 113,
WL_RATE_3X3_VHT0SS3 = 106,
WL_RATE_3X3_VHT1SS3 = 107,
WL_RATE_3X3_VHT2SS3 = 108,
WL_RATE_3X3_VHT3SS3 = 109,
WL_RATE_3X3_VHT4SS3 = 110,
WL_RATE_3X3_VHT5SS3 = 111,
WL_RATE_3X3_VHT6SS3 = 112,
WL_RATE_3X3_VHT7SS3 = 113,
WL_RATE_3X3_VHT8SS3 = 114,
WL_RATE_3X3_VHT9SS3 = 115,
/****************************
* TX Beamforming, 2 chains *
****************************
*/
/* 1 Stream expanded + 1 */
WL_RATE_1X2_TXBF_OFDM_6 = 116,
WL_RATE_1X2_TXBF_OFDM_9 = 117,
WL_RATE_1X2_TXBF_OFDM_12 = 118,
WL_RATE_1X2_TXBF_OFDM_18 = 119,
WL_RATE_1X2_TXBF_OFDM_24 = 120,
WL_RATE_1X2_TXBF_OFDM_36 = 121,
WL_RATE_1X2_TXBF_OFDM_48 = 122,
WL_RATE_1X2_TXBF_OFDM_54 = 123,
WL_RATE_1X2_TXBF_MCS0 = 124,
WL_RATE_1X2_TXBF_MCS1 = 125,
WL_RATE_1X2_TXBF_MCS2 = 126,
WL_RATE_1X2_TXBF_MCS3 = 127,
WL_RATE_1X2_TXBF_MCS4 = 128,
WL_RATE_1X2_TXBF_MCS5 = 129,
WL_RATE_1X2_TXBF_MCS6 = 130,
WL_RATE_1X2_TXBF_MCS7 = 131,
WL_RATE_1X2_TXBF_VHT0SS1 = 124,
WL_RATE_1X2_TXBF_VHT1SS1 = 125,
WL_RATE_1X2_TXBF_VHT2SS1 = 126,
WL_RATE_1X2_TXBF_VHT3SS1 = 127,
WL_RATE_1X2_TXBF_VHT4SS1 = 128,
WL_RATE_1X2_TXBF_VHT5SS1 = 129,
WL_RATE_1X2_TXBF_VHT6SS1 = 130,
WL_RATE_1X2_TXBF_VHT7SS1 = 131,
WL_RATE_1X2_TXBF_VHT8SS1 = 132,
WL_RATE_1X2_TXBF_VHT9SS1 = 133,
/* 2 Streams */
WL_RATE_2X2_TXBF_SDM_MCS8 = 134,
WL_RATE_2X2_TXBF_SDM_MCS9 = 135,
WL_RATE_2X2_TXBF_SDM_MCS10 = 136,
WL_RATE_2X2_TXBF_SDM_MCS11 = 137,
WL_RATE_2X2_TXBF_SDM_MCS12 = 138,
WL_RATE_2X2_TXBF_SDM_MCS13 = 139,
WL_RATE_2X2_TXBF_SDM_MCS14 = 140,
WL_RATE_2X2_TXBF_SDM_MCS15 = 141,
WL_RATE_2X2_TXBF_VHT0SS2 = 134,
WL_RATE_2X2_TXBF_VHT1SS2 = 135,
WL_RATE_2X2_TXBF_VHT2SS2 = 136,
WL_RATE_2X2_TXBF_VHT3SS2 = 137,
WL_RATE_2X2_TXBF_VHT4SS2 = 138,
WL_RATE_2X2_TXBF_VHT5SS2 = 139,
WL_RATE_2X2_TXBF_VHT6SS2 = 140,
WL_RATE_2X2_TXBF_VHT7SS2 = 141,
/****************************
* TX Beamforming, 3 chains *
****************************
*/
/* 1 Stream expanded + 2 */
WL_RATE_1X3_TXBF_OFDM_6 = 142,
WL_RATE_1X3_TXBF_OFDM_9 = 143,
WL_RATE_1X3_TXBF_OFDM_12 = 144,
WL_RATE_1X3_TXBF_OFDM_18 = 145,
WL_RATE_1X3_TXBF_OFDM_24 = 146,
WL_RATE_1X3_TXBF_OFDM_36 = 147,
WL_RATE_1X3_TXBF_OFDM_48 = 148,
WL_RATE_1X3_TXBF_OFDM_54 = 149,
WL_RATE_1X3_TXBF_MCS0 = 150,
WL_RATE_1X3_TXBF_MCS1 = 151,
WL_RATE_1X3_TXBF_MCS2 = 152,
WL_RATE_1X3_TXBF_MCS3 = 153,
WL_RATE_1X3_TXBF_MCS4 = 154,
WL_RATE_1X3_TXBF_MCS5 = 155,
WL_RATE_1X3_TXBF_MCS6 = 156,
WL_RATE_1X3_TXBF_MCS7 = 157,
WL_RATE_1X3_TXBF_VHT0SS1 = 150,
WL_RATE_1X3_TXBF_VHT1SS1 = 151,
WL_RATE_1X3_TXBF_VHT2SS1 = 152,
WL_RATE_1X3_TXBF_VHT3SS1 = 153,
WL_RATE_1X3_TXBF_VHT4SS1 = 154,
WL_RATE_1X3_TXBF_VHT5SS1 = 155,
WL_RATE_1X3_TXBF_VHT6SS1 = 156,
WL_RATE_1X3_TXBF_VHT7SS1 = 157,
WL_RATE_1X3_TXBF_VHT8SS1 = 158,
WL_RATE_1X3_TXBF_VHT9SS1 = 159,
/* 2 Streams expanded + 1 */
WL_RATE_2X3_TXBF_SDM_MCS8 = 160,
WL_RATE_2X3_TXBF_SDM_MCS9 = 161,
WL_RATE_2X3_TXBF_SDM_MCS10 = 162,
WL_RATE_2X3_TXBF_SDM_MCS11 = 163,
WL_RATE_2X3_TXBF_SDM_MCS12 = 164,
WL_RATE_2X3_TXBF_SDM_MCS13 = 165,
WL_RATE_2X3_TXBF_SDM_MCS14 = 166,
WL_RATE_2X3_TXBF_SDM_MCS15 = 167,
WL_RATE_2X3_TXBF_VHT0SS2 = 160,
WL_RATE_2X3_TXBF_VHT1SS2 = 161,
WL_RATE_2X3_TXBF_VHT2SS2 = 162,
WL_RATE_2X3_TXBF_VHT3SS2 = 163,
WL_RATE_2X3_TXBF_VHT4SS2 = 164,
WL_RATE_2X3_TXBF_VHT5SS2 = 165,
WL_RATE_2X3_TXBF_VHT6SS2 = 166,
WL_RATE_2X3_TXBF_VHT7SS2 = 167,
WL_RATE_2X3_TXBF_VHT8SS2 = 168,
WL_RATE_2X3_TXBF_VHT9SS2 = 169,
/* 3 Streams */
WL_RATE_3X3_TXBF_SDM_MCS16 = 170,
WL_RATE_3X3_TXBF_SDM_MCS17 = 171,
WL_RATE_3X3_TXBF_SDM_MCS18 = 172,
WL_RATE_3X3_TXBF_SDM_MCS19 = 173,
WL_RATE_3X3_TXBF_SDM_MCS20 = 174,
WL_RATE_3X3_TXBF_SDM_MCS21 = 175,
WL_RATE_3X3_TXBF_SDM_MCS22 = 176,
WL_RATE_3X3_TXBF_SDM_MCS23 = 177,
WL_RATE_3X3_TXBF_VHT0SS3 = 170,
WL_RATE_3X3_TXBF_VHT1SS3 = 171,
WL_RATE_3X3_TXBF_VHT2SS3 = 172,
WL_RATE_3X3_TXBF_VHT3SS3 = 173,
WL_RATE_3X3_TXBF_VHT4SS3 = 174,
WL_RATE_3X3_TXBF_VHT5SS3 = 175,
WL_RATE_3X3_TXBF_VHT6SS3 = 176,
WL_RATE_3X3_TXBF_VHT7SS3 = 177
} clm_rates_t;
/* Number of rate codes */
#define WL_NUMRATES 178
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _bcmwifi_rates_h_ */