Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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
57 
58 //
59 // Represent Channel Width in HT Capabilities
60 //
61 typedef enum _HT_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{
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{
125  ACT_PSMP = 2,
134 
135 
136 /* 2007/06/07 MH Define sub-carrier mode for 40MHZ. */
142 }HT_BW40_SC_E;
143 
144 typedef struct _HT_CAPABILITY_ELE{
145 
146  //HT capability info
158  u8 PSMP:1;
161 
162  //MAC HT parameters info
166 
167  //Supported MCS set
168  u8 MCS[16];
169 
170 
171  //Extended HT Capability Info
173 
174  //TXBF Capabilities
176 
177  //Antenna Selection Capabilities
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 //------------------------------------------------------------
192  u8 RIFS:1;
210 
212 } __attribute__ ((packed)) HT_INFORMATION_ELE, *PHT_INFORMATION_ELE;
214 //
215 // MIMO Power Save control field.
216 // This is appear in MIMO Power Save Action Frame
217 //
219  u8 MimoPsEnable:1;
220  u8 MimoPsMode:1;
224 typedef enum _HT_SPEC_VER{
229 typedef enum _HT_AGGRE_MODE_E{
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{
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"
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"
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
289 
290  // Forced A-MSDU enable
293 
295 
297 
298  // MIMO PS related
301 
302  // 40MHz Channel Offset settings.
304  u8 bCurTxBW40MHz; // If we use 40 MHz to Tx
306 
307  // For Bandwidth Switching
309  CHNLOP ChnlOp; // software switching channel in progress. By Bruce, 2008-02-15.
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
318 
319  // Rx Reorder control
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
338 
339  // For IOT issue.
345 //------------------------------------------------------------
346 // The Data structure is used to keep HT related variable for "each Sta"
347 // when card is configured as "AP mode"
348 //------------------------------------------------------------
353  u8 bSupportCck;
354 
355  u16 AMSDU_MaxSize;
361 
364  u8 MimoPs;
365 
366  u8 McsRateSet[16];
370 
371 
375 //------------------------------------------------------------
376 // The Data structure is used to keep HT related variable for "each AP"
377 // when card is configured as "STA mode"
378 //------------------------------------------------------------
380 typedef struct _BSS_HT{
384  // HT related elements
391  //HT_CAPABILITY_ELE bdHTCapEle;
392  //HT_INFORMATION_ELE bdHTInfoEle;
396 } __attribute__ ((packed)) BSS_HT, *PBSS_HT;
400  u32 AntennaA;
401  u32 AntennaB;
402  u32 AntennaC;
403  u32 AntennaD;
404  u32 Average;
407 typedef struct _MIMO_EVM{
412 typedef struct _FALSE_ALARM_STATISTICS{
419 
420 extern u8 MCS_FILTER_ALL[16];
421 extern u8 MCS_FILTER_1SS[16];
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
443 #define IS_11N_MCS_RATE(rate) (rate&0x80)
444 
445 typedef enum _HT_AGGRE_SIZE{
451 
452 /* Indicate different AP vendor for IOT issue */
453 typedef enum _HT_IOT_PEER
454 {
463 
464 //
465 // IOT Action for different AP
466 //
467 typedef enum _HT_IOT_ACTION{
475  HT_IOT_ACT_CDD_FSYNC = 0x00000080,
479 
480 #endif //_RTL819XU_HTTYPE_H_
481