| /** @file wltypes.h |
| * |
| * @brief Basic types common to all the modules must be defined in this file. |
| * |
| * Copyright (C) 2014, Marvell International Ltd. |
| * |
| * This software file (the "File") is distributed by Marvell International |
| * Ltd. under the terms of the GNU General Public License Version 2, June 1991 |
| * (the "License"). You may use, redistribute and/or modify this File in |
| * accordance with the terms and conditions of the License, a copy of which |
| * is available by writing to the Free Software Foundation, Inc., |
| * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the |
| * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. |
| * |
| * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE |
| * ARE EXPRESSLY DISCLAIMED. The License provides additional details about |
| * this warranty disclaimer. |
| */ |
| |
| /****************************************************** |
| Change log: |
| 03/07/2014: Initial version |
| ******************************************************/ |
| #if !defined(WLTYPES_H__) |
| #define WLTYPES_H__ |
| /* |
| * Copyright 2003, Marvell Semiconductor, Inc. |
| * This code contains confidential information of Marvell Semiconductor, Inc. |
| * No rights are granted herein under any patent, mask work right or copyright |
| * of Marvell or any third party. |
| * Marvell reserves the right at its sole discretion to request that this code |
| * be immediately returned to Marvell. This code is provided "as is". |
| * Marvell makes no warranties, express, implied or otherwise, regarding its |
| * accuracy, completeness or performance. |
| */ |
| |
| /*! |
| * \file wltypes.h |
| * \brief Basic types common to all the modules must be defined in this file. |
| * |
| */ |
| /** @defgroup DataTypes Data Types used in SDK |
| * Functions exported by wltypes.h |
| * @{ |
| */ |
| /*! Create type names for native C types for portability reasons */ |
| typedef unsigned long long UINT64; // !< 64 bit unsigned |
| typedef signed long long SINT64; // !< 64 bit signed |
| typedef unsigned int UINT32; // !< 32 bit unsigned |
| typedef signed int SINT32; // !< 32 bit signed |
| typedef unsigned short UINT16; // !< 16 bit unsigned |
| typedef signed short SINT16; // !< 16 bit signed |
| typedef unsigned char UINT8; // !< 8 bit unsigned |
| typedef signed char SINT8; // !< 8 bit signed |
| |
| typedef unsigned long long uint64; // !< 64 bit unsigned |
| typedef signed long long sint64; // !< 64 bit signed |
| typedef unsigned int uint32; // !< 32 bit unsigned |
| |
| typedef signed int sint32; // !< 32 bit signed |
| typedef unsigned short uint16; // !< 16 bit unsigned |
| typedef signed short sint16; // !< 16 bit signed |
| typedef unsigned char uint8; // !< 8 bit unsigned |
| typedef signed char sint8; // !< 8 bit signed |
| typedef signed char int8; // !< 8 bit signed |
| typedef int BOOLEAN; // !< boolean |
| typedef int Boolean; // !< boolean |
| typedef signed int BIT_FIELD; // !< bit field |
| |
| typedef unsigned int UINT; // !< unsigned integer |
| |
| //From dwc_os.h |
| #define size_t uint32 |
| |
| extern SINT8 SINT8_minus_SINT8(SINT8 x, SINT8 y); |
| extern SINT8 SINT8_plus_SINT8(SINT8 x, SINT8 y); |
| |
| #ifdef __GNUC__ |
| /** Structure packing begins */ |
| #define MLAN_PACK_START |
| /** Structure packeing end */ |
| #define MLAN_PACK_END __attribute__((packed)) |
| #else /* !__GNUC__ */ |
| #ifdef PRAGMA_PACK |
| /** Structure packing begins */ |
| #define MLAN_PACK_START |
| /** Structure packeing end */ |
| #define MLAN_PACK_END |
| #else /* !PRAGMA_PACK */ |
| /** Structure packing begins */ |
| #define MLAN_PACK_START __packed |
| /** Structure packing end */ |
| #define MLAN_PACK_END |
| #endif /* PRAGMA_PACK */ |
| #endif /* __GNUC__ */ |
| |
| #ifndef INLINE |
| #ifdef __GNUC__ |
| /** inline directive */ |
| #define INLINE inline |
| #else |
| /** inline directive */ |
| #define INLINE __inline |
| #endif |
| #endif |
| |
| typedef struct _REFCLK_VAL8_REG7F { |
| UINT8 refClk; |
| UINT8 val; |
| } REFCLK_VAL8_REG7F; |
| |
| #define REG8_TERMINATOR (0xFF) |
| typedef struct _ADDR8_VAL8_REG { |
| UINT8 reg; |
| UINT8 val; |
| } ADDR8_VAL8_REG; |
| |
| #define REG16_TERMINATOR (0xFFFF) |
| typedef struct _ADDR16_VAL8_REG { |
| UINT16 reg; |
| UINT8 val; |
| } ADDR16_VAL8_REG; |
| |
| #define REG32_TERMINATOR (0xFFFFFFFF) |
| typedef struct _ADDR32_VAL32_REG { |
| UINT32 reg; |
| UINT32 val; |
| } ADDR32_VAL32_REG; |
| |
| #if defined(BBP_9BIT_ADDR) |
| #define BBP_TERMINATOR REG16_TERMINATOR |
| #else |
| #define BBP_TERMINATOR REG8_TERMINATOR |
| #endif |
| |
| /*! Generic status code */ |
| #define WL_STATUS_OK 0 // !< ok |
| #define WL_STATUS_ERR -1 // !< error |
| #define WL_STATUS_BAD_PARAM -2 // !< bad parameter |
| |
| /* Some BT files require access to wltypes.h file which result in duplicate definition of FALSE & TRUE |
| * undef TRUE and FALSE to avoid these warnings */ |
| #undef FALSE |
| #undef TRUE |
| #undef INLINE |
| |
| /*! BOOLEAN values */ |
| #define FALSE 0 // !< False |
| #define TRUE 1 // !< True |
| |
| /** |
| *** @brief Enumeration of Status type |
| **/ |
| typedef enum { |
| SUCCESS, // !< 0 |
| FAIL // !< 1 |
| } Status_e; |
| |
| typedef Status_e WL_STATUS; |
| |
| /*! Value for NULL pointer */ |
| #undef NULL |
| #define NULL ((void *)0) // !< null |
| #if 0 |
| #ifndef LINT |
| #define MLAN_PACK_START __packed // !< packed structure |
| #define MLAN_PACK_END // !< end of packed structure |
| |
| #define ALIGNED_START(x) __align(x) // !< allignment macro |
| #define ALIGNED_END(x) // !< allignment end |
| #else |
| #define MLAN_PACK_START |
| #define MLAN_PACK_END |
| |
| #define ALIGNED_START(x) |
| #define ALIGNED_END(x) |
| #endif |
| #endif |
| #define INLINE |
| |
| #define BIT0 (0x00000001 << 0) |
| #define BIT1 (0x00000001 << 1) |
| #define BIT2 (0x00000001 << 2) |
| #define BIT3 (0x00000001 << 3) |
| #define BIT4 (0x00000001 << 4) |
| #define BIT5 (0x00000001 << 5) |
| #define BIT6 (0x00000001 << 6) |
| #define BIT7 (0x00000001 << 7) |
| #define BIT8 (0x00000001 << 8) |
| #define BIT9 (0x00000001 << 9) |
| #define BIT10 (0x00000001 << 10) |
| #define BIT11 (0x00000001 << 11) |
| #define BIT12 (0x00000001 << 12) |
| #define BIT13 (0x00000001 << 13) |
| #define BIT14 (0x00000001 << 14) |
| #define BIT15 (0x00000001 << 15) |
| #define BIT16 (0x00000001 << 16) |
| #define BIT17 (0x00000001 << 17) |
| #define BIT18 (0x00000001 << 18) |
| #define BIT19 (0x00000001 << 19) |
| #define BIT20 (0x00000001 << 20) |
| #define BIT21 (0x00000001 << 21) |
| #define BIT22 (0x00000001 << 22) |
| #define BIT23 (0x00000001 << 23) |
| #define BIT24 (0x00000001 << 24) |
| #define BIT25 (0x00000001 << 25) |
| #define BIT26 (0x00000001 << 26) |
| #define BIT27 (0x00000001 << 27) |
| #define BIT28 (0x00000001 << 28) |
| #define BIT29 (0x00000001 << 29) |
| #define BIT30 (0x00000001 << 30) |
| #define BIT31 (0x00000001UL << 31) |
| |
| // VOLT_RESOLUTION_50mV |
| #define VOLT_0_5 10 // 10x50mV = 5x100mV |
| #define VOLT_0_6 12 // 12x50mV = 6x100mV |
| #define VOLT_0_7 14 // 14x50mV = 7x100mV |
| #define VOLT_0_7_5 15 // 15x50mV = 7.5x100mV |
| #define VOLT_0_8 16 // 16x50mV = 8x100mV |
| #define VOLT_0_8_5 17 // 17x50mV = 8.5x100mV |
| #define VOLT_0_9 18 // 18x50mV = 9x100mV |
| #define VOLT_1_0 20 // 20x50mV = 10x100mV |
| #define VOLT_1_0_5 21 // 21x50mV |
| #define VOLT_1_1 22 // 22x50mV = 11x100mV |
| #define VOLT_1_1_5 23 // 23x50mV |
| #define VOLT_1_2 24 // 24x50mV = 12x100mV |
| #define VOLT_1_2_5 25 // 25x50mV |
| #define VOLT_1_3 26 // 26x50mV = 13x100mV |
| #define VOLT_1_4 28 // 28x50mV = 14x100mV |
| #define VOLT_1_5 30 // 30x50mV = 15x100mV |
| #define VOLT_1_5_5 31 // 31x50mV = 15.5x100mV |
| #define VOLT_1_6 32 // 32x50mV = 16x100mV |
| #define VOLT_1_6_5 33 // 33x50mV = 16.5x100mV |
| #define VOLT_1_7 34 // 34x50mV = 17x100mV |
| #define VOLT_1_7_5 35 // 35x50mV = 17.5x100mV |
| #define VOLT_1_8 36 // 36x50mV = 18x100mV |
| #define VOLT_1_8_5 37 // 37x50mV = 18.5x100mV |
| #define VOLT_1_9 38 // 38x50mV = 19x100mV |
| #define VOLT_1_9_5 39 // 39x50mV = 19.5x100mV |
| #define VOLT_2_0 40 // 40x50mV = 20x100mV |
| #define VOLT_2_1 42 // 42x50mV = 21x100mV |
| #define VOLT_2_2 44 // 44x50mV = 22x100mV |
| #define VOLT_2_3 46 // 46x50mV = 23x100mV |
| #define VOLT_2_4 48 // 48x50mV = 24x100mV |
| #define VOLT_2_5 50 // 50x50mV = 25x100mV |
| #define VOLT_2_6 52 // 52x50mV = 26x100mV |
| #define VOLT_2_7 54 // 54x50mV = 27x100mV |
| #define VOLT_2_8 56 // 56x50mV = 28x100mV |
| #define VOLT_2_9 58 // 58x50mV = 29x100mV |
| #define VOLT_3_0 60 // 60x50mV = 30x100mV |
| #define VOLT_3_1 62 // 62x50mV = 31x100mV |
| #define VOLT_3_2 64 // 64x50mV = 32x100mV |
| #define VOLT_3_3 66 // 66x50mV = 33x100mV |
| #define VOLT_3_4 68 // 68x50mV = 34x100mV |
| #define VOLT_3_5 70 // 70x50mV = 35x100mV |
| #define VOLT_3_6 72 // 72x50mV = 36x100mV |
| |
| typedef enum { |
| OFF = 0, |
| ON = 1, |
| UNKOWN = 0xFF |
| } ON_OFF_UNKOWN_e; |
| |
| typedef unsigned char MRVL_RATEID; |
| |
| #if defined(DOT11AC) && defined(STREAM_2x2) |
| typedef unsigned long long MRVL_RATEID_BITMAP_UNIT; |
| typedef struct { |
| unsigned long long bitmap[2]; |
| } MRVL_RATEID_BITMAP; |
| #define MRVL_RATEID_BIT(rateId) (1ULL << (rateId)) |
| #else |
| #if defined(STREAM_2x2) || defined(DOT11AC) |
| typedef unsigned long long MRVL_RATEID_BITMAP_UNIT; |
| typedef unsigned long long MRVL_RATEID_BITMAP; |
| #define MRVL_RATEID_BIT(rateId) (1ULL << (rateId)) |
| #else |
| typedef unsigned int MRVL_RATEID_BITMAP_UNIT; |
| typedef unsigned int MRVL_RATEID_BITMAP; |
| #define MRVL_RATEID_BIT(rateId) (1UL << (rateId)) |
| #endif |
| #endif |
| |
| #define NUM_RATE_BITMAP_UNIT (sizeof(MRVL_RATEID_BITMAP_UNIT)*8) |
| |
| enum { |
| RATEID_DBPSK1Mbps, // (0) |
| RATEID_DQPSK2Mbps, // (1) |
| RATEID_CCK5_5Mbps, // (2) |
| RATEID_CCK11Mbps, // (3) |
| RATEID_CCK22Mbps, // (4) |
| RATEID_OFDM6Mbps, // (5) |
| RATEID_OFDM9Mbps, // (6) |
| RATEID_OFDM12Mbps, // (7) |
| RATEID_OFDM18Mbps, // (8) |
| RATEID_OFDM24Mbps, // (9) |
| RATEID_OFDM36Mbps, // (10) |
| RATEID_OFDM48Mbps, // (11) |
| RATEID_OFDM54Mbps, // (12) |
| RATEID_OFDM72Mbps, // (13) |
| |
| RATEID_MCS0_6d5Mbps, // (14) //RATEID_OFDM72Mbps + 1 |
| RATEID_MCS1_13Mbps, // (15) |
| RATEID_MCS2_19d5Mbps, // (16) |
| RATEID_MCS3_26Mbps, // (17) |
| RATEID_MCS4_39Mbps, // (18) |
| RATEID_MCS5_52Mbps, // (19) |
| RATEID_MCS6_58d5Mbps, // (20) |
| RATEID_MCS7_65Mbps, // (21) |
| |
| #ifdef STREAM_2x2 |
| RATEID_MCS8_13Mbps, // (22) |
| RATEID_MCS9_26Mbps, // (23) |
| RATEID_MCS10_39Mbps, // (24) |
| RATEID_MCS11_52Mbps, // (25) |
| RATEID_MCS12_78Mbps, // (26) |
| RATEID_MCS13_104Mbps, // (27) |
| RATEID_MCS14_117Mbps, // (28) |
| RATEID_MCS15_130Mbps, // (29) |
| #endif |
| |
| RATEID_MCS32BW40_6Mbps, // (30), (22) |
| RATEID_MCS0BW40_13d5Mbps, // (31), (23) |
| RATEID_MCS1BW40_27Mbps, // (32), (24) |
| RATEID_MCS2BW40_40d5Mbps, // (33), (25) |
| RATEID_MCS3BW40_54Mbps, // (34), (26) |
| RATEID_MCS4BW40_81Mbps, // (35), (27) |
| RATEID_MCS5BW40_108Mbps, // (36), (28) |
| RATEID_MCS6BW40_121d5Mbps, // (37), (29) |
| RATEID_MCS7BW40_135Mbps, // (38), (30) |
| |
| #ifdef STREAM_2x2 |
| RATEID_MCS8BW40_27Mbps, // (39) |
| RATEID_MCS9BW40_54Mbps, // (40) |
| RATEID_MCS10BW40_81Mbps, // (41) |
| RATEID_MCS11BW40_108Mbps, // (42) |
| RATEID_MCS12BW40_162Mbps, // (43) |
| RATEID_MCS13BW40_216Mbps, // (44) |
| RATEID_MCS14BW40_243Mbps, // (45) |
| RATEID_MCS15BW40_270Mbps, // (46) |
| #endif |
| |
| #if defined(DOT11AC) |
| RATEID_VHT_MCS0_1SS_BW20, // (47), (31) //6.5 Mbps |
| RATEID_VHT_MCS1_1SS_BW20, // (48), (32) //13 Mbps |
| RATEID_VHT_MCS2_1SS_BW20, // (49), (33) //19.5 Mbps |
| RATEID_VHT_MCS3_1SS_BW20, // (50), (34) //26 Mbps |
| RATEID_VHT_MCS4_1SS_BW20, // (51), (35) //39 Mbps |
| RATEID_VHT_MCS5_1SS_BW20, // (52), (36) //52 Mbps |
| RATEID_VHT_MCS6_1SS_BW20, // (53), (37) //58.5 Mbps |
| RATEID_VHT_MCS7_1SS_BW20, // (54), (38) //65 Mbps |
| RATEID_VHT_MCS8_1SS_BW20, // (55), (39) //78 Mbps |
| RATEID_VHT_MCS9_1SS_BW20, // (56), (40) //86.7 Mbps(INVALID) |
| |
| #ifdef STREAM_2x2 |
| RATEID_VHT_MCS0_2SS_BW20, // (57) //13 Mbps |
| RATEID_VHT_MCS1_2SS_BW20, // (58) //26 Mbps |
| RATEID_VHT_MCS2_2SS_BW20, // (59) //39 Mbps |
| RATEID_VHT_MCS3_2SS_BW20, // (60) //52 Mbps |
| RATEID_VHT_MCS4_2SS_BW20, // (61) //78 Mbps |
| RATEID_VHT_MCS5_2SS_BW20, // (62) //104 Mbps |
| RATEID_VHT_MCS6_2SS_BW20, // (63) //117 Mbps |
| RATEID_VHT_MCS7_2SS_BW20, // (64) //130 Mbps |
| RATEID_VHT_MCS8_2SS_BW20, // (65) //156 Mbps |
| RATEID_VHT_MCS9_2SS_BW20, // (66) //173.3 Mbps(INVALID) |
| #endif |
| |
| RATEID_VHT_MCS0_1SS_BW40, // (67), (41) //13.5 Mbps |
| RATEID_VHT_MCS1_1SS_BW40, // (68), (42) //27 Mbps |
| RATEID_VHT_MCS2_1SS_BW40, // (69), (43) //40.5 Mbps |
| RATEID_VHT_MCS3_1SS_BW40, // (70), (44) //54 Mbps |
| RATEID_VHT_MCS4_1SS_BW40, // (71), (45) //81 Mbps |
| RATEID_VHT_MCS5_1SS_BW40, // (72), (46) //108 Mbps |
| RATEID_VHT_MCS6_1SS_BW40, // (73), (47) //121.5 Mbps |
| RATEID_VHT_MCS7_1SS_BW40, // (74), (48) //135 Mbps |
| RATEID_VHT_MCS8_1SS_BW40, // (75), (49) //162 Mbps |
| RATEID_VHT_MCS9_1SS_BW40, // (76), (50) //180 Mbps |
| |
| #ifdef STREAM_2x2 |
| RATEID_VHT_MCS0_2SS_BW40, // (77) //27 Mbps |
| RATEID_VHT_MCS1_2SS_BW40, // (78) //54 Mbps |
| RATEID_VHT_MCS2_2SS_BW40, // (79) //81 Mbps |
| RATEID_VHT_MCS3_2SS_BW40, // (80) //108 Mbps |
| RATEID_VHT_MCS4_2SS_BW40, // (81) //162 Mbps |
| RATEID_VHT_MCS5_2SS_BW40, // (82) //216 Mbps |
| RATEID_VHT_MCS6_2SS_BW40, // (83) //243 Mbps |
| RATEID_VHT_MCS7_2SS_BW40, // (84) //270 Mbps |
| RATEID_VHT_MCS8_2SS_BW40, // (85) //324 Mbps |
| RATEID_VHT_MCS9_2SS_BW40, // (86) //360 Mbps |
| #endif |
| |
| RATEID_VHT_MCS0_1SS_BW80, // (87), (51) //29.3 Mbps |
| RATEID_VHT_MCS1_1SS_BW80, // (88), (52) //58.5 Mbps |
| RATEID_VHT_MCS2_1SS_BW80, // (89), (53) //87.8 Mbps |
| RATEID_VHT_MCS3_1SS_BW80, // (90), (54) //117 Mbps |
| RATEID_VHT_MCS4_1SS_BW80, // (91), (55) //175.5 Mbps |
| RATEID_VHT_MCS5_1SS_BW80, // (92), (56) //234 Mbps |
| RATEID_VHT_MCS6_1SS_BW80, // (93), (57) //263.3 Mbps |
| RATEID_VHT_MCS7_1SS_BW80, // (94), (58) //292.5 Mbps |
| RATEID_VHT_MCS8_1SS_BW80, // (95), (59) //351 Mbps |
| RATEID_VHT_MCS9_1SS_BW80, // (96), (60) //390 Mbps |
| |
| #ifdef STREAM_2x2 |
| RATEID_VHT_MCS0_2SS_BW80, // (97) //58.5 Mbps |
| RATEID_VHT_MCS1_2SS_BW80, // (98) //117 Mbps |
| RATEID_VHT_MCS2_2SS_BW80, // (99) //175 Mbps |
| RATEID_VHT_MCS3_2SS_BW80, // (100) //234 Mbps |
| RATEID_VHT_MCS4_2SS_BW80, // (101) //351 Mbps |
| RATEID_VHT_MCS5_2SS_BW80, // (102) //468 Mbps |
| RATEID_VHT_MCS6_2SS_BW80, // (103) //526.5 Mbps |
| RATEID_VHT_MCS7_2SS_BW80, // (104) //585 Mbps |
| RATEID_VHT_MCS8_2SS_BW80, // (105) //702 Mbps |
| RATEID_VHT_MCS9_2SS_BW80, // (106) //780 Mbps |
| #endif |
| #endif // DOT11AC |
| |
| RATEID_AUTO = 0xFE, |
| RATEID_UNKNOWN = 0xFF |
| }; |
| |
| //MAX RATE DEFINITION |
| #define RATEID_DSSSMAX RATEID_DQPSK2Mbps |
| |
| #define RATEID_CCKMAX RATEID_CCK11Mbps |
| |
| #define RATEID_OFDMMAX RATEID_OFDM54Mbps |
| #define RATEID_OFDMMIN RATEID_OFDM6Mbps |
| |
| #define RATEID_HTBW20MIN RATEID_MCS0_6d5Mbps |
| #ifdef STREAM_2x2 |
| #define RATEID_HTBW20MAX RATEID_MCS15_130Mbps |
| #else |
| #define RATEID_HTBW20MAX RATEID_MCS7_65Mbps |
| #endif |
| |
| #define RATEID_HTBW40MIN RATEID_MCS32BW40_6Mbps |
| #ifdef STREAM_2x2 |
| #define RATEID_HTBW40MAX RATEID_MCS15BW40_270Mbps |
| #else |
| #define RATEID_HTBW40MAX RATEID_MCS7BW40_135Mbps |
| #endif |
| |
| #define RATEID_HTMIN RATEID_HTBW20MIN |
| #define RATEID_HTMAX RATEID_HTBW40MAX |
| |
| #if defined(DOT11AC) |
| #define RATEID_VHTBW20MIN RATEID_VHT_MCS0_1SS_BW20 |
| #define RATEID_VHTBW40MIN RATEID_VHT_MCS0_1SS_BW40 |
| #define RATEID_VHTBW80MIN RATEID_VHT_MCS0_1SS_BW80 |
| |
| #define RATEID_VHTMIN RATEID_VHT_MCS0_1SS_BW20 |
| #ifdef STREAM_2x2 |
| #define RATEID_VHTBW20MAX RATEID_VHT_MCS9_2SS_BW20 |
| #define RATEID_VHTBW40MAX RATEID_VHT_MCS9_2SS_BW40 |
| #define RATEID_VHTMAX RATEID_VHT_MCS9_2SS_BW80 |
| #else |
| #define RATEID_VHTBW20MAX RATEID_VHT_MCS9_1SS_BW20 |
| #define RATEID_VHTBW40MAX RATEID_VHT_MCS9_1SS_BW40 |
| #define RATEID_VHTMAX RATEID_VHT_MCS9_1SS_BW80 |
| #endif |
| #define RATEID_VHTBW80MAX RATEID_VHTMAX |
| |
| /* 160 is not supported yet; define them correctly when supported */ |
| #define RATEID_VHTBW160MIN 0xFF |
| #define RATEID_VHTBW160MAX 0xFF |
| |
| #endif // DOT11AC |
| |
| #define MLME_SUCCESS 0 |
| #define MLME_INPROCESS 1 |
| #define MLME_FAILURE -1 |
| |
| #define RATEID_9_6_MASK (((1<<(1+RATEID_OFDM9Mbps-RATEID_OFDM6Mbps))-1) \ |
| << RATEID_OFDM6Mbps) |
| |
| #define RATEID_12_6_MASK (((1<<(1+RATEID_OFDM12Mbps-RATEID_OFDM6Mbps))-1) \ |
| << RATEID_OFDM6Mbps) |
| |
| #define RATEID_18_6_MASK (((1<<(1+RATEID_OFDM18Mbps-RATEID_OFDM6Mbps))-1) \ |
| << RATEID_OFDM6Mbps) |
| |
| #define RATEID_24_6_MASK (((1<<(1+RATEID_OFDM24Mbps-RATEID_OFDM6Mbps))-1) \ |
| << RATEID_OFDM6Mbps) |
| |
| #define RATEID_36_6_MASK (((1<<(1+RATEID_OFDM36Mbps-RATEID_OFDM6Mbps))-1) \ |
| << RATEID_OFDM6Mbps) |
| |
| #define RATEID_48_6_MASK (((1<<(1+RATEID_OFDM48Mbps-RATEID_OFDM6Mbps))-1) \ |
| << RATEID_OFDM6Mbps) |
| |
| #define RATEID_54_6_MASK (((1<<(1+RATEID_OFDM54Mbps-RATEID_OFDM6Mbps))-1) \ |
| << RATEID_OFDM6Mbps) |
| |
| #define RATEID_CCK_MASK ( (1 << RATEID_DBPSK1Mbps) \ |
| | (1 << RATEID_DQPSK2Mbps) \ |
| | (1 << RATEID_CCK5_5Mbps) \ |
| | (1 << RATEID_CCK11Mbps) ) |
| |
| #define HT_RATE_MASK_MCS0_7 ( (1ULL << RATEID_MCS0_6d5Mbps) \ |
| | (1ULL << RATEID_MCS1_13Mbps) \ |
| | (1ULL << RATEID_MCS2_19d5Mbps) \ |
| | (1ULL << RATEID_MCS3_26Mbps) \ |
| | (1ULL << RATEID_MCS4_39Mbps) \ |
| | (1ULL << RATEID_MCS5_52Mbps) \ |
| | (1ULL << RATEID_MCS6_58d5Mbps) \ |
| | (1ULL << RATEID_MCS7_65Mbps) ) |
| #ifdef STREAM_2x2 |
| #define HT_RATE_MASK_MCS8_15 ( (1ULL << RATEID_MCS8_13Mbps) \ |
| | (1ULL << RATEID_MCS9_26Mbps) \ |
| | (1ULL << RATEID_MCS10_39Mbps) \ |
| | (1ULL << RATEID_MCS11_52Mbps) \ |
| | (1ULL << RATEID_MCS12_78Mbps) \ |
| | (1ULL << RATEID_MCS13_104Mbps) \ |
| | (1ULL << RATEID_MCS14_117Mbps) \ |
| | (1ULL << RATEID_MCS15_130Mbps) ) |
| |
| #else // 1x1 |
| #define HT_RATE_MASK_MCS8_15 (0) |
| #endif |
| |
| #define HT_RATE_MASK_MCS0_7_32_40MHZ ( (1ULL << RATEID_MCS32BW40_6Mbps) \ |
| | (1ULL << RATEID_MCS0BW40_13d5Mbps) \ |
| | (1ULL << RATEID_MCS1BW40_27Mbps) \ |
| | (1ULL << RATEID_MCS2BW40_40d5Mbps) \ |
| | (1ULL << RATEID_MCS3BW40_54Mbps) \ |
| | (1ULL << RATEID_MCS4BW40_81Mbps) \ |
| | (1ULL << RATEID_MCS5BW40_108Mbps) \ |
| | (1ULL << RATEID_MCS6BW40_121d5Mbps) \ |
| | (1ULL << RATEID_MCS7BW40_135Mbps) ) |
| |
| #ifdef STREAM_2x2 |
| #define HT_RATE_MASK_MCS8_15_40MHZ ( (1ULL << RATEID_MCS8BW40_27Mbps) \ |
| | (1ULL << RATEID_MCS9BW40_54Mbps) \ |
| | (1ULL << RATEID_MCS10BW40_81Mbps) \ |
| | (1ULL << RATEID_MCS11BW40_108Mbps) \ |
| | (1ULL << RATEID_MCS12BW40_162Mbps) \ |
| | (1ULL << RATEID_MCS13BW40_216Mbps) \ |
| | (1ULL << RATEID_MCS14BW40_243Mbps) \ |
| | (1ULL << RATEID_MCS15BW40_270Mbps) ) |
| |
| #else // 1x1 |
| #define HT_RATE_MASK_MCS8_15_40MHZ (0) |
| #endif |
| |
| #define RATEID_MCS_MASK ( HT_RATE_MASK_MCS0_7 \ |
| | HT_RATE_MASK_MCS8_15 \ |
| | HT_RATE_MASK_MCS0_7_32_40MHZ \ |
| | HT_RATE_MASK_MCS8_15_40MHZ ) |
| |
| #define RATEID_MCSBW40_MASK ( HT_RATE_MASK_MCS0_7_32_40MHZ \ |
| | HT_RATE_MASK_MCS8_15_40MHZ ) |
| |
| #define RATEID_MCS1x1_MASK ( HT_RATE_MASK_MCS0_7 \ |
| | HT_RATE_MASK_MCS0_7_32_40MHZ) |
| |
| #define RATEID_MCS2x2_MASK ( HT_RATE_MASK_MCS8_15 \ |
| | HT_RATE_MASK_MCS8_15_40MHZ ) |
| |
| #define IS_DSSS_FRAME(rateid) (rateid < RATEID_OFDM6Mbps) |
| #define IS_OFDM_FRAME(rateid) (rateid >= RATEID_OFDM6Mbps) |
| |
| typedef unsigned char MRVL_TRPCID; |
| typedef signed long PWR_in_dBm; |
| |
| #if 0 |
| #define ASSERT_RATEID(rateid) {while(rateid > RATEID_MAX);} |
| #define ASSERT_NonZero(x) {while(x == 0);} |
| #else |
| #define ASSERT_RATEID(rateid) |
| #define ASSERT_NonZero(x) |
| #endif |
| |
| #endif /* _WLTYPES_H_ */ |