1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
|
#ifndef __INC_HTTYPE_H
#define __INC_HTTYPE_H
//------------------------------------------------------------
// The HT Capability element is present in beacons, association request,
// reassociation request and probe response frames
//------------------------------------------------------------
//
// Operation mode value
//
#define HT_OPMODE_NO_PROTECT 0
#define HT_OPMODE_OPTIONAL 1
#define HT_OPMODE_40MHZ_PROTECT 2
#define HT_OPMODE_MIXED 3
//
// MIMO Power Save Setings
//
#define MIMO_PS_STATIC 0
#define MIMO_PS_DYNAMIC 1
#define MIMO_PS_NOLIMIT 3
#define sHTCLng 4
/* 2007/06/07 MH Define sub-carrier mode for 40MHZ. */
typedef enum _HT_Bandwidth_40MHZ_Sub_Carrier{
SC_MODE_DUPLICATE = 0,
SC_MODE_LOWER = 1,
SC_MODE_UPPER = 2,
SC_MODE_FULL40MHZ = 3,
}HT_BW40_SC_E;
//HT capability info
#define SET_HT_CAPABILITY_ELE_LDPC_CAP(_pEleStart, _val) SET_BITS_TO_LE_1BYTE(_pEleStart, 0, 1, _val)
#define SET_HT_CAPABILITY_ELE_CHL_WIDTH(_pEleStart, _val) SET_BITS_TO_LE_1BYTE(_pEleStart, 1, 1, _val)
#define SET_HT_CAPABILITY_ELE_MIMO_PWRSAVE(_pEleStart, _val) SET_BITS_TO_LE_1BYTE(_pEleStart, 2, 2, _val)
#define SET_HT_CAPABILITY_ELE_GREEN_FIELD(_pEleStart, _val) SET_BITS_TO_LE_1BYTE(_pEleStart, 4, 1, _val)
#define SET_HT_CAPABILITY_ELE_SHORT_GI20M(_pEleStart, _val) SET_BITS_TO_LE_1BYTE(_pEleStart, 5, 1, _val)
#define SET_HT_CAPABILITY_ELE_SHORT_GI40M(_pEleStart, _val) SET_BITS_TO_LE_1BYTE(_pEleStart, 6, 1, _val)
#define SET_HT_CAPABILITY_ELE_TX_STBC(_pEleStart, _val) SET_BITS_TO_LE_1BYTE(_pEleStart, 7, 1, _val)
#define SET_HT_CAPABILITY_ELE_RX_STBC(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 0, 2, _val)
#define SET_HT_CAPABILITY_ELE_DELAY_BA(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 2, 1, _val)
#define SET_HT_CAPABILITY_ELE_MAX_AMSDU_SIZE(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 3, 1, _val)
#define SET_HT_CAPABILITY_ELE_DSS_CCK(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 4, 1, _val)
#define SET_HT_CAPABILITY_ELE_PSMP(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 5, 1, _val)
#define SET_HT_CAPABILITY_ELE_FORTY_INTOLERANT(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 6, 1, _val)
#define SET_HT_CAPABILITY_ELE_LSIG_TXOP_PROTECT(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 7, 1, _val)
#define GET_HT_CAPABILITY_ELE_LDPC_CAP(_pEleStart) LE_BITS_TO_1BYTE(_pEleStart, 0, 1)
#define GET_HT_CAPABILITY_ELE_CHL_WIDTH(_pEleStart) LE_BITS_TO_1BYTE(_pEleStart, 1, 1)
#define GET_HT_CAPABILITY_ELE_MIMO_PWRSAVE(_pEleStart) LE_BITS_TO_1BYTE(_pEleStart, 2, 2)
#define GET_HT_CAPABILITY_ELE_GREEN_FIELD(_pEleStart) LE_BITS_TO_1BYTE(_pEleStart, 4, 1)
#define GET_HT_CAPABILITY_ELE_SHORT_GI20M(_pEleStart) LE_BITS_TO_1BYTE(_pEleStart, 5, 1)
#define GET_HT_CAPABILITY_ELE_SHORT_GI40M(_pEleStart) LE_BITS_TO_1BYTE(_pEleStart, 6, 1)
#define GET_HT_CAPABILITY_ELE_TX_STBC(_pEleStart) LE_BITS_TO_1BYTE(_pEleStart, 7, 1)
#define GET_HT_CAPABILITY_ELE_RX_STBC(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 0, 2)
#define GET_HT_CAPABILITY_ELE_DELAY_BA(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 2, 1)
#define GET_HT_CAPABILITY_ELE_MAX_AMSDU_SIZE(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 3, 1)
#define GET_HT_CAPABILITY_ELE_DSS_CCK(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 4, 1)
#define GET_HT_CAPABILITY_ELE_PSMP(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 5, 1)
#define GET_HT_CAPABILITY_ELE_FORTY_INTOLERANT(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 6, 1)
#define GET_HT_CAPABILITY_ELE_LSIG_TXOP_PROTECT(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 7, 1)
//MAC HT parameters info
#define SET_HT_CAPABILITY_ELE_MAX_RXAMPDU_FACTOR(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+2, 0, 2, _val)
#define SET_HT_CAPABILITY_ELE_MPDU_DENSITY(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+2, 2, 3, _val)
#define SET_HT_CAPABILITY_ELE_RSVD2(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+2, 5, 3, _val)
#define GET_HT_CAPABILITY_ELE_MAX_RXAMPDU_FACTOR(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+2, 0, 2)
#define GET_HT_CAPABILITY_ELE_MPDU_DENSITY(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+2, 2, 3)
#define GET_HT_CAPABILITY_ELE_RSVD2(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+2, 5, 3)
//Supported MCS set
#define GET_HT_CAPABILITY_ELE_MCS(_pEleStart) ((_pEleStart)+3)
//Extended HT Capability Info
#define SET_HT_CAPABILITY_ELE_EXT_HTCAPINFO(_pEleStart, _val) WriteEF2Byte(((pu1Byte)(_pEleStart))+19, _val)
#define GET_HT_CAPABILITY_ELE_EXT_HTCAPINFO(_pEleStart) ReadEF2Byte(((pu1Byte)(_pEleStart))+19)
#define SET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_PCO(_pEleStart, _val) SET_BITS_TO_LE_2BYTE( ((pu1Byte)(_pEleStart))+19, 0, 1, ((u1Byte)_val) )
#define SET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_PCO_TIME(_pEleStart, _val) SET_BITS_TO_LE_2BYTE( ((pu1Byte)(_pEleStart))+19, 1, 2, ((u1Byte)_val) )
#define SET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_RSVD3(_pEleStart, _val) SET_BITS_TO_LE_2BYTE( ((pu1Byte)(_pEleStart))+19, 3, 5, ((u1Byte)_val) )
#define SET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_MCS_FEEDBACK(_pEleStart, _val) SET_BITS_TO_LE_2BYTE( ((pu1Byte)(_pEleStart))+19, 8, 2, ((u1Byte)_val) )
#define SET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_HTC(_pEleStart, _val) SET_BITS_TO_LE_2BYTE( ((pu1Byte)(_pEleStart))+19, 10, 1, ((u1Byte)_val) )
#define SET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_RDR(_pEleStart, _val) SET_BITS_TO_LE_2BYTE( ((pu1Byte)(_pEleStart))+19, 11, 1, ((u1Byte)_val) )
#define SET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_RSVD4(_pEleStart, _val) SET_BITS_TO_LE_2BYTE( ((pu1Byte)(_pEleStart))+19, 12, 4, ((u1Byte)_val) )
#define GET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_PCO(_pEleStart) ((u1Byte)LE_BITS_TO_2BYTE( ((pu1Byte)(_pEleStart))+19, 0, 1))
#define GET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_PCO_TIME(_pEleStart) ((u1Byte)LE_BITS_TO_2BYTE( ((pu1Byte)(_pEleStart))+19, 1, 2))
#define GET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_RSVD3(_pEleStart) ((u1Byte)LE_BITS_TO_2BYTE( ((pu1Byte)(_pEleStart))+19, 3, 5))
#define GET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_MCS_FEEDBACK(_pEleStart) ((u1Byte)LE_BITS_TO_2BYTE( ((pu1Byte)(_pEleStart))+19, 8, 2))
#define GET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_HTC(_pEleStart) ((u1Byte)LE_BITS_TO_2BYTE( ((pu1Byte)(_pEleStart))+19, 10, 1))
#define GET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_RDR(_pEleStart) ((u1Byte)LE_BITS_TO_2BYTE( ((pu1Byte)(_pEleStart))+19, 11, 1))
#define GET_HT_CAPABILITY_ELE_EXT_HTCAPINFO_RSVD4(_pEleStart) ((u1Byte)LE_BITS_TO_2BYTE( ((pu1Byte)(_pEleStart))+19, 12, 4))
//TXBF Capabilities
#define SET_HT_CAPABILITY_ELE_TXBF_CAP(_pEleStart, _val) WriteEF4Byte(((pu1Byte)(_pEleStart))+21, _val)
#define SET_HT_CAP_TXBF_RECEIVE_NDP_CAP(_pEleStart, _val) SET_BITS_TO_LE_4BYTE( ((pu1Byte)(_pEleStart))+21, 3, 1, ((u1Byte)_val) )
#define SET_HT_CAP_TXBF_TRANSMIT_NDP_CAP(_pEleStart, _val) SET_BITS_TO_LE_4BYTE( ((pu1Byte)(_pEleStart))+21, 4, 1, ((u1Byte)_val) )
#define SET_HT_CAP_TXBF_EXPLICIT_COMP_STEERING_CAP(_pEleStart, _val) SET_BITS_TO_LE_4BYTE( ((pu1Byte)(_pEleStart))+21, 10, 1, ((u1Byte)_val) )
#define SET_HT_CAP_TXBF_EXPLICIT_COMP_FEEDBACK_CAP(_pEleStart, _val) SET_BITS_TO_LE_4BYTE( ((pu1Byte)(_pEleStart))+21, 15, 2, ((u1Byte)_val) )
#define SET_HT_CAP_TXBF_COMP_STEERING_NUM_ANTENNAS(_pEleStart, _val) SET_BITS_TO_LE_4BYTE( ((pu1Byte)(_pEleStart))+21, 23, 2, ((u1Byte)_val) )
#define SET_HT_CAP_TXBF_CHNL_ESTIMATION_NUM_ANTENNAS(_pEleStart, _val) SET_BITS_TO_LE_4BYTE( ((pu1Byte)(_pEleStart))+21, 27, 2, ((u1Byte)_val) )
#define GET_HT_CAPABILITY_ELE_TXBF_CAP(_pEleStart) ReadEF4Byte(((pu1Byte)(_pEleStart))+21)
#define GET_HT_CAP_TXBF_EXPLICIT_COMP_STEERING_CAP(_pEleStart) LE_BITS_TO_4BYTE((_pEleStart)+21, 10, 1)
#define GET_HT_CAP_TXBF_EXPLICIT_COMP_FEEDBACK_CAP(_pEleStart) LE_BITS_TO_4BYTE((_pEleStart)+21, 15, 2)
#define GET_HT_CAP_TXBF_COMP_STEERING_NUM_ANTENNAS(_pEleStart) LE_BITS_TO_4BYTE((_pEleStart)+21, 23, 2)
#define GET_HT_CAP_TXBF_CHNL_ESTIMATION_NUM_ANTENNAS(_pEleStart) LE_BITS_TO_4BYTE((_pEleStart)+21, 27, 2)
//Antenna Selection Capabilities
#define SET_HT_CAPABILITY_ELE_AS_CAP(_pEleStart, _val) WriteEF1Byte(((pu1Byte)(_pEleStart))+25, _val)
#define GET_HT_CAPABILITY_ELE_AS_CAP(_pEleStart) ReadEF1Byte(((pu1Byte)(_pEleStart))+25)
//------------------------------------------------------------
// The HT Information element
//------------------------------------------------------------
#define SET_HT_INFO_ELE_CONTROL_CHL(_pEleStart, _val) WriteEF1Byte(_pEleStart, _val)
#define GET_HT_INFO_ELE_CONTROL_CHL(_pEleStart) ReadEF1Byte(_pEleStart)
#define SET_HT_INFO_ELE_EXT_CHL_OFFSET(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 0, 2, _val)
#define SET_HT_INFO_ELE_STA_CHL_WIDTH(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 2, 1, _val)
#define SET_HT_INFO_ELE_RIFS(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 3, 1, _val)
#define SET_HT_INFO_ELE_PSMP_ACCESS_ONLY(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 4, 1, _val)
#define SET_HT_INFO_ELE_SRV_INT_GRAN(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+1, 5, 3, _val)
#define GET_HT_INFO_ELE_EXT_CHL_OFFSET(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 0, 2)
#define GET_HT_INFO_ELE_STA_CHL_WIDTH(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 2, 1)
#define GET_HT_INFO_ELE_RIFS(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 3, 1)
#define GET_HT_INFO_ELE_PSMP_ACCESS_ONLY(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 4, 1)
#define GET_HT_INFO_ELE_SRV_INT_GRAN(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+1, 5, 3)
#define SET_HT_INFO_ELE_OPT_MODE(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+2, 0, 2, _val)
#define SET_HT_INFO_ELE_NON_GF_DEV(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+2, 2, 1, _val)
#define GET_HT_INFO_ELE_OPT_MODE(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+2, 0, 2)
#define GET_HT_INFO_ELE_OBSS_NON_HT_MEMBER(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+2, 4, 1)
#define GET_HT_INFO_ELE_NON_GF_DEV(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+2, 2, 1)
#define GET_HT_INFO_ELE_CHANNEL(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+0, 0, 8)
#define SET_HT_INFO_ELE_DUAL_BEACON(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+4, 6, 1, _val)
#define SET_HT_INFO_ELE_DUAL_CTS_PROTECT(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+4, 7, 1, _val)
#define GET_HT_INFO_ELE_DUAL_BEACON(_pEleStart, _val) LE_BITS_TO_1BYTE((_pEleStart)+4, 6, 1)
#define GET_HT_INFO_ELE_DUAL_CTS_PROTECT(_pEleStart, _val) LE_BITS_TO_1BYTE((_pEleStart)+4, 7, 1)
#define SET_HT_INFO_ELE_SECONDARY_BEACON(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+5, 0, 1, _val)
#define SET_HT_INFO_ELE_LSIG_TXOP_PROTECT_FULL(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+5, 1, 1, _val)
#define SET_HT_INFO_ELE_PCO_ACTIVE(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+5, 2, 1, _val)
#define SET_HT_INFO_ELE_PCO_PHASE(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+5, 3, 1, _val)
#define GET_HT_INFO_ELE_SECONDARY_BEACON(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+5, 0, 1)
#define GET_HT_INFO_ELE_LSIG_TXOP_PROTECT_FULL(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+5, 1, 1)
#define GET_HT_INFO_ELE_PCO_ACTIVE(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+5, 2, 1)
#define GET_HT_INFO_ELE_PCO_PHASE(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+5, 3, 1)
#define GET_HT_INFO_ELE_BASIC_MCS(_pEleStart) ((_pEleStart)+6)
// MIMO Power Save control field.
// This is appear in MIMO Power Save Action Frame
#define GET_MIMOPS_FRAME_PS_ENABLE(_pStart) ((u1Byte)LE_BITS_TO_1BYTE( ((pu1Byte)(_pStart))+sMacHdrLng+2, 0, 1))
#define GET_MIMOPS_FRAME_PS_MODE(_pStart) ((u1Byte)LE_BITS_TO_1BYTE( ((pu1Byte)(_pStart))+sMacHdrLng+2, 1, 1))
//------------------------------------------------------------
// The HT Control field
//------------------------------------------------------------
#define SET_HT_CTRL_CSI_STEERING(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+2, 6, 2, _val)
#define SET_HT_CTRL_NDP_ANNOUNCEMENT(_pEleStart, _val) SET_BITS_TO_LE_1BYTE((_pEleStart)+3, 0, 1, _val)
#define GET_HT_CTRL_NDP_ANNOUNCEMENT(_pEleStart) LE_BITS_TO_1BYTE((_pEleStart)+3, 0, 1)
typedef enum _HT_SPEC_VER{
HT_SPEC_VER_IEEE = 0,
HT_SPEC_VER_EWC = 1,
}HT_SPEC_VER, *PHT_SPEC_VER;
typedef enum _HT_AMPDM_MODE_E{
HT_AMPDU_AUTO = 0,
HT_AMPDU_ENABLE = 1,
HT_AMPDU_DISABLE = 2,
}HT_AMPDU_MODE_E, *PHT_AMPDU_MODE_E;
typedef enum _HT_AMSDU_MODE_E{
HT_AMSDU_AUTO = 0,
HT_AMSDU_ENABLE = 1,
HT_AMSDU_DISABLE = 2,
HT_AMSDU_WITHIN_AMPDU = 3,
}HT_AMSDU_MODE_E, *PHT_AMSDU_MODE_E;
typedef enum _SHORTGI_MODE_E{
SHORTGI_AUTO = 0,
SHORTGI_FORCE_ENABLE = 1,
SHORTGI_FORCE_DISABLE = 2,
}SHORTGI_MODE_E, *PSHORTGI_MODE_E;
#define LDPC_HT_ENABLE_RX BIT0
#define LDPC_HT_ENABLE_TX BIT1
#define LDPC_HT_TEST_TX_ENABLE BIT2
#define LDPC_HT_CAP_TX BIT3
#define STBC_HT_ENABLE_RX BIT0
#define STBC_HT_ENABLE_TX BIT1
#define STBC_HT_TEST_TX_ENABLE BIT2
#define STBC_HT_CAP_TX BIT3
#define BEAMFORMING_HT_BEAMFORMER_ENABLE BIT0 // Declare our NIC supports beamformer
#define BEAMFORMING_HT_BEAMFORMEE_ENABLE BIT1 // Declare our NIC supports beamformee
#define BEAMFORMING_HT_BEAMFORMER_TEST BIT2 // Transmiting Beamforming no matter the target supports it or not
#define BEAMFORMING_HT_BEAMFORMER_STEER_NUM (BIT4|BIT5)
#define BEAMFORMING_HT_BEAMFORMEE_CHNL_EST_CAP (BIT6|BIT7)
//------------------------------------------------------------
// The Data structure is used to keep HT related variables when card is
// configured as non-AP STA mode. **Note** Current_xxx should be set
// to default value in HTInitializeHTInfo()
//------------------------------------------------------------
typedef struct _RT_HIGH_THROUGHPUT{
DECLARE_RT_OBJECT(_RT_HIGH_THROUGHPUT);
BOOLEAN bEnableHT;
BOOLEAN bCurrentHTSupport;
SHORTGI_MODE_E ForcedShortGI;
BOOLEAN bCurShortGI40MHz; // Tx Short GI for 40MHz
BOOLEAN bCurShortGI20MHz; // Tx Short GI for 20MHz
u1Byte HtLdpcCap; // Capability combination of HT LDPC LDPC_HT_XXX
u1Byte HtCurLdpc; // Current target connection supports LDPC
u1Byte HtStbcCap; // Capability combination of HT STBC_HT_XXX
u1Byte HtCurStbc; // Current target connection support STBC
u1Byte HtBeamformCap; // Capability combination of VHT LDPC LDPC_VHT_XXX
u1Byte HtCurBeamform; // Current combination of BEAMFORMING_VHT_XXX in BSS connection
BOOLEAN bRegSuppCCK; // Tx CCK rate capability
BOOLEAN bCurSuppCCK; // Tx CCK rate capability
// 802.11n spec version for "peer"
HT_SPEC_VER ePeerHTSpecVer;
// HT related information for "Self"
u1Byte SelfHTCap[26]; //HT_CAPABILITY_ELE SelfHTCap; // This is HT cap element sent to peer STA, which also indicate HT Rx capabilities.
u1Byte SelfHTInfo[22]; // This is HT info element sent to peer STA, which also indicate HT Rx capabilities.
// HT related information for "Peer"
u1Byte PeerHTCapBuf[32];
u1Byte PeerHTInfoBuf[32];
// A-MSDU related
BOOLEAN bAMSDU_Support; // This indicates Tx A-MSDU capability
u2Byte nAMSDU_MaxSize; // This indicates Tx A-MSDU capability
BOOLEAN bCurrent_AMSDU_Support; // This indicates Tx A-MSDU capability
u2Byte nCurrent_AMSDU_MaxSize; // This indicates Tx A-MSDU capability
BOOLEAN bHWAMSDU_Support; // This indicates Tx A-MSDU capability
// AMPDU related <2006.08.10 Emily>
BOOLEAN bAMPDUEnable; // This indicate Tx A-MPDU capability
BOOLEAN bCurrentAMPDUEnable; // This indicate Tx A-MPDU capability
u1Byte AMPDU_Factor; // This indicate Tx A-MPDU capability
u1Byte CurrentAMPDUFactor; // This indicate Tx A-MPDU capability
u1Byte MPDU_Density; // This indicate Tx A-MPDU capability
u1Byte CurrentMPDUDensity; // This indicate Tx A-MPDU capability
// Forced A-MPDU enable
HT_AMPDU_MODE_E ForcedAMPDUMode;
u1Byte ForcedAMPDUFactor;
u1Byte ForcedMPDUDensity;
// Forced A-MSDU enable
HT_AMSDU_MODE_E ForcedAMSDUMode;
u2Byte ForcedAMSDUMaxSize;
u1Byte ForcedAMSDUMaxNum;
u4Byte AmsduCnt[5]; // For test only , should be deleted later.
u1Byte CurrentOpMode;
// MIMO PS related
u1Byte SelfMimoPs;
u1Byte PeerMimoPs;
// 40MHz Channel Offset settings.
BOOLEAN bPeer40MHzCap; // Supported channel width set
EXTCHNL_OFFSET PeerExtChnlOffset;
BOOLEAN bPeer40MHzIntolerant; // Forty MHz Intolerant
// 20/40 Bss Coexistence
BOOLEAN bBssCoexist; // 20/40 Bss Coexistence Management Support from self config
BOOLEAN bPeerBssCoexistence; // 20/40 BSS Coexistence Management Support from AP
BOOLEAN bCurOBSSScanExemptionGrt; // OBSS Scanning exemption grant
u2Byte CurOBSSScanInterval; // BSS Channel Width Trigger Scan Interval
u2Byte IdleOBSSScanCnt; // The scan idle count for BSS scan interval
u8Byte lastTimeSentObssRptUs; // Last system time to send the Obss report
// For Realtek proprietary A-MPDU factor for aggregation
u1Byte RT2RT_HT_Mode;
// Rx Reorder control
BOOLEAN bRegRxReorderEnable;
BOOLEAN bCurRxReorderEnable;
u1Byte RxReorderWinSize;
u1Byte RxReorderPendingTime;
u2Byte RxReorderDropCounter;
// Accept ADDBA Request
BOOLEAN bAcceptAddbaReq;
//RDG enable
BOOLEAN bRDGEnable;
//Added for dual band 40MHz support
BOOLEAN bRegBW40MHzFor2G;
BOOLEAN bRegBW40MHzFor5G;
BOOLEAN b40Intolerant;
BOOLEAN bAMPDUManual;
u1Byte nTxSPStream;
u1Byte nRxSPStream;
BOOLEAN bRegShortGI40MHz;
BOOLEAN bRegShortGI20MHz;
}RT_HIGH_THROUGHPUT, *PRT_HIGH_THROUGHPUT;
//------------------------------------------------------------
// The Data structure is used to keep HT related variable for "each Sta"
// when card is configured as "AP mode"
//------------------------------------------------------------
typedef struct _RT_HTINFO_STA_ENTRY{
BOOLEAN bEnableHT;
u1Byte LDPC;
u1Byte STBC;
BOOLEAN bSupportCck;
u2Byte AMSDU_MaxSize;
u1Byte AMPDU_Factor;
u1Byte MPDU_Density;
u1Byte MimoPs;
u1Byte McsRateSet[16];
u1Byte HTHighestOperaRate;
BOOLEAN bCurRxReorderEnable;
BOOLEAN bShortGI20M;
BOOLEAN bShortGI40M;
u1Byte HtCurBeamform;
}RT_HTINFO_STA_ENTRY, *PRT_HTINFO_STA_ENTRY;
//------------------------------------------------------------
// The Data structure is used to keep HT related variable for "each AP"
// when card is configured as "STA mode"
//------------------------------------------------------------
typedef struct _BSS_HT{
BOOLEAN bdSupportHT;
// HT related elements
u1Byte bdHTCapBuf[32];
u2Byte bdHTCapLen;
u1Byte bdHTInfoBuf[32];
u2Byte bdHTInfoLen;
HT_SPEC_VER bdHTSpecVer;
u1Byte RT2RT_HT_Mode;
BOOLEAN bd40Intolerant;
BOOLEAN bdOBSSExemption;
u2Byte OBSSScanInterval;
}BSS_HT, *PBSS_HT;
typedef struct _MIMO_RSSI{
u4Byte EnableAntenna;
u4Byte AntennaA;
u4Byte AntennaB;
u4Byte AntennaC;
u4Byte AntennaD;
u4Byte Average;
}MIMO_RSSI, *PMIMO_RSSI;
typedef struct _MIMO_EVM{
u4Byte EVM1;
u4Byte EVM2;
}MIMO_EVM, *PMIMO_EVM;
#endif //__INC_HTTYPE_H
|