r819xU_HTType.h revision 8fc8598e61f6f384f3eaf1d9b09500c12af47b37
1#ifndef _R819XU_HTTYPE_H_ 2#define _R819XU_HTTYPE_H_ 3 4 5//------------------------------------------------------------ 6// The HT Capability element is present in beacons, association request, 7// reassociation request and probe response frames 8//------------------------------------------------------------ 9 10// 11// Operation mode value 12// 13#define HT_OPMODE_NO_PROTECT 0 14#define HT_OPMODE_OPTIONAL 1 15#define HT_OPMODE_40MHZ_PROTECT 2 16#define HT_OPMODE_MIXED 3 17 18// 19// MIMO Power Save Setings 20// 21#define MIMO_PS_STATIC 0 22#define MIMO_PS_DYNAMIC 1 23#define MIMO_PS_NOLIMIT 3 24 25 26// 27// There should be 128 bits to cover all of the MCS rates. However, since 28// 8190 does not support too much rates, one integer is quite enough. 29// 30 31#define sHTCLng 4 32 33 34#define HT_SUPPORTED_MCS_1SS_BITMAP 0x000000ff 35#define HT_SUPPORTED_MCS_2SS_BITMAP 0x0000ff00 36#define HT_SUPPORTED_MCS_1SS_2SS_BITMAP HT_MCS_1SS_BITMAP|HT_MCS_1SS_2SS_BITMAP 37 38 39typedef enum _HT_MCS_RATE{ 40 HT_MCS0 = 0x00000001, 41 HT_MCS1 = 0x00000002, 42 HT_MCS2 = 0x00000004, 43 HT_MCS3 = 0x00000008, 44 HT_MCS4 = 0x00000010, 45 HT_MCS5 = 0x00000020, 46 HT_MCS6 = 0x00000040, 47 HT_MCS7 = 0x00000080, 48 HT_MCS8 = 0x00000100, 49 HT_MCS9 = 0x00000200, 50 HT_MCS10 = 0x00000400, 51 HT_MCS11 = 0x00000800, 52 HT_MCS12 = 0x00001000, 53 HT_MCS13 = 0x00002000, 54 HT_MCS14 = 0x00004000, 55 HT_MCS15 = 0x00008000, 56 // Do not define MCS32 here although 8190 support MCS32 57}HT_MCS_RATE,*PHT_MCS_RATE; 58 59// 60// Represent Channel Width in HT Capabilities 61// 62typedef enum _HT_CHANNEL_WIDTH{ 63 HT_CHANNEL_WIDTH_20 = 0, 64 HT_CHANNEL_WIDTH_20_40 = 1, 65}HT_CHANNEL_WIDTH, *PHT_CHANNEL_WIDTH; 66 67// 68// Represent Extention Channel Offset in HT Capabilities 69// This is available only in 40Mhz mode. 70// 71typedef enum _HT_EXTCHNL_OFFSET{ 72 HT_EXTCHNL_OFFSET_NO_EXT = 0, 73 HT_EXTCHNL_OFFSET_UPPER = 1, 74 HT_EXTCHNL_OFFSET_NO_DEF = 2, 75 HT_EXTCHNL_OFFSET_LOWER = 3, 76}HT_EXTCHNL_OFFSET, *PHT_EXTCHNL_OFFSET; 77 78typedef enum _CHNLOP{ 79 CHNLOP_NONE = 0, // No Action now 80 CHNLOP_SCAN = 1, // Scan in progress 81 CHNLOP_SWBW = 2, // Bandwidth switching in progress 82 CHNLOP_SWCHNL = 3, // Software Channel switching in progress 83} CHNLOP, *PCHNLOP; 84 85// Determine if the Channel Operation is in progress 86#define CHHLOP_IN_PROGRESS(_pHTInfo) \ 87 ((_pHTInfo)->ChnlOp > CHNLOP_NONE) ? TRUE : FALSE 88 89 90typedef enum _HT_ACTION{ 91 ACT_RECOMMAND_WIDTH = 0, 92 ACT_MIMO_PWR_SAVE = 1, 93 ACT_PSMP = 2, 94 ACT_SET_PCO_PHASE = 3, 95 ACT_MIMO_CHL_MEASURE = 4, 96 ACT_RECIPROCITY_CORRECT = 5, 97 ACT_MIMO_CSI_MATRICS = 6, 98 ACT_MIMO_NOCOMPR_STEER = 7, 99 ACT_MIMO_COMPR_STEER = 8, 100 ACT_ANTENNA_SELECT = 9, 101} HT_ACTION, *PHT_ACTION; 102 103 104/* 2007/06/07 MH Define sub-carrier mode for 40MHZ. */ 105typedef enum _HT_Bandwidth_40MHZ_Sub_Carrier{ 106 SC_MODE_DUPLICATE = 0, 107 SC_MODE_LOWER = 1, 108 SC_MODE_UPPER = 2, 109 SC_MODE_FULL40MHZ = 3, 110}HT_BW40_SC_E; 111 112typedef struct _HT_CAPABILITY_ELE{ 113 114 //HT capability info 115 u8 AdvCoding:1; 116 u8 ChlWidth:1; 117 u8 MimoPwrSave:2; 118 u8 GreenField:1; 119 u8 ShortGI20Mhz:1; 120 u8 ShortGI40Mhz:1; 121 u8 TxSTBC:1; 122 u8 RxSTBC:2; 123 u8 DelayBA:1; 124 u8 MaxAMSDUSize:1; 125 u8 DssCCk:1; 126 u8 PSMP:1; 127 u8 Rsvd1:1; 128 u8 LSigTxopProtect:1; 129 130 //MAC HT parameters info 131 u8 MaxRxAMPDUFactor:2; 132 u8 MPDUDensity:3; 133 u8 Rsvd2:3; 134 135 //Supported MCS set 136 u8 MCS[16]; 137 138 139 //Extended HT Capability Info 140 u16 ExtHTCapInfo; 141 142 //TXBF Capabilities 143 u8 TxBFCap[4]; 144 145 //Antenna Selection Capabilities 146 u8 ASCap; 147 148}__attribute__((packed)) HT_CAPABILITY_ELE, *PHT_CAPABILITY_ELE; 149 150//------------------------------------------------------------ 151// The HT Information element is present in beacons 152// Only AP is required to include this element 153//------------------------------------------------------------ 154 155typedef struct _HT_INFORMATION_ELE{ 156 u8 ControlChl; 157 158 u8 ExtChlOffset:2; 159 u8 RecommemdedTxWidth:1; 160 u8 RIFS:1; 161 u8 PSMPAccessOnly:1; 162 u8 SrvIntGranularity:3; 163 164 u8 OptMode:2; 165 u8 NonGFDevPresent:1; 166 u8 Revd1:5; 167 u8 Revd2:8; 168 169 u8 Rsvd3:6; 170 u8 DualBeacon:1; 171 u8 DualCTSProtect:1; 172 173 u8 SecondaryBeacon:1; 174 u8 LSigTxopProtectFull:1; 175 u8 PcoActive:1; 176 u8 PcoPhase:1; 177 u8 Rsvd4:4; 178 179 u8 BasicMSC[16]; 180}__attribute__((packed)) HT_INFORMATION_ELE, *PHT_INFORMATION_ELE; 181 182// 183// MIMO Power Save control field. 184// This is appear in MIMO Power Save Action Frame 185// 186typedef struct _MIMOPS_CTRL{ 187 u8 MimoPsEnable:1; 188 u8 MimoPsMode:1; 189 u8 Reserved:6; 190} MIMOPS_CTRL, *PMIMOPS_CTRL; 191 192typedef enum _HT_SPEC_VER{ 193 HT_SPEC_VER_IEEE = 0, 194 HT_SPEC_VER_EWC = 1, 195}HT_SPEC_VER, *PHT_SPEC_VER; 196 197typedef enum _HT_AGGRE_MODE_E{ 198 HT_AGG_AUTO = 0, 199 HT_AGG_FORCE_ENABLE = 1, 200 HT_AGG_FORCE_DISABLE = 2, 201}HT_AGGRE_MODE_E, *PHT_AGGRE_MODE_E; 202 203//------------------------------------------------------------ 204// The Data structure is used to keep HT related variables when card is 205// configured as non-AP STA mode. **Note** Current_xxx should be set 206// to default value in HTInitializeHTInfo() 207//------------------------------------------------------------ 208 209typedef struct _RT_HIGH_THROUGHPUT{ 210// DECLARE_RT_OBJECT(_RT_HIGH_THROUGHPUT); 211 u8 bEnableHT; 212 u8 bCurrentHTSupport; 213 214 u8 bRegBW40MHz; // Tx 40MHz channel capablity 215 u8 bCurBW40MHz; // Tx 40MHz channel capability 216 217 u8 bRegShortGI40MHz; // Tx Short GI for 40Mhz 218 u8 bCurShortGI40MHz; // Tx Short GI for 40MHz 219 220 u8 bRegShortGI20MHz; // Tx Short GI for 20MHz 221 u8 bCurShortGI20MHz; // Tx Short GI for 20MHz 222 223 u8 bRegSuppCCK; // Tx CCK rate capability 224 u8 bCurSuppCCK; // Tx CCK rate capability 225 226 // 802.11n spec version for "peer" 227 HT_SPEC_VER ePeerHTSpecVer; 228 229 230 // HT related information for "Self" 231 HT_CAPABILITY_ELE SelfHTCap; // This is HT cap element sent to peer STA, which also indicate HT Rx capabilities. 232 HT_INFORMATION_ELE SelfHTInfo; // This is HT info element sent to peer STA, which also indicate HT Rx capabilities. 233 234 // HT related information for "Peer" 235 u8 PeerHTCapBuf[32]; 236 u8 PeerHTInfoBuf[32]; 237 238 239 // A-MSDU related 240 u8 bAMSDU_Support; // This indicates Tx A-MSDU capability 241 u16 nAMSDU_MaxSize; // This indicates Tx A-MSDU capability 242 u8 bCurrent_AMSDU_Support; // This indicates Tx A-MSDU capability 243 u16 nCurrent_AMSDU_MaxSize; // This indicates Tx A-MSDU capability 244 245 246 // AMPDU related <2006.08.10 Emily> 247 u8 bAMPDUEnable; // This indicate Tx A-MPDU capability 248 u8 bCurrentAMPDUEnable; // This indicate Tx A-MPDU capability 249 u8 AMPDU_Factor; // This indicate Tx A-MPDU capability 250 u8 CurrentAMPDUFactor; // This indicate Tx A-MPDU capability 251 u8 MPDU_Density; // This indicate Tx A-MPDU capability 252 u8 CurrentMPDUDensity; // This indicate Tx A-MPDU capability 253 254 // Forced A-MPDU enable 255 HT_AGGRE_MODE_E ForcedAMPDUMode; 256 u8 ForcedAMPDUFactor; 257 u8 ForcedMPDUDensity; 258 259 // Forced A-MSDU enable 260 HT_AGGRE_MODE_E ForcedAMSDUMode; 261 u16 ForcedAMSDUMaxSize; 262 263 u8 bForcedShortGI; 264 265 u8 CurrentOpMode; 266 267 // MIMO PS related 268 u8 SelfMimoPs; 269 u8 PeerMimoPs; 270 271 // 40MHz Channel Offset settings. 272 HT_EXTCHNL_OFFSET CurSTAExtChnlOffset; 273 u8 bCurTxBW40MHz; // If we use 40 MHz to Tx 274 u8 PeerBandwidth; 275 276 // For Bandwidth Switching 277 u8 bSwBwInProgress; 278 CHNLOP ChnlOp; // software switching channel in progress. By Bruce, 2008-02-15. 279 u8 SwBwStep; 280 //RT_TIMER SwBwTimer; 281 struct timer_list SwBwTimer; 282 283 // For Realtek proprietary A-MPDU factor for aggregation 284 u8 bRegRT2RTAggregation; 285 u8 bCurrentRT2RTAggregation; 286 u8 bCurrentRT2RTLongSlotTime; 287 u8 szRT2RTAggBuffer[10]; 288 289 // Rx Reorder control 290 u8 bRegRxReorderEnable; 291 u8 bCurRxReorderEnable; 292 u8 RxReorderWinSize; 293 u8 RxReorderPendingTime; 294 u16 RxReorderDropCounter; 295 296#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE 297 u8 UsbTxAggrNum; 298#endif 299#ifdef USB_RX_AGGREGATION_SUPPORT 300 u8 UsbRxFwAggrEn; 301 u8 UsbRxFwAggrPageNum; 302 u8 UsbRxFwAggrPacketNum; 303 u8 UsbRxFwAggrTimeout; 304#endif 305 306 // Add for Broadcom(Linksys) IOT. Joseph 307 u8 bIsPeerBcm; 308 309 // For IOT issue. 310 u32 IOTAction; 311}RT_HIGH_THROUGHPUT, *PRT_HIGH_THROUGHPUT; 312 313 314//------------------------------------------------------------ 315// The Data structure is used to keep HT related variable for "each Sta" 316// when card is configured as "AP mode" 317//------------------------------------------------------------ 318 319typedef struct _RT_HTINFO_STA_ENTRY{ 320 u8 bEnableHT; 321 322 u8 bSupportCck; 323 324 u16 AMSDU_MaxSize; 325 326 u8 AMPDU_Factor; 327 u8 MPDU_Density; 328 329 u8 HTHighestOperaRate; 330 331 u8 bBw40MHz; 332 333 u8 MimoPs; 334 335 u8 McsRateSet[16]; 336 337 338}RT_HTINFO_STA_ENTRY, *PRT_HTINFO_STA_ENTRY; 339 340 341 342 343 344//------------------------------------------------------------ 345// The Data structure is used to keep HT related variable for "each AP" 346// when card is configured as "STA mode" 347//------------------------------------------------------------ 348 349typedef struct _BSS_HT{ 350 351 u8 bdSupportHT; 352 353 // HT related elements 354 u8 bdHTCapBuf[32]; 355 u16 bdHTCapLen; 356 u8 bdHTInfoBuf[32]; 357 u16 bdHTInfoLen; 358 359 HT_SPEC_VER bdHTSpecVer; 360 //HT_CAPABILITY_ELE bdHTCapEle; 361 //HT_INFORMATION_ELE bdHTInfoEle; 362 363 u8 bdRT2RTAggregation; 364 u8 bdRT2RTLongSlotTime; 365}BSS_HT, *PBSS_HT; 366 367typedef struct _MIMO_RSSI{ 368 u32 EnableAntenna; 369 u32 AntennaA; 370 u32 AntennaB; 371 u32 AntennaC; 372 u32 AntennaD; 373 u32 Average; 374}MIMO_RSSI, *PMIMO_RSSI; 375 376typedef struct _MIMO_EVM{ 377 u32 EVM1; 378 u32 EVM2; 379}MIMO_EVM, *PMIMO_EVM; 380 381typedef struct _FALSE_ALARM_STATISTICS{ 382 u32 Cnt_Parity_Fail; 383 u32 Cnt_Rate_Illegal; 384 u32 Cnt_Crc8_fail; 385 u32 Cnt_all; 386}FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS; 387 388 389 390#endif //__INC_HTTYPE_H 391 392