1/* 2 * Indices for 802.11 a/b/g/n/ac 1-3 chain symmetric transmit rates 3 * 4 * Copyright (C) 2015, Broadcom Corporation. All Rights Reserved. 5 * 6 * Permission to use, copy, modify, and/or distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 13 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 15 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 * 18 * $Id: bcmwifi_rates.h 5187 2012-06-29 06:17:50Z $ 19 */ 20 21#ifndef _bcmwifi_rates_h_ 22#define _bcmwifi_rates_h_ 23 24#ifdef __cplusplus 25extern "C" { 26#endif /* __cplusplus */ 27 28 29#define WL_RATESET_SZ_DSSS 4 30#define WL_RATESET_SZ_OFDM 8 31#define WL_RATESET_SZ_HT_MCS 8 32#define WL_RATESET_SZ_VHT_MCS 10 33 34#define WL_TX_CHAINS_MAX 3 35 36#define WL_RATE_DISABLED (-128) /* Power value corresponding to unsupported rate */ 37 38/* Transmit channel bandwidths */ 39typedef enum wl_tx_bw { 40 WL_TX_BW_20, 41 WL_TX_BW_40, 42 WL_TX_BW_80, 43 WL_TX_BW_20IN40, 44 WL_TX_BW_20IN80, 45 WL_TX_BW_40IN80, 46 WL_TX_BW_160, 47 WL_TX_BW_20IN160, 48 WL_TX_BW_40IN160, 49 WL_TX_BW_80IN160, 50 WL_TX_BW_ALL, 51 WL_TX_BW_8080, 52 WL_TX_BW_8080CHAN2, 53 WL_TX_BW_20IN8080, 54 WL_TX_BW_40IN8080, 55 WL_TX_BW_80IN8080 56} wl_tx_bw_t; 57 58 59/* 60 * Transmit modes. 61 * Not all modes are listed here, only those required for disambiguation. e.g. SPEXP is not listed 62 */ 63typedef enum wl_tx_mode { 64 WL_TX_MODE_NONE, 65 WL_TX_MODE_STBC, 66 WL_TX_MODE_CDD, 67 WL_TX_MODE_TXBF, 68 WL_NUM_TX_MODES 69} wl_tx_mode_t; 70 71 72/* Number of transmit chains */ 73typedef enum wl_tx_chains { 74 WL_TX_CHAINS_1 = 1, 75 WL_TX_CHAINS_2, 76 WL_TX_CHAINS_3 77} wl_tx_chains_t; 78 79 80/* Number of transmit streams */ 81typedef enum wl_tx_nss { 82 WL_TX_NSS_1 = 1, 83 WL_TX_NSS_2, 84 WL_TX_NSS_3 85} wl_tx_nss_t; 86 87 88typedef enum clm_rates { 89 /************ 90 * 1 chain * 91 ************ 92 */ 93 94 /* 1 Stream */ 95 WL_RATE_1X1_DSSS_1 = 0, 96 WL_RATE_1X1_DSSS_2 = 1, 97 WL_RATE_1X1_DSSS_5_5 = 2, 98 WL_RATE_1X1_DSSS_11 = 3, 99 100 WL_RATE_1X1_OFDM_6 = 4, 101 WL_RATE_1X1_OFDM_9 = 5, 102 WL_RATE_1X1_OFDM_12 = 6, 103 WL_RATE_1X1_OFDM_18 = 7, 104 WL_RATE_1X1_OFDM_24 = 8, 105 WL_RATE_1X1_OFDM_36 = 9, 106 WL_RATE_1X1_OFDM_48 = 10, 107 WL_RATE_1X1_OFDM_54 = 11, 108 109 WL_RATE_1X1_MCS0 = 12, 110 WL_RATE_1X1_MCS1 = 13, 111 WL_RATE_1X1_MCS2 = 14, 112 WL_RATE_1X1_MCS3 = 15, 113 WL_RATE_1X1_MCS4 = 16, 114 WL_RATE_1X1_MCS5 = 17, 115 WL_RATE_1X1_MCS6 = 18, 116 WL_RATE_1X1_MCS7 = 19, 117 118 WL_RATE_1X1_VHT0SS1 = 12, 119 WL_RATE_1X1_VHT1SS1 = 13, 120 WL_RATE_1X1_VHT2SS1 = 14, 121 WL_RATE_1X1_VHT3SS1 = 15, 122 WL_RATE_1X1_VHT4SS1 = 16, 123 WL_RATE_1X1_VHT5SS1 = 17, 124 WL_RATE_1X1_VHT6SS1 = 18, 125 WL_RATE_1X1_VHT7SS1 = 19, 126 WL_RATE_1X1_VHT8SS1 = 20, 127 WL_RATE_1X1_VHT9SS1 = 21, 128 129 130 /************ 131 * 2 chains * 132 ************ 133 */ 134 135 /* 1 Stream expanded + 1 */ 136 WL_RATE_1X2_DSSS_1 = 22, 137 WL_RATE_1X2_DSSS_2 = 23, 138 WL_RATE_1X2_DSSS_5_5 = 24, 139 WL_RATE_1X2_DSSS_11 = 25, 140 141 WL_RATE_1X2_CDD_OFDM_6 = 26, 142 WL_RATE_1X2_CDD_OFDM_9 = 27, 143 WL_RATE_1X2_CDD_OFDM_12 = 28, 144 WL_RATE_1X2_CDD_OFDM_18 = 29, 145 WL_RATE_1X2_CDD_OFDM_24 = 30, 146 WL_RATE_1X2_CDD_OFDM_36 = 31, 147 WL_RATE_1X2_CDD_OFDM_48 = 32, 148 WL_RATE_1X2_CDD_OFDM_54 = 33, 149 150 WL_RATE_1X2_CDD_MCS0 = 34, 151 WL_RATE_1X2_CDD_MCS1 = 35, 152 WL_RATE_1X2_CDD_MCS2 = 36, 153 WL_RATE_1X2_CDD_MCS3 = 37, 154 WL_RATE_1X2_CDD_MCS4 = 38, 155 WL_RATE_1X2_CDD_MCS5 = 39, 156 WL_RATE_1X2_CDD_MCS6 = 40, 157 WL_RATE_1X2_CDD_MCS7 = 41, 158 159 WL_RATE_1X2_VHT0SS1 = 34, 160 WL_RATE_1X2_VHT1SS1 = 35, 161 WL_RATE_1X2_VHT2SS1 = 36, 162 WL_RATE_1X2_VHT3SS1 = 37, 163 WL_RATE_1X2_VHT4SS1 = 38, 164 WL_RATE_1X2_VHT5SS1 = 39, 165 WL_RATE_1X2_VHT6SS1 = 40, 166 WL_RATE_1X2_VHT7SS1 = 41, 167 WL_RATE_1X2_VHT8SS1 = 42, 168 WL_RATE_1X2_VHT9SS1 = 43, 169 170 /* 2 Streams */ 171 WL_RATE_2X2_STBC_MCS0 = 44, 172 WL_RATE_2X2_STBC_MCS1 = 45, 173 WL_RATE_2X2_STBC_MCS2 = 46, 174 WL_RATE_2X2_STBC_MCS3 = 47, 175 WL_RATE_2X2_STBC_MCS4 = 48, 176 WL_RATE_2X2_STBC_MCS5 = 49, 177 WL_RATE_2X2_STBC_MCS6 = 50, 178 WL_RATE_2X2_STBC_MCS7 = 51, 179 180 WL_RATE_2X2_STBC_VHT0SS1 = 44, 181 WL_RATE_2X2_STBC_VHT1SS1 = 45, 182 WL_RATE_2X2_STBC_VHT2SS1 = 46, 183 WL_RATE_2X2_STBC_VHT3SS1 = 47, 184 WL_RATE_2X2_STBC_VHT4SS1 = 48, 185 WL_RATE_2X2_STBC_VHT5SS1 = 49, 186 WL_RATE_2X2_STBC_VHT6SS1 = 50, 187 WL_RATE_2X2_STBC_VHT7SS1 = 51, 188 WL_RATE_2X2_STBC_VHT8SS1 = 52, 189 WL_RATE_2X2_STBC_VHT9SS1 = 53, 190 191 WL_RATE_2X2_SDM_MCS8 = 54, 192 WL_RATE_2X2_SDM_MCS9 = 55, 193 WL_RATE_2X2_SDM_MCS10 = 56, 194 WL_RATE_2X2_SDM_MCS11 = 57, 195 WL_RATE_2X2_SDM_MCS12 = 58, 196 WL_RATE_2X2_SDM_MCS13 = 59, 197 WL_RATE_2X2_SDM_MCS14 = 60, 198 WL_RATE_2X2_SDM_MCS15 = 61, 199 200 WL_RATE_2X2_VHT0SS2 = 54, 201 WL_RATE_2X2_VHT1SS2 = 55, 202 WL_RATE_2X2_VHT2SS2 = 56, 203 WL_RATE_2X2_VHT3SS2 = 57, 204 WL_RATE_2X2_VHT4SS2 = 58, 205 WL_RATE_2X2_VHT5SS2 = 59, 206 WL_RATE_2X2_VHT6SS2 = 60, 207 WL_RATE_2X2_VHT7SS2 = 61, 208 WL_RATE_2X2_VHT8SS2 = 62, 209 WL_RATE_2X2_VHT9SS2 = 63, 210 211 /************ 212 * 3 chains * 213 ************ 214 */ 215 216 /* 1 Stream expanded + 2 */ 217 WL_RATE_1X3_DSSS_1 = 64, 218 WL_RATE_1X3_DSSS_2 = 65, 219 WL_RATE_1X3_DSSS_5_5 = 66, 220 WL_RATE_1X3_DSSS_11 = 67, 221 222 WL_RATE_1X3_CDD_OFDM_6 = 68, 223 WL_RATE_1X3_CDD_OFDM_9 = 69, 224 WL_RATE_1X3_CDD_OFDM_12 = 70, 225 WL_RATE_1X3_CDD_OFDM_18 = 71, 226 WL_RATE_1X3_CDD_OFDM_24 = 72, 227 WL_RATE_1X3_CDD_OFDM_36 = 73, 228 WL_RATE_1X3_CDD_OFDM_48 = 74, 229 WL_RATE_1X3_CDD_OFDM_54 = 75, 230 231 WL_RATE_1X3_CDD_MCS0 = 76, 232 WL_RATE_1X3_CDD_MCS1 = 77, 233 WL_RATE_1X3_CDD_MCS2 = 78, 234 WL_RATE_1X3_CDD_MCS3 = 79, 235 WL_RATE_1X3_CDD_MCS4 = 80, 236 WL_RATE_1X3_CDD_MCS5 = 81, 237 WL_RATE_1X3_CDD_MCS6 = 82, 238 WL_RATE_1X3_CDD_MCS7 = 83, 239 240 WL_RATE_1X3_VHT0SS1 = 76, 241 WL_RATE_1X3_VHT1SS1 = 77, 242 WL_RATE_1X3_VHT2SS1 = 78, 243 WL_RATE_1X3_VHT3SS1 = 79, 244 WL_RATE_1X3_VHT4SS1 = 80, 245 WL_RATE_1X3_VHT5SS1 = 81, 246 WL_RATE_1X3_VHT6SS1 = 82, 247 WL_RATE_1X3_VHT7SS1 = 83, 248 WL_RATE_1X3_VHT8SS1 = 84, 249 WL_RATE_1X3_VHT9SS1 = 85, 250 251 /* 2 Streams expanded + 1 */ 252 WL_RATE_2X3_STBC_MCS0 = 86, 253 WL_RATE_2X3_STBC_MCS1 = 87, 254 WL_RATE_2X3_STBC_MCS2 = 88, 255 WL_RATE_2X3_STBC_MCS3 = 89, 256 WL_RATE_2X3_STBC_MCS4 = 90, 257 WL_RATE_2X3_STBC_MCS5 = 91, 258 WL_RATE_2X3_STBC_MCS6 = 92, 259 WL_RATE_2X3_STBC_MCS7 = 93, 260 261 WL_RATE_2X3_STBC_VHT0SS1 = 86, 262 WL_RATE_2X3_STBC_VHT1SS1 = 87, 263 WL_RATE_2X3_STBC_VHT2SS1 = 88, 264 WL_RATE_2X3_STBC_VHT3SS1 = 89, 265 WL_RATE_2X3_STBC_VHT4SS1 = 90, 266 WL_RATE_2X3_STBC_VHT5SS1 = 91, 267 WL_RATE_2X3_STBC_VHT6SS1 = 92, 268 WL_RATE_2X3_STBC_VHT7SS1 = 93, 269 WL_RATE_2X3_STBC_VHT8SS1 = 94, 270 WL_RATE_2X3_STBC_VHT9SS1 = 95, 271 272 WL_RATE_2X3_SDM_MCS8 = 96, 273 WL_RATE_2X3_SDM_MCS9 = 97, 274 WL_RATE_2X3_SDM_MCS10 = 98, 275 WL_RATE_2X3_SDM_MCS11 = 99, 276 WL_RATE_2X3_SDM_MCS12 = 100, 277 WL_RATE_2X3_SDM_MCS13 = 101, 278 WL_RATE_2X3_SDM_MCS14 = 102, 279 WL_RATE_2X3_SDM_MCS15 = 103, 280 281 WL_RATE_2X3_VHT0SS2 = 96, 282 WL_RATE_2X3_VHT1SS2 = 97, 283 WL_RATE_2X3_VHT2SS2 = 98, 284 WL_RATE_2X3_VHT3SS2 = 99, 285 WL_RATE_2X3_VHT4SS2 = 100, 286 WL_RATE_2X3_VHT5SS2 = 101, 287 WL_RATE_2X3_VHT6SS2 = 102, 288 WL_RATE_2X3_VHT7SS2 = 103, 289 WL_RATE_2X3_VHT8SS2 = 104, 290 WL_RATE_2X3_VHT9SS2 = 105, 291 292 /* 3 Streams */ 293 WL_RATE_3X3_SDM_MCS16 = 106, 294 WL_RATE_3X3_SDM_MCS17 = 107, 295 WL_RATE_3X3_SDM_MCS18 = 108, 296 WL_RATE_3X3_SDM_MCS19 = 109, 297 WL_RATE_3X3_SDM_MCS20 = 110, 298 WL_RATE_3X3_SDM_MCS21 = 111, 299 WL_RATE_3X3_SDM_MCS22 = 112, 300 WL_RATE_3X3_SDM_MCS23 = 113, 301 302 WL_RATE_3X3_VHT0SS3 = 106, 303 WL_RATE_3X3_VHT1SS3 = 107, 304 WL_RATE_3X3_VHT2SS3 = 108, 305 WL_RATE_3X3_VHT3SS3 = 109, 306 WL_RATE_3X3_VHT4SS3 = 110, 307 WL_RATE_3X3_VHT5SS3 = 111, 308 WL_RATE_3X3_VHT6SS3 = 112, 309 WL_RATE_3X3_VHT7SS3 = 113, 310 WL_RATE_3X3_VHT8SS3 = 114, 311 WL_RATE_3X3_VHT9SS3 = 115, 312 313 314 /**************************** 315 * TX Beamforming, 2 chains * 316 **************************** 317 */ 318 319 /* 1 Stream expanded + 1 */ 320 321 WL_RATE_1X2_TXBF_OFDM_6 = 116, 322 WL_RATE_1X2_TXBF_OFDM_9 = 117, 323 WL_RATE_1X2_TXBF_OFDM_12 = 118, 324 WL_RATE_1X2_TXBF_OFDM_18 = 119, 325 WL_RATE_1X2_TXBF_OFDM_24 = 120, 326 WL_RATE_1X2_TXBF_OFDM_36 = 121, 327 WL_RATE_1X2_TXBF_OFDM_48 = 122, 328 WL_RATE_1X2_TXBF_OFDM_54 = 123, 329 330 WL_RATE_1X2_TXBF_MCS0 = 124, 331 WL_RATE_1X2_TXBF_MCS1 = 125, 332 WL_RATE_1X2_TXBF_MCS2 = 126, 333 WL_RATE_1X2_TXBF_MCS3 = 127, 334 WL_RATE_1X2_TXBF_MCS4 = 128, 335 WL_RATE_1X2_TXBF_MCS5 = 129, 336 WL_RATE_1X2_TXBF_MCS6 = 130, 337 WL_RATE_1X2_TXBF_MCS7 = 131, 338 339 WL_RATE_1X2_TXBF_VHT0SS1 = 124, 340 WL_RATE_1X2_TXBF_VHT1SS1 = 125, 341 WL_RATE_1X2_TXBF_VHT2SS1 = 126, 342 WL_RATE_1X2_TXBF_VHT3SS1 = 127, 343 WL_RATE_1X2_TXBF_VHT4SS1 = 128, 344 WL_RATE_1X2_TXBF_VHT5SS1 = 129, 345 WL_RATE_1X2_TXBF_VHT6SS1 = 130, 346 WL_RATE_1X2_TXBF_VHT7SS1 = 131, 347 WL_RATE_1X2_TXBF_VHT8SS1 = 132, 348 WL_RATE_1X2_TXBF_VHT9SS1 = 133, 349 350 /* 2 Streams */ 351 352 WL_RATE_2X2_TXBF_SDM_MCS8 = 134, 353 WL_RATE_2X2_TXBF_SDM_MCS9 = 135, 354 WL_RATE_2X2_TXBF_SDM_MCS10 = 136, 355 WL_RATE_2X2_TXBF_SDM_MCS11 = 137, 356 WL_RATE_2X2_TXBF_SDM_MCS12 = 138, 357 WL_RATE_2X2_TXBF_SDM_MCS13 = 139, 358 WL_RATE_2X2_TXBF_SDM_MCS14 = 140, 359 WL_RATE_2X2_TXBF_SDM_MCS15 = 141, 360 361 WL_RATE_2X2_TXBF_VHT0SS2 = 134, 362 WL_RATE_2X2_TXBF_VHT1SS2 = 135, 363 WL_RATE_2X2_TXBF_VHT2SS2 = 136, 364 WL_RATE_2X2_TXBF_VHT3SS2 = 137, 365 WL_RATE_2X2_TXBF_VHT4SS2 = 138, 366 WL_RATE_2X2_TXBF_VHT5SS2 = 139, 367 WL_RATE_2X2_TXBF_VHT6SS2 = 140, 368 WL_RATE_2X2_TXBF_VHT7SS2 = 141, 369 370 371 /**************************** 372 * TX Beamforming, 3 chains * 373 **************************** 374 */ 375 376 /* 1 Stream expanded + 2 */ 377 378 WL_RATE_1X3_TXBF_OFDM_6 = 142, 379 WL_RATE_1X3_TXBF_OFDM_9 = 143, 380 WL_RATE_1X3_TXBF_OFDM_12 = 144, 381 WL_RATE_1X3_TXBF_OFDM_18 = 145, 382 WL_RATE_1X3_TXBF_OFDM_24 = 146, 383 WL_RATE_1X3_TXBF_OFDM_36 = 147, 384 WL_RATE_1X3_TXBF_OFDM_48 = 148, 385 WL_RATE_1X3_TXBF_OFDM_54 = 149, 386 387 WL_RATE_1X3_TXBF_MCS0 = 150, 388 WL_RATE_1X3_TXBF_MCS1 = 151, 389 WL_RATE_1X3_TXBF_MCS2 = 152, 390 WL_RATE_1X3_TXBF_MCS3 = 153, 391 WL_RATE_1X3_TXBF_MCS4 = 154, 392 WL_RATE_1X3_TXBF_MCS5 = 155, 393 WL_RATE_1X3_TXBF_MCS6 = 156, 394 WL_RATE_1X3_TXBF_MCS7 = 157, 395 396 WL_RATE_1X3_TXBF_VHT0SS1 = 150, 397 WL_RATE_1X3_TXBF_VHT1SS1 = 151, 398 WL_RATE_1X3_TXBF_VHT2SS1 = 152, 399 WL_RATE_1X3_TXBF_VHT3SS1 = 153, 400 WL_RATE_1X3_TXBF_VHT4SS1 = 154, 401 WL_RATE_1X3_TXBF_VHT5SS1 = 155, 402 WL_RATE_1X3_TXBF_VHT6SS1 = 156, 403 WL_RATE_1X3_TXBF_VHT7SS1 = 157, 404 WL_RATE_1X3_TXBF_VHT8SS1 = 158, 405 WL_RATE_1X3_TXBF_VHT9SS1 = 159, 406 407 /* 2 Streams expanded + 1 */ 408 409 WL_RATE_2X3_TXBF_SDM_MCS8 = 160, 410 WL_RATE_2X3_TXBF_SDM_MCS9 = 161, 411 WL_RATE_2X3_TXBF_SDM_MCS10 = 162, 412 WL_RATE_2X3_TXBF_SDM_MCS11 = 163, 413 WL_RATE_2X3_TXBF_SDM_MCS12 = 164, 414 WL_RATE_2X3_TXBF_SDM_MCS13 = 165, 415 WL_RATE_2X3_TXBF_SDM_MCS14 = 166, 416 WL_RATE_2X3_TXBF_SDM_MCS15 = 167, 417 418 WL_RATE_2X3_TXBF_VHT0SS2 = 160, 419 WL_RATE_2X3_TXBF_VHT1SS2 = 161, 420 WL_RATE_2X3_TXBF_VHT2SS2 = 162, 421 WL_RATE_2X3_TXBF_VHT3SS2 = 163, 422 WL_RATE_2X3_TXBF_VHT4SS2 = 164, 423 WL_RATE_2X3_TXBF_VHT5SS2 = 165, 424 WL_RATE_2X3_TXBF_VHT6SS2 = 166, 425 WL_RATE_2X3_TXBF_VHT7SS2 = 167, 426 WL_RATE_2X3_TXBF_VHT8SS2 = 168, 427 WL_RATE_2X3_TXBF_VHT9SS2 = 169, 428 429 /* 3 Streams */ 430 431 WL_RATE_3X3_TXBF_SDM_MCS16 = 170, 432 WL_RATE_3X3_TXBF_SDM_MCS17 = 171, 433 WL_RATE_3X3_TXBF_SDM_MCS18 = 172, 434 WL_RATE_3X3_TXBF_SDM_MCS19 = 173, 435 WL_RATE_3X3_TXBF_SDM_MCS20 = 174, 436 WL_RATE_3X3_TXBF_SDM_MCS21 = 175, 437 WL_RATE_3X3_TXBF_SDM_MCS22 = 176, 438 WL_RATE_3X3_TXBF_SDM_MCS23 = 177, 439 440 WL_RATE_3X3_TXBF_VHT0SS3 = 170, 441 WL_RATE_3X3_TXBF_VHT1SS3 = 171, 442 WL_RATE_3X3_TXBF_VHT2SS3 = 172, 443 WL_RATE_3X3_TXBF_VHT3SS3 = 173, 444 WL_RATE_3X3_TXBF_VHT4SS3 = 174, 445 WL_RATE_3X3_TXBF_VHT5SS3 = 175, 446 WL_RATE_3X3_TXBF_VHT6SS3 = 176, 447 WL_RATE_3X3_TXBF_VHT7SS3 = 177 448} clm_rates_t; 449 450/* Number of rate codes */ 451#define WL_NUMRATES 178 452 453#ifdef __cplusplus 454} 455#endif /* __cplusplus */ 456 457#endif /* _bcmwifi_rates_h_ */ 458