1 /** @file wltypes.h 2 * 3 * @brief Basic types common to all the modules must be defined in this file. 4 * 5 * Copyright (C) 2014-2017, Marvell International Ltd. 6 * 7 * This software file (the "File") is distributed by Marvell International 8 * Ltd. under the terms of the GNU General Public License Version 2, June 1991 9 * (the "License"). You may use, redistribute and/or modify this File in 10 * accordance with the terms and conditions of the License, a copy of which 11 * is available by writing to the Free Software Foundation, Inc., 12 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the 13 * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 14 * 15 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE 17 * ARE EXPRESSLY DISCLAIMED. The License provides additional details about 18 * this warranty disclaimer. 19 */ 20 21 /****************************************************** 22 Change log: 23 03/07/2014: Initial version 24 ******************************************************/ 25 #if !defined(WLTYPES_H__) 26 #define WLTYPES_H__ 27 /* 28 * Copyright 2003, Marvell Semiconductor, Inc. 29 * This code contains confidential information of Marvell Semiconductor, Inc. 30 * No rights are granted herein under any patent, mask work right or copyright 31 * of Marvell or any third party. 32 * Marvell reserves the right at its sole discretion to request that this code 33 * be immediately returned to Marvell. This code is provided "as is". 34 * Marvell makes no warranties, express, implied or otherwise, regarding its 35 * accuracy, completeness or performance. 36 */ 37 38 /*! 39 * \file wltypes.h 40 * \brief Basic types common to all the modules must be defined in this file. 41 * 42 */ 43 /** @defgroup DataTypes Data Types used in SDK 44 * Functions exported by wltypes.h 45 * @{ 46 */ 47 /*! Create type names for native C types for portability reasons */ 48 typedef unsigned long long UINT64; //!< 64 bit unsigned 49 typedef signed long long SINT64; //!< 64 bit signed 50 typedef unsigned int UINT32; //!< 32 bit unsigned 51 typedef signed int SINT32; //!< 32 bit signed 52 typedef unsigned short UINT16; //!< 16 bit unsigned 53 typedef signed short SINT16; //!< 16 bit signed 54 typedef unsigned char UINT8; //!< 8 bit unsigned 55 typedef signed char SINT8; //!< 8 bit signed 56 57 typedef unsigned long long uint64; //!< 64 bit unsigned 58 typedef signed long long sint64; //!< 64 bit signed 59 typedef unsigned int uint32; //!< 32 bit unsigned 60 61 typedef signed int sint32; //!< 32 bit signed 62 typedef unsigned short uint16; //!< 16 bit unsigned 63 typedef signed short sint16; //!< 16 bit signed 64 typedef unsigned char uint8; //!< 8 bit unsigned 65 typedef signed char sint8; //!< 8 bit signed 66 typedef signed char int8; //!< 8 bit signed 67 typedef int BOOLEAN; //!< boolean 68 typedef int Boolean; //!< boolean 69 typedef signed int BIT_FIELD; //!< bit field 70 71 typedef unsigned int UINT; //!< unsigned integer 72 73 //From dwc_os.h 74 #define size_t uint32 75 76 extern SINT8 SINT8_minus_SINT8(SINT8 x, SINT8 y); 77 extern SINT8 SINT8_plus_SINT8(SINT8 x, SINT8 y); 78 79 #ifdef __GNUC__ 80 /** Structure packing begins */ 81 #define MLAN_PACK_START 82 /** Structure packeing end */ 83 #define MLAN_PACK_END __attribute__((packed)) 84 #else /* !__GNUC__ */ 85 #ifdef PRAGMA_PACK 86 /** Structure packing begins */ 87 #define MLAN_PACK_START 88 /** Structure packeing end */ 89 #define MLAN_PACK_END 90 #else /* !PRAGMA_PACK */ 91 /** Structure packing begins */ 92 #define MLAN_PACK_START __packed 93 /** Structure packing end */ 94 #define MLAN_PACK_END 95 #endif /* PRAGMA_PACK */ 96 #endif /* __GNUC__ */ 97 98 #ifndef INLINE 99 #ifdef __GNUC__ 100 /** inline directive */ 101 #define INLINE inline 102 #else 103 /** inline directive */ 104 #define INLINE __inline 105 #endif 106 #endif 107 108 typedef struct _REFCLK_VAL8_REG7F { 109 UINT8 refClk; 110 UINT8 val; 111 } REFCLK_VAL8_REG7F; 112 113 #define REG8_TERMINATOR (0xFF) 114 typedef struct _ADDR8_VAL8_REG { 115 UINT8 reg; 116 UINT8 val; 117 } ADDR8_VAL8_REG; 118 119 #define REG16_TERMINATOR (0xFFFF) 120 typedef struct _ADDR16_VAL8_REG { 121 UINT16 reg; 122 UINT8 val; 123 } ADDR16_VAL8_REG; 124 125 #define REG32_TERMINATOR (0xFFFFFFFF) 126 typedef struct _ADDR32_VAL32_REG { 127 UINT32 reg; 128 UINT32 val; 129 } ADDR32_VAL32_REG; 130 131 #if defined(BBP_9BIT_ADDR) 132 #define BBP_TERMINATOR REG16_TERMINATOR 133 #else 134 #define BBP_TERMINATOR REG8_TERMINATOR 135 #endif 136 137 /*! Generic status code */ 138 #define WL_STATUS_OK 0 //!< ok 139 #define WL_STATUS_ERR -1 //!< error 140 #define WL_STATUS_BAD_PARAM -2 //!< bad parameter 141 142 /* Some BT files require access to wltypes.h file which result in duplicate definition of FALSE & TRUE 143 * undef TRUE and FALSE to avoid these warnings */ 144 #undef FALSE 145 #undef TRUE 146 #undef INLINE 147 148 /*! BOOLEAN values */ 149 #define FALSE 0 //!< False 150 #define TRUE 1 //!< True 151 152 /** 153 *** @brief Enumeration of Status type 154 **/ 155 typedef enum { 156 SUCCESS, //!< 0 157 FAIL //!< 1 158 } Status_e; 159 160 typedef Status_e WL_STATUS; 161 162 /*! Value for NULL pointer */ 163 #undef NULL 164 #define NULL ((void *)0) //!< null 165 #if 0 166 #ifndef LINT 167 #define MLAN_PACK_START __packed //!< packed structure 168 #define MLAN_PACK_END //!< end of packed structure 169 170 #define ALIGNED_START(x) __align(x) //!< allignment macro 171 #define ALIGNED_END(x) //!< allignment end 172 #else 173 #define MLAN_PACK_START 174 #define MLAN_PACK_END 175 176 #define ALIGNED_START(x) 177 #define ALIGNED_END(x) 178 #endif 179 #endif 180 #define INLINE 181 182 #define BIT0 (0x00000001 << 0) 183 #define BIT1 (0x00000001 << 1) 184 #define BIT2 (0x00000001 << 2) 185 #define BIT3 (0x00000001 << 3) 186 #define BIT4 (0x00000001 << 4) 187 #define BIT5 (0x00000001 << 5) 188 #define BIT6 (0x00000001 << 6) 189 #define BIT7 (0x00000001 << 7) 190 #define BIT8 (0x00000001 << 8) 191 #define BIT9 (0x00000001 << 9) 192 #define BIT10 (0x00000001 << 10) 193 #define BIT11 (0x00000001 << 11) 194 #define BIT12 (0x00000001 << 12) 195 #define BIT13 (0x00000001 << 13) 196 #define BIT14 (0x00000001 << 14) 197 #define BIT15 (0x00000001 << 15) 198 #define BIT16 (0x00000001 << 16) 199 #define BIT17 (0x00000001 << 17) 200 #define BIT18 (0x00000001 << 18) 201 #define BIT19 (0x00000001 << 19) 202 #define BIT20 (0x00000001 << 20) 203 #define BIT21 (0x00000001 << 21) 204 #define BIT22 (0x00000001 << 22) 205 #define BIT23 (0x00000001 << 23) 206 #define BIT24 (0x00000001 << 24) 207 #define BIT25 (0x00000001 << 25) 208 #define BIT26 (0x00000001 << 26) 209 #define BIT27 (0x00000001 << 27) 210 #define BIT28 (0x00000001 << 28) 211 #define BIT29 (0x00000001 << 29) 212 #define BIT30 (0x00000001 << 30) 213 #define BIT31 (0x00000001UL << 31) 214 215 // VOLT_RESOLUTION_50mV 216 #define VOLT_0_5 10 // 10x50mV = 5x100mV 217 #define VOLT_0_6 12 // 12x50mV = 6x100mV 218 #define VOLT_0_7 14 // 14x50mV = 7x100mV 219 #define VOLT_0_7_5 15 // 15x50mV = 7.5x100mV 220 #define VOLT_0_8 16 // 16x50mV = 8x100mV 221 #define VOLT_0_8_5 17 // 17x50mV = 8.5x100mV 222 #define VOLT_0_9 18 // 18x50mV = 9x100mV 223 #define VOLT_1_0 20 // 20x50mV = 10x100mV 224 #define VOLT_1_0_5 21 // 21x50mV 225 #define VOLT_1_1 22 // 22x50mV = 11x100mV 226 #define VOLT_1_1_5 23 // 23x50mV 227 #define VOLT_1_2 24 // 24x50mV = 12x100mV 228 #define VOLT_1_2_5 25 // 25x50mV 229 #define VOLT_1_3 26 // 26x50mV = 13x100mV 230 #define VOLT_1_4 28 // 28x50mV = 14x100mV 231 #define VOLT_1_5 30 // 30x50mV = 15x100mV 232 #define VOLT_1_5_5 31 // 31x50mV = 15.5x100mV 233 #define VOLT_1_6 32 // 32x50mV = 16x100mV 234 #define VOLT_1_6_5 33 // 33x50mV = 16.5x100mV 235 #define VOLT_1_7 34 // 34x50mV = 17x100mV 236 #define VOLT_1_7_5 35 // 35x50mV = 17.5x100mV 237 #define VOLT_1_8 36 // 36x50mV = 18x100mV 238 #define VOLT_1_8_5 37 // 37x50mV = 18.5x100mV 239 #define VOLT_1_9 38 // 38x50mV = 19x100mV 240 #define VOLT_1_9_5 39 // 39x50mV = 19.5x100mV 241 #define VOLT_2_0 40 // 40x50mV = 20x100mV 242 #define VOLT_2_1 42 // 42x50mV = 21x100mV 243 #define VOLT_2_2 44 // 44x50mV = 22x100mV 244 #define VOLT_2_3 46 // 46x50mV = 23x100mV 245 #define VOLT_2_4 48 // 48x50mV = 24x100mV 246 #define VOLT_2_5 50 // 50x50mV = 25x100mV 247 #define VOLT_2_6 52 // 52x50mV = 26x100mV 248 #define VOLT_2_7 54 // 54x50mV = 27x100mV 249 #define VOLT_2_8 56 // 56x50mV = 28x100mV 250 #define VOLT_2_9 58 // 58x50mV = 29x100mV 251 #define VOLT_3_0 60 // 60x50mV = 30x100mV 252 #define VOLT_3_1 62 // 62x50mV = 31x100mV 253 #define VOLT_3_2 64 // 64x50mV = 32x100mV 254 #define VOLT_3_3 66 // 66x50mV = 33x100mV 255 #define VOLT_3_4 68 // 68x50mV = 34x100mV 256 #define VOLT_3_5 70 // 70x50mV = 35x100mV 257 #define VOLT_3_6 72 // 72x50mV = 36x100mV 258 259 typedef enum { 260 OFF = 0, 261 ON = 1, 262 UNKOWN = 0xFF 263 } ON_OFF_UNKOWN_e; 264 265 typedef unsigned char MRVL_RATEID; 266 267 #if defined(DOT11AC) && defined(STREAM_2x2) 268 typedef unsigned long long MRVL_RATEID_BITMAP_UNIT; 269 typedef struct { 270 unsigned long long bitmap[2]; 271 } MRVL_RATEID_BITMAP; 272 #define MRVL_RATEID_BIT(rateId) (1ULL << (rateId)) 273 #else 274 #if defined(STREAM_2x2) || defined(DOT11AC) 275 typedef unsigned long long MRVL_RATEID_BITMAP_UNIT; 276 typedef unsigned long long MRVL_RATEID_BITMAP; 277 #define MRVL_RATEID_BIT(rateId) (1ULL << (rateId)) 278 #else 279 typedef unsigned int MRVL_RATEID_BITMAP_UNIT; 280 typedef unsigned int MRVL_RATEID_BITMAP; 281 #define MRVL_RATEID_BIT(rateId) (1UL << (rateId)) 282 #endif 283 #endif 284 285 #define NUM_RATE_BITMAP_UNIT (sizeof(MRVL_RATEID_BITMAP_UNIT)*8) 286 287 enum { 288 RATEID_DBPSK1Mbps, //(0) 289 RATEID_DQPSK2Mbps, //(1) 290 RATEID_CCK5_5Mbps, //(2) 291 RATEID_CCK11Mbps, //(3) 292 RATEID_CCK22Mbps, //(4) 293 RATEID_OFDM6Mbps, //(5) 294 RATEID_OFDM9Mbps, //(6) 295 RATEID_OFDM12Mbps, //(7) 296 RATEID_OFDM18Mbps, //(8) 297 RATEID_OFDM24Mbps, //(9) 298 RATEID_OFDM36Mbps, //(10) 299 RATEID_OFDM48Mbps, //(11) 300 RATEID_OFDM54Mbps, //(12) 301 RATEID_OFDM72Mbps, //(13) 302 303 RATEID_MCS0_6d5Mbps, //(14) //RATEID_OFDM72Mbps + 1 304 RATEID_MCS1_13Mbps, //(15) 305 RATEID_MCS2_19d5Mbps, //(16) 306 RATEID_MCS3_26Mbps, //(17) 307 RATEID_MCS4_39Mbps, //(18) 308 RATEID_MCS5_52Mbps, //(19) 309 RATEID_MCS6_58d5Mbps, //(20) 310 RATEID_MCS7_65Mbps, //(21) 311 312 #ifdef STREAM_2x2 313 RATEID_MCS8_13Mbps, //(22) 314 RATEID_MCS9_26Mbps, //(23) 315 RATEID_MCS10_39Mbps, //(24) 316 RATEID_MCS11_52Mbps, //(25) 317 RATEID_MCS12_78Mbps, //(26) 318 RATEID_MCS13_104Mbps, //(27) 319 RATEID_MCS14_117Mbps, //(28) 320 RATEID_MCS15_130Mbps, //(29) 321 #endif 322 323 RATEID_MCS32BW40_6Mbps, //(30), (22) 324 RATEID_MCS0BW40_13d5Mbps, //(31), (23) 325 RATEID_MCS1BW40_27Mbps, //(32), (24) 326 RATEID_MCS2BW40_40d5Mbps, //(33), (25) 327 RATEID_MCS3BW40_54Mbps, //(34), (26) 328 RATEID_MCS4BW40_81Mbps, //(35), (27) 329 RATEID_MCS5BW40_108Mbps, //(36), (28) 330 RATEID_MCS6BW40_121d5Mbps, //(37), (29) 331 RATEID_MCS7BW40_135Mbps, //(38), (30) 332 333 #ifdef STREAM_2x2 334 RATEID_MCS8BW40_27Mbps, //(39) 335 RATEID_MCS9BW40_54Mbps, //(40) 336 RATEID_MCS10BW40_81Mbps, //(41) 337 RATEID_MCS11BW40_108Mbps, //(42) 338 RATEID_MCS12BW40_162Mbps, //(43) 339 RATEID_MCS13BW40_216Mbps, //(44) 340 RATEID_MCS14BW40_243Mbps, //(45) 341 RATEID_MCS15BW40_270Mbps, //(46) 342 #endif 343 344 #if defined(DOT11AC) 345 RATEID_VHT_MCS0_1SS_BW20, //(47), (31) //6.5 Mbps 346 RATEID_VHT_MCS1_1SS_BW20, //(48), (32) //13 Mbps 347 RATEID_VHT_MCS2_1SS_BW20, //(49), (33) //19.5 Mbps 348 RATEID_VHT_MCS3_1SS_BW20, //(50), (34) //26 Mbps 349 RATEID_VHT_MCS4_1SS_BW20, //(51), (35) //39 Mbps 350 RATEID_VHT_MCS5_1SS_BW20, //(52), (36) //52 Mbps 351 RATEID_VHT_MCS6_1SS_BW20, //(53), (37) //58.5 Mbps 352 RATEID_VHT_MCS7_1SS_BW20, //(54), (38) //65 Mbps 353 RATEID_VHT_MCS8_1SS_BW20, //(55), (39) //78 Mbps 354 RATEID_VHT_MCS9_1SS_BW20, //(56), (40) //86.7 Mbps(INVALID) 355 356 #ifdef STREAM_2x2 357 RATEID_VHT_MCS0_2SS_BW20, //(57) //13 Mbps 358 RATEID_VHT_MCS1_2SS_BW20, //(58) //26 Mbps 359 RATEID_VHT_MCS2_2SS_BW20, //(59) //39 Mbps 360 RATEID_VHT_MCS3_2SS_BW20, //(60) //52 Mbps 361 RATEID_VHT_MCS4_2SS_BW20, //(61) //78 Mbps 362 RATEID_VHT_MCS5_2SS_BW20, //(62) //104 Mbps 363 RATEID_VHT_MCS6_2SS_BW20, //(63) //117 Mbps 364 RATEID_VHT_MCS7_2SS_BW20, //(64) //130 Mbps 365 RATEID_VHT_MCS8_2SS_BW20, //(65) //156 Mbps 366 RATEID_VHT_MCS9_2SS_BW20, //(66) //173.3 Mbps(INVALID) 367 #endif 368 369 RATEID_VHT_MCS0_1SS_BW40, //(67), (41) //13.5 Mbps 370 RATEID_VHT_MCS1_1SS_BW40, //(68), (42) //27 Mbps 371 RATEID_VHT_MCS2_1SS_BW40, //(69), (43) //40.5 Mbps 372 RATEID_VHT_MCS3_1SS_BW40, //(70), (44) //54 Mbps 373 RATEID_VHT_MCS4_1SS_BW40, //(71), (45) //81 Mbps 374 RATEID_VHT_MCS5_1SS_BW40, //(72), (46) //108 Mbps 375 RATEID_VHT_MCS6_1SS_BW40, //(73), (47) //121.5 Mbps 376 RATEID_VHT_MCS7_1SS_BW40, //(74), (48) //135 Mbps 377 RATEID_VHT_MCS8_1SS_BW40, //(75), (49) //162 Mbps 378 RATEID_VHT_MCS9_1SS_BW40, //(76), (50) //180 Mbps 379 380 #ifdef STREAM_2x2 381 RATEID_VHT_MCS0_2SS_BW40, //(77) //27 Mbps 382 RATEID_VHT_MCS1_2SS_BW40, //(78) //54 Mbps 383 RATEID_VHT_MCS2_2SS_BW40, //(79) //81 Mbps 384 RATEID_VHT_MCS3_2SS_BW40, //(80) //108 Mbps 385 RATEID_VHT_MCS4_2SS_BW40, //(81) //162 Mbps 386 RATEID_VHT_MCS5_2SS_BW40, //(82) //216 Mbps 387 RATEID_VHT_MCS6_2SS_BW40, //(83) //243 Mbps 388 RATEID_VHT_MCS7_2SS_BW40, //(84) //270 Mbps 389 RATEID_VHT_MCS8_2SS_BW40, //(85) //324 Mbps 390 RATEID_VHT_MCS9_2SS_BW40, //(86) //360 Mbps 391 #endif 392 393 RATEID_VHT_MCS0_1SS_BW80, //(87), (51) //29.3 Mbps 394 RATEID_VHT_MCS1_1SS_BW80, //(88), (52) //58.5 Mbps 395 RATEID_VHT_MCS2_1SS_BW80, //(89), (53) //87.8 Mbps 396 RATEID_VHT_MCS3_1SS_BW80, //(90), (54) //117 Mbps 397 RATEID_VHT_MCS4_1SS_BW80, //(91), (55) //175.5 Mbps 398 RATEID_VHT_MCS5_1SS_BW80, //(92), (56) //234 Mbps 399 RATEID_VHT_MCS6_1SS_BW80, //(93), (57) //263.3 Mbps 400 RATEID_VHT_MCS7_1SS_BW80, //(94), (58) //292.5 Mbps 401 RATEID_VHT_MCS8_1SS_BW80, //(95), (59) //351 Mbps 402 RATEID_VHT_MCS9_1SS_BW80, //(96), (60) //390 Mbps 403 404 #ifdef STREAM_2x2 405 RATEID_VHT_MCS0_2SS_BW80, //(97) //58.5 Mbps 406 RATEID_VHT_MCS1_2SS_BW80, //(98) //117 Mbps 407 RATEID_VHT_MCS2_2SS_BW80, //(99) //175 Mbps 408 RATEID_VHT_MCS3_2SS_BW80, //(100) //234 Mbps 409 RATEID_VHT_MCS4_2SS_BW80, //(101) //351 Mbps 410 RATEID_VHT_MCS5_2SS_BW80, //(102) //468 Mbps 411 RATEID_VHT_MCS6_2SS_BW80, //(103) //526.5 Mbps 412 RATEID_VHT_MCS7_2SS_BW80, //(104) //585 Mbps 413 RATEID_VHT_MCS8_2SS_BW80, //(105) //702 Mbps 414 RATEID_VHT_MCS9_2SS_BW80, //(106) //780 Mbps 415 #endif 416 #endif //DOT11AC 417 418 RATEID_AUTO = 0xFE, 419 RATEID_UNKNOWN = 0xFF 420 }; 421 422 //MAX RATE DEFINITION 423 #define RATEID_DSSSMAX RATEID_DQPSK2Mbps 424 425 #define RATEID_CCKMAX RATEID_CCK11Mbps 426 427 #define RATEID_OFDMMAX RATEID_OFDM54Mbps 428 #define RATEID_OFDMMIN RATEID_OFDM6Mbps 429 430 #define RATEID_HTBW20MIN RATEID_MCS0_6d5Mbps 431 #ifdef STREAM_2x2 432 #define RATEID_HTBW20MAX RATEID_MCS15_130Mbps 433 #else 434 #define RATEID_HTBW20MAX RATEID_MCS7_65Mbps 435 #endif 436 437 #define RATEID_HTBW40MIN RATEID_MCS32BW40_6Mbps 438 #ifdef STREAM_2x2 439 #define RATEID_HTBW40MAX RATEID_MCS15BW40_270Mbps 440 #else 441 #define RATEID_HTBW40MAX RATEID_MCS7BW40_135Mbps 442 #endif 443 444 #define RATEID_HTMIN RATEID_HTBW20MIN 445 #define RATEID_HTMAX RATEID_HTBW40MAX 446 447 #if defined(DOT11AC) 448 #define RATEID_VHTBW20MIN RATEID_VHT_MCS0_1SS_BW20 449 #define RATEID_VHTBW40MIN RATEID_VHT_MCS0_1SS_BW40 450 #define RATEID_VHTBW80MIN RATEID_VHT_MCS0_1SS_BW80 451 452 #define RATEID_VHTMIN RATEID_VHT_MCS0_1SS_BW20 453 #ifdef STREAM_2x2 454 #define RATEID_VHTBW20MAX RATEID_VHT_MCS9_2SS_BW20 455 #define RATEID_VHTBW40MAX RATEID_VHT_MCS9_2SS_BW40 456 #define RATEID_VHTMAX RATEID_VHT_MCS9_2SS_BW80 457 #else 458 #define RATEID_VHTBW20MAX RATEID_VHT_MCS9_1SS_BW20 459 #define RATEID_VHTBW40MAX RATEID_VHT_MCS9_1SS_BW40 460 #define RATEID_VHTMAX RATEID_VHT_MCS9_1SS_BW80 461 #endif 462 #define RATEID_VHTBW80MAX RATEID_VHTMAX 463 464 /* 160 is not supported yet; define them correctly when supported */ 465 #define RATEID_VHTBW160MIN 0xFF 466 #define RATEID_VHTBW160MAX 0xFF 467 468 #endif //DOT11AC 469 470 #define MLME_SUCCESS 0 471 #define MLME_INPROCESS 1 472 #define MLME_FAILURE -1 473 474 #define RATEID_9_6_MASK (((1<<(1+RATEID_OFDM9Mbps-RATEID_OFDM6Mbps))-1) \ 475 << RATEID_OFDM6Mbps) 476 477 #define RATEID_12_6_MASK (((1<<(1+RATEID_OFDM12Mbps-RATEID_OFDM6Mbps))-1) \ 478 << RATEID_OFDM6Mbps) 479 480 #define RATEID_18_6_MASK (((1<<(1+RATEID_OFDM18Mbps-RATEID_OFDM6Mbps))-1) \ 481 << RATEID_OFDM6Mbps) 482 483 #define RATEID_24_6_MASK (((1<<(1+RATEID_OFDM24Mbps-RATEID_OFDM6Mbps))-1) \ 484 << RATEID_OFDM6Mbps) 485 486 #define RATEID_36_6_MASK (((1<<(1+RATEID_OFDM36Mbps-RATEID_OFDM6Mbps))-1) \ 487 << RATEID_OFDM6Mbps) 488 489 #define RATEID_48_6_MASK (((1<<(1+RATEID_OFDM48Mbps-RATEID_OFDM6Mbps))-1) \ 490 << RATEID_OFDM6Mbps) 491 492 #define RATEID_54_6_MASK (((1<<(1+RATEID_OFDM54Mbps-RATEID_OFDM6Mbps))-1) \ 493 << RATEID_OFDM6Mbps) 494 495 #define RATEID_CCK_MASK ( (1 << RATEID_DBPSK1Mbps) \ 496 | (1 << RATEID_DQPSK2Mbps) \ 497 | (1 << RATEID_CCK5_5Mbps) \ 498 | (1 << RATEID_CCK11Mbps) ) 499 500 #define HT_RATE_MASK_MCS0_7 ( (1ULL << RATEID_MCS0_6d5Mbps) \ 501 | (1ULL << RATEID_MCS1_13Mbps) \ 502 | (1ULL << RATEID_MCS2_19d5Mbps) \ 503 | (1ULL << RATEID_MCS3_26Mbps) \ 504 | (1ULL << RATEID_MCS4_39Mbps) \ 505 | (1ULL << RATEID_MCS5_52Mbps) \ 506 | (1ULL << RATEID_MCS6_58d5Mbps) \ 507 | (1ULL << RATEID_MCS7_65Mbps) ) 508 #ifdef STREAM_2x2 509 #define HT_RATE_MASK_MCS8_15 ( (1ULL << RATEID_MCS8_13Mbps) \ 510 | (1ULL << RATEID_MCS9_26Mbps) \ 511 | (1ULL << RATEID_MCS10_39Mbps) \ 512 | (1ULL << RATEID_MCS11_52Mbps) \ 513 | (1ULL << RATEID_MCS12_78Mbps) \ 514 | (1ULL << RATEID_MCS13_104Mbps) \ 515 | (1ULL << RATEID_MCS14_117Mbps) \ 516 | (1ULL << RATEID_MCS15_130Mbps) ) 517 518 #else //1x1 519 #define HT_RATE_MASK_MCS8_15 (0) 520 #endif 521 522 #define HT_RATE_MASK_MCS0_7_32_40MHZ ( (1ULL << RATEID_MCS32BW40_6Mbps) \ 523 | (1ULL << RATEID_MCS0BW40_13d5Mbps) \ 524 | (1ULL << RATEID_MCS1BW40_27Mbps) \ 525 | (1ULL << RATEID_MCS2BW40_40d5Mbps) \ 526 | (1ULL << RATEID_MCS3BW40_54Mbps) \ 527 | (1ULL << RATEID_MCS4BW40_81Mbps) \ 528 | (1ULL << RATEID_MCS5BW40_108Mbps) \ 529 | (1ULL << RATEID_MCS6BW40_121d5Mbps) \ 530 | (1ULL << RATEID_MCS7BW40_135Mbps) ) 531 532 #ifdef STREAM_2x2 533 #define HT_RATE_MASK_MCS8_15_40MHZ ( (1ULL << RATEID_MCS8BW40_27Mbps) \ 534 | (1ULL << RATEID_MCS9BW40_54Mbps) \ 535 | (1ULL << RATEID_MCS10BW40_81Mbps) \ 536 | (1ULL << RATEID_MCS11BW40_108Mbps) \ 537 | (1ULL << RATEID_MCS12BW40_162Mbps) \ 538 | (1ULL << RATEID_MCS13BW40_216Mbps) \ 539 | (1ULL << RATEID_MCS14BW40_243Mbps) \ 540 | (1ULL << RATEID_MCS15BW40_270Mbps) ) 541 542 #else //1x1 543 #define HT_RATE_MASK_MCS8_15_40MHZ (0) 544 #endif 545 546 #define RATEID_MCS_MASK ( HT_RATE_MASK_MCS0_7 \ 547 | HT_RATE_MASK_MCS8_15 \ 548 | HT_RATE_MASK_MCS0_7_32_40MHZ \ 549 | HT_RATE_MASK_MCS8_15_40MHZ ) 550 551 #define RATEID_MCSBW40_MASK ( HT_RATE_MASK_MCS0_7_32_40MHZ \ 552 | HT_RATE_MASK_MCS8_15_40MHZ ) 553 554 #define RATEID_MCS1x1_MASK ( HT_RATE_MASK_MCS0_7 \ 555 | HT_RATE_MASK_MCS0_7_32_40MHZ) 556 557 #define RATEID_MCS2x2_MASK ( HT_RATE_MASK_MCS8_15 \ 558 | HT_RATE_MASK_MCS8_15_40MHZ ) 559 560 #define IS_DSSS_FRAME(rateid) (rateid < RATEID_OFDM6Mbps) 561 #define IS_OFDM_FRAME(rateid) (rateid >= RATEID_OFDM6Mbps) 562 563 typedef unsigned char MRVL_TRPCID; 564 typedef signed long PWR_in_dBm; 565 566 #if 0 567 #define ASSERT_RATEID(rateid) {while(rateid > RATEID_MAX);} 568 #define ASSERT_NonZero(x) {while(x == 0);} 569 #else 570 #define ASSERT_RATEID(rateid) 571 #define ASSERT_NonZero(x) 572 #endif 573 574 #endif /* _WLTYPES_H_ */ 575