1
/******************************************************************************
2
* Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
4
* This program is distributed in the hope that it will be useful, but WITHOUT
5
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
9
* You should have received a copy of the GNU General Public License along with
10
* this program; if not, write to the Free Software Foundation, Inc.,
11
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
13
* The full GNU General Public License is included in this distribution in the
14
* file called LICENSE.
16
* Contact Information:
17
* wlanfae <wlanfae@realtek.com>
18
******************************************************************************/
19
#ifndef _RTL819XU_HTTYPE_H_
20
#define _RTL819XU_HTTYPE_H_
23
#define HT_OPMODE_NO_PROTECT 0
24
#define HT_OPMODE_OPTIONAL 1
25
#define HT_OPMODE_40MHZ_PROTECT 2
26
#define HT_OPMODE_MIXED 3
28
#define MIMO_PS_STATIC 0
29
#define MIMO_PS_DYNAMIC 1
30
#define MIMO_PS_NOLIMIT 3
37
#define HT_SUPPORTED_MCS_1SS_BITMAP 0x000000ff
38
#define HT_SUPPORTED_MCS_2SS_BITMAP 0x0000ff00
39
#define HT_SUPPORTED_MCS_1SS_2SS_BITMAP HT_MCS_1SS_BITMAP|HT_MCS_1SS_2SS_BITMAP
42
typedef enum _HT_MCS_RATE{
53
HT_MCS10 = 0x00000400,
54
HT_MCS11 = 0x00000800,
55
HT_MCS12 = 0x00001000,
56
HT_MCS13 = 0x00002000,
57
HT_MCS14 = 0x00004000,
58
HT_MCS15 = 0x00008000,
59
}HT_MCS_RATE,*PHT_MCS_RATE;
61
typedef enum _HT_CHANNEL_WIDTH{
62
HT_CHANNEL_WIDTH_20 = 0,
63
HT_CHANNEL_WIDTH_20_40 = 1,
64
}HT_CHANNEL_WIDTH, *PHT_CHANNEL_WIDTH;
66
typedef enum _HT_EXTCHNL_OFFSET{
67
HT_EXTCHNL_OFFSET_NO_EXT = 0,
68
HT_EXTCHNL_OFFSET_UPPER = 1,
69
HT_EXTCHNL_OFFSET_NO_DEF = 2,
70
HT_EXTCHNL_OFFSET_LOWER = 3,
71
}HT_EXTCHNL_OFFSET, *PHT_EXTCHNL_OFFSET;
80
#define CHHLOP_IN_PROGRESS(_pHTInfo) \
81
((_pHTInfo)->ChnlOp > CHNLOP_NONE) ? true : false
84
typedef union _HT_CAPABILITY{
103
}HT_CAPABILITY, *PHT_CAPABILITY;
105
typedef union _HT_CAPABILITY_MACPARA{
114
}HT_CAPABILITY_MACPARA, *PHT_CAPABILITY_MACPARA;
117
typedef enum _HT_ACTION{
118
ACT_RECOMMAND_WIDTH = 0,
119
ACT_MIMO_PWR_SAVE = 1,
121
ACT_SET_PCO_PHASE = 3,
122
ACT_MIMO_CHL_MEASURE = 4,
123
ACT_RECIPROCITY_CORRECT = 5,
124
ACT_MIMO_CSI_MATRICS = 6,
125
ACT_MIMO_NOCOMPR_STEER = 7,
126
ACT_MIMO_COMPR_STEER = 8,
127
ACT_ANTENNA_SELECT = 9,
128
} HT_ACTION, *PHT_ACTION;
131
typedef enum _HT_Bandwidth_40MHZ_Sub_Carrier{
132
SC_MODE_DUPLICATE = 0,
135
SC_MODE_FULL40MHZ = 3,
138
typedef struct _HT_CAPABILITY_ELE{
153
u8 LSigTxopProtect:1;
155
u8 MaxRxAMPDUFactor:2;
168
} __attribute__ ((packed)) HT_CAPABILITY_ELE, *PHT_CAPABILITY_ELE;
171
typedef struct _HT_INFORMATION_ELE{
175
u8 RecommemdedTxWidth:1;
178
u8 SrvIntGranularity:3;
181
u8 NonGFDevPresent:1;
189
u8 SecondaryBeacon:1;
190
u8 LSigTxopProtectFull:1;
196
} __attribute__ ((packed)) HT_INFORMATION_ELE, *PHT_INFORMATION_ELE;
198
typedef struct _MIMOPS_CTRL{
202
} MIMOPS_CTRL, *PMIMOPS_CTRL;
204
typedef enum _HT_SPEC_VER{
205
HT_SPEC_VER_IEEE = 0,
207
}HT_SPEC_VER, *PHT_SPEC_VER;
209
typedef enum _HT_AGGRE_MODE_E{
211
HT_AGG_FORCE_ENABLE = 1,
212
HT_AGG_FORCE_DISABLE = 2,
213
}HT_AGGRE_MODE_E, *PHT_AGGRE_MODE_E;
216
typedef struct _RT_HIGH_THROUGHPUT{
218
u8 bCurrentHTSupport;
232
HT_SPEC_VER ePeerHTSpecVer;
235
HT_CAPABILITY_ELE SelfHTCap;
236
HT_INFORMATION_ELE SelfHTInfo;
239
u8 PeerHTInfoBuf[32];
244
u8 bCurrent_AMSDU_Support;
245
u16 nCurrent_AMSDU_MaxSize;
246
#ifdef _RTL8192_EXT_PATCH_
247
u8 bCurrent_Mesh_AMSDU_Support;
251
u8 bCurrentAMPDUEnable;
253
u8 CurrentAMPDUFactor;
255
u8 CurrentMPDUDensity;
256
#ifdef _RTL8192_EXT_PATCH_
257
u8 bCurrentMeshAMPDUEnable;
260
HT_AGGRE_MODE_E ForcedAMPDUMode;
261
u8 ForcedAMPDUFactor;
262
u8 ForcedMPDUDensity;
264
HT_AGGRE_MODE_E ForcedAMSDUMode;
265
u16 ForcedAMSDUMaxSize;
274
HT_EXTCHNL_OFFSET CurSTAExtChnlOffset;
282
u8 bRegRT2RTAggregation;
284
u8 bCurrentRT2RTAggregation;
285
u8 bCurrentRT2RTLongSlotTime;
286
u8 szRT2RTAggBuffer[10];
288
u8 bRegRxReorderEnable;
289
u8 bCurRxReorderEnable;
291
u8 RxReorderPendingTime;
292
u16 RxReorderDropCounter;
294
#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE
297
#ifdef USB_RX_AGGREGATION_SUPPORT
299
u8 UsbRxFwAggrPageNum;
300
u8 UsbRxFwAggrPacketNum;
301
u8 UsbRxFwAggrTimeout;
319
} __attribute__ ((packed)) RT_HIGH_THROUGHPUT, *PRT_HIGH_THROUGHPUT;
323
typedef struct _RT_HTINFO_STA_ENTRY{
333
u8 HTHighestOperaRate;
347
u8 bCurRxReorderEnable;
351
}RT_HTINFO_STA_ENTRY, *PRT_HTINFO_STA_ENTRY;
358
typedef struct _BSS_HT{
367
HT_SPEC_VER bdHTSpecVer;
368
HT_CHANNEL_WIDTH bdBandWidth;
370
u8 bdRT2RTAggregation;
371
u8 bdRT2RTLongSlotTime;
374
} __attribute__ ((packed)) BSS_HT, *PBSS_HT;
376
typedef struct _MIMO_RSSI{
383
}MIMO_RSSI, *PMIMO_RSSI;
385
typedef struct _MIMO_EVM{
388
}MIMO_EVM, *PMIMO_EVM;
390
typedef struct _FALSE_ALARM_STATISTICS{
392
u32 Cnt_Rate_Illegal;
398
}FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS;
401
extern u8 MCS_FILTER_ALL[16];
402
extern u8 MCS_FILTER_1SS[16];
404
#define PICK_RATE(_nLegacyRate, _nMcsRate) \
405
(_nMcsRate==0)?(_nLegacyRate&0x7f):(_nMcsRate)
406
#define LEGACY_WIRELESS_MODE IEEE_MODE_MASK
408
#define CURRENT_RATE(WirelessMode, LegacyRate, HTRate) \
409
((WirelessMode & (LEGACY_WIRELESS_MODE))!=0)?\
411
(PICK_RATE(LegacyRate, HTRate))
415
#define RATE_ADPT_1SS_MASK 0xFF
416
#define RATE_ADPT_2SS_MASK 0xF0
417
#define RATE_ADPT_MCS32_MASK 0x01
419
#define IS_11N_MCS_RATE(rate) (rate&0x80)
421
typedef enum _HT_AGGRE_SIZE{
426
}HT_AGGRE_SIZE_E, *PHT_AGGRE_SIZE_E;
428
typedef enum _HT_IOT_PEER
430
HT_IOT_PEER_UNKNOWN = 0,
431
HT_IOT_PEER_REALTEK = 1,
432
HT_IOT_PEER_REALTEK_92SE = 2,
433
HT_IOT_PEER_BROADCOM = 3,
434
HT_IOT_PEER_RALINK = 4,
435
HT_IOT_PEER_ATHEROS = 5,
436
HT_IOT_PEER_CISCO= 6,
437
HT_IOT_PEER_MARVELL=7,
438
HT_IOT_PEER_92U_SOFTAP = 8,
439
HT_IOT_PEER_SELF_SOFTAP = 9,
440
HT_IOT_PEER_AIRGO = 10,
441
HT_IOT_PEER_MAX = 11,
442
}HT_IOT_PEER_E, *PHTIOT_PEER_E;
444
typedef enum _HT_IOT_PEER_SUBTYPE
446
HT_IOT_PEER_ATHEROS_DIR635 = 0,
447
}HT_IOT_PEER_SUBTYPE_E, *PHTIOT_PEER_SUBTYPE_E;
449
typedef enum _HT_IOT_ACTION{
450
HT_IOT_ACT_TX_USE_AMSDU_4K = 0x00000001,
451
HT_IOT_ACT_TX_USE_AMSDU_8K = 0x00000002,
452
HT_IOT_ACT_DISABLE_MCS14 = 0x00000004,
453
HT_IOT_ACT_DISABLE_MCS15 = 0x00000008,
454
HT_IOT_ACT_DISABLE_ALL_2SS = 0x00000010,
455
HT_IOT_ACT_DISABLE_EDCA_TURBO = 0x00000020,
456
HT_IOT_ACT_MGNT_USE_CCK_6M = 0x00000040,
457
HT_IOT_ACT_CDD_FSYNC = 0x00000080,
458
HT_IOT_ACT_PURE_N_MODE = 0x00000100,
459
HT_IOT_ACT_FORCED_CTS2SELF = 0x00000200,
460
HT_IOT_ACT_FORCED_RTS = 0x00000400,
461
HT_IOT_ACT_AMSDU_ENABLE = 0x00000800,
462
HT_IOT_ACT_REJECT_ADDBA_REQ = 0x00001000,
463
HT_IOT_ACT_ALLOW_PEER_AGG_ONE_PKT = 0x00002000,
464
HT_IOT_ACT_EDCA_BIAS_ON_RX = 0x00004000,
466
HT_IOT_ACT_HYBRID_AGGREGATION = 0x00010000,
467
HT_IOT_ACT_DISABLE_SHORT_GI = 0x00020000,
468
HT_IOT_ACT_DISABLE_HIGH_POWER = 0x00040000,
469
HT_IOT_ACT_DISABLE_TX_40_MHZ = 0x00080000,
470
HT_IOT_ACT_TX_NO_AGGREGATION = 0x00100000,
471
HT_IOT_ACT_DISABLE_TX_2SS = 0x00200000,
473
HT_IOT_ACT_MID_HIGHPOWER = 0x00400000,
474
HT_IOT_ACT_NULL_DATA_POWER_SAVING = 0x00800000,
476
HT_IOT_ACT_DISABLE_CCK_RATE = 0x01000000,
477
HT_IOT_ACT_FORCED_ENABLE_BE_TXOP = 0x02000000,
478
HT_IOT_ACT_WA_IOT_Broadcom = 0x04000000,
479
HT_IOT_ACT_DISABLE_RX_40MHZ_SHORT_GI = 0x08000000,
481
HT_IOT_ACT_IPTIME_704 = 0x10000000,
483
}HT_IOT_ACTION_E, *PHT_IOT_ACTION_E;
485
typedef enum _HT_IOT_RAFUNC{
486
HT_IOT_RAFUNC_DISABLE_ALL = 0x00,
487
HT_IOT_RAFUNC_PEER_1R = 0x01,
488
HT_IOT_RAFUNC_TX_AMSDU = 0x02,
489
}HT_IOT_RAFUNC, *PHT_IOT_RAFUNC;
491
typedef enum _RT_HT_CAP{
492
RT_HT_CAP_USE_TURBO_AGGR = 0x01,
493
RT_HT_CAP_USE_LONG_PREAMBLE = 0x02,
494
RT_HT_CAP_USE_AMPDU = 0x04,
495
RT_HT_CAP_USE_WOW = 0x8,
496
RT_HT_CAP_USE_SOFTAP = 0x10,
497
RT_HT_CAP_USE_92SE = 0x20,
498
}RT_HT_CAPBILITY, *PRT_HT_CAPBILITY;