Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
staging
rtl8192u
ieee80211
rtl819x_HT.h
Go to the documentation of this file.
1
#ifndef _RTL819XU_HTTYPE_H_
2
#define _RTL819XU_HTTYPE_H_
3
4
//------------------------------------------------------------
5
// The HT Capability element is present in beacons, association request,
6
// reassociation request and probe response frames
7
//------------------------------------------------------------
8
9
//
10
// Operation mode value
11
//
12
#define HT_OPMODE_NO_PROTECT 0
13
#define HT_OPMODE_OPTIONAL 1
14
#define HT_OPMODE_40MHZ_PROTECT 2
15
#define HT_OPMODE_MIXED 3
16
17
//
18
// MIMO Power Save Settings
19
//
20
#define MIMO_PS_STATIC 0
21
#define MIMO_PS_DYNAMIC 1
22
#define MIMO_PS_NOLIMIT 3
23
24
25
//
26
// There should be 128 bits to cover all of the MCS rates. However, since
27
// 8190 does not support too much rates, one integer is quite enough.
28
//
29
30
#define sHTCLng 4
31
32
33
#define HT_SUPPORTED_MCS_1SS_BITMAP 0x000000ff
34
#define HT_SUPPORTED_MCS_2SS_BITMAP 0x0000ff00
35
#define HT_SUPPORTED_MCS_1SS_2SS_BITMAP HT_MCS_1SS_BITMAP|HT_MCS_1SS_2SS_BITMAP
36
37
38
typedef
enum
_HT_MCS_RATE
{
39
HT_MCS0
= 0x00000001,
40
HT_MCS1
= 0x00000002,
41
HT_MCS2
= 0x00000004,
42
HT_MCS3
= 0x00000008,
43
HT_MCS4
= 0x00000010,
44
HT_MCS5
= 0x00000020,
45
HT_MCS6
= 0x00000040,
46
HT_MCS7
= 0x00000080,
47
HT_MCS8
= 0x00000100,
48
HT_MCS9
= 0x00000200,
49
HT_MCS10
= 0x00000400,
50
HT_MCS11
= 0x00000800,
51
HT_MCS12
= 0x00001000,
52
HT_MCS13
= 0x00002000,
53
HT_MCS14
= 0x00004000,
54
HT_MCS15
= 0x00008000,
55
// Do not define MCS32 here although 8190 support MCS32
56
}
HT_MCS_RATE
,*
PHT_MCS_RATE
;
57
58
//
59
// Represent Channel Width in HT Capabilities
60
//
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
;
65
66
//
67
// Represent Extension Channel Offset in HT Capabilities
68
// This is available only in 40Mhz mode.
69
//
70
typedef
enum
_HT_EXTCHNL_OFFSET
{
71
HT_EXTCHNL_OFFSET_NO_EXT
= 0,
72
HT_EXTCHNL_OFFSET_UPPER
= 1,
73
HT_EXTCHNL_OFFSET_NO_DEF
= 2,
74
HT_EXTCHNL_OFFSET_LOWER
= 3,
75
}
HT_EXTCHNL_OFFSET
, *
PHT_EXTCHNL_OFFSET
;
76
77
typedef
enum
_CHNLOP
{
78
CHNLOP_NONE
= 0,
// No Action now
79
CHNLOP_SCAN
= 1,
// Scan in progress
80
CHNLOP_SWBW
= 2,
// Bandwidth switching in progress
81
CHNLOP_SWCHNL
= 3,
// Software Channel switching in progress
82
}
CHNLOP
, *
PCHNLOP
;
83
84
// Determine if the Channel Operation is in progress
85
#define CHHLOP_IN_PROGRESS(_pHTInfo) \
86
((_pHTInfo)->ChnlOp > CHNLOP_NONE) ? TRUE : FALSE
87
88
/*
89
typedef union _HT_CAPABILITY{
90
u16 ShortData;
91
u8 CharData[2];
92
struct
93
{
94
u16 AdvCoding:1;
95
u16 ChlWidth:1;
96
u16 MimoPwrSave:2;
97
u16 GreenField:1;
98
u16 ShortGI20Mhz:1;
99
u16 ShortGI40Mhz:1;
100
u16 STBC:1;
101
u16 BeamForm:1;
102
u16 DelayBA:1;
103
u16 MaxAMSDUSize:1;
104
u16 DssCCk:1;
105
u16 PSMP:1;
106
u16 Rsvd:3;
107
}Field;
108
}HT_CAPABILITY, *PHT_CAPABILITY;
109
110
typedef union _HT_CAPABILITY_MACPARA{
111
u8 ShortData;
112
u8 CharData[1];
113
struct
114
{
115
u8 MaxRxAMPDU:2;
116
u8 MPDUDensity:2;
117
u8 Rsvd:4;
118
}Field;
119
}HT_CAPABILITY_MACPARA, *PHT_CAPABILITY_MACPARA;
120
*/
121
122
typedef
enum
_HT_ACTION
{
123
ACT_RECOMMAND_WIDTH
= 0,
124
ACT_MIMO_PWR_SAVE
= 1,
125
ACT_PSMP
= 2,
126
ACT_SET_PCO_PHASE
= 3,
127
ACT_MIMO_CHL_MEASURE
= 4,
128
ACT_RECIPROCITY_CORRECT
= 5,
129
ACT_MIMO_CSI_MATRICS
= 6,
130
ACT_MIMO_NOCOMPR_STEER
= 7,
131
ACT_MIMO_COMPR_STEER
= 8,
132
ACT_ANTENNA_SELECT
= 9,
133
}
HT_ACTION
, *
PHT_ACTION
;
134
135
136
/* 2007/06/07 MH Define sub-carrier mode for 40MHZ. */
137
typedef
enum
_HT_Bandwidth_40MHZ_Sub_Carrier
{
138
SC_MODE_DUPLICATE
= 0,
139
SC_MODE_LOWER
= 1,
140
SC_MODE_UPPER
= 2,
141
SC_MODE_FULL40MHZ
= 3,
142
}
HT_BW40_SC_E
;
143
144
typedef
struct
_HT_CAPABILITY_ELE
{
145
146
//HT capability info
147
u8
AdvCoding
:1;
148
u8
ChlWidth
:1;
149
u8
MimoPwrSave
:2;
150
u8
GreenField
:1;
151
u8
ShortGI20Mhz
:1;
152
u8
ShortGI40Mhz
:1;
153
u8
TxSTBC
:1;
154
u8
RxSTBC
:2;
155
u8
DelayBA
:1;
156
u8
MaxAMSDUSize
:1;
157
u8
DssCCk
:1;
158
u8
PSMP
:1;
159
u8
Rsvd1
:1;
160
u8
LSigTxopProtect
:1;
161
162
//MAC HT parameters info
163
u8
MaxRxAMPDUFactor
:2;
164
u8
MPDUDensity
:3;
165
u8
Rsvd2
:3;
166
167
//Supported MCS set
168
u8
MCS
[16];
169
170
171
//Extended HT Capability Info
172
u16
ExtHTCapInfo
;
173
174
//TXBF Capabilities
175
u8
TxBFCap
[4];
176
177
//Antenna Selection Capabilities
178
u8
ASCap
;
179
180
}
__attribute__
((packed)) HT_CAPABILITY_ELE, *
PHT_CAPABILITY_ELE
;
181
182
//------------------------------------------------------------
183
// The HT Information element is present in beacons
184
// Only AP is required to include this element
185
//------------------------------------------------------------
186
187
typedef
struct
_HT_INFORMATION_ELE
{
188
u8
ControlChl
;
189
190
u8
ExtChlOffset
:2;
191
u8
RecommemdedTxWidth
:1;
192
u8
RIFS
:1;
193
u8
PSMPAccessOnly
:1;
194
u8
SrvIntGranularity
:3;
195
196
u8
OptMode
:2;
197
u8
NonGFDevPresent
:1;
198
u8
Revd1
:5;
199
u8
Revd2
:8;
200
201
u8
Rsvd3
:6;
202
u8
DualBeacon
:1;
203
u8
DualCTSProtect
:1;
204
205
u8
SecondaryBeacon
:1;
206
u8
LSigTxopProtectFull
:1;
207
u8
PcoActive
:1;
208
u8
PcoPhase
:1;
209
u8
Rsvd4
:4;
210
211
u8
BasicMSC
[16];
212
}
__attribute__
((packed)) HT_INFORMATION_ELE, *
PHT_INFORMATION_ELE
;
213
214
//
215
// MIMO Power Save control field.
216
// This is appear in MIMO Power Save Action Frame
217
//
218
typedef
struct
_MIMOPS_CTRL
{
219
u8
MimoPsEnable:1;
220
u8
MimoPsMode:1;
221
u8
Reserved
:6;
222
}
MIMOPS_CTRL
, *
PMIMOPS_CTRL
;
223
224
typedef
enum
_HT_SPEC_VER
{
225
HT_SPEC_VER_IEEE
= 0,
226
HT_SPEC_VER_EWC
= 1,
227
}
HT_SPEC_VER
, *
PHT_SPEC_VER
;
228
229
typedef
enum
_HT_AGGRE_MODE_E
{
230
HT_AGG_AUTO
= 0,
231
HT_AGG_FORCE_ENABLE
= 1,
232
HT_AGG_FORCE_DISABLE
= 2,
233
}
HT_AGGRE_MODE_E
, *
PHT_AGGRE_MODE_E
;
234
235
//------------------------------------------------------------
236
// The Data structure is used to keep HT related variables when card is
237
// configured as non-AP STA mode. **Note** Current_xxx should be set
238
// to default value in HTInitializeHTInfo()
239
//------------------------------------------------------------
240
241
typedef
struct
_RT_HIGH_THROUGHPUT
{
242
u8
bEnableHT
;
243
u8
bCurrentHTSupport
;
244
245
u8
bRegBW40MHz
;
// Tx 40MHz channel capability
246
u8
bCurBW40MHz
;
// Tx 40MHz channel capability
247
248
u8
bRegShortGI40MHz
;
// Tx Short GI for 40Mhz
249
u8
bCurShortGI40MHz
;
// Tx Short GI for 40MHz
250
251
u8
bRegShortGI20MHz
;
// Tx Short GI for 20MHz
252
u8
bCurShortGI20MHz
;
// Tx Short GI for 20MHz
253
254
u8
bRegSuppCCK
;
// Tx CCK rate capability
255
u8
bCurSuppCCK
;
// Tx CCK rate capability
256
257
// 802.11n spec version for "peer"
258
HT_SPEC_VER
ePeerHTSpecVer
;
259
260
261
// HT related information for "Self"
262
HT_CAPABILITY_ELE
SelfHTCap
;
// This is HT cap element sent to peer STA, which also indicate HT Rx capabilities.
263
HT_INFORMATION_ELE
SelfHTInfo
;
// This is HT info element sent to peer STA, which also indicate HT Rx capabilities.
264
265
// HT related information for "Peer"
266
u8
PeerHTCapBuf
[32];
267
u8
PeerHTInfoBuf
[32];
268
269
270
// A-MSDU related
271
u8
bAMSDU_Support
;
// This indicates Tx A-MSDU capability
272
u16
nAMSDU_MaxSize
;
// This indicates Tx A-MSDU capability
273
u8
bCurrent_AMSDU_Support
;
// This indicates Tx A-MSDU capability
274
u16
nCurrent_AMSDU_MaxSize
;
// This indicates Tx A-MSDU capability
275
276
277
// AMPDU related <2006.08.10 Emily>
278
u8
bAMPDUEnable
;
// This indicate Tx A-MPDU capability
279
u8
bCurrentAMPDUEnable
;
// This indicate Tx A-MPDU capability
280
u8
AMPDU_Factor
;
// This indicate Tx A-MPDU capability
281
u8
CurrentAMPDUFactor
;
// This indicate Tx A-MPDU capability
282
u8
MPDU_Density
;
// This indicate Tx A-MPDU capability
283
u8
CurrentMPDUDensity
;
// This indicate Tx A-MPDU capability
284
285
// Forced A-MPDU enable
286
HT_AGGRE_MODE_E
ForcedAMPDUMode
;
287
u8
ForcedAMPDUFactor
;
288
u8
ForcedMPDUDensity
;
289
290
// Forced A-MSDU enable
291
HT_AGGRE_MODE_E
ForcedAMSDUMode
;
292
u16
ForcedAMSDUMaxSize
;
293
294
u8
bForcedShortGI
;
295
296
u8
CurrentOpMode
;
297
298
// MIMO PS related
299
u8
SelfMimoPs
;
300
u8
PeerMimoPs
;
301
302
// 40MHz Channel Offset settings.
303
HT_EXTCHNL_OFFSET
CurSTAExtChnlOffset
;
304
u8
bCurTxBW40MHz
;
// If we use 40 MHz to Tx
305
u8
PeerBandwidth
;
306
307
// For Bandwidth Switching
308
u8
bSwBwInProgress
;
309
CHNLOP
ChnlOp
;
// software switching channel in progress. By Bruce, 2008-02-15.
310
u8
SwBwStep
;
311
//struct timer_list SwBwTimer; //moved to ieee80211_device. as timer_list need include some header file here.
312
313
// For Realtek proprietary A-MPDU factor for aggregation
314
u8
bRegRT2RTAggregation
;
315
u8
bCurrentRT2RTAggregation
;
316
u8
bCurrentRT2RTLongSlotTime
;
317
u8
szRT2RTAggBuffer
[10];
318
319
// Rx Reorder control
320
u8
bRegRxReorderEnable
;
321
u8
bCurRxReorderEnable
;
322
u8
RxReorderWinSize
;
323
u8
RxReorderPendingTime
;
324
u16
RxReorderDropCounter
;
325
326
#ifdef USB_TX_DRIVER_AGGREGATION_ENABLE
327
u8
UsbTxAggrNum;
328
#endif
329
#ifdef USB_RX_AGGREGATION_SUPPORT
330
u8
UsbRxFwAggrEn;
331
u8
UsbRxFwAggrPageNum;
332
u8
UsbRxFwAggrPacketNum;
333
u8
UsbRxFwAggrTimeout;
334
#endif
335
336
// Add for Broadcom(Linksys) IOT. Joseph
337
u8
bIsPeerBcm
;
338
339
// For IOT issue.
340
u8
IOTPeer
;
341
u32
IOTAction
;
342
}
__attribute__
((packed))
RT_HIGH_THROUGHPUT
, *
PRT_HIGH_THROUGHPUT
;
343
344
345
//------------------------------------------------------------
346
// The Data structure is used to keep HT related variable for "each Sta"
347
// when card is configured as "AP mode"
348
//------------------------------------------------------------
349
350
typedef
struct
_RT_HTINFO_STA_ENTRY
{
351
u8
bEnableHT
;
352
353
u8
bSupportCck;
354
355
u16
AMSDU_MaxSize;
356
357
u8
AMPDU_Factor
;
358
u8
MPDU_Density
;
359
360
u8
HTHighestOperaRate
;
361
362
u8
bBw40MHz
;
363
364
u8
MimoPs;
365
366
u8
McsRateSet[16];
367
368
369
}
RT_HTINFO_STA_ENTRY
, *
PRT_HTINFO_STA_ENTRY
;
370
371
372
373
374
375
//------------------------------------------------------------
376
// The Data structure is used to keep HT related variable for "each AP"
377
// when card is configured as "STA mode"
378
//------------------------------------------------------------
379
380
typedef
struct
_BSS_HT
{
381
382
u8
bdSupportHT
;
383
384
// HT related elements
385
u8
bdHTCapBuf
[32];
386
u16
bdHTCapLen
;
387
u8
bdHTInfoBuf
[32];
388
u16
bdHTInfoLen
;
389
390
HT_SPEC_VER
bdHTSpecVer
;
391
//HT_CAPABILITY_ELE bdHTCapEle;
392
//HT_INFORMATION_ELE bdHTInfoEle;
393
394
u8
bdRT2RTAggregation
;
395
u8
bdRT2RTLongSlotTime
;
396
}
__attribute__
((packed))
BSS_HT
, *
PBSS_HT
;
397
398
typedef
struct
_MIMO_RSSI
{
399
u32
EnableAntenna
;
400
u32
AntennaA;
401
u32
AntennaB;
402
u32
AntennaC;
403
u32
AntennaD;
404
u32
Average;
405
}
MIMO_RSSI
, *
PMIMO_RSSI
;
406
407
typedef
struct
_MIMO_EVM
{
408
u32
EVM1
;
409
u32
EVM2
;
410
}
MIMO_EVM
, *
PMIMO_EVM
;
411
412
typedef
struct
_FALSE_ALARM_STATISTICS
{
413
u32
Cnt_Parity_Fail
;
414
u32
Cnt_Rate_Illegal
;
415
u32
Cnt_Crc8_fail
;
416
u32
Cnt_all
;
417
}
FALSE_ALARM_STATISTICS
, *
PFALSE_ALARM_STATISTICS
;
418
419
420
extern
u8
MCS_FILTER_ALL
[16];
421
extern
u8
MCS_FILTER_1SS
[16];
422
423
/* 2007/07/11 MH Modify the macro. Becaus STA may link with a N-AP. If we set
424
STA in A/B/G mode and AP is still in N mode. The macro will be wrong. We have
425
to add a macro to judge wireless mode. */
426
#define PICK_RATE(_nLegacyRate, _nMcsRate) \
427
(_nMcsRate==0)?(_nLegacyRate&0x7f):(_nMcsRate)
428
/* 2007/07/12 MH We only define legacy and HT wireless mode now. */
429
#define LEGACY_WIRELESS_MODE IEEE_MODE_MASK
430
431
#define CURRENT_RATE(WirelessMode, LegacyRate, HTRate) \
432
((WirelessMode & (LEGACY_WIRELESS_MODE))!=0)?\
433
(LegacyRate):\
434
(PICK_RATE(LegacyRate, HTRate))
435
436
437
438
// MCS Bw 40 {1~7, 12~15,32}
439
#define RATE_ADPT_1SS_MASK 0xFF
440
#define RATE_ADPT_2SS_MASK 0xF0 //Skip MCS8~11 because mcs7 > mcs6, 9, 10, 11. 2007.01.16 by Emily
441
#define RATE_ADPT_MCS32_MASK 0x01
442
443
#define IS_11N_MCS_RATE(rate) (rate&0x80)
444
445
typedef
enum
_HT_AGGRE_SIZE
{
446
HT_AGG_SIZE_8K
= 0,
447
HT_AGG_SIZE_16K
= 1,
448
HT_AGG_SIZE_32K
= 2,
449
HT_AGG_SIZE_64K
= 3,
450
}
HT_AGGRE_SIZE_E
, *
PHT_AGGRE_SIZE_E
;
451
452
/* Indicate different AP vendor for IOT issue */
453
typedef
enum
_HT_IOT_PEER
454
{
455
HT_IOT_PEER_UNKNOWN
= 0,
456
HT_IOT_PEER_REALTEK
= 1,
457
HT_IOT_PEER_BROADCOM
= 2,
458
HT_IOT_PEER_RALINK
= 3,
459
HT_IOT_PEER_ATHEROS
= 4,
460
HT_IOT_PEER_CISCO
= 5,
461
HT_IOT_PEER_MAX
= 6
462
}
HT_IOT_PEER_E
, *
PHTIOT_PEER_E
;
463
464
//
465
// IOT Action for different AP
466
//
467
typedef
enum
_HT_IOT_ACTION
{
468
HT_IOT_ACT_TX_USE_AMSDU_4K
= 0x00000001,
469
HT_IOT_ACT_TX_USE_AMSDU_8K
= 0x00000002,
470
HT_IOT_ACT_DISABLE_MCS14
= 0x00000004,
471
HT_IOT_ACT_DISABLE_MCS15
= 0x00000008,
472
HT_IOT_ACT_DISABLE_ALL_2SS
= 0x00000010,
473
HT_IOT_ACT_DISABLE_EDCA_TURBO
= 0x00000020,
474
HT_IOT_ACT_MGNT_USE_CCK_6M
= 0x00000040,
475
HT_IOT_ACT_CDD_FSYNC
= 0x00000080,
476
HT_IOT_ACT_PURE_N_MODE
= 0x00000100,
477
HT_IOT_ACT_FORCED_CTS2SELF
= 0x00000200,
478
}
HT_IOT_ACTION_E
, *
PHT_IOT_ACTION_E
;
479
480
#endif //_RTL819XU_HTTYPE_H_
481
Generated on Thu Jan 10 2013 14:30:49 for Linux Kernel by
1.8.2