]>
Commit | Line | Data |
---|---|---|
36c7928c BZ |
1 | /* |
2 | ************************************************************************* | |
3 | * Ralink Tech Inc. | |
4 | * 5F., No.36, Taiyuan St., Jhubei City, | |
5 | * Hsinchu County 302, | |
6 | * Taiwan, R.O.C. | |
7 | * | |
8 | * (c) Copyright 2002-2007, Ralink Technology, Inc. | |
9 | * | |
10 | * This program is free software; you can redistribute it and/or modify * | |
11 | * it under the terms of the GNU General Public License as published by * | |
12 | * the Free Software Foundation; either version 2 of the License, or * | |
13 | * (at your option) any later version. * | |
14 | * * | |
15 | * This program is distributed in the hope that it will be useful, * | |
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * | |
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |
18 | * GNU General Public License for more details. * | |
19 | * * | |
20 | * You should have received a copy of the GNU General Public License * | |
21 | * along with this program; if not, write to the * | |
22 | * Free Software Foundation, Inc., * | |
23 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | |
24 | * * | |
25 | ************************************************************************* | |
26 | ||
27 | Module Name: | |
28 | rtmp.h | |
29 | ||
30 | Abstract: | |
31 | Miniport generic portion header file | |
32 | ||
33 | Revision History: | |
34 | Who When What | |
35 | -------- ---------- ---------------------------------------------- | |
36 | Paul Lin 2002-08-01 created | |
37 | James Tan 2002-09-06 modified (Revise NTCRegTable) | |
38 | John Chang 2004-09-06 modified for RT2600 | |
39 | */ | |
40 | #ifndef __RTMP_H__ | |
41 | #define __RTMP_H__ | |
42 | ||
43 | #include "link_list.h" | |
44 | #include "spectrum_def.h" | |
45 | ||
46 | #include "rtmp_dot11.h" | |
47 | ||
48 | #ifdef MLME_EX | |
49 | #include "mlme_ex_def.h" | |
50 | #endif // MLME_EX // | |
51 | ||
52 | #ifdef CONFIG_STA_SUPPORT | |
53 | #endif // CONFIG_STA_SUPPORT // | |
54 | ||
55 | #undef AP_WSC_INCLUDED | |
56 | #undef STA_WSC_INCLUDED | |
57 | #undef WSC_INCLUDED | |
58 | ||
59 | ||
60 | #ifdef CONFIG_STA_SUPPORT | |
61 | #endif // CONFIG_STA_SUPPORT // | |
62 | ||
63 | #if defined(AP_WSC_INCLUDED) || defined(STA_WSC_INCLUDED) | |
64 | #define WSC_INCLUDED | |
65 | #endif | |
66 | ||
67 | ||
68 | ||
69 | ||
70 | ||
71 | #include "rtmp_chip.h" | |
72 | ||
73 | ||
74 | ||
75 | typedef struct _RTMP_ADAPTER RTMP_ADAPTER; | |
76 | typedef struct _RTMP_ADAPTER *PRTMP_ADAPTER; | |
77 | ||
78 | typedef struct _RTMP_CHIP_OP_ RTMP_CHIP_OP; | |
79 | ||
80 | ||
81 | //#define DBG 1 | |
82 | ||
83 | //#define DBG_DIAGNOSE 1 | |
84 | ||
85 | ||
86 | //+++Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function | |
87 | #define MAX_DATAMM_RETRY 3 | |
88 | #define MGMT_USE_QUEUE_FLAG 0x80 | |
89 | //---Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function | |
90 | ||
91 | #define MAXSEQ (0xFFF) | |
92 | ||
93 | ||
94 | #if defined(CONFIG_AP_SUPPORT) && defined(CONFIG_STA_SUPPORT) | |
95 | #define IF_DEV_CONFIG_OPMODE_ON_AP(_pAd) if(_pAd->OpMode == OPMODE_AP) | |
96 | #define IF_DEV_CONFIG_OPMODE_ON_STA(_pAd) if(_pAd->OpMode == OPMODE_STA) | |
97 | #else | |
98 | #define IF_DEV_CONFIG_OPMODE_ON_AP(_pAd) | |
99 | #define IF_DEV_CONFIG_OPMODE_ON_STA(_pAd) | |
100 | #endif | |
101 | ||
102 | extern unsigned char SNAP_AIRONET[]; | |
103 | extern unsigned char CISCO_OUI[]; | |
104 | extern UCHAR BaSizeArray[4]; | |
105 | ||
106 | extern UCHAR BROADCAST_ADDR[MAC_ADDR_LEN]; | |
107 | extern UCHAR ZERO_MAC_ADDR[MAC_ADDR_LEN]; | |
108 | extern ULONG BIT32[32]; | |
109 | extern UCHAR BIT8[8]; | |
110 | extern char* CipherName[]; | |
111 | extern char* MCSToMbps[]; | |
112 | extern UCHAR RxwiMCSToOfdmRate[12]; | |
113 | extern UCHAR SNAP_802_1H[6]; | |
114 | extern UCHAR SNAP_BRIDGE_TUNNEL[6]; | |
115 | extern UCHAR SNAP_AIRONET[8]; | |
116 | extern UCHAR CKIP_LLC_SNAP[8]; | |
117 | extern UCHAR EAPOL_LLC_SNAP[8]; | |
118 | extern UCHAR EAPOL[2]; | |
119 | extern UCHAR IPX[2]; | |
120 | extern UCHAR APPLE_TALK[2]; | |
121 | extern UCHAR RateIdToPlcpSignal[12]; // see IEEE802.11a-1999 p.14 | |
122 | extern UCHAR OfdmRateToRxwiMCS[]; | |
123 | extern UCHAR OfdmSignalToRateId[16] ; | |
124 | extern UCHAR default_cwmin[4]; | |
125 | extern UCHAR default_cwmax[4]; | |
126 | extern UCHAR default_sta_aifsn[4]; | |
127 | extern UCHAR MapUserPriorityToAccessCategory[8]; | |
128 | ||
129 | extern USHORT RateUpPER[]; | |
130 | extern USHORT RateDownPER[]; | |
131 | extern UCHAR Phy11BNextRateDownward[]; | |
132 | extern UCHAR Phy11BNextRateUpward[]; | |
133 | extern UCHAR Phy11BGNextRateDownward[]; | |
134 | extern UCHAR Phy11BGNextRateUpward[]; | |
135 | extern UCHAR Phy11ANextRateDownward[]; | |
136 | extern UCHAR Phy11ANextRateUpward[]; | |
137 | extern CHAR RssiSafeLevelForTxRate[]; | |
138 | extern UCHAR RateIdToMbps[]; | |
139 | extern USHORT RateIdTo500Kbps[]; | |
140 | ||
141 | extern UCHAR CipherSuiteWpaNoneTkip[]; | |
142 | extern UCHAR CipherSuiteWpaNoneTkipLen; | |
143 | ||
144 | extern UCHAR CipherSuiteWpaNoneAes[]; | |
145 | extern UCHAR CipherSuiteWpaNoneAesLen; | |
146 | ||
147 | extern UCHAR SsidIe; | |
148 | extern UCHAR SupRateIe; | |
149 | extern UCHAR ExtRateIe; | |
150 | ||
151 | #ifdef DOT11_N_SUPPORT | |
152 | extern UCHAR HtCapIe; | |
153 | extern UCHAR AddHtInfoIe; | |
154 | extern UCHAR NewExtChanIe; | |
155 | #ifdef DOT11N_DRAFT3 | |
156 | extern UCHAR ExtHtCapIe; | |
157 | #endif // DOT11N_DRAFT3 // | |
158 | #endif // DOT11_N_SUPPORT // | |
159 | ||
160 | extern UCHAR ErpIe; | |
161 | extern UCHAR DsIe; | |
162 | extern UCHAR TimIe; | |
163 | extern UCHAR WpaIe; | |
164 | extern UCHAR Wpa2Ie; | |
165 | extern UCHAR IbssIe; | |
166 | extern UCHAR Ccx2Ie; | |
167 | extern UCHAR WapiIe; | |
168 | ||
169 | extern UCHAR WPA_OUI[]; | |
170 | extern UCHAR RSN_OUI[]; | |
171 | extern UCHAR WAPI_OUI[]; | |
172 | extern UCHAR WME_INFO_ELEM[]; | |
173 | extern UCHAR WME_PARM_ELEM[]; | |
174 | extern UCHAR Ccx2QosInfo[]; | |
175 | extern UCHAR Ccx2IeInfo[]; | |
176 | extern UCHAR RALINK_OUI[]; | |
177 | extern UCHAR PowerConstraintIE[]; | |
178 | ||
179 | ||
180 | extern UCHAR RateSwitchTable[]; | |
181 | extern UCHAR RateSwitchTable11B[]; | |
182 | extern UCHAR RateSwitchTable11G[]; | |
183 | extern UCHAR RateSwitchTable11BG[]; | |
184 | ||
185 | #ifdef DOT11_N_SUPPORT | |
186 | extern UCHAR RateSwitchTable11BGN1S[]; | |
187 | extern UCHAR RateSwitchTable11BGN2S[]; | |
188 | extern UCHAR RateSwitchTable11BGN2SForABand[]; | |
189 | extern UCHAR RateSwitchTable11N1S[]; | |
190 | extern UCHAR RateSwitchTable11N2S[]; | |
191 | extern UCHAR RateSwitchTable11N2SForABand[]; | |
192 | ||
193 | #ifdef CONFIG_STA_SUPPORT | |
194 | extern UCHAR PRE_N_HT_OUI[]; | |
195 | #endif // CONFIG_STA_SUPPORT // | |
196 | #endif // DOT11_N_SUPPORT // | |
197 | ||
198 | ||
199 | #ifdef RALINK_ATE | |
200 | typedef struct _ATE_INFO { | |
201 | UCHAR Mode; | |
202 | CHAR TxPower0; | |
203 | CHAR TxPower1; | |
204 | CHAR TxAntennaSel; | |
205 | CHAR RxAntennaSel; | |
206 | TXWI_STRUC TxWI; // TXWI | |
207 | USHORT QID; | |
208 | UCHAR Addr1[MAC_ADDR_LEN]; | |
209 | UCHAR Addr2[MAC_ADDR_LEN]; | |
210 | UCHAR Addr3[MAC_ADDR_LEN]; | |
211 | UCHAR Channel; | |
212 | UINT32 TxLength; | |
213 | UINT32 TxCount; | |
214 | UINT32 TxDoneCount; // Tx DMA Done | |
215 | UINT32 RFFreqOffset; | |
216 | BOOLEAN bRxFER; // Show Rx Frame Error Rate | |
217 | BOOLEAN bQATxStart; // Have compiled QA in and use it to ATE tx. | |
218 | BOOLEAN bQARxStart; // Have compiled QA in and use it to ATE rx. | |
219 | #ifdef RTMP_MAC_PCI | |
220 | BOOLEAN bFWLoading; // Reload firmware when ATE is done. | |
221 | #endif // RTMP_MAC_PCI // | |
222 | UINT32 RxTotalCnt; | |
223 | UINT32 RxCntPerSec; | |
224 | ||
225 | CHAR LastSNR0; // last received SNR | |
226 | CHAR LastSNR1; // last received SNR for 2nd antenna | |
227 | CHAR LastRssi0; // last received RSSI | |
228 | CHAR LastRssi1; // last received RSSI for 2nd antenna | |
229 | CHAR LastRssi2; // last received RSSI for 3rd antenna | |
230 | CHAR AvgRssi0; // last 8 frames' average RSSI | |
231 | CHAR AvgRssi1; // last 8 frames' average RSSI | |
232 | CHAR AvgRssi2; // last 8 frames' average RSSI | |
233 | SHORT AvgRssi0X8; // sum of last 8 frames' RSSI | |
234 | SHORT AvgRssi1X8; // sum of last 8 frames' RSSI | |
235 | SHORT AvgRssi2X8; // sum of last 8 frames' RSSI | |
236 | ||
237 | UINT32 NumOfAvgRssiSample; | |
238 | ||
239 | ||
240 | #ifdef RALINK_28xx_QA | |
241 | // Tx frame | |
242 | USHORT HLen; // Header Length | |
243 | USHORT PLen; // Pattern Length | |
244 | UCHAR Header[32]; // Header buffer | |
245 | UCHAR Pattern[32]; // Pattern buffer | |
246 | USHORT DLen; // Data Length | |
247 | USHORT seq; | |
248 | UINT32 CID; | |
249 | RTMP_OS_PID AtePid; | |
250 | // counters | |
251 | UINT32 U2M; | |
252 | UINT32 OtherData; | |
253 | UINT32 Beacon; | |
254 | UINT32 OtherCount; | |
255 | UINT32 TxAc0; | |
256 | UINT32 TxAc1; | |
257 | UINT32 TxAc2; | |
258 | UINT32 TxAc3; | |
259 | /*UINT32 TxHCCA;*/ | |
260 | UINT32 TxMgmt; | |
261 | UINT32 RSSI0; | |
262 | UINT32 RSSI1; | |
263 | UINT32 RSSI2; | |
264 | UINT32 SNR0; | |
265 | UINT32 SNR1; | |
266 | // TxStatus : 0 --> task is idle, 1 --> task is running | |
267 | UCHAR TxStatus; | |
268 | #endif // RALINK_28xx_QA // | |
269 | } ATE_INFO, *PATE_INFO; | |
270 | ||
271 | #ifdef RALINK_28xx_QA | |
272 | struct ate_racfghdr { | |
273 | UINT32 magic_no; | |
274 | USHORT command_type; | |
275 | USHORT command_id; | |
276 | USHORT length; | |
277 | USHORT sequence; | |
278 | USHORT status; | |
279 | UCHAR data[2046]; | |
280 | } __attribute__((packed)); | |
281 | #endif // RALINK_28xx_QA // | |
282 | #endif // RALINK_ATE // | |
283 | ||
284 | ||
285 | typedef struct _RSSI_SAMPLE { | |
286 | CHAR LastRssi0; // last received RSSI | |
287 | CHAR LastRssi1; // last received RSSI | |
288 | CHAR LastRssi2; // last received RSSI | |
289 | CHAR AvgRssi0; | |
290 | CHAR AvgRssi1; | |
291 | CHAR AvgRssi2; | |
292 | SHORT AvgRssi0X8; | |
293 | SHORT AvgRssi1X8; | |
294 | SHORT AvgRssi2X8; | |
295 | } RSSI_SAMPLE; | |
296 | ||
297 | // | |
298 | // Queue structure and macros | |
299 | // | |
300 | typedef struct _QUEUE_ENTRY { | |
301 | struct _QUEUE_ENTRY *Next; | |
302 | } QUEUE_ENTRY, *PQUEUE_ENTRY; | |
303 | ||
304 | // Queue structure | |
305 | typedef struct _QUEUE_HEADER { | |
306 | PQUEUE_ENTRY Head; | |
307 | PQUEUE_ENTRY Tail; | |
308 | ULONG Number; | |
309 | } QUEUE_HEADER, *PQUEUE_HEADER; | |
310 | ||
311 | #define InitializeQueueHeader(QueueHeader) \ | |
312 | { \ | |
313 | (QueueHeader)->Head = (QueueHeader)->Tail = NULL; \ | |
314 | (QueueHeader)->Number = 0; \ | |
315 | } | |
316 | ||
317 | #define RemoveHeadQueue(QueueHeader) \ | |
318 | (QueueHeader)->Head; \ | |
319 | { \ | |
320 | PQUEUE_ENTRY pNext; \ | |
321 | if ((QueueHeader)->Head != NULL) \ | |
322 | { \ | |
323 | pNext = (QueueHeader)->Head->Next; \ | |
324 | (QueueHeader)->Head->Next = NULL; \ | |
325 | (QueueHeader)->Head = pNext; \ | |
326 | if (pNext == NULL) \ | |
327 | (QueueHeader)->Tail = NULL; \ | |
328 | (QueueHeader)->Number--; \ | |
329 | } \ | |
330 | } | |
331 | ||
332 | #define InsertHeadQueue(QueueHeader, QueueEntry) \ | |
333 | { \ | |
334 | ((PQUEUE_ENTRY)QueueEntry)->Next = (QueueHeader)->Head; \ | |
335 | (QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry); \ | |
336 | if ((QueueHeader)->Tail == NULL) \ | |
337 | (QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry); \ | |
338 | (QueueHeader)->Number++; \ | |
339 | } | |
340 | ||
341 | #define InsertTailQueue(QueueHeader, QueueEntry) \ | |
342 | { \ | |
343 | ((PQUEUE_ENTRY)QueueEntry)->Next = NULL; \ | |
344 | if ((QueueHeader)->Tail) \ | |
345 | (QueueHeader)->Tail->Next = (PQUEUE_ENTRY)(QueueEntry); \ | |
346 | else \ | |
347 | (QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry); \ | |
348 | (QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry); \ | |
349 | (QueueHeader)->Number++; \ | |
350 | } | |
351 | ||
352 | #define InsertTailQueueAc(pAd, pEntry, QueueHeader, QueueEntry) \ | |
353 | { \ | |
354 | ((PQUEUE_ENTRY)QueueEntry)->Next = NULL; \ | |
355 | if ((QueueHeader)->Tail) \ | |
356 | (QueueHeader)->Tail->Next = (PQUEUE_ENTRY)(QueueEntry); \ | |
357 | else \ | |
358 | (QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry); \ | |
359 | (QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry); \ | |
360 | (QueueHeader)->Number++; \ | |
361 | } | |
362 | ||
363 | ||
364 | ||
365 | // | |
366 | // Macros for flag and ref count operations | |
367 | // | |
368 | #define RTMP_SET_FLAG(_M, _F) ((_M)->Flags |= (_F)) | |
369 | #define RTMP_CLEAR_FLAG(_M, _F) ((_M)->Flags &= ~(_F)) | |
370 | #define RTMP_CLEAR_FLAGS(_M) ((_M)->Flags = 0) | |
371 | #define RTMP_TEST_FLAG(_M, _F) (((_M)->Flags & (_F)) != 0) | |
372 | #define RTMP_TEST_FLAGS(_M, _F) (((_M)->Flags & (_F)) == (_F)) | |
373 | // Macro for power save flag. | |
374 | #define RTMP_SET_PSFLAG(_M, _F) ((_M)->PSFlags |= (_F)) | |
375 | #define RTMP_CLEAR_PSFLAG(_M, _F) ((_M)->PSFlags &= ~(_F)) | |
376 | #define RTMP_CLEAR_PSFLAGS(_M) ((_M)->PSFlags = 0) | |
377 | #define RTMP_TEST_PSFLAG(_M, _F) (((_M)->PSFlags & (_F)) != 0) | |
378 | #define RTMP_TEST_PSFLAGS(_M, _F) (((_M)->PSFlags & (_F)) == (_F)) | |
379 | ||
380 | #define OPSTATUS_SET_FLAG(_pAd, _F) ((_pAd)->CommonCfg.OpStatusFlags |= (_F)) | |
381 | #define OPSTATUS_CLEAR_FLAG(_pAd, _F) ((_pAd)->CommonCfg.OpStatusFlags &= ~(_F)) | |
382 | #define OPSTATUS_TEST_FLAG(_pAd, _F) (((_pAd)->CommonCfg.OpStatusFlags & (_F)) != 0) | |
383 | ||
384 | #define CLIENT_STATUS_SET_FLAG(_pEntry,_F) ((_pEntry)->ClientStatusFlags |= (_F)) | |
385 | #define CLIENT_STATUS_CLEAR_FLAG(_pEntry,_F) ((_pEntry)->ClientStatusFlags &= ~(_F)) | |
386 | #define CLIENT_STATUS_TEST_FLAG(_pEntry,_F) (((_pEntry)->ClientStatusFlags & (_F)) != 0) | |
387 | ||
388 | #define RX_FILTER_SET_FLAG(_pAd, _F) ((_pAd)->CommonCfg.PacketFilter |= (_F)) | |
389 | #define RX_FILTER_CLEAR_FLAG(_pAd, _F) ((_pAd)->CommonCfg.PacketFilter &= ~(_F)) | |
390 | #define RX_FILTER_TEST_FLAG(_pAd, _F) (((_pAd)->CommonCfg.PacketFilter & (_F)) != 0) | |
391 | ||
392 | #ifdef CONFIG_STA_SUPPORT | |
393 | #define STA_NO_SECURITY_ON(_p) (_p->StaCfg.WepStatus == Ndis802_11EncryptionDisabled) | |
394 | #define STA_WEP_ON(_p) (_p->StaCfg.WepStatus == Ndis802_11Encryption1Enabled) | |
395 | #define STA_TKIP_ON(_p) (_p->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) | |
396 | #define STA_AES_ON(_p) (_p->StaCfg.WepStatus == Ndis802_11Encryption3Enabled) | |
397 | ||
398 | #define STA_TGN_WIFI_ON(_p) (_p->StaCfg.bTGnWifiTest == TRUE) | |
399 | #endif // CONFIG_STA_SUPPORT // | |
400 | ||
401 | #define CKIP_KP_ON(_p) ((((_p)->StaCfg.CkipFlag) & 0x10) && ((_p)->StaCfg.bCkipCmicOn == TRUE)) | |
402 | #define CKIP_CMIC_ON(_p) ((((_p)->StaCfg.CkipFlag) & 0x08) && ((_p)->StaCfg.bCkipCmicOn == TRUE)) | |
403 | ||
404 | ||
405 | #define INC_RING_INDEX(_idx, _RingSize) \ | |
406 | { \ | |
407 | (_idx) = (_idx+1) % (_RingSize); \ | |
408 | } | |
409 | ||
410 | ||
411 | #ifdef DOT11_N_SUPPORT | |
412 | // StaActive.SupportedHtPhy.MCSSet is copied from AP beacon. Don't need to update here. | |
413 | #define COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(_pAd) \ | |
414 | { \ | |
415 | _pAd->StaActive.SupportedHtPhy.ChannelWidth = _pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth; \ | |
416 | _pAd->StaActive.SupportedHtPhy.MimoPs = _pAd->MlmeAux.HtCapability.HtCapInfo.MimoPs; \ | |
417 | _pAd->StaActive.SupportedHtPhy.GF = _pAd->MlmeAux.HtCapability.HtCapInfo.GF; \ | |
418 | _pAd->StaActive.SupportedHtPhy.ShortGIfor20 = _pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor20; \ | |
419 | _pAd->StaActive.SupportedHtPhy.ShortGIfor40 = _pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor40; \ | |
420 | _pAd->StaActive.SupportedHtPhy.TxSTBC = _pAd->MlmeAux.HtCapability.HtCapInfo.TxSTBC; \ | |
421 | _pAd->StaActive.SupportedHtPhy.RxSTBC = _pAd->MlmeAux.HtCapability.HtCapInfo.RxSTBC; \ | |
422 | _pAd->StaActive.SupportedHtPhy.ExtChanOffset = _pAd->MlmeAux.AddHtInfo.AddHtInfo.ExtChanOffset; \ | |
423 | _pAd->StaActive.SupportedHtPhy.RecomWidth = _pAd->MlmeAux.AddHtInfo.AddHtInfo.RecomWidth; \ | |
424 | _pAd->StaActive.SupportedHtPhy.OperaionMode = _pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode; \ | |
425 | _pAd->StaActive.SupportedHtPhy.NonGfPresent = _pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent; \ | |
426 | NdisMoveMemory((_pAd)->MacTab.Content[BSSID_WCID].HTCapability.MCSSet, (_pAd)->StaActive.SupportedPhyInfo.MCSSet, sizeof(UCHAR) * 16);\ | |
427 | } | |
428 | ||
429 | #define COPY_AP_HTSETTINGS_FROM_BEACON(_pAd, _pHtCapability) \ | |
430 | { \ | |
431 | _pAd->MacTab.Content[BSSID_WCID].AMsduSize = (UCHAR)(_pHtCapability->HtCapInfo.AMsduSize); \ | |
432 | _pAd->MacTab.Content[BSSID_WCID].MmpsMode= (UCHAR)(_pHtCapability->HtCapInfo.MimoPs); \ | |
433 | _pAd->MacTab.Content[BSSID_WCID].MaxRAmpduFactor = (UCHAR)(_pHtCapability->HtCapParm.MaxRAmpduFactor); \ | |
434 | } | |
435 | #endif // DOT11_N_SUPPORT // | |
436 | ||
437 | // | |
438 | // MACRO for 32-bit PCI register read / write | |
439 | // | |
440 | // Usage : RTMP_IO_READ32( | |
441 | // PRTMP_ADAPTER pAd, | |
442 | // ULONG Register_Offset, | |
443 | // PULONG pValue) | |
444 | // | |
445 | // RTMP_IO_WRITE32( | |
446 | // PRTMP_ADAPTER pAd, | |
447 | // ULONG Register_Offset, | |
448 | // ULONG Value) | |
449 | // | |
450 | ||
451 | ||
452 | // | |
453 | // Common fragment list structure - Identical to the scatter gather frag list structure | |
454 | // | |
455 | //#define RTMP_SCATTER_GATHER_ELEMENT SCATTER_GATHER_ELEMENT | |
456 | //#define PRTMP_SCATTER_GATHER_ELEMENT PSCATTER_GATHER_ELEMENT | |
457 | #define NIC_MAX_PHYS_BUF_COUNT 8 | |
458 | ||
459 | typedef struct _RTMP_SCATTER_GATHER_ELEMENT { | |
460 | PVOID Address; | |
461 | ULONG Length; | |
462 | PULONG Reserved; | |
463 | } RTMP_SCATTER_GATHER_ELEMENT, *PRTMP_SCATTER_GATHER_ELEMENT; | |
464 | ||
465 | ||
466 | typedef struct _RTMP_SCATTER_GATHER_LIST { | |
467 | ULONG NumberOfElements; | |
468 | PULONG Reserved; | |
469 | RTMP_SCATTER_GATHER_ELEMENT Elements[NIC_MAX_PHYS_BUF_COUNT]; | |
470 | } RTMP_SCATTER_GATHER_LIST, *PRTMP_SCATTER_GATHER_LIST; | |
471 | ||
472 | ||
473 | // | |
474 | // Some utility macros | |
475 | // | |
476 | #ifndef min | |
477 | #define min(_a, _b) (((_a) < (_b)) ? (_a) : (_b)) | |
478 | #endif | |
479 | ||
480 | #ifndef max | |
481 | #define max(_a, _b) (((_a) > (_b)) ? (_a) : (_b)) | |
482 | #endif | |
483 | ||
484 | #define GET_LNA_GAIN(_pAd) ((_pAd->LatchRfRegs.Channel <= 14) ? (_pAd->BLNAGain) : ((_pAd->LatchRfRegs.Channel <= 64) ? (_pAd->ALNAGain0) : ((_pAd->LatchRfRegs.Channel <= 128) ? (_pAd->ALNAGain1) : (_pAd->ALNAGain2)))) | |
485 | ||
486 | #define INC_COUNTER64(Val) (Val.QuadPart++) | |
487 | ||
488 | #define INFRA_ON(_p) (OPSTATUS_TEST_FLAG(_p, fOP_STATUS_INFRA_ON)) | |
489 | #define ADHOC_ON(_p) (OPSTATUS_TEST_FLAG(_p, fOP_STATUS_ADHOC_ON)) | |
490 | #define MONITOR_ON(_p) (((_p)->StaCfg.BssType) == BSS_MONITOR) | |
491 | #define IDLE_ON(_p) (!INFRA_ON(_p) && !ADHOC_ON(_p)) | |
492 | ||
493 | // Check LEAP & CCKM flags | |
494 | #define LEAP_ON(_p) (((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP) | |
495 | #define LEAP_CCKM_ON(_p) ((((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP) && ((_p)->StaCfg.LeapAuthInfo.CCKM == TRUE)) | |
496 | ||
497 | // if orginal Ethernet frame contains no LLC/SNAP, then an extra LLC/SNAP encap is required | |
498 | #define EXTRA_LLCSNAP_ENCAP_FROM_PKT_START(_pBufVA, _pExtraLlcSnapEncap) \ | |
499 | { \ | |
500 | if (((*(_pBufVA + 12) << 8) + *(_pBufVA + 13)) > 1500) \ | |
501 | { \ | |
502 | _pExtraLlcSnapEncap = SNAP_802_1H; \ | |
503 | if (NdisEqualMemory(IPX, _pBufVA + 12, 2) || \ | |
504 | NdisEqualMemory(APPLE_TALK, _pBufVA + 12, 2)) \ | |
505 | { \ | |
506 | _pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL; \ | |
507 | } \ | |
508 | } \ | |
509 | else \ | |
510 | { \ | |
511 | _pExtraLlcSnapEncap = NULL; \ | |
512 | } \ | |
513 | } | |
514 | ||
515 | // New Define for new Tx Path. | |
516 | #define EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(_pBufVA, _pExtraLlcSnapEncap) \ | |
517 | { \ | |
518 | if (((*(_pBufVA) << 8) + *(_pBufVA + 1)) > 1500) \ | |
519 | { \ | |
520 | _pExtraLlcSnapEncap = SNAP_802_1H; \ | |
521 | if (NdisEqualMemory(IPX, _pBufVA, 2) || \ | |
522 | NdisEqualMemory(APPLE_TALK, _pBufVA, 2)) \ | |
523 | { \ | |
524 | _pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL; \ | |
525 | } \ | |
526 | } \ | |
527 | else \ | |
528 | { \ | |
529 | _pExtraLlcSnapEncap = NULL; \ | |
530 | } \ | |
531 | } | |
532 | ||
533 | ||
534 | #define MAKE_802_3_HEADER(_p, _pMac1, _pMac2, _pType) \ | |
535 | { \ | |
536 | NdisMoveMemory(_p, _pMac1, MAC_ADDR_LEN); \ | |
537 | NdisMoveMemory((_p + MAC_ADDR_LEN), _pMac2, MAC_ADDR_LEN); \ | |
538 | NdisMoveMemory((_p + MAC_ADDR_LEN * 2), _pType, LENGTH_802_3_TYPE); \ | |
539 | } | |
540 | ||
541 | // if pData has no LLC/SNAP (neither RFC1042 nor Bridge tunnel), keep it that way. | |
542 | // else if the received frame is LLC/SNAP-encaped IPX or APPLETALK, preserve the LLC/SNAP field | |
543 | // else remove the LLC/SNAP field from the result Ethernet frame | |
544 | // Patch for WHQL only, which did not turn on Netbios but use IPX within its payload | |
545 | // Note: | |
546 | // _pData & _DataSize may be altered (remove 8-byte LLC/SNAP) by this MACRO | |
547 | // _pRemovedLLCSNAP: pointer to removed LLC/SNAP; NULL is not removed | |
548 | #define CONVERT_TO_802_3(_p8023hdr, _pDA, _pSA, _pData, _DataSize, _pRemovedLLCSNAP) \ | |
549 | { \ | |
550 | char LLC_Len[2]; \ | |
551 | \ | |
552 | _pRemovedLLCSNAP = NULL; \ | |
553 | if (NdisEqualMemory(SNAP_802_1H, _pData, 6) || \ | |
554 | NdisEqualMemory(SNAP_BRIDGE_TUNNEL, _pData, 6)) \ | |
555 | { \ | |
556 | PUCHAR pProto = _pData + 6; \ | |
557 | \ | |
558 | if ((NdisEqualMemory(IPX, pProto, 2) || NdisEqualMemory(APPLE_TALK, pProto, 2)) && \ | |
559 | NdisEqualMemory(SNAP_802_1H, _pData, 6)) \ | |
560 | { \ | |
561 | LLC_Len[0] = (UCHAR)(_DataSize / 256); \ | |
562 | LLC_Len[1] = (UCHAR)(_DataSize % 256); \ | |
563 | MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len); \ | |
564 | } \ | |
565 | else \ | |
566 | { \ | |
567 | MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, pProto); \ | |
568 | _pRemovedLLCSNAP = _pData; \ | |
569 | _DataSize -= LENGTH_802_1_H; \ | |
570 | _pData += LENGTH_802_1_H; \ | |
571 | } \ | |
572 | } \ | |
573 | else \ | |
574 | { \ | |
575 | LLC_Len[0] = (UCHAR)(_DataSize / 256); \ | |
576 | LLC_Len[1] = (UCHAR)(_DataSize % 256); \ | |
577 | MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len); \ | |
578 | } \ | |
579 | } | |
580 | ||
581 | ||
582 | // Enqueue this frame to MLME engine | |
583 | // We need to enqueue the whole frame because MLME need to pass data type | |
584 | // information from 802.11 header | |
585 | #ifdef RTMP_MAC_PCI | |
586 | #define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal) \ | |
587 | { \ | |
588 | UINT32 High32TSF, Low32TSF; \ | |
589 | RTMP_IO_READ32(_pAd, TSF_TIMER_DW1, &High32TSF); \ | |
590 | RTMP_IO_READ32(_pAd, TSF_TIMER_DW0, &Low32TSF); \ | |
591 | MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_PlcpSignal); \ | |
592 | } | |
593 | #endif // RTMP_MAC_PCI // | |
594 | ||
595 | #define MAC_ADDR_EQUAL(pAddr1,pAddr2) RTMPEqualMemory((PVOID)(pAddr1), (PVOID)(pAddr2), MAC_ADDR_LEN) | |
596 | #define SSID_EQUAL(ssid1, len1, ssid2, len2) ((len1==len2) && (RTMPEqualMemory(ssid1, ssid2, len1))) | |
597 | ||
598 | // | |
599 | // Check if it is Japan W53(ch52,56,60,64) channel. | |
600 | // | |
601 | #define JapanChannelCheck(channel) ((channel == 52) || (channel == 56) || (channel == 60) || (channel == 64)) | |
602 | ||
603 | #ifdef CONFIG_STA_SUPPORT | |
604 | #define STA_EXTRA_SETTING(_pAd) | |
605 | ||
606 | #define STA_PORT_SECURED(_pAd) \ | |
607 | { \ | |
608 | BOOLEAN Cancelled; \ | |
609 | (_pAd)->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED; \ | |
610 | NdisAcquireSpinLock(&((_pAd)->MacTabLock)); \ | |
611 | (_pAd)->MacTab.Content[BSSID_WCID].PortSecured = (_pAd)->StaCfg.PortSecured; \ | |
612 | (_pAd)->MacTab.Content[BSSID_WCID].PrivacyFilter = Ndis802_11PrivFilterAcceptAll;\ | |
613 | NdisReleaseSpinLock(&(_pAd)->MacTabLock); \ | |
614 | RTMPCancelTimer(&((_pAd)->Mlme.LinkDownTimer), &Cancelled);\ | |
615 | STA_EXTRA_SETTING(_pAd); \ | |
616 | } | |
617 | #endif // CONFIG_STA_SUPPORT // | |
618 | ||
619 | ||
620 | ||
621 | // | |
622 | // Data buffer for DMA operation, the buffer must be contiguous physical memory | |
623 | // Both DMA to / from CPU use the same structure. | |
624 | // | |
625 | typedef struct _RTMP_DMABUF | |
626 | { | |
627 | ULONG AllocSize; | |
628 | PVOID AllocVa; // TxBuf virtual address | |
629 | NDIS_PHYSICAL_ADDRESS AllocPa; // TxBuf physical address | |
630 | } RTMP_DMABUF, *PRTMP_DMABUF; | |
631 | ||
632 | ||
633 | // | |
634 | // Control block (Descriptor) for all ring descriptor DMA operation, buffer must be | |
635 | // contiguous physical memory. NDIS_PACKET stored the binding Rx packet descriptor | |
636 | // which won't be released, driver has to wait until upper layer return the packet | |
637 | // before giveing up this rx ring descriptor to ASIC. NDIS_BUFFER is assocaited pair | |
638 | // to describe the packet buffer. For Tx, NDIS_PACKET stored the tx packet descriptor | |
639 | // which driver should ACK upper layer when the tx is physically done or failed. | |
640 | // | |
641 | typedef struct _RTMP_DMACB | |
642 | { | |
643 | ULONG AllocSize; // Control block size | |
644 | PVOID AllocVa; // Control block virtual address | |
645 | NDIS_PHYSICAL_ADDRESS AllocPa; // Control block physical address | |
646 | PNDIS_PACKET pNdisPacket; | |
647 | PNDIS_PACKET pNextNdisPacket; | |
648 | ||
649 | RTMP_DMABUF DmaBuf; // Associated DMA buffer structure | |
650 | } RTMP_DMACB, *PRTMP_DMACB; | |
651 | ||
652 | ||
653 | typedef struct _RTMP_TX_RING | |
654 | { | |
655 | RTMP_DMACB Cell[TX_RING_SIZE]; | |
656 | UINT32 TxCpuIdx; | |
657 | UINT32 TxDmaIdx; | |
658 | UINT32 TxSwFreeIdx; // software next free tx index | |
659 | } RTMP_TX_RING, *PRTMP_TX_RING; | |
660 | ||
661 | typedef struct _RTMP_RX_RING | |
662 | { | |
663 | RTMP_DMACB Cell[RX_RING_SIZE]; | |
664 | UINT32 RxCpuIdx; | |
665 | UINT32 RxDmaIdx; | |
666 | INT32 RxSwReadIdx; // software next read index | |
667 | } RTMP_RX_RING, *PRTMP_RX_RING; | |
668 | ||
669 | typedef struct _RTMP_MGMT_RING | |
670 | { | |
671 | RTMP_DMACB Cell[MGMT_RING_SIZE]; | |
672 | UINT32 TxCpuIdx; | |
673 | UINT32 TxDmaIdx; | |
674 | UINT32 TxSwFreeIdx; // software next free tx index | |
675 | } RTMP_MGMT_RING, *PRTMP_MGMT_RING; | |
676 | ||
677 | ||
678 | // | |
679 | // Statistic counter structure | |
680 | // | |
681 | typedef struct _COUNTER_802_3 | |
682 | { | |
683 | // General Stats | |
684 | ULONG GoodTransmits; | |
685 | ULONG GoodReceives; | |
686 | ULONG TxErrors; | |
687 | ULONG RxErrors; | |
688 | ULONG RxNoBuffer; | |
689 | ||
690 | // Ethernet Stats | |
691 | ULONG RcvAlignmentErrors; | |
692 | ULONG OneCollision; | |
693 | ULONG MoreCollisions; | |
694 | ||
695 | } COUNTER_802_3, *PCOUNTER_802_3; | |
696 | ||
697 | typedef struct _COUNTER_802_11 { | |
698 | ULONG Length; | |
699 | LARGE_INTEGER LastTransmittedFragmentCount; | |
700 | LARGE_INTEGER TransmittedFragmentCount; | |
701 | LARGE_INTEGER MulticastTransmittedFrameCount; | |
702 | LARGE_INTEGER FailedCount; | |
703 | LARGE_INTEGER RetryCount; | |
704 | LARGE_INTEGER MultipleRetryCount; | |
705 | LARGE_INTEGER RTSSuccessCount; | |
706 | LARGE_INTEGER RTSFailureCount; | |
707 | LARGE_INTEGER ACKFailureCount; | |
708 | LARGE_INTEGER FrameDuplicateCount; | |
709 | LARGE_INTEGER ReceivedFragmentCount; | |
710 | LARGE_INTEGER MulticastReceivedFrameCount; | |
711 | LARGE_INTEGER FCSErrorCount; | |
712 | } COUNTER_802_11, *PCOUNTER_802_11; | |
713 | ||
714 | typedef struct _COUNTER_RALINK { | |
715 | ULONG TransmittedByteCount; // both successful and failure, used to calculate TX throughput | |
716 | ULONG ReceivedByteCount; // both CRC okay and CRC error, used to calculate RX throughput | |
717 | ULONG BeenDisassociatedCount; | |
718 | ULONG BadCQIAutoRecoveryCount; | |
719 | ULONG PoorCQIRoamingCount; | |
720 | ULONG MgmtRingFullCount; | |
721 | ULONG RxCountSinceLastNULL; | |
722 | ULONG RxCount; | |
723 | ULONG RxRingErrCount; | |
724 | ULONG KickTxCount; | |
725 | ULONG TxRingErrCount; | |
726 | LARGE_INTEGER RealFcsErrCount; | |
727 | ULONG PendingNdisPacketCount; | |
728 | ||
729 | ULONG OneSecOsTxCount[NUM_OF_TX_RING]; | |
730 | ULONG OneSecDmaDoneCount[NUM_OF_TX_RING]; | |
731 | UINT32 OneSecTxDoneCount; | |
732 | ULONG OneSecRxCount; | |
733 | UINT32 OneSecTxAggregationCount; | |
734 | UINT32 OneSecRxAggregationCount; | |
735 | UINT32 OneSecReceivedByteCount; | |
736 | UINT32 OneSecFrameDuplicateCount; | |
737 | ||
738 | UINT32 OneSecTransmittedByteCount; // both successful and failure, used to calculate TX throughput | |
739 | UINT32 OneSecTxNoRetryOkCount; | |
740 | UINT32 OneSecTxRetryOkCount; | |
741 | UINT32 OneSecTxFailCount; | |
742 | UINT32 OneSecFalseCCACnt; // CCA error count, for debug purpose, might move to global counter | |
743 | UINT32 OneSecRxOkCnt; // RX without error | |
744 | UINT32 OneSecRxOkDataCnt; // unicast-to-me DATA frame count | |
745 | UINT32 OneSecRxFcsErrCnt; // CRC error | |
746 | UINT32 OneSecBeaconSentCnt; | |
747 | UINT32 LastOneSecTotalTxCount; // OneSecTxNoRetryOkCount + OneSecTxRetryOkCount + OneSecTxFailCount | |
748 | UINT32 LastOneSecRxOkDataCnt; // OneSecRxOkDataCnt | |
749 | ULONG DuplicateRcv; | |
750 | ULONG TxAggCount; | |
751 | ULONG TxNonAggCount; | |
752 | ULONG TxAgg1MPDUCount; | |
753 | ULONG TxAgg2MPDUCount; | |
754 | ULONG TxAgg3MPDUCount; | |
755 | ULONG TxAgg4MPDUCount; | |
756 | ULONG TxAgg5MPDUCount; | |
757 | ULONG TxAgg6MPDUCount; | |
758 | ULONG TxAgg7MPDUCount; | |
759 | ULONG TxAgg8MPDUCount; | |
760 | ULONG TxAgg9MPDUCount; | |
761 | ULONG TxAgg10MPDUCount; | |
762 | ULONG TxAgg11MPDUCount; | |
763 | ULONG TxAgg12MPDUCount; | |
764 | ULONG TxAgg13MPDUCount; | |
765 | ULONG TxAgg14MPDUCount; | |
766 | ULONG TxAgg15MPDUCount; | |
767 | ULONG TxAgg16MPDUCount; | |
768 | ||
769 | LARGE_INTEGER TransmittedOctetsInAMSDU; | |
770 | LARGE_INTEGER TransmittedAMSDUCount; | |
771 | LARGE_INTEGER ReceivedOctesInAMSDUCount; | |
772 | LARGE_INTEGER ReceivedAMSDUCount; | |
773 | LARGE_INTEGER TransmittedAMPDUCount; | |
774 | LARGE_INTEGER TransmittedMPDUsInAMPDUCount; | |
775 | LARGE_INTEGER TransmittedOctetsInAMPDUCount; | |
776 | LARGE_INTEGER MPDUInReceivedAMPDUCount; | |
777 | } COUNTER_RALINK, *PCOUNTER_RALINK; | |
778 | ||
779 | ||
780 | typedef struct _COUNTER_DRS { | |
781 | // to record the each TX rate's quality. 0 is best, the bigger the worse. | |
782 | USHORT TxQuality[MAX_STEP_OF_TX_RATE_SWITCH]; | |
783 | UCHAR PER[MAX_STEP_OF_TX_RATE_SWITCH]; | |
784 | UCHAR TxRateUpPenalty; // extra # of second penalty due to last unstable condition | |
785 | ULONG CurrTxRateStableTime; // # of second in current TX rate | |
786 | BOOLEAN fNoisyEnvironment; | |
787 | BOOLEAN fLastSecAccordingRSSI; | |
788 | UCHAR LastSecTxRateChangeAction; // 0: no change, 1:rate UP, 2:rate down | |
789 | UCHAR LastTimeTxRateChangeAction; //Keep last time value of LastSecTxRateChangeAction | |
790 | ULONG LastTxOkCount; | |
791 | } COUNTER_DRS, *PCOUNTER_DRS; | |
792 | ||
793 | ||
794 | ||
795 | ||
796 | /*************************************************************************** | |
797 | * security key related data structure | |
798 | **************************************************************************/ | |
799 | typedef struct _CIPHER_KEY { | |
800 | UCHAR Key[16]; // right now we implement 4 keys, 128 bits max | |
801 | UCHAR RxMic[8]; // make alignment | |
802 | UCHAR TxMic[8]; | |
803 | UCHAR TxTsc[6]; // 48bit TSC value | |
804 | UCHAR RxTsc[6]; // 48bit TSC value | |
805 | UCHAR CipherAlg; // 0-none, 1:WEP64, 2:WEP128, 3:TKIP, 4:AES, 5:CKIP64, 6:CKIP128 | |
806 | UCHAR KeyLen; | |
807 | #ifdef CONFIG_STA_SUPPORT | |
808 | UCHAR BssId[6]; | |
809 | #endif // CONFIG_STA_SUPPORT // | |
810 | // Key length for each key, 0: entry is invalid | |
811 | UCHAR Type; // Indicate Pairwise/Group when reporting MIC error | |
812 | } CIPHER_KEY, *PCIPHER_KEY; | |
813 | ||
814 | ||
815 | // structure to define WPA Group Key Rekey Interval | |
816 | typedef struct PACKED _RT_802_11_WPA_REKEY { | |
817 | ULONG ReKeyMethod; // mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based | |
818 | ULONG ReKeyInterval; // time-based: seconds, packet-based: kilo-packets | |
819 | } RT_WPA_REKEY,*PRT_WPA_REKEY, RT_802_11_WPA_REKEY, *PRT_802_11_WPA_REKEY; | |
820 | ||
821 | ||
822 | ||
823 | typedef struct { | |
824 | UCHAR Addr[MAC_ADDR_LEN]; | |
825 | UCHAR ErrorCode[2]; //00 01-Invalid authentication type | |
826 | //00 02-Authentication timeout | |
827 | //00 03-Challenge from AP failed | |
828 | //00 04-Challenge to AP failed | |
829 | BOOLEAN Reported; | |
830 | } ROGUEAP_ENTRY, *PROGUEAP_ENTRY; | |
831 | ||
832 | typedef struct { | |
833 | UCHAR RogueApNr; | |
834 | ROGUEAP_ENTRY RogueApEntry[MAX_LEN_OF_BSS_TABLE]; | |
835 | } ROGUEAP_TABLE, *PROGUEAP_TABLE; | |
836 | ||
837 | // | |
838 | // Cisco IAPP format | |
839 | // | |
840 | typedef struct _CISCO_IAPP_CONTENT_ | |
841 | { | |
842 | USHORT Length; //IAPP Length | |
843 | UCHAR MessageType; //IAPP type | |
844 | UCHAR FunctionCode; //IAPP function type | |
845 | UCHAR DestinaionMAC[MAC_ADDR_LEN]; | |
846 | UCHAR SourceMAC[MAC_ADDR_LEN]; | |
847 | USHORT Tag; //Tag(element IE) - Adjacent AP report | |
848 | USHORT TagLength; //Length of element not including 4 byte header | |
849 | UCHAR OUI[4]; //0x00, 0x40, 0x96, 0x00 | |
850 | UCHAR PreviousAP[MAC_ADDR_LEN]; //MAC Address of access point | |
851 | USHORT Channel; | |
852 | USHORT SsidLen; | |
853 | UCHAR Ssid[MAX_LEN_OF_SSID]; | |
854 | USHORT Seconds; //Seconds that the client has been disassociated. | |
855 | } CISCO_IAPP_CONTENT, *PCISCO_IAPP_CONTENT; | |
856 | ||
857 | ||
858 | /* | |
859 | * Fragment Frame structure | |
860 | */ | |
861 | typedef struct _FRAGMENT_FRAME { | |
862 | PNDIS_PACKET pFragPacket; | |
863 | ULONG RxSize; | |
864 | USHORT Sequence; | |
865 | USHORT LastFrag; | |
866 | ULONG Flags; // Some extra frame information. bit 0: LLC presented | |
867 | } FRAGMENT_FRAME, *PFRAGMENT_FRAME; | |
868 | ||
869 | ||
870 | // | |
871 | // Packet information for NdisQueryPacket | |
872 | // | |
873 | typedef struct _PACKET_INFO { | |
874 | UINT PhysicalBufferCount; // Physical breaks of buffer descripor chained | |
875 | UINT BufferCount ; // Number of Buffer descriptor chained | |
876 | UINT TotalPacketLength ; // Self explained | |
877 | PNDIS_BUFFER pFirstBuffer; // Pointer to first buffer descriptor | |
878 | } PACKET_INFO, *PPACKET_INFO; | |
879 | ||
880 | ||
881 | // | |
882 | // Arcfour Structure Added by PaulWu | |
883 | // | |
884 | typedef struct _ARCFOUR | |
885 | { | |
886 | UINT X; | |
887 | UINT Y; | |
888 | UCHAR STATE[256]; | |
889 | } ARCFOURCONTEXT, *PARCFOURCONTEXT; | |
890 | ||
891 | ||
892 | // | |
893 | // Tkip Key structure which RC4 key & MIC calculation | |
894 | // | |
895 | typedef struct _TKIP_KEY_INFO { | |
896 | UINT nBytesInM; // # bytes in M for MICKEY | |
897 | ULONG IV16; | |
898 | ULONG IV32; | |
899 | ULONG K0; // for MICKEY Low | |
900 | ULONG K1; // for MICKEY Hig | |
901 | ULONG L; // Current state for MICKEY | |
902 | ULONG R; // Current state for MICKEY | |
903 | ULONG M; // Message accumulator for MICKEY | |
904 | UCHAR RC4KEY[16]; | |
905 | UCHAR MIC[8]; | |
906 | } TKIP_KEY_INFO, *PTKIP_KEY_INFO; | |
907 | ||
908 | ||
909 | // | |
910 | // Private / Misc data, counters for driver internal use | |
911 | // | |
912 | typedef struct __PRIVATE_STRUC { | |
913 | UINT SystemResetCnt; // System reset counter | |
914 | UINT TxRingFullCnt; // Tx ring full occurrance number | |
915 | UINT PhyRxErrCnt; // PHY Rx error count, for debug purpose, might move to global counter | |
916 | // Variables for WEP encryption / decryption in rtmp_wep.c | |
917 | UINT FCSCRC32; | |
918 | ARCFOURCONTEXT WEPCONTEXT; | |
919 | // Tkip stuff | |
920 | TKIP_KEY_INFO Tx; | |
921 | TKIP_KEY_INFO Rx; | |
922 | } PRIVATE_STRUC, *PPRIVATE_STRUC; | |
923 | ||
924 | ||
925 | /*************************************************************************** | |
926 | * Channel and BBP related data structures | |
927 | **************************************************************************/ | |
928 | // structure to tune BBP R66 (BBP TUNING) | |
929 | typedef struct _BBP_R66_TUNING { | |
930 | BOOLEAN bEnable; | |
931 | USHORT FalseCcaLowerThreshold; // default 100 | |
932 | USHORT FalseCcaUpperThreshold; // default 512 | |
933 | UCHAR R66Delta; | |
934 | UCHAR R66CurrentValue; | |
935 | BOOLEAN R66LowerUpperSelect; //Before LinkUp, Used LowerBound or UpperBound as R66 value. | |
936 | } BBP_R66_TUNING, *PBBP_R66_TUNING; | |
937 | ||
938 | // structure to store channel TX power | |
939 | typedef struct _CHANNEL_TX_POWER { | |
940 | USHORT RemainingTimeForUse; //unit: sec | |
941 | UCHAR Channel; | |
942 | #ifdef DOT11N_DRAFT3 | |
943 | BOOLEAN bEffectedChannel; // For BW 40 operating in 2.4GHz , the "effected channel" is the channel that is covered in 40Mhz. | |
944 | #endif // DOT11N_DRAFT3 // | |
945 | CHAR Power; | |
946 | CHAR Power2; | |
947 | UCHAR MaxTxPwr; | |
948 | UCHAR DfsReq; | |
949 | } CHANNEL_TX_POWER, *PCHANNEL_TX_POWER; | |
950 | ||
951 | // structure to store 802.11j channel TX power | |
952 | typedef struct _CHANNEL_11J_TX_POWER { | |
953 | UCHAR Channel; | |
954 | UCHAR BW; // BW_10 or BW_20 | |
955 | CHAR Power; | |
956 | CHAR Power2; | |
957 | USHORT RemainingTimeForUse; //unit: sec | |
958 | } CHANNEL_11J_TX_POWER, *PCHANNEL_11J_TX_POWER; | |
959 | ||
960 | typedef struct _SOFT_RX_ANT_DIVERSITY_STRUCT { | |
961 | UCHAR EvaluatePeriod; // 0:not evalute status, 1: evaluate status, 2: switching status | |
962 | UCHAR EvaluateStableCnt; | |
963 | UCHAR Pair1PrimaryRxAnt; // 0:Ant-E1, 1:Ant-E2 | |
964 | UCHAR Pair1SecondaryRxAnt; // 0:Ant-E1, 1:Ant-E2 | |
965 | UCHAR Pair2PrimaryRxAnt; // 0:Ant-E3, 1:Ant-E4 | |
966 | UCHAR Pair2SecondaryRxAnt; // 0:Ant-E3, 1:Ant-E4 | |
967 | #ifdef CONFIG_STA_SUPPORT | |
968 | SHORT Pair1AvgRssi[2]; // AvgRssi[0]:E1, AvgRssi[1]:E2 | |
969 | SHORT Pair2AvgRssi[2]; // AvgRssi[0]:E3, AvgRssi[1]:E4 | |
970 | #endif // CONFIG_STA_SUPPORT // | |
971 | SHORT Pair1LastAvgRssi; // | |
972 | SHORT Pair2LastAvgRssi; // | |
973 | ULONG RcvPktNumWhenEvaluate; | |
974 | BOOLEAN FirstPktArrivedWhenEvaluate; | |
975 | RALINK_TIMER_STRUCT RxAntDiversityTimer; | |
976 | } SOFT_RX_ANT_DIVERSITY, *PSOFT_RX_ANT_DIVERSITY; | |
977 | ||
978 | ||
979 | /*************************************************************************** | |
980 | * structure for radar detection and channel switch | |
981 | **************************************************************************/ | |
982 | typedef struct _RADAR_DETECT_STRUCT { | |
983 | //BOOLEAN IEEE80211H; // 0: disable, 1: enable IEEE802.11h | |
984 | UCHAR CSCount; //Channel switch counter | |
985 | UCHAR CSPeriod; //Channel switch period (beacon count) | |
986 | UCHAR RDCount; //Radar detection counter | |
987 | UCHAR RDMode; //Radar Detection mode | |
988 | UCHAR RDDurRegion; //Radar detection duration region | |
989 | UCHAR BBPR16; | |
990 | UCHAR BBPR17; | |
991 | UCHAR BBPR18; | |
992 | UCHAR BBPR21; | |
993 | UCHAR BBPR22; | |
994 | UCHAR BBPR64; | |
995 | ULONG InServiceMonitorCount; // unit: sec | |
996 | UINT8 DfsSessionTime; | |
997 | #ifdef DFS_FCC_BW40_FIX | |
998 | CHAR DfsSessionFccOff; | |
999 | #endif | |
1000 | BOOLEAN bFastDfs; | |
1001 | UINT8 ChMovingTime; | |
1002 | UINT8 LongPulseRadarTh; | |
1003 | #ifdef MERGE_ARCH_TEAM | |
1004 | CHAR AvgRssiReq; | |
1005 | ULONG DfsLowerLimit; | |
1006 | ULONG DfsUpperLimit; | |
1007 | UINT8 FixDfsLimit; | |
1008 | ULONG upperlimit; | |
1009 | ULONG lowerlimit; | |
1010 | #endif // MERGE_ARCH_TEAM // | |
1011 | } RADAR_DETECT_STRUCT, *PRADAR_DETECT_STRUCT; | |
1012 | ||
1013 | #ifdef CARRIER_DETECTION_SUPPORT | |
1014 | typedef enum CD_STATE_n | |
1015 | { | |
1016 | CD_NORMAL, | |
1017 | CD_SILENCE, | |
1018 | CD_MAX_STATE | |
1019 | } CD_STATE; | |
1020 | ||
1021 | #ifdef TONE_RADAR_DETECT_SUPPORT | |
1022 | #define CARRIER_DETECT_RECHECK_TIME 3 | |
1023 | ||
1024 | ||
1025 | #ifdef CARRIER_SENSE_NEW_ALGO | |
1026 | #define CARRIER_DETECT_CRITIRIA 400 | |
1027 | #define CARRIER_DETECT_STOP_RATIO 0x11 | |
1028 | #define CARRIER_DETECT_STOP_RATIO_OLD_3090 2 | |
1029 | #endif // CARRIER_SENSE_NEW_ALGO // | |
1030 | ||
1031 | ||
1032 | #define CARRIER_DETECT_STOP_RECHECK_TIME 4 | |
1033 | #define CARRIER_DETECT_CRITIRIA_A 230 | |
1034 | #define CARRIER_DETECT_DELTA 7 | |
1035 | #define CARRIER_DETECT_DIV_FLAG 0 | |
1036 | #ifdef RT3090 | |
1037 | #define CARRIER_DETECT_THRESHOLD_3090A 0x1fffffff | |
1038 | #endif // RT3090 // | |
1039 | #ifdef RT3390 | |
1040 | #define CARRIER_DETECT_THRESHOLD 0x0fffffff | |
1041 | #endif // RT3390 // | |
1042 | #ifndef RT3390 | |
1043 | #define CARRIER_DETECT_THRESHOLD 0x0fffffff | |
1044 | #endif // RT3390 // | |
1045 | #endif // TONE_RADAR_DETECT_SUPPORT // | |
1046 | ||
1047 | typedef struct CARRIER_DETECTION_s | |
1048 | { | |
1049 | BOOLEAN Enable; | |
1050 | UINT8 CDSessionTime; | |
1051 | UINT8 CDPeriod; | |
1052 | CD_STATE CD_State; | |
1053 | #ifdef TONE_RADAR_DETECT_SUPPORT | |
1054 | UINT8 delta; | |
1055 | UINT8 div_flag; | |
1056 | UINT32 threshold; | |
1057 | UINT8 recheck; | |
1058 | UINT8 recheck1; | |
1059 | UINT8 recheck2; | |
1060 | UINT32 TimeStamp; | |
1061 | UINT32 criteria; | |
1062 | UINT32 CarrierDebug; | |
1063 | ULONG idle_time; | |
1064 | ULONG busy_time; | |
1065 | ULONG Debug; | |
1066 | #endif // TONE_RADAR_DETECT_SUPPORT // | |
1067 | }CARRIER_DETECTION_STRUCT, *PCARRIER_DETECTION_STRUCT; | |
1068 | #endif // CARRIER_DETECTION_SUPPORT // | |
1069 | ||
1070 | ||
1071 | #ifdef NEW_DFS | |
1072 | typedef struct _NewDFSDebug | |
1073 | { | |
1074 | UCHAR channel; | |
1075 | ULONG wait_time; | |
1076 | UCHAR delta_delay_range; | |
1077 | UCHAR delta_delay_step; | |
1078 | UCHAR EL_range; | |
1079 | UCHAR EL_step; | |
1080 | UCHAR EH_range; | |
1081 | UCHAR EH_step; | |
1082 | UCHAR WL_range; | |
1083 | UCHAR WL_step; | |
1084 | UCHAR WH_range; | |
1085 | UCHAR WH_step; | |
1086 | ULONG T_expected; | |
1087 | ULONG T_margin; | |
1088 | UCHAR start; | |
1089 | ULONG count; | |
1090 | ULONG idx; | |
1091 | ||
1092 | }NewDFSDebug, *pNewDFSDebug; | |
1093 | ||
1094 | #define NEW_DFS_FCC_5_ENT_NUM 5 | |
1095 | #define NEW_DFS_DBG_PORT_ENT_NUM_POWER 8 | |
1096 | #define NEW_DFS_DBG_PORT_ENT_NUM (1 << NEW_DFS_DBG_PORT_ENT_NUM_POWER) // CE Debug Port entry number, 256 | |
1097 | #define NEW_DFS_DBG_PORT_MASK 0xff | |
1098 | ||
1099 | // Matched Period definition | |
1100 | #define NEW_DFS_MPERIOD_ENT_NUM_POWER 8 | |
1101 | #define NEW_DFS_MPERIOD_ENT_NUM (1 << NEW_DFS_MPERIOD_ENT_NUM_POWER) // CE Period Table entry number, 512 | |
1102 | #define NEW_DFS_MAX_CHANNEL 4 | |
1103 | ||
1104 | typedef struct _NewDFSDebugPort{ | |
1105 | ULONG counter; | |
1106 | ULONG timestamp; | |
1107 | USHORT width; | |
1108 | USHORT start_idx; // start index to period table | |
1109 | USHORT end_idx; // end index to period table | |
1110 | }NewDFSDebugPort, *pNewDFSDebugPort; | |
1111 | ||
1112 | // Matched Period Table | |
1113 | typedef struct _NewDFSMPeriod{ | |
1114 | USHORT idx; | |
1115 | USHORT width; | |
1116 | USHORT idx2; | |
1117 | USHORT width2; | |
1118 | ULONG period; | |
1119 | }NewDFSMPeriod, *pNewDFSMPeriod; | |
1120 | ||
1121 | #endif // NEW_DFS // | |
1122 | ||
1123 | ||
1124 | typedef enum _ABGBAND_STATE_ { | |
1125 | UNKNOWN_BAND, | |
1126 | BG_BAND, | |
1127 | A_BAND, | |
1128 | } ABGBAND_STATE; | |
1129 | ||
1130 | #ifdef RTMP_MAC_PCI | |
1131 | #ifdef CONFIG_STA_SUPPORT | |
1132 | // Power save method control | |
1133 | typedef union _PS_CONTROL { | |
1134 | struct { | |
1135 | ULONG EnablePSinIdle:1; // Enable radio off when not connect to AP. radio on only when sitesurvey, | |
1136 | ULONG EnableNewPS:1; // Enable new Chip power save fucntion . New method can only be applied in chip version after 2872. and PCIe. | |
1137 | ULONG rt30xxPowerMode:2; // Power Level Mode for rt30xx chip | |
1138 | ULONG rt30xxFollowHostASPM:1; // Card Follows Host's setting for rt30xx chip. | |
1139 | ULONG rt30xxForceASPMTest:1; // Force enable L1 for rt30xx chip. This has higher priority than rt30xxFollowHostASPM Mode. | |
1140 | ULONG rsv:26; // Radio Measurement Enable | |
1141 | } field; | |
1142 | ULONG word; | |
1143 | } PS_CONTROL, *PPS_CONTROL; | |
1144 | #endif // CONFIG_STA_SUPPORT // | |
1145 | #endif // RTMP_MAC_PCI // | |
1146 | /*************************************************************************** | |
1147 | * structure for MLME state machine | |
1148 | **************************************************************************/ | |
1149 | typedef struct _MLME_STRUCT { | |
1150 | #ifdef CONFIG_STA_SUPPORT | |
1151 | // STA state machines | |
1152 | STATE_MACHINE CntlMachine; | |
1153 | STATE_MACHINE AssocMachine; | |
1154 | STATE_MACHINE AuthMachine; | |
1155 | STATE_MACHINE AuthRspMachine; | |
1156 | STATE_MACHINE SyncMachine; | |
1157 | STATE_MACHINE WpaPskMachine; | |
1158 | STATE_MACHINE LeapMachine; | |
1159 | STATE_MACHINE_FUNC AssocFunc[ASSOC_FUNC_SIZE]; | |
1160 | STATE_MACHINE_FUNC AuthFunc[AUTH_FUNC_SIZE]; | |
1161 | STATE_MACHINE_FUNC AuthRspFunc[AUTH_RSP_FUNC_SIZE]; | |
1162 | STATE_MACHINE_FUNC SyncFunc[SYNC_FUNC_SIZE]; | |
1163 | #endif // CONFIG_STA_SUPPORT // | |
1164 | STATE_MACHINE_FUNC ActFunc[ACT_FUNC_SIZE]; | |
1165 | // Action | |
1166 | STATE_MACHINE ActMachine; | |
1167 | ||
1168 | ||
1169 | #ifdef QOS_DLS_SUPPORT | |
1170 | STATE_MACHINE DlsMachine; | |
1171 | STATE_MACHINE_FUNC DlsFunc[DLS_FUNC_SIZE]; | |
1172 | #endif // QOS_DLS_SUPPORT // | |
1173 | ||
1174 | ||
1175 | // common WPA state machine | |
1176 | STATE_MACHINE WpaMachine; | |
1177 | STATE_MACHINE_FUNC WpaFunc[WPA_FUNC_SIZE]; | |
1178 | ||
1179 | ||
1180 | ||
1181 | ULONG ChannelQuality; // 0..100, Channel Quality Indication for Roaming | |
1182 | ULONG Now32; // latch the value of NdisGetSystemUpTime() | |
1183 | ULONG LastSendNULLpsmTime; | |
1184 | ||
1185 | BOOLEAN bRunning; | |
1186 | NDIS_SPIN_LOCK TaskLock; | |
1187 | MLME_QUEUE Queue; | |
1188 | ||
1189 | UINT ShiftReg; | |
1190 | ||
1191 | RALINK_TIMER_STRUCT PeriodicTimer; | |
1192 | RALINK_TIMER_STRUCT APSDPeriodicTimer; | |
1193 | RALINK_TIMER_STRUCT LinkDownTimer; | |
1194 | RALINK_TIMER_STRUCT LinkUpTimer; | |
1195 | #ifdef RTMP_MAC_PCI | |
1196 | UCHAR bPsPollTimerRunning; | |
1197 | RALINK_TIMER_STRUCT PsPollTimer; | |
1198 | RALINK_TIMER_STRUCT RadioOnOffTimer; | |
1199 | #endif // RTMP_MAC_PCI // | |
1200 | ULONG PeriodicRound; | |
1201 | ULONG OneSecPeriodicRound; | |
1202 | ||
1203 | UCHAR RealRxPath; | |
1204 | BOOLEAN bLowThroughput; | |
1205 | BOOLEAN bEnableAutoAntennaCheck; | |
1206 | RALINK_TIMER_STRUCT RxAntEvalTimer; | |
1207 | ||
1208 | #ifdef RT30xx | |
1209 | UCHAR CaliBW40RfR24; | |
1210 | UCHAR CaliBW20RfR24; | |
1211 | #endif // RT30xx // | |
1212 | ||
1213 | } MLME_STRUCT, *PMLME_STRUCT; | |
1214 | ||
1215 | ||
1216 | #ifdef DOT11_N_SUPPORT | |
1217 | /*************************************************************************** | |
1218 | * 802.11 N related data structures | |
1219 | **************************************************************************/ | |
1220 | struct reordering_mpdu | |
1221 | { | |
1222 | struct reordering_mpdu *next; | |
1223 | PNDIS_PACKET pPacket; /* coverted to 802.3 frame */ | |
1224 | int Sequence; /* sequence number of MPDU */ | |
1225 | BOOLEAN bAMSDU; | |
1226 | }; | |
1227 | ||
1228 | struct reordering_list | |
1229 | { | |
1230 | struct reordering_mpdu *next; | |
1231 | int qlen; | |
1232 | }; | |
1233 | ||
1234 | struct reordering_mpdu_pool | |
1235 | { | |
1236 | PVOID mem; | |
1237 | NDIS_SPIN_LOCK lock; | |
1238 | struct reordering_list freelist; | |
1239 | }; | |
1240 | ||
1241 | typedef enum _REC_BLOCKACK_STATUS | |
1242 | { | |
1243 | Recipient_NONE=0, | |
1244 | Recipient_USED, | |
1245 | Recipient_HandleRes, | |
1246 | Recipient_Accept | |
1247 | } REC_BLOCKACK_STATUS, *PREC_BLOCKACK_STATUS; | |
1248 | ||
1249 | typedef enum _ORI_BLOCKACK_STATUS | |
1250 | { | |
1251 | Originator_NONE=0, | |
1252 | Originator_USED, | |
1253 | Originator_WaitRes, | |
1254 | Originator_Done | |
1255 | } ORI_BLOCKACK_STATUS, *PORI_BLOCKACK_STATUS; | |
1256 | ||
1257 | typedef struct _BA_ORI_ENTRY{ | |
1258 | UCHAR Wcid; | |
1259 | UCHAR TID; | |
1260 | UCHAR BAWinSize; | |
1261 | UCHAR Token; | |
1262 | // Sequence is to fill every outgoing QoS DATA frame's sequence field in 802.11 header. | |
1263 | USHORT Sequence; | |
1264 | USHORT TimeOutValue; | |
1265 | ORI_BLOCKACK_STATUS ORI_BA_Status; | |
1266 | RALINK_TIMER_STRUCT ORIBATimer; | |
1267 | PVOID pAdapter; | |
1268 | } BA_ORI_ENTRY, *PBA_ORI_ENTRY; | |
1269 | ||
1270 | typedef struct _BA_REC_ENTRY { | |
1271 | UCHAR Wcid; | |
1272 | UCHAR TID; | |
1273 | UCHAR BAWinSize; // 7.3.1.14. each buffer is capable of holding a max AMSDU or MSDU. | |
1274 | //UCHAR NumOfRxPkt; | |
1275 | //UCHAR Curindidx; // the head in the RX reordering buffer | |
1276 | USHORT LastIndSeq; | |
1277 | // USHORT LastIndSeqAtTimer; | |
1278 | USHORT TimeOutValue; | |
1279 | RALINK_TIMER_STRUCT RECBATimer; | |
1280 | ULONG LastIndSeqAtTimer; | |
1281 | ULONG nDropPacket; | |
1282 | ULONG rcvSeq; | |
1283 | REC_BLOCKACK_STATUS REC_BA_Status; | |
1284 | // UCHAR RxBufIdxUsed; | |
1285 | // corresponding virtual address for RX reordering packet storage. | |
1286 | //RTMP_REORDERDMABUF MAP_RXBuf[MAX_RX_REORDERBUF]; | |
1287 | NDIS_SPIN_LOCK RxReRingLock; // Rx Ring spinlock | |
1288 | // struct _BA_REC_ENTRY *pNext; | |
1289 | PVOID pAdapter; | |
1290 | struct reordering_list list; | |
1291 | } BA_REC_ENTRY, *PBA_REC_ENTRY; | |
1292 | ||
1293 | ||
1294 | typedef struct { | |
1295 | ULONG numAsRecipient; // I am recipient of numAsRecipient clients. These client are in the BARecEntry[] | |
1296 | ULONG numAsOriginator; // I am originator of numAsOriginator clients. These clients are in the BAOriEntry[] | |
1297 | ULONG numDoneOriginator; // count Done Originator sessions | |
1298 | BA_ORI_ENTRY BAOriEntry[MAX_LEN_OF_BA_ORI_TABLE]; | |
1299 | BA_REC_ENTRY BARecEntry[MAX_LEN_OF_BA_REC_TABLE]; | |
1300 | } BA_TABLE, *PBA_TABLE; | |
1301 | ||
1302 | //For QureyBATableOID use; | |
1303 | typedef struct PACKED _OID_BA_REC_ENTRY{ | |
1304 | UCHAR MACAddr[MAC_ADDR_LEN]; | |
1305 | UCHAR BaBitmap; // if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize | |
1306 | UCHAR rsv; | |
1307 | UCHAR BufSize[8]; | |
1308 | REC_BLOCKACK_STATUS REC_BA_Status[8]; | |
1309 | } OID_BA_REC_ENTRY, *POID_BA_REC_ENTRY; | |
1310 | ||
1311 | //For QureyBATableOID use; | |
1312 | typedef struct PACKED _OID_BA_ORI_ENTRY{ | |
1313 | UCHAR MACAddr[MAC_ADDR_LEN]; | |
1314 | UCHAR BaBitmap; // if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize, read ORI_BA_Status[TID] for status | |
1315 | UCHAR rsv; | |
1316 | UCHAR BufSize[8]; | |
1317 | ORI_BLOCKACK_STATUS ORI_BA_Status[8]; | |
1318 | } OID_BA_ORI_ENTRY, *POID_BA_ORI_ENTRY; | |
1319 | ||
1320 | typedef struct _QUERYBA_TABLE{ | |
1321 | OID_BA_ORI_ENTRY BAOriEntry[32]; | |
1322 | OID_BA_REC_ENTRY BARecEntry[32]; | |
1323 | UCHAR OriNum;// Number of below BAOriEntry | |
1324 | UCHAR RecNum;// Number of below BARecEntry | |
1325 | } QUERYBA_TABLE, *PQUERYBA_TABLE; | |
1326 | ||
1327 | typedef union _BACAP_STRUC { | |
1328 | #ifdef RT_BIG_ENDIAN | |
1329 | struct { | |
1330 | UINT32 :4; | |
1331 | UINT32 b2040CoexistScanSup:1; //As Sta, support do 2040 coexistence scan for AP. As Ap, support monitor trigger event to check if can use BW 40MHz. | |
1332 | UINT32 bHtAdhoc:1; // adhoc can use ht rate. | |
1333 | UINT32 MMPSmode:2; // MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable | |
1334 | UINT32 AmsduSize:1; // 0:3839, 1:7935 bytes. UINT MSDUSizeToBytes[] = { 3839, 7935}; | |
1335 | UINT32 AmsduEnable:1; //Enable AMSDU transmisstion | |
1336 | UINT32 MpduDensity:3; | |
1337 | UINT32 Policy:2; // 0: DELAY_BA 1:IMMED_BA (//BA Policy subfiled value in ADDBA frame) 2:BA-not use | |
1338 | UINT32 AutoBA:1; // automatically BA | |
1339 | UINT32 TxBAWinLimit:8; | |
1340 | UINT32 RxBAWinLimit:8; | |
1341 | } field; | |
1342 | #else | |
1343 | struct { | |
1344 | UINT32 RxBAWinLimit:8; | |
1345 | UINT32 TxBAWinLimit:8; | |
1346 | UINT32 AutoBA:1; // automatically BA | |
1347 | UINT32 Policy:2; // 0: DELAY_BA 1:IMMED_BA (//BA Policy subfiled value in ADDBA frame) 2:BA-not use | |
1348 | UINT32 MpduDensity:3; | |
1349 | UINT32 AmsduEnable:1; //Enable AMSDU transmisstion | |
1350 | UINT32 AmsduSize:1; // 0:3839, 1:7935 bytes. UINT MSDUSizeToBytes[] = { 3839, 7935}; | |
1351 | UINT32 MMPSmode:2; // MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable | |
1352 | UINT32 bHtAdhoc:1; // adhoc can use ht rate. | |
1353 | UINT32 b2040CoexistScanSup:1; //As Sta, support do 2040 coexistence scan for AP. As Ap, support monitor trigger event to check if can use BW 40MHz. | |
1354 | UINT32 :4; | |
1355 | } field; | |
1356 | #endif | |
1357 | UINT32 word; | |
1358 | } BACAP_STRUC, *PBACAP_STRUC; | |
1359 | ||
1360 | ||
1361 | typedef struct { | |
1362 | BOOLEAN IsRecipient; | |
1363 | UCHAR MACAddr[MAC_ADDR_LEN]; | |
1364 | UCHAR TID; | |
1365 | UCHAR nMSDU; | |
1366 | USHORT TimeOut; | |
1367 | BOOLEAN bAllTid; // If True, delete all TID for BA sessions with this MACaddr. | |
1368 | } OID_ADD_BA_ENTRY, *POID_ADD_BA_ENTRY; | |
1369 | ||
1370 | ||
1371 | #ifdef DOT11N_DRAFT3 | |
1372 | typedef enum _BSS2040COEXIST_FLAG{ | |
1373 | BSS_2040_COEXIST_DISABLE = 0, | |
1374 | BSS_2040_COEXIST_TIMER_FIRED = 1, | |
1375 | BSS_2040_COEXIST_INFO_SYNC = 2, | |
1376 | BSS_2040_COEXIST_INFO_NOTIFY = 4, | |
1377 | }BSS2040COEXIST_FLAG; | |
1378 | #endif // DOT11N_DRAFT3 // | |
1379 | ||
1380 | #define IS_HT_STA(_pMacEntry) \ | |
1381 | (_pMacEntry->MaxHTPhyMode.field.MODE >= MODE_HTMIX) | |
1382 | ||
1383 | #define IS_HT_RATE(_pMacEntry) \ | |
1384 | (_pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX) | |
1385 | ||
1386 | #define PEER_IS_HT_RATE(_pMacEntry) \ | |
1387 | (_pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX) | |
1388 | ||
1389 | #endif // DOT11_N_SUPPORT // | |
1390 | ||
1391 | ||
1392 | //This structure is for all 802.11n card InterOptibilityTest action. Reset all Num every n second. (Details see MLMEPeriodic) | |
1393 | typedef struct _IOT_STRUC { | |
1394 | UCHAR Threshold[2]; | |
1395 | UCHAR ReorderTimeOutNum[MAX_LEN_OF_BA_REC_TABLE]; // compare with threshold[0] | |
1396 | UCHAR RefreshNum[MAX_LEN_OF_BA_REC_TABLE]; // compare with threshold[1] | |
1397 | ULONG OneSecInWindowCount; | |
1398 | ULONG OneSecFrameDuplicateCount; | |
1399 | ULONG OneSecOutWindowCount; | |
1400 | UCHAR DelOriAct; | |
1401 | UCHAR DelRecAct; | |
1402 | UCHAR RTSShortProt; | |
1403 | UCHAR RTSLongProt; | |
1404 | BOOLEAN bRTSLongProtOn; | |
1405 | #ifdef CONFIG_STA_SUPPORT | |
1406 | BOOLEAN bLastAtheros; | |
1407 | BOOLEAN bCurrentAtheros; | |
1408 | BOOLEAN bNowAtherosBurstOn; | |
1409 | BOOLEAN bNextDisableRxBA; | |
1410 | BOOLEAN bToggle; | |
1411 | #endif // CONFIG_STA_SUPPORT // | |
1412 | } IOT_STRUC, *PIOT_STRUC; | |
1413 | ||
1414 | ||
1415 | // This is the registry setting for 802.11n transmit setting. Used in advanced page. | |
1416 | typedef union _REG_TRANSMIT_SETTING { | |
1417 | #ifdef RT_BIG_ENDIAN | |
1418 | struct { | |
1419 | UINT32 rsv:13; | |
1420 | UINT32 EXTCHA:2; | |
1421 | UINT32 HTMODE:1; | |
1422 | UINT32 TRANSNO:2; | |
1423 | UINT32 STBC:1; //SPACE | |
1424 | UINT32 ShortGI:1; | |
1425 | UINT32 BW:1; //channel bandwidth 20MHz or 40 MHz | |
1426 | UINT32 TxBF:1; // 3*3 | |
1427 | UINT32 rsv0:10; | |
1428 | //UINT32 MCS:7; // MCS | |
1429 | //UINT32 PhyMode:4; | |
1430 | } field; | |
1431 | #else | |
1432 | struct { | |
1433 | //UINT32 PhyMode:4; | |
1434 | //UINT32 MCS:7; // MCS | |
1435 | UINT32 rsv0:10; | |
1436 | UINT32 TxBF:1; | |
1437 | UINT32 BW:1; //channel bandwidth 20MHz or 40 MHz | |
1438 | UINT32 ShortGI:1; | |
1439 | UINT32 STBC:1; //SPACE | |
1440 | UINT32 TRANSNO:2; | |
1441 | UINT32 HTMODE:1; | |
1442 | UINT32 EXTCHA:2; | |
1443 | UINT32 rsv:13; | |
1444 | } field; | |
1445 | #endif | |
1446 | UINT32 word; | |
1447 | } REG_TRANSMIT_SETTING, *PREG_TRANSMIT_SETTING; | |
1448 | ||
1449 | ||
1450 | typedef union _DESIRED_TRANSMIT_SETTING { | |
1451 | #ifdef RT_BIG_ENDIAN | |
1452 | struct { | |
1453 | USHORT rsv:3; | |
1454 | USHORT FixedTxMode:2; // If MCS isn't AUTO, fix rate in CCK, OFDM or HT mode. | |
1455 | USHORT PhyMode:4; | |
1456 | USHORT MCS:7; // MCS | |
1457 | } field; | |
1458 | #else | |
1459 | struct { | |
1460 | USHORT MCS:7; // MCS | |
1461 | USHORT PhyMode:4; | |
1462 | USHORT FixedTxMode:2; // If MCS isn't AUTO, fix rate in CCK, OFDM or HT mode. | |
1463 | USHORT rsv:3; | |
1464 | } field; | |
1465 | #endif | |
1466 | USHORT word; | |
1467 | } DESIRED_TRANSMIT_SETTING, *PDESIRED_TRANSMIT_SETTING; | |
1468 | ||
1469 | ||
1470 | ||
1471 | ||
1472 | /*************************************************************************** | |
1473 | * Multiple SSID related data structures | |
1474 | **************************************************************************/ | |
1475 | #define WLAN_MAX_NUM_OF_TIM ((MAX_LEN_OF_MAC_TABLE >> 3) + 1) /* /8 + 1 */ | |
1476 | #define WLAN_CT_TIM_BCMC_OFFSET 0 /* unit: 32B */ | |
1477 | ||
1478 | /* clear bcmc TIM bit */ | |
1479 | #define WLAN_MR_TIM_BCMC_CLEAR(apidx) \ | |
1480 | pAd->ApCfg.MBSSID[apidx].TimBitmaps[WLAN_CT_TIM_BCMC_OFFSET] &= ~BIT8[0]; | |
1481 | ||
1482 | /* set bcmc TIM bit */ | |
1483 | #define WLAN_MR_TIM_BCMC_SET(apidx) \ | |
1484 | pAd->ApCfg.MBSSID[apidx].TimBitmaps[WLAN_CT_TIM_BCMC_OFFSET] |= BIT8[0]; | |
1485 | ||
1486 | /* clear a station PS TIM bit */ | |
1487 | #define WLAN_MR_TIM_BIT_CLEAR(ad_p, apidx, wcid) \ | |
1488 | { UCHAR tim_offset = wcid >> 3; \ | |
1489 | UCHAR bit_offset = wcid & 0x7; \ | |
1490 | ad_p->ApCfg.MBSSID[apidx].TimBitmaps[tim_offset] &= (~BIT8[bit_offset]); } | |
1491 | ||
1492 | /* set a station PS TIM bit */ | |
1493 | #define WLAN_MR_TIM_BIT_SET(ad_p, apidx, wcid) \ | |
1494 | { UCHAR tim_offset = wcid >> 3; \ | |
1495 | UCHAR bit_offset = wcid & 0x7; \ | |
1496 | ad_p->ApCfg.MBSSID[apidx].TimBitmaps[tim_offset] |= BIT8[bit_offset]; } | |
1497 | ||
1498 | ||
1499 | // configuration common to OPMODE_AP as well as OPMODE_STA | |
1500 | typedef struct _COMMON_CONFIG { | |
1501 | ||
1502 | BOOLEAN bCountryFlag; | |
1503 | UCHAR CountryCode[3]; | |
1504 | UCHAR Geography; | |
1505 | UCHAR CountryRegion; // Enum of country region, 0:FCC, 1:IC, 2:ETSI, 3:SPAIN, 4:France, 5:MKK, 6:MKK1, 7:Israel | |
1506 | UCHAR CountryRegionForABand; // Enum of country region for A band | |
1507 | UCHAR PhyMode; // PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED | |
1508 | UCHAR DesiredPhyMode; // PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED | |
1509 | USHORT Dsifs; // in units of usec | |
1510 | ULONG PacketFilter; // Packet filter for receiving | |
1511 | UINT8 RegulatoryClass[MAX_NUM_OF_REGULATORY_CLASS]; | |
1512 | ||
1513 | CHAR Ssid[MAX_LEN_OF_SSID]; // NOT NULL-terminated | |
1514 | UCHAR SsidLen; // the actual ssid length in used | |
1515 | UCHAR LastSsidLen; // the actual ssid length in used | |
1516 | CHAR LastSsid[MAX_LEN_OF_SSID]; // NOT NULL-terminated | |
1517 | UCHAR LastBssid[MAC_ADDR_LEN]; | |
1518 | ||
1519 | UCHAR Bssid[MAC_ADDR_LEN]; | |
1520 | USHORT BeaconPeriod; | |
1521 | UCHAR Channel; | |
1522 | UCHAR CentralChannel; // Central Channel when using 40MHz is indicating. not real channel. | |
1523 | ||
1524 | UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES]; | |
1525 | UCHAR SupRateLen; | |
1526 | UCHAR ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; | |
1527 | UCHAR ExtRateLen; | |
1528 | UCHAR DesireRate[MAX_LEN_OF_SUPPORTED_RATES]; // OID_802_11_DESIRED_RATES | |
1529 | UCHAR MaxDesiredRate; | |
1530 | UCHAR ExpectedACKRate[MAX_LEN_OF_SUPPORTED_RATES]; | |
1531 | ||
1532 | ULONG BasicRateBitmap; // backup basic ratebitmap | |
1533 | ||
1534 | BOOLEAN bAPSDCapable; | |
1535 | BOOLEAN bInServicePeriod; | |
1536 | BOOLEAN bAPSDAC_BE; | |
1537 | BOOLEAN bAPSDAC_BK; | |
1538 | BOOLEAN bAPSDAC_VI; | |
1539 | BOOLEAN bAPSDAC_VO; | |
1540 | ||
1541 | /* because TSPEC can modify the APSD flag, we need to keep the APSD flag | |
1542 | requested in association stage from the station; | |
1543 | we need to recover the APSD flag after the TSPEC is deleted. */ | |
1544 | BOOLEAN bACMAPSDBackup[4]; /* for delivery-enabled & trigger-enabled both */ | |
1545 | BOOLEAN bACMAPSDTr[4]; /* no use */ | |
1546 | ||
1547 | BOOLEAN bNeedSendTriggerFrame; | |
1548 | BOOLEAN bAPSDForcePowerSave; // Force power save mode, should only use in APSD-STAUT | |
1549 | ULONG TriggerTimerCount; | |
1550 | UCHAR MaxSPLength; | |
1551 | UCHAR BBPCurrentBW; // BW_10, BW_20, BW_40 | |
1552 | // move to MULTISSID_STRUCT for MBSS | |
1553 | //HTTRANSMIT_SETTING HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI. | |
1554 | REG_TRANSMIT_SETTING RegTransmitSetting; //registry transmit setting. this is for reading registry setting only. not useful. | |
1555 | //UCHAR FixedTxMode; // Fixed Tx Mode (CCK, OFDM), for HT fixed tx mode (GF, MIX) , refer to RegTransmitSetting.field.HTMode | |
1556 | UCHAR TxRate; // Same value to fill in TXD. TxRate is 6-bit | |
1557 | UCHAR MaxTxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11 | |
1558 | UCHAR TxRateIndex; // Tx rate index in RateSwitchTable | |
1559 | UCHAR TxRateTableSize; // Valid Tx rate table size in RateSwitchTable | |
1560 | //BOOLEAN bAutoTxRateSwitch; | |
1561 | UCHAR MinTxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11 | |
1562 | UCHAR RtsRate; // RATE_xxx | |
1563 | HTTRANSMIT_SETTING MlmeTransmit; // MGMT frame PHY rate setting when operatin at Ht rate. | |
1564 | UCHAR MlmeRate; // RATE_xxx, used to send MLME frames | |
1565 | UCHAR BasicMlmeRate; // Default Rate for sending MLME frames | |
1566 | ||
1567 | USHORT RtsThreshold; // in unit of BYTE | |
1568 | USHORT FragmentThreshold; // in unit of BYTE | |
1569 | ||
1570 | UCHAR TxPower; // in unit of mW | |
1571 | ULONG TxPowerPercentage; // 0~100 % | |
1572 | ULONG TxPowerDefault; // keep for TxPowerPercentage | |
1573 | UINT8 PwrConstraint; | |
1574 | ||
1575 | #ifdef DOT11_N_SUPPORT | |
1576 | BACAP_STRUC BACapability; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0 | |
1577 | BACAP_STRUC REGBACapability; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0 | |
1578 | #endif // DOT11_N_SUPPORT // | |
1579 | IOT_STRUC IOTestParm; // 802.11n InterOpbility Test Parameter; | |
1580 | ULONG TxPreamble; // Rt802_11PreambleLong, Rt802_11PreambleShort, Rt802_11PreambleAuto | |
1581 | BOOLEAN bUseZeroToDisableFragment; // Microsoft use 0 as disable | |
1582 | ULONG UseBGProtection; // 0: auto, 1: always use, 2: always not use | |
1583 | BOOLEAN bUseShortSlotTime; // 0: disable, 1 - use short slot (9us) | |
1584 | BOOLEAN bEnableTxBurst; // 1: enble TX PACKET BURST (when BA is established or AP is not a legacy WMM AP), 0: disable TX PACKET BURST | |
1585 | BOOLEAN bAggregationCapable; // 1: enable TX aggregation when the peer supports it | |
1586 | BOOLEAN bPiggyBackCapable; // 1: enable TX piggy-back according MAC's version | |
1587 | BOOLEAN bIEEE80211H; // 1: enable IEEE802.11h spec. | |
1588 | ULONG DisableOLBCDetect; // 0: enable OLBC detect; 1 disable OLBC detect | |
1589 | ||
1590 | #ifdef DOT11_N_SUPPORT | |
1591 | BOOLEAN bRdg; | |
1592 | #endif // DOT11_N_SUPPORT // | |
1593 | BOOLEAN bWmmCapable; // 0:disable WMM, 1:enable WMM | |
1594 | QOS_CAPABILITY_PARM APQosCapability; // QOS capability of the current associated AP | |
1595 | EDCA_PARM APEdcaParm; // EDCA parameters of the current associated AP | |
1596 | QBSS_LOAD_PARM APQbssLoad; // QBSS load of the current associated AP | |
1597 | UCHAR AckPolicy[4]; // ACK policy of the specified AC. see ACK_xxx | |
1598 | #ifdef CONFIG_STA_SUPPORT | |
1599 | BOOLEAN bDLSCapable; // 0:disable DLS, 1:enable DLS | |
1600 | #endif // CONFIG_STA_SUPPORT // | |
1601 | // a bitmap of BOOLEAN flags. each bit represent an operation status of a particular | |
1602 | // BOOLEAN control, either ON or OFF. These flags should always be accessed via | |
1603 | // OPSTATUS_TEST_FLAG(), OPSTATUS_SET_FLAG(), OP_STATUS_CLEAR_FLAG() macros. | |
1604 | // see fOP_STATUS_xxx in RTMP_DEF.C for detail bit definition | |
1605 | ULONG OpStatusFlags; | |
1606 | ||
1607 | BOOLEAN NdisRadioStateOff; //For HCT 12.0, set this flag to TRUE instead of called MlmeRadioOff. | |
1608 | ABGBAND_STATE BandState; // For setting BBP used on B/G or A mode. | |
1609 | #ifdef ANT_DIVERSITY_SUPPORT | |
1610 | UCHAR bRxAntDiversity; // 0:disable, 1:enable Software Rx Antenna Diversity. | |
1611 | #endif // ANT_DIVERSITY_SUPPORT // | |
1612 | ||
1613 | // IEEE802.11H--DFS. | |
1614 | RADAR_DETECT_STRUCT RadarDetect; | |
1615 | ||
1616 | #ifdef CARRIER_DETECTION_SUPPORT | |
1617 | CARRIER_DETECTION_STRUCT CarrierDetect; | |
1618 | #endif // CARRIER_DETECTION_SUPPORT // | |
1619 | ||
1620 | #ifdef DOT11_N_SUPPORT | |
1621 | // HT | |
1622 | UCHAR BASize; // USer desired BAWindowSize. Should not exceed our max capability | |
1623 | //RT_HT_CAPABILITY SupportedHtPhy; | |
1624 | RT_HT_CAPABILITY DesiredHtPhy; | |
1625 | HT_CAPABILITY_IE HtCapability; | |
1626 | ADD_HT_INFO_IE AddHTInfo; // Useful as AP. | |
1627 | //This IE is used with channel switch announcement element when changing to a new 40MHz. | |
1628 | //This IE is included in channel switch ammouncement frames 7.4.1.5, beacons, probe Rsp. | |
1629 | NEW_EXT_CHAN_IE NewExtChanOffset; //7.3.2.20A, 1 if extension channel is above the control channel, 3 if below, 0 if not present | |
1630 | ||
1631 | #ifdef DOT11N_DRAFT3 | |
1632 | UCHAR Bss2040CoexistFlag; // bit 0: bBssCoexistTimerRunning, bit 1: NeedSyncAddHtInfo. | |
1633 | RALINK_TIMER_STRUCT Bss2040CoexistTimer; | |
1634 | ||
1635 | //This IE is used for 20/40 BSS Coexistence. | |
1636 | BSS_2040_COEXIST_IE BSS2040CoexistInfo; | |
1637 | // ====== 11n D3.0 =======================> | |
1638 | USHORT Dot11OBssScanPassiveDwell; // Unit : TU. 5~1000 | |
1639 | USHORT Dot11OBssScanActiveDwell; // Unit : TU. 10~1000 | |
1640 | USHORT Dot11BssWidthTriggerScanInt; // Unit : Second | |
1641 | USHORT Dot11OBssScanPassiveTotalPerChannel; // Unit : TU. 200~10000 | |
1642 | USHORT Dot11OBssScanActiveTotalPerChannel; // Unit : TU. 20~10000 | |
1643 | USHORT Dot11BssWidthChanTranDelayFactor; | |
1644 | USHORT Dot11OBssScanActivityThre; // Unit : percentage | |
1645 | ||
1646 | ULONG Dot11BssWidthChanTranDelay; // multiple of (Dot11BssWidthTriggerScanInt * Dot11BssWidthChanTranDelayFactor) | |
1647 | ULONG CountDownCtr; // CountDown Counter from (Dot11BssWidthTriggerScanInt * Dot11BssWidthChanTranDelayFactor) | |
1648 | ||
1649 | NDIS_SPIN_LOCK TriggerEventTabLock; | |
1650 | BSS_2040_COEXIST_IE LastBSSCoexist2040; | |
1651 | BSS_2040_COEXIST_IE BSSCoexist2040; | |
1652 | TRIGGER_EVENT_TAB TriggerEventTab; | |
1653 | UCHAR ChannelListIdx; | |
1654 | // <====== 11n D3.0 ======================= | |
1655 | BOOLEAN bOverlapScanning; | |
1656 | #endif // DOT11N_DRAFT3 // | |
1657 | ||
1658 | BOOLEAN bHTProtect; | |
1659 | BOOLEAN bMIMOPSEnable; | |
1660 | BOOLEAN bBADecline; | |
1661 | //2008/11/05: KH add to support Antenna power-saving of AP<-- | |
1662 | BOOLEAN bGreenAPEnable; | |
1663 | BOOLEAN bBlockAntDivforGreenAP; | |
1664 | //2008/11/05: KH add to support Antenna power-saving of AP--> | |
1665 | BOOLEAN bDisableReordering; | |
1666 | BOOLEAN bForty_Mhz_Intolerant; | |
1667 | BOOLEAN bExtChannelSwitchAnnouncement; | |
1668 | BOOLEAN bRcvBSSWidthTriggerEvents; | |
1669 | ULONG LastRcvBSSWidthTriggerEventsTime; | |
1670 | ||
1671 | UCHAR TxBASize; | |
1672 | #endif // DOT11_N_SUPPORT // | |
1673 | ||
1674 | // Enable wireless event | |
1675 | BOOLEAN bWirelessEvent; | |
1676 | BOOLEAN bWiFiTest; // Enable this parameter for WiFi test | |
1677 | ||
1678 | // Tx & Rx Stream number selection | |
1679 | UCHAR TxStream; | |
1680 | UCHAR RxStream; | |
1681 | ||
1682 | // transmit phy mode, trasmit rate for Multicast. | |
1683 | #ifdef MCAST_RATE_SPECIFIC | |
1684 | UCHAR McastTransmitMcs; | |
1685 | UCHAR McastTransmitPhyMode; | |
1686 | #endif // MCAST_RATE_SPECIFIC // | |
1687 | ||
1688 | BOOLEAN bHardwareRadio; // Hardware controlled Radio enabled | |
1689 | ||
1690 | ||
1691 | ||
1692 | NDIS_SPIN_LOCK MeasureReqTabLock; | |
1693 | PMEASURE_REQ_TAB pMeasureReqTab; | |
1694 | ||
1695 | NDIS_SPIN_LOCK TpcReqTabLock; | |
1696 | PTPC_REQ_TAB pTpcReqTab; | |
1697 | ||
1698 | // transmit phy mode, trasmit rate for Multicast. | |
1699 | #ifdef MCAST_RATE_SPECIFIC | |
1700 | HTTRANSMIT_SETTING MCastPhyMode; | |
1701 | #endif // MCAST_RATE_SPECIFIC // | |
1702 | ||
1703 | #ifdef SINGLE_SKU | |
1704 | UINT16 DefineMaxTxPwr; | |
1705 | #endif // SINGLE_SKU // | |
1706 | ||
1707 | ||
1708 | BOOLEAN PSPXlink; // 0: Disable. 1: Enable | |
1709 | ||
1710 | ||
1711 | #if defined(RT305x)||defined(RT30xx) | |
1712 | // request by Gary, for High Power issue | |
1713 | UCHAR HighPowerPatchDisabled; | |
1714 | #endif | |
1715 | ||
1716 | BOOLEAN HT_DisallowTKIP; /* Restrict the encryption type in 11n HT mode */ | |
1717 | } COMMON_CONFIG, *PCOMMON_CONFIG; | |
1718 | ||
1719 | ||
1720 | #ifdef CONFIG_STA_SUPPORT | |
1721 | /* Modified by Wu Xi-Kun 4/21/2006 */ | |
1722 | // STA configuration and status | |
1723 | typedef struct _STA_ADMIN_CONFIG { | |
1724 | // GROUP 1 - | |
1725 | // User configuration loaded from Registry, E2PROM or OID_xxx. These settings describe | |
1726 | // the user intended configuration, but not necessary fully equal to the final | |
1727 | // settings in ACTIVE BSS after negotiation/compromize with the BSS holder (either | |
1728 | // AP or IBSS holder). | |
1729 | // Once initialized, user configuration can only be changed via OID_xxx | |
1730 | UCHAR BssType; // BSS_INFRA or BSS_ADHOC | |
1731 | USHORT AtimWin; // used when starting a new IBSS | |
1732 | ||
1733 | // GROUP 2 - | |
1734 | // User configuration loaded from Registry, E2PROM or OID_xxx. These settings describe | |
1735 | // the user intended configuration, and should be always applied to the final | |
1736 | // settings in ACTIVE BSS without compromising with the BSS holder. | |
1737 | // Once initialized, user configuration can only be changed via OID_xxx | |
1738 | UCHAR RssiTrigger; | |
1739 | UCHAR RssiTriggerMode; // RSSI_TRIGGERED_UPON_BELOW_THRESHOLD or RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD | |
1740 | USHORT DefaultListenCount; // default listen count; | |
1741 | ULONG WindowsPowerMode; // Power mode for AC power | |
1742 | ULONG WindowsBatteryPowerMode; // Power mode for battery if exists | |
1743 | BOOLEAN bWindowsACCAMEnable; // Enable CAM power mode when AC on | |
1744 | BOOLEAN bAutoReconnect; // Set to TRUE when setting OID_802_11_SSID with no matching BSSID | |
1745 | ULONG WindowsPowerProfile; // Windows power profile, for NDIS5.1 PnP | |
1746 | ||
1747 | // MIB:ieee802dot11.dot11smt(1).dot11StationConfigTable(1) | |
1748 | USHORT Psm; // power management mode (PWR_ACTIVE|PWR_SAVE) | |
1749 | USHORT DisassocReason; | |
1750 | UCHAR DisassocSta[MAC_ADDR_LEN]; | |
1751 | USHORT DeauthReason; | |
1752 | UCHAR DeauthSta[MAC_ADDR_LEN]; | |
1753 | USHORT AuthFailReason; | |
1754 | UCHAR AuthFailSta[MAC_ADDR_LEN]; | |
1755 | ||
1756 | NDIS_802_11_PRIVACY_FILTER PrivacyFilter; // PrivacyFilter enum for 802.1X | |
1757 | NDIS_802_11_AUTHENTICATION_MODE AuthMode; // This should match to whatever microsoft defined | |
1758 | NDIS_802_11_WEP_STATUS WepStatus; | |
1759 | NDIS_802_11_WEP_STATUS OrigWepStatus; // Original wep status set from OID | |
1760 | ||
1761 | // Add to support different cipher suite for WPA2/WPA mode | |
1762 | NDIS_802_11_ENCRYPTION_STATUS GroupCipher; // Multicast cipher suite | |
1763 | NDIS_802_11_ENCRYPTION_STATUS PairCipher; // Unicast cipher suite | |
1764 | BOOLEAN bMixCipher; // Indicate current Pair & Group use different cipher suites | |
1765 | USHORT RsnCapability; | |
1766 | ||
1767 | NDIS_802_11_WEP_STATUS GroupKeyWepStatus; | |
1768 | ||
1769 | UCHAR WpaPassPhrase[64]; // WPA PSK pass phrase | |
1770 | UINT WpaPassPhraseLen; // the length of WPA PSK pass phrase | |
1771 | UCHAR PMK[32]; // WPA PSK mode PMK | |
1772 | UCHAR PTK[64]; // WPA PSK mode PTK | |
1773 | UCHAR GTK[32]; // GTK from authenticator | |
1774 | BSSID_INFO SavedPMK[PMKID_NO]; | |
1775 | UINT SavedPMKNum; // Saved PMKID number | |
1776 | ||
1777 | UCHAR DefaultKeyId; | |
1778 | ||
1779 | ||
1780 | // WPA 802.1x port control, WPA_802_1X_PORT_SECURED, WPA_802_1X_PORT_NOT_SECURED | |
1781 | UCHAR PortSecured; | |
1782 | ||
1783 | // For WPA countermeasures | |
1784 | ULONG LastMicErrorTime; // record last MIC error time | |
1785 | ULONG MicErrCnt; // Should be 0, 1, 2, then reset to zero (after disassoiciation). | |
1786 | BOOLEAN bBlockAssoc; // Block associate attempt for 60 seconds after counter measure occurred. | |
1787 | // For WPA-PSK supplicant state | |
1788 | WPA_STATE WpaState; // Default is SS_NOTUSE and handled by microsoft 802.1x | |
1789 | UCHAR ReplayCounter[8]; | |
1790 | UCHAR ANonce[32]; // ANonce for WPA-PSK from aurhenticator | |
1791 | UCHAR SNonce[32]; // SNonce for WPA-PSK | |
1792 | ||
1793 | UCHAR LastSNR0; // last received BEACON's SNR | |
1794 | UCHAR LastSNR1; // last received BEACON's SNR for 2nd antenna | |
1795 | RSSI_SAMPLE RssiSample; | |
1796 | ULONG NumOfAvgRssiSample; | |
1797 | ||
1798 | ULONG LastBeaconRxTime; // OS's timestamp of the last BEACON RX time | |
1799 | ULONG Last11bBeaconRxTime; // OS's timestamp of the last 11B BEACON RX time | |
1800 | ULONG Last11gBeaconRxTime; // OS's timestamp of the last 11G BEACON RX time | |
1801 | ULONG Last20NBeaconRxTime; // OS's timestamp of the last 20MHz N BEACON RX time | |
1802 | ||
1803 | ULONG LastScanTime; // Record last scan time for issue BSSID_SCAN_LIST | |
1804 | ULONG ScanCnt; // Scan counts since most recent SSID, BSSID, SCAN OID request | |
1805 | BOOLEAN bSwRadio; // Software controlled Radio On/Off, TRUE: On | |
1806 | BOOLEAN bHwRadio; // Hardware controlled Radio On/Off, TRUE: On | |
1807 | BOOLEAN bRadio; // Radio state, And of Sw & Hw radio state | |
1808 | BOOLEAN bHardwareRadio; // Hardware controlled Radio enabled | |
1809 | BOOLEAN bShowHiddenSSID; // Show all known SSID in SSID list get operation | |
1810 | ||
1811 | // New for WPA, windows want us to to keep association information and | |
1812 | // Fixed IEs from last association response | |
1813 | NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo; | |
1814 | USHORT ReqVarIELen; // Length of next VIE include EID & Length | |
1815 | UCHAR ReqVarIEs[MAX_VIE_LEN]; // The content saved here should be little-endian format. | |
1816 | USHORT ResVarIELen; // Length of next VIE include EID & Length | |
1817 | UCHAR ResVarIEs[MAX_VIE_LEN]; | |
1818 | ||
1819 | UCHAR RSNIE_Len; | |
1820 | UCHAR RSN_IE[MAX_LEN_OF_RSNIE]; // The content saved here should be little-endian format. | |
1821 | ||
1822 | ULONG CLBusyBytes; // Save the total bytes received durning channel load scan time | |
1823 | USHORT RPIDensity[8]; // Array for RPI density collection | |
1824 | ||
1825 | UCHAR RMReqCnt; // Number of measurement request saved. | |
1826 | UCHAR CurrentRMReqIdx; // Number of measurement request saved. | |
1827 | BOOLEAN ParallelReq; // Parallel measurement, only one request performed, | |
1828 | // It must be the same channel with maximum duration | |
1829 | USHORT ParallelDuration; // Maximum duration for parallel measurement | |
1830 | UCHAR ParallelChannel; // Only one channel with parallel measurement | |
1831 | USHORT IAPPToken; // IAPP dialog token | |
1832 | // Hack for channel load and noise histogram parameters | |
1833 | UCHAR NHFactor; // Parameter for Noise histogram | |
1834 | UCHAR CLFactor; // Parameter for channel load | |
1835 | ||
1836 | RALINK_TIMER_STRUCT StaQuickResponeForRateUpTimer; | |
1837 | BOOLEAN StaQuickResponeForRateUpTimerRunning; | |
1838 | ||
1839 | UCHAR DtimCount; // 0.. DtimPeriod-1 | |
1840 | UCHAR DtimPeriod; // default = 3 | |
1841 | ||
1842 | #ifdef QOS_DLS_SUPPORT | |
1843 | RT_802_11_DLS DLSEntry[MAX_NUM_OF_DLS_ENTRY]; | |
1844 | UCHAR DlsReplayCounter[8]; | |
1845 | #endif // QOS_DLS_SUPPORT // | |
1846 | //////////////////////////////////////////////////////////////////////////////////////// | |
1847 | // This is only for WHQL test. | |
1848 | BOOLEAN WhqlTest; | |
1849 | //////////////////////////////////////////////////////////////////////////////////////// | |
1850 | ||
1851 | RALINK_TIMER_STRUCT WpaDisassocAndBlockAssocTimer; | |
1852 | // Fast Roaming | |
1853 | BOOLEAN bAutoRoaming; // 0:disable auto roaming by RSSI, 1:enable auto roaming by RSSI | |
1854 | CHAR dBmToRoam; // the condition to roam when receiving Rssi less than this value. It's negative value. | |
1855 | ||
1856 | #ifdef WPA_SUPPLICANT_SUPPORT | |
1857 | BOOLEAN IEEE8021X; | |
1858 | BOOLEAN IEEE8021x_required_keys; | |
1859 | CIPHER_KEY DesireSharedKey[4]; // Record user desired WEP keys | |
1860 | UCHAR DesireSharedKeyId; | |
1861 | ||
1862 | // 0: driver ignores wpa_supplicant | |
1863 | // 1: wpa_supplicant initiates scanning and AP selection | |
1864 | // 2: driver takes care of scanning, AP selection, and IEEE 802.11 association parameters | |
1865 | UCHAR WpaSupplicantUP; | |
1866 | UCHAR WpaSupplicantScanCount; | |
1867 | BOOLEAN bRSN_IE_FromWpaSupplicant; | |
1868 | #endif // WPA_SUPPLICANT_SUPPORT // | |
1869 | ||
1870 | CHAR dev_name[16]; | |
1871 | USHORT OriDevType; | |
1872 | ||
1873 | BOOLEAN bTGnWifiTest; | |
1874 | BOOLEAN bScanReqIsFromWebUI; | |
1875 | ||
1876 | HTTRANSMIT_SETTING HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI. | |
1877 | DESIRED_TRANSMIT_SETTING DesiredTransmitSetting; | |
1878 | RT_HT_PHY_INFO DesiredHtPhyInfo; | |
1879 | BOOLEAN bAutoTxRateSwitch; | |
1880 | ||
1881 | #ifdef RTMP_MAC_PCI | |
1882 | UCHAR BBPR3; | |
1883 | // PS Control has 2 meanings for advanced power save function. | |
1884 | // 1. EnablePSinIdle : When no connection, always radio off except need to do site survey. | |
1885 | // 2. EnableNewPS : will save more current in sleep or radio off mode. | |
1886 | PS_CONTROL PSControl; | |
1887 | #endif // RTMP_MAC_PCI // | |
1888 | ||
1889 | #ifdef EXT_BUILD_CHANNEL_LIST | |
1890 | UCHAR IEEE80211dClientMode; | |
1891 | UCHAR StaOriCountryCode[3]; | |
1892 | UCHAR StaOriGeography; | |
1893 | #endif // EXT_BUILD_CHANNEL_LIST // | |
1894 | ||
1895 | ||
1896 | ||
1897 | BOOLEAN bAutoConnectByBssid; | |
1898 | ULONG BeaconLostTime; // seconds | |
1899 | BOOLEAN bForceTxBurst; // 1: force enble TX PACKET BURST, 0: disable | |
1900 | } STA_ADMIN_CONFIG, *PSTA_ADMIN_CONFIG; | |
1901 | ||
1902 | // This data structure keep the current active BSS/IBSS's configuration that this STA | |
1903 | // had agreed upon joining the network. Which means these parameters are usually decided | |
1904 | // by the BSS/IBSS creator instead of user configuration. Data in this data structurre | |
1905 | // is valid only when either ADHOC_ON(pAd) or INFRA_ON(pAd) is TRUE. | |
1906 | // Normally, after SCAN or failed roaming attempts, we need to recover back to | |
1907 | // the current active settings. | |
1908 | typedef struct _STA_ACTIVE_CONFIG { | |
1909 | USHORT Aid; | |
1910 | USHORT AtimWin; // in kusec; IBSS parameter set element | |
1911 | USHORT CapabilityInfo; | |
1912 | USHORT CfpMaxDuration; | |
1913 | USHORT CfpPeriod; | |
1914 | ||
1915 | // Copy supported rate from desired AP's beacon. We are trying to match | |
1916 | // AP's supported and extended rate settings. | |
1917 | UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES]; | |
1918 | UCHAR ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; | |
1919 | UCHAR SupRateLen; | |
1920 | UCHAR ExtRateLen; | |
1921 | // Copy supported ht from desired AP's beacon. We are trying to match | |
1922 | RT_HT_PHY_INFO SupportedPhyInfo; | |
1923 | RT_HT_CAPABILITY SupportedHtPhy; | |
1924 | } STA_ACTIVE_CONFIG, *PSTA_ACTIVE_CONFIG; | |
1925 | ||
1926 | ||
1927 | ||
1928 | #endif // CONFIG_STA_SUPPORT // | |
1929 | ||
1930 | ||
1931 | ||
1932 | typedef struct _MAC_TABLE_ENTRY { | |
1933 | //Choose 1 from ValidAsWDS and ValidAsCLI to validize. | |
1934 | BOOLEAN ValidAsCLI; // Sta mode, set this TRUE after Linkup,too. | |
1935 | BOOLEAN ValidAsWDS; // This is WDS Entry. only for AP mode. | |
1936 | BOOLEAN ValidAsApCli; //This is a AP-Client entry, only for AP mode which enable AP-Client functions. | |
1937 | BOOLEAN ValidAsMesh; | |
1938 | BOOLEAN ValidAsDls; // This is DLS Entry. only for STA mode. | |
1939 | BOOLEAN isCached; | |
1940 | BOOLEAN bIAmBadAtheros; // Flag if this is Atheros chip that has IOT problem. We need to turn on RTS/CTS protection. | |
1941 | ||
1942 | UCHAR EnqueueEapolStartTimerRunning; // Enqueue EAPoL-Start for triggering EAP SM | |
1943 | //jan for wpa | |
1944 | // record which entry revoke MIC Failure , if it leaves the BSS itself, AP won't update aMICFailTime MIB | |
1945 | UCHAR CMTimerRunning; | |
1946 | UCHAR apidx; // MBSS number | |
1947 | UCHAR RSNIE_Len; | |
1948 | UCHAR RSN_IE[MAX_LEN_OF_RSNIE]; | |
1949 | UCHAR ANonce[LEN_KEY_DESC_NONCE]; | |
1950 | UCHAR SNonce[LEN_KEY_DESC_NONCE]; | |
1951 | UCHAR R_Counter[LEN_KEY_DESC_REPLAY]; | |
1952 | UCHAR PTK[64]; | |
1953 | UCHAR ReTryCounter; | |
1954 | RALINK_TIMER_STRUCT RetryTimer; | |
1955 | RALINK_TIMER_STRUCT EnqueueStartForPSKTimer; // A timer which enqueue EAPoL-Start for triggering PSK SM | |
1956 | NDIS_802_11_AUTHENTICATION_MODE AuthMode; // This should match to whatever microsoft defined | |
1957 | NDIS_802_11_WEP_STATUS WepStatus; | |
1958 | NDIS_802_11_WEP_STATUS GroupKeyWepStatus; | |
1959 | AP_WPA_STATE WpaState; | |
1960 | GTK_STATE GTKState; | |
1961 | USHORT PortSecured; | |
1962 | NDIS_802_11_PRIVACY_FILTER PrivacyFilter; // PrivacyFilter enum for 802.1X | |
1963 | CIPHER_KEY PairwiseKey; | |
1964 | PVOID pAd; | |
1965 | INT PMKID_CacheIdx; | |
1966 | UCHAR PMKID[LEN_PMKID]; | |
1967 | ||
1968 | ||
1969 | UCHAR Addr[MAC_ADDR_LEN]; | |
1970 | UCHAR PsMode; | |
1971 | SST Sst; | |
1972 | AUTH_STATE AuthState; // for SHARED KEY authentication state machine used only | |
1973 | BOOLEAN IsReassocSta; // Indicate whether this is a reassociation procedure | |
1974 | USHORT Aid; | |
1975 | USHORT CapabilityInfo; | |
1976 | UCHAR LastRssi; | |
1977 | ULONG NoDataIdleCount; | |
1978 | UINT16 StationKeepAliveCount; // unit: second | |
1979 | ULONG PsQIdleCount; | |
1980 | QUEUE_HEADER PsQueue; | |
1981 | ||
1982 | UINT32 StaConnectTime; // the live time of this station since associated with AP | |
1983 | ||
1984 | ||
1985 | #ifdef DOT11_N_SUPPORT | |
1986 | BOOLEAN bSendBAR; | |
1987 | USHORT NoBADataCountDown; | |
1988 | ||
1989 | UINT32 CachedBuf[16]; // UINT (4 bytes) for alignment | |
1990 | UINT TxBFCount; // 3*3 | |
1991 | #endif // DOT11_N_SUPPORT // | |
1992 | UINT FIFOCount; | |
1993 | UINT DebugFIFOCount; | |
1994 | UINT DebugTxCount; | |
1995 | BOOLEAN bDlsInit; | |
1996 | ||
1997 | ||
1998 | //==================================================== | |
1999 | //WDS entry needs these | |
2000 | // if ValidAsWDS==TRUE, MatchWDSTabIdx is the index in WdsTab.MacTab | |
2001 | UINT MatchWDSTabIdx; | |
2002 | UCHAR MaxSupportedRate; | |
2003 | UCHAR CurrTxRate; | |
2004 | UCHAR CurrTxRateIndex; | |
2005 | // to record the each TX rate's quality. 0 is best, the bigger the worse. | |
2006 | USHORT TxQuality[MAX_STEP_OF_TX_RATE_SWITCH]; | |
2007 | // USHORT OneSecTxOkCount; | |
2008 | UINT32 OneSecTxNoRetryOkCount; | |
2009 | UINT32 OneSecTxRetryOkCount; | |
2010 | UINT32 OneSecTxFailCount; | |
2011 | UINT32 ContinueTxFailCnt; | |
2012 | UINT32 CurrTxRateStableTime; // # of second in current TX rate | |
2013 | UCHAR TxRateUpPenalty; // extra # of second penalty due to last unstable condition | |
2014 | #ifdef WDS_SUPPORT | |
2015 | BOOLEAN LockEntryTx; // TRUE = block to WDS Entry traffic, FALSE = not. | |
2016 | UINT32 TimeStamp_toTxRing; | |
2017 | #endif // WDS_SUPPORT // | |
2018 | ||
2019 | //==================================================== | |
2020 | ||
2021 | ||
2022 | ||
2023 | #ifdef CONFIG_STA_SUPPORT | |
2024 | #ifdef QOS_DLS_SUPPORT | |
2025 | UINT MatchDlsEntryIdx; // indicate the index in pAd->StaCfg.DLSEntry | |
2026 | #endif // QOS_DLS_SUPPORT // | |
2027 | #endif // CONFIG_STA_SUPPORT // | |
2028 | ||
2029 | BOOLEAN fNoisyEnvironment; | |
2030 | BOOLEAN fLastSecAccordingRSSI; | |
2031 | UCHAR LastSecTxRateChangeAction; // 0: no change, 1:rate UP, 2:rate down | |
2032 | CHAR LastTimeTxRateChangeAction; //Keep last time value of LastSecTxRateChangeAction | |
2033 | ULONG LastTxOkCount; | |
2034 | UCHAR PER[MAX_STEP_OF_TX_RATE_SWITCH]; | |
2035 | ||
2036 | // a bitmap of BOOLEAN flags. each bit represent an operation status of a particular | |
2037 | // BOOLEAN control, either ON or OFF. These flags should always be accessed via | |
2038 | // CLIENT_STATUS_TEST_FLAG(), CLIENT_STATUS_SET_FLAG(), CLIENT_STATUS_CLEAR_FLAG() macros. | |
2039 | // see fOP_STATUS_xxx in RTMP_DEF.C for detail bit definition. fCLIENT_STATUS_AMSDU_INUSED | |
2040 | ULONG ClientStatusFlags; | |
2041 | ||
2042 | HTTRANSMIT_SETTING HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI. | |
2043 | ||
2044 | #ifdef DOT11_N_SUPPORT | |
2045 | // HT EWC MIMO-N used parameters | |
2046 | USHORT RXBAbitmap; // fill to on-chip RXWI_BA_BITMASK in 8.1.3RX attribute entry format | |
2047 | USHORT TXBAbitmap; // This bitmap as originator, only keep in software used to mark AMPDU bit in TXWI | |
2048 | USHORT TXAutoBAbitmap; | |
2049 | USHORT BADeclineBitmap; | |
2050 | USHORT BARecWcidArray[NUM_OF_TID]; // The mapping wcid of recipient session. if RXBAbitmap bit is masked | |
2051 | USHORT BAOriWcidArray[NUM_OF_TID]; // The mapping wcid of originator session. if TXBAbitmap bit is masked | |
2052 | USHORT BAOriSequence[NUM_OF_TID]; // The mapping wcid of originator session. if TXBAbitmap bit is masked | |
2053 | ||
2054 | // 802.11n features. | |
2055 | UCHAR MpduDensity; | |
2056 | UCHAR MaxRAmpduFactor; | |
2057 | UCHAR AMsduSize; | |
2058 | UCHAR MmpsMode; // MIMO power save more. | |
2059 | ||
2060 | HT_CAPABILITY_IE HTCapability; | |
2061 | ||
2062 | #ifdef DOT11N_DRAFT3 | |
2063 | UCHAR BSS2040CoexistenceMgmtSupport; | |
2064 | #endif // DOT11N_DRAFT3 // | |
2065 | #endif // DOT11_N_SUPPORT // | |
2066 | ||
2067 | BOOLEAN bAutoTxRateSwitch; | |
2068 | ||
2069 | UCHAR RateLen; | |
2070 | struct _MAC_TABLE_ENTRY *pNext; | |
2071 | USHORT TxSeq[NUM_OF_TID]; | |
2072 | USHORT NonQosDataSeq; | |
2073 | ||
2074 | RSSI_SAMPLE RssiSample; | |
2075 | ||
2076 | UINT32 TXMCSExpected[16]; | |
2077 | UINT32 TXMCSSuccessful[16]; | |
2078 | UINT32 TXMCSFailed[16]; | |
2079 | UINT32 TXMCSAutoFallBack[16][16]; | |
2080 | ||
2081 | #ifdef CONFIG_STA_SUPPORT | |
2082 | ULONG LastBeaconRxTime; | |
2083 | #endif // CONFIG_STA_SUPPORT // | |
2084 | ||
2085 | ||
2086 | ||
2087 | ULONG AssocDeadLine; | |
2088 | ||
2089 | ||
2090 | ||
2091 | ULONG ChannelQuality; // 0..100, Channel Quality Indication for Roaming | |
2092 | ||
2093 | } MAC_TABLE_ENTRY, *PMAC_TABLE_ENTRY; | |
2094 | ||
2095 | typedef struct _MAC_TABLE { | |
2096 | USHORT Size; | |
2097 | MAC_TABLE_ENTRY *Hash[HASH_TABLE_SIZE]; | |
2098 | MAC_TABLE_ENTRY Content[MAX_LEN_OF_MAC_TABLE]; | |
2099 | QUEUE_HEADER McastPsQueue; | |
2100 | ULONG PsQIdleCount; | |
2101 | BOOLEAN fAnyStationInPsm; | |
2102 | BOOLEAN fAnyStationBadAtheros; // Check if any Station is atheros 802.11n Chip. We need to use RTS/CTS with Atheros 802,.11n chip. | |
2103 | BOOLEAN fAnyTxOPForceDisable; // Check if it is necessary to disable BE TxOP | |
2104 | BOOLEAN fAllStationAsRalink; // Check if all stations are ralink-chipset | |
2105 | #ifdef DOT11_N_SUPPORT | |
2106 | BOOLEAN fAnyStationIsLegacy; // Check if I use legacy rate to transmit to my BSS Station/ | |
2107 | BOOLEAN fAnyStationNonGF; // Check if any Station can't support GF. | |
2108 | BOOLEAN fAnyStation20Only; // Check if any Station can't support GF. | |
2109 | BOOLEAN fAnyStationMIMOPSDynamic; // Check if any Station is MIMO Dynamic | |
2110 | BOOLEAN fAnyBASession; // Check if there is BA session. Force turn on RTS/CTS | |
2111 | //2008/10/28: KH add to support Antenna power-saving of AP<-- | |
2112 | //2008/10/28: KH add to support Antenna power-saving of AP--> | |
2113 | #endif // DOT11_N_SUPPORT // | |
2114 | } MAC_TABLE, *PMAC_TABLE; | |
2115 | ||
2116 | ||
2117 | ||
2118 | ||
2119 | #ifdef BLOCK_NET_IF | |
2120 | typedef struct _BLOCK_QUEUE_ENTRY | |
2121 | { | |
2122 | BOOLEAN SwTxQueueBlockFlag; | |
2123 | LIST_HEADER NetIfList; | |
2124 | } BLOCK_QUEUE_ENTRY, *PBLOCK_QUEUE_ENTRY; | |
2125 | #endif // BLOCK_NET_IF // | |
2126 | ||
2127 | ||
2128 | struct wificonf | |
2129 | { | |
2130 | BOOLEAN bShortGI; | |
2131 | BOOLEAN bGreenField; | |
2132 | }; | |
2133 | ||
2134 | ||
2135 | typedef struct _RTMP_DEV_INFO_ | |
2136 | { | |
2137 | UCHAR chipName[16]; | |
2138 | RTMP_INF_TYPE infType; | |
2139 | }RTMP_DEV_INFO; | |
2140 | ||
2141 | ||
2142 | #ifdef DBG_DIAGNOSE | |
2143 | #define DIAGNOSE_TIME 10 // 10 sec | |
2144 | typedef struct _RtmpDiagStrcut_ | |
2145 | { // Diagnosis Related element | |
2146 | unsigned char inited; | |
2147 | unsigned char qIdx; | |
2148 | unsigned char ArrayStartIdx; | |
2149 | unsigned char ArrayCurIdx; | |
2150 | // Tx Related Count | |
2151 | USHORT TxDataCnt[DIAGNOSE_TIME]; | |
2152 | USHORT TxFailCnt[DIAGNOSE_TIME]; | |
2153 | // USHORT TxDescCnt[DIAGNOSE_TIME][16]; // TxDesc queue length in scale of 0~14, >=15 | |
2154 | USHORT TxDescCnt[DIAGNOSE_TIME][24]; // 3*3 // TxDesc queue length in scale of 0~14, >=15 | |
2155 | // USHORT TxMcsCnt[DIAGNOSE_TIME][16]; // TxDate MCS Count in range from 0 to 15, step in 1. | |
2156 | USHORT TxMcsCnt[DIAGNOSE_TIME][24]; // 3*3 | |
2157 | USHORT TxSWQueCnt[DIAGNOSE_TIME][9]; // TxSwQueue length in scale of 0, 1, 2, 3, 4, 5, 6, 7, >=8 | |
2158 | ||
2159 | USHORT TxAggCnt[DIAGNOSE_TIME]; | |
2160 | USHORT TxNonAggCnt[DIAGNOSE_TIME]; | |
2161 | // USHORT TxAMPDUCnt[DIAGNOSE_TIME][16]; // 10 sec, TxDMA APMDU Aggregation count in range from 0 to 15, in setp of 1. | |
2162 | USHORT TxAMPDUCnt[DIAGNOSE_TIME][24]; // 3*3 // 10 sec, TxDMA APMDU Aggregation count in range from 0 to 15, in setp of 1. | |
2163 | USHORT TxRalinkCnt[DIAGNOSE_TIME]; // TxRalink Aggregation Count in 1 sec scale. | |
2164 | USHORT TxAMSDUCnt[DIAGNOSE_TIME]; // TxAMSUD Aggregation Count in 1 sec scale. | |
2165 | ||
2166 | // Rx Related Count | |
2167 | USHORT RxDataCnt[DIAGNOSE_TIME]; // Rx Total Data count. | |
2168 | USHORT RxCrcErrCnt[DIAGNOSE_TIME]; | |
2169 | // USHORT RxMcsCnt[DIAGNOSE_TIME][16]; // Rx MCS Count in range from 0 to 15, step in 1. | |
2170 | USHORT RxMcsCnt[DIAGNOSE_TIME][24]; // 3*3 | |
2171 | }RtmpDiagStruct; | |
2172 | #endif // DBG_DIAGNOSE // | |
2173 | ||
2174 | ||
2175 | struct _RTMP_CHIP_OP_ | |
2176 | { | |
2177 | /* Calibration access related callback functions */ | |
2178 | int (*eeinit)(RTMP_ADAPTER *pAd); /* int (*eeinit)(RTMP_ADAPTER *pAd); */ | |
2179 | int (*eeread)(RTMP_ADAPTER *pAd, USHORT offset, PUSHORT pValue); /* int (*eeread)(RTMP_ADAPTER *pAd, int offset, PUSHORT pValue); */ | |
2180 | int (*eewrite)(RTMP_ADAPTER *pAd, USHORT offset, USHORT value);; /* int (*eewrite)(RTMP_ADAPTER *pAd, int offset, USHORT value); */ | |
2181 | ||
2182 | /* MCU related callback functions */ | |
2183 | int (*loadFirmware)(RTMP_ADAPTER *pAd); /* int (*loadFirmware)(RTMP_ADAPTER *pAd); */ | |
2184 | int (*eraseFirmware)(RTMP_ADAPTER *pAd); /* int (*eraseFirmware)(RTMP_ADAPTER *pAd); */ | |
2185 | int (*sendCommandToMcu)(RTMP_ADAPTER *pAd, UCHAR cmd, UCHAR token, UCHAR arg0, UCHAR arg1);; /* int (*sendCommandToMcu)(RTMP_ADAPTER *pAd, UCHAR cmd, UCHAR token, UCHAR arg0, UCHAR arg1); */ | |
2186 | ||
2187 | /* RF access related callback functions */ | |
2188 | REG_PAIR *pRFRegTable; | |
2189 | void (*AsicRfInit)(RTMP_ADAPTER *pAd); | |
2190 | void (*AsicRfTurnOn)(RTMP_ADAPTER *pAd); | |
2191 | void (*AsicRfTurnOff)(RTMP_ADAPTER *pAd); | |
2192 | void (*AsicReverseRfFromSleepMode)(RTMP_ADAPTER *pAd); | |
2193 | void (*AsicHaltAction)(RTMP_ADAPTER *pAd); | |
2194 | }; | |
2195 | ||
2196 | ||
2197 | // | |
2198 | // The miniport adapter structure | |
2199 | // | |
2200 | struct _RTMP_ADAPTER | |
2201 | { | |
2202 | PVOID OS_Cookie; // save specific structure relative to OS | |
2203 | PNET_DEV net_dev; | |
2204 | ULONG VirtualIfCnt; | |
2205 | ||
2206 | RTMP_CHIP_OP chipOps; | |
2207 | USHORT ThisTbttNumToNextWakeUp; | |
2208 | ||
2209 | #ifdef INF_AMAZON_PPA | |
2210 | UINT32 g_if_id; | |
2211 | BOOLEAN PPAEnable; | |
2212 | PPA_DIRECTPATH_CB *pDirectpathCb; | |
2213 | #endif // INF_AMAZON_PPA // | |
2214 | ||
2215 | #ifdef RTMP_MAC_PCI | |
2216 | /*****************************************************************************************/ | |
2217 | /* PCI related parameters */ | |
2218 | /*****************************************************************************************/ | |
2219 | PUCHAR CSRBaseAddress; // PCI MMIO Base Address, all access will use | |
2220 | unsigned int irq_num; | |
2221 | ||
2222 | USHORT LnkCtrlBitMask; | |
2223 | USHORT RLnkCtrlConfiguration; | |
2224 | USHORT RLnkCtrlOffset; | |
2225 | USHORT HostLnkCtrlConfiguration; | |
2226 | USHORT HostLnkCtrlOffset; | |
2227 | USHORT PCIePowerSaveLevel; | |
2228 | ULONG Rt3xxHostLinkCtrl; // USed for 3090F chip | |
2229 | ULONG Rt3xxRalinkLinkCtrl; // USed for 3090F chip | |
2230 | USHORT DeviceID; // Read from PCI config | |
2231 | ULONG AccessBBPFailCount; | |
2232 | BOOLEAN bPCIclkOff; // flag that indicate if the PICE power status in Configuration SPace.. | |
2233 | BOOLEAN bPCIclkOffDisableTx; // | |
2234 | ||
2235 | BOOLEAN brt30xxBanMcuCmd; //when = 0xff means all commands are ok to set . | |
2236 | BOOLEAN b3090ESpecialChip; //3090E special chip that write EEPROM 0x24=0x9280. | |
2237 | ULONG CheckDmaBusyCount; // Check Interrupt Status Register Count. | |
2238 | ||
2239 | UINT int_enable_reg; | |
2240 | UINT int_disable_mask; | |
2241 | UINT int_pending; | |
2242 | ||
2243 | ||
2244 | RTMP_DMABUF TxBufSpace[NUM_OF_TX_RING]; // Shared memory of all 1st pre-allocated TxBuf associated with each TXD | |
2245 | RTMP_DMABUF RxDescRing; // Shared memory for RX descriptors | |
2246 | RTMP_DMABUF TxDescRing[NUM_OF_TX_RING]; // Shared memory for Tx descriptors | |
2247 | RTMP_TX_RING TxRing[NUM_OF_TX_RING]; // AC0~4 + HCCA | |
2248 | #endif // RTMP_MAC_PCI // | |
2249 | ||
2250 | ||
2251 | NDIS_SPIN_LOCK irq_lock; | |
2252 | UCHAR irq_disabled; | |
2253 | ||
2254 | ||
2255 | /*****************************************************************************************/ | |
2256 | /* RBUS related parameters */ | |
2257 | /*****************************************************************************************/ | |
2258 | ||
2259 | ||
2260 | /*****************************************************************************************/ | |
2261 | /* Both PCI/USB related parameters */ | |
2262 | /*****************************************************************************************/ | |
2263 | //RTMP_DEV_INFO chipInfo; | |
2264 | RTMP_INF_TYPE infType; | |
2265 | ||
2266 | /*****************************************************************************************/ | |
2267 | /* Driver Mgmt related parameters */ | |
2268 | /*****************************************************************************************/ | |
2269 | RTMP_OS_TASK mlmeTask; | |
2270 | #ifdef RTMP_TIMER_TASK_SUPPORT | |
2271 | // If you want use timer task to handle the timer related jobs, enable this. | |
2272 | RTMP_TIMER_TASK_QUEUE TimerQ; | |
2273 | NDIS_SPIN_LOCK TimerQLock; | |
2274 | RTMP_OS_TASK timerTask; | |
2275 | #endif // RTMP_TIMER_TASK_SUPPORT // | |
2276 | ||
2277 | ||
2278 | /*****************************************************************************************/ | |
2279 | /* Tx related parameters */ | |
2280 | /*****************************************************************************************/ | |
2281 | BOOLEAN DeQueueRunning[NUM_OF_TX_RING]; // for ensuring RTUSBDeQueuePacket get call once | |
2282 | NDIS_SPIN_LOCK DeQueueLock[NUM_OF_TX_RING]; | |
2283 | ||
2284 | ||
2285 | // resource for software backlog queues | |
2286 | QUEUE_HEADER TxSwQueue[NUM_OF_TX_RING]; // 4 AC + 1 HCCA | |
2287 | NDIS_SPIN_LOCK TxSwQueueLock[NUM_OF_TX_RING]; // TxSwQueue spinlock | |
2288 | ||
2289 | RTMP_DMABUF MgmtDescRing; // Shared memory for MGMT descriptors | |
2290 | RTMP_MGMT_RING MgmtRing; | |
2291 | NDIS_SPIN_LOCK MgmtRingLock; // Prio Ring spinlock | |
2292 | ||
2293 | ||
2294 | /*****************************************************************************************/ | |
2295 | /* Rx related parameters */ | |
2296 | /*****************************************************************************************/ | |
2297 | ||
2298 | #ifdef RTMP_MAC_PCI | |
2299 | RTMP_RX_RING RxRing; | |
2300 | NDIS_SPIN_LOCK RxRingLock; // Rx Ring spinlock | |
2301 | #ifdef RT3090 | |
2302 | NDIS_SPIN_LOCK McuCmdLock; //MCU Command Queue spinlock | |
2303 | #endif // RT3090 // | |
2304 | #endif // RTMP_MAC_PCI // | |
2305 | ||
2306 | ||
2307 | ||
2308 | /*****************************************************************************************/ | |
2309 | /* ASIC related parameters */ | |
2310 | /*****************************************************************************************/ | |
2311 | UINT32 MACVersion; // MAC version. Record rt2860C(0x28600100) or rt2860D (0x28600101).. | |
2312 | ||
2313 | // --------------------------- | |
2314 | // E2PROM | |
2315 | // --------------------------- | |
2316 | ULONG EepromVersion; // byte 0: version, byte 1: revision, byte 2~3: unused | |
2317 | ULONG FirmwareVersion; // byte 0: Minor version, byte 1: Major version, otherwise unused. | |
2318 | USHORT EEPROMDefaultValue[NUM_EEPROM_BBP_PARMS]; | |
2319 | UCHAR EEPROMAddressNum; // 93c46=6 93c66=8 | |
2320 | BOOLEAN EepromAccess; | |
2321 | UCHAR EFuseTag; | |
2322 | ||
2323 | ||
2324 | // --------------------------- | |
2325 | // BBP Control | |
2326 | // --------------------------- | |
2327 | #ifdef MERGE_ARCH_TEAM | |
2328 | UCHAR BbpWriteLatch[256]; // record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID | |
2329 | #else | |
2330 | UCHAR BbpWriteLatch[140]; // record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID | |
2331 | #endif // MERGE_ARCH_TEAM // | |
2332 | CHAR BbpRssiToDbmDelta; // change from UCHAR to CHAR for high power | |
2333 | BBP_R66_TUNING BbpTuning; | |
2334 | ||
2335 | // ---------------------------- | |
2336 | // RFIC control | |
2337 | // ---------------------------- | |
2338 | UCHAR RfIcType; // RFIC_xxx | |
2339 | ULONG RfFreqOffset; // Frequency offset for channel switching | |
2340 | RTMP_RF_REGS LatchRfRegs; // latch th latest RF programming value since RF IC doesn't support READ | |
2341 | ||
2342 | EEPROM_ANTENNA_STRUC Antenna; // Since ANtenna definition is different for a & g. We need to save it for future reference. | |
2343 | EEPROM_NIC_CONFIG2_STRUC NicConfig2; | |
2344 | ||
2345 | // This soft Rx Antenna Diversity mechanism is used only when user set | |
2346 | // RX Antenna = DIVERSITY ON | |
2347 | SOFT_RX_ANT_DIVERSITY RxAnt; | |
2348 | ||
2349 | UCHAR RFProgSeq; | |
2350 | CHANNEL_TX_POWER TxPower[MAX_NUM_OF_CHANNELS]; // Store Tx power value for all channels. | |
2351 | CHANNEL_TX_POWER ChannelList[MAX_NUM_OF_CHANNELS]; // list all supported channels for site survey | |
2352 | CHANNEL_11J_TX_POWER TxPower11J[MAX_NUM_OF_11JCHANNELS]; // 802.11j channel and bw | |
2353 | CHANNEL_11J_TX_POWER ChannelList11J[MAX_NUM_OF_11JCHANNELS]; // list all supported channels for site survey | |
2354 | ||
2355 | UCHAR ChannelListNum; // number of channel in ChannelList[] | |
2356 | UCHAR Bbp94; | |
2357 | BOOLEAN BbpForCCK; | |
2358 | ULONG Tx20MPwrCfgABand[5]; | |
2359 | ULONG Tx20MPwrCfgGBand[5]; | |
2360 | ULONG Tx40MPwrCfgABand[5]; | |
2361 | ULONG Tx40MPwrCfgGBand[5]; | |
2362 | ||
2363 | BOOLEAN bAutoTxAgcA; // Enable driver auto Tx Agc control | |
2364 | UCHAR TssiRefA; // Store Tssi reference value as 25 temperature. | |
2365 | UCHAR TssiPlusBoundaryA[5]; // Tssi boundary for increase Tx power to compensate. | |
2366 | UCHAR TssiMinusBoundaryA[5]; // Tssi boundary for decrease Tx power to compensate. | |
2367 | UCHAR TxAgcStepA; // Store Tx TSSI delta increment / decrement value | |
2368 | CHAR TxAgcCompensateA; // Store the compensation (TxAgcStep * (idx-1)) | |
2369 | ||
2370 | BOOLEAN bAutoTxAgcG; // Enable driver auto Tx Agc control | |
2371 | UCHAR TssiRefG; // Store Tssi reference value as 25 temperature. | |
2372 | UCHAR TssiPlusBoundaryG[5]; // Tssi boundary for increase Tx power to compensate. | |
2373 | UCHAR TssiMinusBoundaryG[5]; // Tssi boundary for decrease Tx power to compensate. | |
2374 | UCHAR TxAgcStepG; // Store Tx TSSI delta increment / decrement value | |
2375 | CHAR TxAgcCompensateG; // Store the compensation (TxAgcStep * (idx-1)) | |
2376 | ||
2377 | CHAR BGRssiOffset0; // Store B/G RSSI#0 Offset value on EEPROM 0x46h | |
2378 | CHAR BGRssiOffset1; // Store B/G RSSI#1 Offset value | |
2379 | CHAR BGRssiOffset2; // Store B/G RSSI#2 Offset value | |
2380 | ||
2381 | CHAR ARssiOffset0; // Store A RSSI#0 Offset value on EEPROM 0x4Ah | |
2382 | CHAR ARssiOffset1; // Store A RSSI#1 Offset value | |
2383 | CHAR ARssiOffset2; // Store A RSSI#2 Offset value | |
2384 | ||
2385 | CHAR BLNAGain; // Store B/G external LNA#0 value on EEPROM 0x44h | |
2386 | CHAR ALNAGain0; // Store A external LNA#0 value for ch36~64 | |
2387 | CHAR ALNAGain1; // Store A external LNA#1 value for ch100~128 | |
2388 | CHAR ALNAGain2; // Store A external LNA#2 value for ch132~165 | |
2389 | #ifdef RT30xx | |
2390 | // for 3572 | |
2391 | UCHAR Bbp25; | |
2392 | UCHAR Bbp26; | |
2393 | ||
2394 | UCHAR TxMixerGain24G; // Tx mixer gain value from EEPROM to improve Tx EVM / Tx DAC, 2.4G | |
2395 | UCHAR TxMixerGain5G; | |
2396 | #endif // RT30xx // | |
2397 | // ---------------------------- | |
2398 | // LED control | |
2399 | // ---------------------------- | |
2400 | MCU_LEDCS_STRUC LedCntl; | |
2401 | USHORT Led1; // read from EEPROM 0x3c | |
2402 | USHORT Led2; // EEPROM 0x3e | |
2403 | USHORT Led3; // EEPROM 0x40 | |
2404 | UCHAR LedIndicatorStrength; | |
2405 | UCHAR RssiSingalstrengthOffet; | |
2406 | BOOLEAN bLedOnScanning; | |
2407 | UCHAR LedStatus; | |
2408 | ||
2409 | /*****************************************************************************************/ | |
2410 | /* 802.11 related parameters */ | |
2411 | /*****************************************************************************************/ | |
2412 | // outgoing BEACON frame buffer and corresponding TXD | |
2413 | TXWI_STRUC BeaconTxWI; | |
2414 | PUCHAR BeaconBuf; | |
2415 | USHORT BeaconOffset[HW_BEACON_MAX_COUNT]; | |
2416 | ||
2417 | // pre-build PS-POLL and NULL frame upon link up. for efficiency purpose. | |
2418 | PSPOLL_FRAME PsPollFrame; | |
2419 | HEADER_802_11 NullFrame; | |
2420 | ||
2421 | ||
2422 | ||
2423 | ||
2424 | //=========AP=========== | |
2425 | ||
2426 | ||
2427 | //=======STA=========== | |
2428 | #ifdef CONFIG_STA_SUPPORT | |
2429 | // ----------------------------------------------- | |
2430 | // STA specific configuration & operation status | |
2431 | // used only when pAd->OpMode == OPMODE_STA | |
2432 | // ----------------------------------------------- | |
2433 | STA_ADMIN_CONFIG StaCfg; // user desired settings | |
2434 | STA_ACTIVE_CONFIG StaActive; // valid only when ADHOC_ON(pAd) || INFRA_ON(pAd) | |
2435 | CHAR nickname[IW_ESSID_MAX_SIZE+1]; // nickname, only used in the iwconfig i/f | |
2436 | NDIS_MEDIA_STATE PreMediaState; | |
2437 | #endif // CONFIG_STA_SUPPORT // | |
2438 | ||
2439 | //=======Common=========== | |
2440 | // OP mode: either AP or STA | |
2441 | UCHAR OpMode; // OPMODE_STA, OPMODE_AP | |
2442 | ||
2443 | NDIS_MEDIA_STATE IndicateMediaState; // Base on Indication state, default is NdisMediaStateDisConnected | |
2444 | ||
2445 | ||
2446 | /* MAT related parameters */ | |
2447 | ||
2448 | // configuration: read from Registry & E2PROM | |
2449 | BOOLEAN bLocalAdminMAC; // Use user changed MAC | |
2450 | UCHAR PermanentAddress[MAC_ADDR_LEN]; // Factory default MAC address | |
2451 | UCHAR CurrentAddress[MAC_ADDR_LEN]; // User changed MAC address | |
2452 | ||
2453 | // ------------------------------------------------------ | |
2454 | // common configuration to both OPMODE_STA and OPMODE_AP | |
2455 | // ------------------------------------------------------ | |
2456 | COMMON_CONFIG CommonCfg; | |
2457 | MLME_STRUCT Mlme; | |
2458 | ||
2459 | // AP needs those vaiables for site survey feature. | |
2460 | MLME_AUX MlmeAux; // temporary settings used during MLME state machine | |
2461 | BSS_TABLE ScanTab; // store the latest SCAN result | |
2462 | ||
2463 | //About MacTab, the sta driver will use #0 and #1 for multicast and AP. | |
2464 | MAC_TABLE MacTab; // ASIC on-chip WCID entry table. At TX, ASIC always use key according to this on-chip table. | |
2465 | NDIS_SPIN_LOCK MacTabLock; | |
2466 | ||
2467 | #ifdef DOT11_N_SUPPORT | |
2468 | BA_TABLE BATable; | |
2469 | NDIS_SPIN_LOCK BATabLock; | |
2470 | RALINK_TIMER_STRUCT RECBATimer; | |
2471 | #endif // DOT11_N_SUPPORT // | |
2472 | ||
2473 | // encryption/decryption KEY tables | |
2474 | CIPHER_KEY SharedKey[MAX_MBSSID_NUM][4]; // STA always use SharedKey[BSS0][0..3] | |
2475 | ||
2476 | // RX re-assembly buffer for fragmentation | |
2477 | FRAGMENT_FRAME FragFrame; // Frame storage for fragment frame | |
2478 | ||
2479 | // various Counters | |
2480 | COUNTER_802_3 Counters8023; // 802.3 counters | |
2481 | COUNTER_802_11 WlanCounters; // 802.11 MIB counters | |
2482 | COUNTER_RALINK RalinkCounters; // Ralink propriety counters | |
2483 | COUNTER_DRS DrsCounters; // counters for Dynamic TX Rate Switching | |
2484 | PRIVATE_STRUC PrivateInfo; // Private information & counters | |
2485 | ||
2486 | // flags, see fRTMP_ADAPTER_xxx flags | |
2487 | ULONG Flags; // Represent current device status | |
2488 | ULONG PSFlags; // Power Save operation flag. | |
2489 | ||
2490 | // current TX sequence # | |
2491 | USHORT Sequence; | |
2492 | ||
2493 | // Control disconnect / connect event generation | |
2494 | //+++Didn't used anymore | |
2495 | ULONG LinkDownTime; | |
2496 | //--- | |
2497 | ULONG LastRxRate; | |
2498 | ULONG LastTxRate; | |
2499 | //+++Used only for Station | |
2500 | BOOLEAN bConfigChanged; // Config Change flag for the same SSID setting | |
2501 | //--- | |
2502 | ||
2503 | ULONG ExtraInfo; // Extra information for displaying status | |
2504 | ULONG SystemErrorBitmap; // b0: E2PROM version error | |
2505 | ||
2506 | //+++Didn't used anymore | |
2507 | ULONG MacIcVersion; // MAC/BBP serial interface issue solved after ver.D | |
2508 | //--- | |
2509 | ||
2510 | // --------------------------- | |
2511 | // System event log | |
2512 | // --------------------------- | |
2513 | RT_802_11_EVENT_TABLE EventTab; | |
2514 | ||
2515 | ||
2516 | BOOLEAN HTCEnable; | |
2517 | ||
2518 | /*****************************************************************************************/ | |
2519 | /* Statistic related parameters */ | |
2520 | /*****************************************************************************************/ | |
2521 | ||
2522 | BOOLEAN bUpdateBcnCntDone; | |
2523 | ULONG watchDogMacDeadlock; // prevent MAC/BBP into deadlock condition | |
2524 | // ---------------------------- | |
2525 | // DEBUG paramerts | |
2526 | // ---------------------------- | |
2527 | //ULONG DebugSetting[4]; | |
2528 | BOOLEAN bBanAllBaSetup; | |
2529 | BOOLEAN bPromiscuous; | |
2530 | ||
2531 | // ---------------------------- | |
2532 | // rt2860c emulation-use Parameters | |
2533 | // ---------------------------- | |
2534 | //ULONG rtsaccu[30]; | |
2535 | //ULONG ctsaccu[30]; | |
2536 | //ULONG cfendaccu[30]; | |
2537 | //ULONG bacontent[16]; | |
2538 | //ULONG rxint[RX_RING_SIZE+1]; | |
2539 | //UCHAR rcvba[60]; | |
2540 | BOOLEAN bLinkAdapt; | |
2541 | BOOLEAN bForcePrintTX; | |
2542 | BOOLEAN bForcePrintRX; | |
2543 | //BOOLEAN bDisablescanning; //defined in RT2870 USB | |
2544 | BOOLEAN bStaFifoTest; | |
2545 | BOOLEAN bProtectionTest; | |
2546 | /* | |
2547 | BOOLEAN bHCCATest; | |
2548 | BOOLEAN bGenOneHCCA; | |
2549 | */ | |
2550 | BOOLEAN bBroadComHT; | |
2551 | //+++Following add from RT2870 USB. | |
2552 | ULONG BulkOutReq; | |
2553 | ULONG BulkOutComplete; | |
2554 | ULONG BulkOutCompleteOther; | |
2555 | ULONG BulkOutCompleteCancel; // seems not use now? | |
2556 | ULONG BulkInReq; | |
2557 | ULONG BulkInComplete; | |
2558 | ULONG BulkInCompleteFail; | |
2559 | //--- | |
2560 | ||
2561 | struct wificonf WIFItestbed; | |
2562 | ||
2563 | #ifdef RALINK_ATE | |
2564 | ATE_INFO ate; | |
2565 | #endif // RALINK_ATE // | |
2566 | ||
2567 | #ifdef DOT11_N_SUPPORT | |
2568 | struct reordering_mpdu_pool mpdu_blk_pool; | |
2569 | #endif // DOT11_N_SUPPORT // | |
2570 | ||
2571 | ULONG OneSecondnonBEpackets; // record non BE packets per second | |
2572 | ||
2573 | #ifdef LINUX | |
2574 | #if WIRELESS_EXT >= 12 | |
2575 | struct iw_statistics iw_stats; | |
2576 | #endif | |
2577 | ||
2578 | struct net_device_stats stats; | |
2579 | #endif // LINUX // | |
2580 | ||
2581 | #ifdef BLOCK_NET_IF | |
2582 | BLOCK_QUEUE_ENTRY blockQueueTab[NUM_OF_TX_RING]; | |
2583 | #endif // BLOCK_NET_IF // | |
2584 | ||
2585 | ||
2586 | ||
2587 | #ifdef MULTIPLE_CARD_SUPPORT | |
2588 | INT32 MC_RowID; | |
2589 | STRING MC_FileName[256]; | |
2590 | #endif // MULTIPLE_CARD_SUPPORT // | |
2591 | ||
2592 | ULONG TbttTickCount; | |
2593 | #ifdef PCI_MSI_SUPPORT | |
2594 | BOOLEAN HaveMsi; | |
2595 | #endif // PCI_MSI_SUPPORT // | |
2596 | ||
2597 | ||
2598 | UCHAR is_on; | |
2599 | ||
2600 | #define TIME_BASE (1000000/OS_HZ) | |
2601 | #define TIME_ONE_SECOND (1000000/TIME_BASE) | |
2602 | UCHAR flg_be_adjust; | |
2603 | ULONG be_adjust_last_time; | |
2604 | ||
2605 | #ifdef NINTENDO_AP | |
2606 | NINDO_CTRL_BLOCK nindo_ctrl_block; | |
2607 | #endif // NINTENDO_AP // | |
2608 | ||
2609 | ||
2610 | #ifdef IKANOS_VX_1X0 | |
2611 | struct IKANOS_TX_INFO IkanosTxInfo; | |
2612 | struct IKANOS_TX_INFO IkanosRxInfo[MAX_MBSSID_NUM + MAX_WDS_ENTRY + MAX_APCLI_NUM + MAX_MESH_NUM]; | |
2613 | #endif // IKANOS_VX_1X0 // | |
2614 | ||
2615 | ||
2616 | #ifdef DBG_DIAGNOSE | |
2617 | RtmpDiagStruct DiagStruct; | |
2618 | #endif // DBG_DIAGNOSE // | |
2619 | ||
2620 | ||
2621 | UINT8 FlgCtsEnabled; | |
2622 | UINT8 PM_FlgSuspend; | |
2623 | ||
2624 | #ifdef RT30xx | |
2625 | #ifdef RTMP_EFUSE_SUPPORT | |
2626 | BOOLEAN bUseEfuse; | |
2627 | BOOLEAN bEEPROMFile; | |
2628 | BOOLEAN bFroceEEPROMBuffer; | |
2629 | UCHAR EEPROMImage[1024]; | |
2630 | #endif // RTMP_EFUSE_SUPPORT // | |
2631 | #endif // RT30xx // | |
2632 | ||
2633 | #ifdef CONFIG_STA_SUPPORT | |
2634 | #endif // CONFIG_STA_SUPPORT // | |
2635 | ||
2636 | }; | |
2637 | ||
2638 | ||
2639 | ||
2640 | #ifdef TONE_RADAR_DETECT_SUPPORT | |
2641 | #define DELAYINTMASK 0x0013fffb | |
2642 | #define INTMASK 0x0013fffb | |
2643 | #define IndMask 0x0013fffc | |
2644 | #define RadarInt 0x00100000 | |
2645 | #else | |
2646 | #define DELAYINTMASK 0x0003fffb | |
2647 | #define INTMASK 0x0003fffb | |
2648 | #define IndMask 0x0003fffc | |
2649 | #endif // TONE_RADAR_DETECT_SUPPORT // | |
2650 | ||
2651 | #define RxINT 0x00000005 // Delayed Rx or indivi rx | |
2652 | #define TxDataInt 0x000000fa // Delayed Tx or indivi tx | |
2653 | #define TxMgmtInt 0x00000102 // Delayed Tx or indivi tx | |
2654 | #define TxCoherent 0x00020000 // tx coherent | |
2655 | #define RxCoherent 0x00010000 // rx coherent | |
2656 | #define McuCommand 0x00000200 // mcu | |
2657 | #define PreTBTTInt 0x00001000 // Pre-TBTT interrupt | |
2658 | #define TBTTInt 0x00000800 // TBTT interrupt | |
2659 | #define GPTimeOutInt 0x00008000 // GPtimeout interrupt | |
2660 | #define AutoWakeupInt 0x00004000 // AutoWakeupInt interrupt | |
2661 | #define FifoStaFullInt 0x00002000 // fifo statistics full interrupt | |
2662 | ||
2663 | ||
2664 | /*************************************************************************** | |
2665 | * Rx Path software control block related data structures | |
2666 | **************************************************************************/ | |
2667 | typedef struct _RX_BLK_ | |
2668 | { | |
2669 | // RXD_STRUC RxD; // sample | |
2670 | RT28XX_RXD_STRUC RxD; | |
2671 | PRXWI_STRUC pRxWI; | |
2672 | PHEADER_802_11 pHeader; | |
2673 | PNDIS_PACKET pRxPacket; | |
2674 | UCHAR *pData; | |
2675 | USHORT DataSize; | |
2676 | USHORT Flags; | |
2677 | UCHAR UserPriority; // for calculate TKIP MIC using | |
2678 | } RX_BLK; | |
2679 | ||
2680 | ||
2681 | #define RX_BLK_SET_FLAG(_pRxBlk, _flag) (_pRxBlk->Flags |= _flag) | |
2682 | #define RX_BLK_TEST_FLAG(_pRxBlk, _flag) (_pRxBlk->Flags & _flag) | |
2683 | #define RX_BLK_CLEAR_FLAG(_pRxBlk, _flag) (_pRxBlk->Flags &= ~(_flag)) | |
2684 | ||
2685 | ||
2686 | #define fRX_WDS 0x0001 | |
2687 | #define fRX_AMSDU 0x0002 | |
2688 | #define fRX_ARALINK 0x0004 | |
2689 | #define fRX_HTC 0x0008 | |
2690 | #define fRX_PAD 0x0010 | |
2691 | #define fRX_AMPDU 0x0020 | |
2692 | #define fRX_QOS 0x0040 | |
2693 | #define fRX_INFRA 0x0080 | |
2694 | #define fRX_EAP 0x0100 | |
2695 | #define fRX_MESH 0x0200 | |
2696 | #define fRX_APCLI 0x0400 | |
2697 | #define fRX_DLS 0x0800 | |
2698 | #define fRX_WPI 0x1000 | |
2699 | ||
2700 | #define LENGTH_AMSDU_SUBFRAMEHEAD 14 | |
2701 | #define LENGTH_ARALINK_SUBFRAMEHEAD 14 | |
2702 | #define LENGTH_ARALINK_HEADER_FIELD 2 | |
2703 | ||
2704 | ||
2705 | /*************************************************************************** | |
2706 | * Tx Path software control block related data structures | |
2707 | **************************************************************************/ | |
2708 | #define TX_UNKOWN_FRAME 0x00 | |
2709 | #define TX_MCAST_FRAME 0x01 | |
2710 | #define TX_LEGACY_FRAME 0x02 | |
2711 | #define TX_AMPDU_FRAME 0x04 | |
2712 | #define TX_AMSDU_FRAME 0x08 | |
2713 | #define TX_RALINK_FRAME 0x10 | |
2714 | #define TX_FRAG_FRAME 0x20 | |
2715 | ||
2716 | ||
2717 | // Currently the sizeof(TX_BLK) is 148 bytes. | |
2718 | typedef struct _TX_BLK_ | |
2719 | { | |
2720 | UCHAR QueIdx; | |
2721 | UCHAR TxFrameType; // Indicate the Transmission type of the all frames in one batch | |
2722 | UCHAR TotalFrameNum; // Total frame number want to send-out in one batch | |
2723 | USHORT TotalFragNum; // Total frame fragments required in one batch | |
2724 | USHORT TotalFrameLen; // Total length of all frames want to send-out in one batch | |
2725 | ||
2726 | QUEUE_HEADER TxPacketList; | |
2727 | MAC_TABLE_ENTRY *pMacEntry; // NULL: packet with 802.11 RA field is multicast/broadcast address | |
2728 | HTTRANSMIT_SETTING *pTransmit; | |
2729 | ||
2730 | // Following structure used for the characteristics of a specific packet. | |
2731 | PNDIS_PACKET pPacket; | |
2732 | PUCHAR pSrcBufHeader; // Reference to the head of sk_buff->data | |
2733 | PUCHAR pSrcBufData; // Reference to the sk_buff->data, will changed depends on hanlding progresss | |
2734 | UINT SrcBufLen; // Length of packet payload which not including Layer 2 header | |
2735 | PUCHAR pExtraLlcSnapEncap; // NULL means no extra LLC/SNAP is required | |
2736 | UCHAR HeaderBuf[96]; // TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP | |
2737 | UCHAR MpduHeaderLen; // 802.11 header length NOT including the padding | |
2738 | UCHAR HdrPadLen; // recording Header Padding Length; | |
2739 | UCHAR apidx; // The interface associated to this packet | |
2740 | UCHAR Wcid; // The MAC entry associated to this packet | |
2741 | UCHAR UserPriority; // priority class of packet | |
2742 | UCHAR FrameGap; // what kind of IFS this packet use | |
2743 | UCHAR MpduReqNum; // number of fragments of this frame | |
2744 | UCHAR TxRate; // TODO: Obsoleted? Should change to MCS? | |
2745 | UCHAR CipherAlg; // cipher alogrithm | |
2746 | PCIPHER_KEY pKey; | |
2747 | ||
2748 | ||
2749 | ||
2750 | USHORT Flags; //See following definitions for detail. | |
2751 | ||
2752 | //YOU SHOULD NOT TOUCH IT! Following parameters are used for hardware-depended layer. | |
2753 | ULONG Priv; // Hardware specific value saved in here. | |
2754 | ||
2755 | } TX_BLK, *PTX_BLK; | |
2756 | ||
2757 | ||
2758 | #define fTX_bRtsRequired 0x0001 // Indicate if need send RTS frame for protection. Not used in RT2860/RT2870. | |
2759 | #define fTX_bAckRequired 0x0002 // the packet need ack response | |
2760 | #define fTX_bPiggyBack 0x0004 // Legacy device use Piggback or not | |
2761 | #define fTX_bHTRate 0x0008 // allow to use HT rate | |
2762 | #define fTX_bForceNonQoS 0x0010 // force to transmit frame without WMM-QoS in HT mode | |
2763 | #define fTX_bAllowFrag 0x0020 // allow to fragment the packet, A-MPDU, A-MSDU, A-Ralink is not allowed to fragment | |
2764 | #define fTX_bMoreData 0x0040 // there are more data packets in PowerSave Queue | |
2765 | #define fTX_bWMM 0x0080 // QOS Data | |
2766 | #define fTX_bClearEAPFrame 0x0100 | |
2767 | ||
2768 | ||
2769 | ||
2770 | #ifdef CONFIG_STA_SUPPORT | |
2771 | #endif // CONFIG_STA_SUPPORT // | |
2772 | ||
2773 | ||
2774 | ||
2775 | ||
2776 | #define TX_BLK_SET_FLAG(_pTxBlk, _flag) (_pTxBlk->Flags |= _flag) | |
2777 | #define TX_BLK_TEST_FLAG(_pTxBlk, _flag) (((_pTxBlk->Flags & _flag) == _flag) ? 1 : 0) | |
2778 | #define TX_BLK_CLEAR_FLAG(_pTxBlk, _flag) (_pTxBlk->Flags &= ~(_flag)) | |
2779 | ||
2780 | ||
2781 | ||
2782 | ||
2783 | #ifdef RT_BIG_ENDIAN | |
2784 | /*************************************************************************** | |
2785 | * Endian conversion related functions | |
2786 | **************************************************************************/ | |
2787 | /* | |
2788 | ======================================================================== | |
2789 | ||
2790 | Routine Description: | |
2791 | Endian conversion of Tx/Rx descriptor . | |
2792 | ||
2793 | Arguments: | |
2794 | pAd Pointer to our adapter | |
2795 | pData Pointer to Tx/Rx descriptor | |
2796 | DescriptorType Direction of the frame | |
2797 | ||
2798 | Return Value: | |
2799 | None | |
2800 | ||
2801 | Note: | |
2802 | Call this function when read or update descriptor | |
2803 | ======================================================================== | |
2804 | */ | |
2805 | static inline VOID RTMPWIEndianChange( | |
2806 | IN PUCHAR pData, | |
2807 | IN ULONG DescriptorType) | |
2808 | { | |
2809 | int size; | |
2810 | int i; | |
2811 | ||
2812 | size = ((DescriptorType == TYPE_TXWI) ? TXWI_SIZE : RXWI_SIZE); | |
2813 | ||
2814 | if(DescriptorType == TYPE_TXWI) | |
2815 | { | |
2816 | *((UINT32 *)(pData)) = SWAP32(*((UINT32 *)(pData))); // Byte 0~3 | |
2817 | *((UINT32 *)(pData + 4)) = SWAP32(*((UINT32 *)(pData+4))); // Byte 4~7 | |
2818 | } | |
2819 | else | |
2820 | { | |
2821 | for(i=0; i < size/4 ; i++) | |
2822 | *(((UINT32 *)pData) +i) = SWAP32(*(((UINT32 *)pData)+i)); | |
2823 | } | |
2824 | } | |
2825 | ||
2826 | ||
2827 | #ifdef RTMP_MAC_PCI | |
2828 | static inline VOID WriteBackToDescriptor( | |
2829 | IN PUCHAR Dest, | |
2830 | IN PUCHAR Src, | |
2831 | IN BOOLEAN DoEncrypt, | |
2832 | IN ULONG DescriptorType) | |
2833 | { | |
2834 | UINT32 *p1, *p2; | |
2835 | ||
2836 | p1 = ((UINT32 *)Dest); | |
2837 | p2 = ((UINT32 *)Src); | |
2838 | ||
2839 | *p1 = *p2; | |
2840 | *(p1+2) = *(p2+2); | |
2841 | *(p1+3) = *(p2+3); | |
2842 | *(p1+1) = *(p2+1); // Word 1; this must be written back last | |
2843 | } | |
2844 | #endif // RTMP_MAC_PCI // | |
2845 | ||
2846 | ||
2847 | /* | |
2848 | ======================================================================== | |
2849 | ||
2850 | Routine Description: | |
2851 | Endian conversion of Tx/Rx descriptor . | |
2852 | ||
2853 | Arguments: | |
2854 | pAd Pointer to our adapter | |
2855 | pData Pointer to Tx/Rx descriptor | |
2856 | DescriptorType Direction of the frame | |
2857 | ||
2858 | Return Value: | |
2859 | None | |
2860 | ||
2861 | Note: | |
2862 | Call this function when read or update descriptor | |
2863 | ======================================================================== | |
2864 | */ | |
2865 | #ifdef RTMP_MAC_PCI | |
2866 | static inline VOID RTMPDescriptorEndianChange( | |
2867 | IN PUCHAR pData, | |
2868 | IN ULONG DescriptorType) | |
2869 | { | |
2870 | *((UINT32 *)(pData)) = SWAP32(*((UINT32 *)(pData))); // Byte 0~3 | |
2871 | *((UINT32 *)(pData + 8)) = SWAP32(*((UINT32 *)(pData+8))); // Byte 8~11 | |
2872 | *((UINT32 *)(pData +12)) = SWAP32(*((UINT32 *)(pData + 12))); // Byte 12~15 | |
2873 | *((UINT32 *)(pData + 4)) = SWAP32(*((UINT32 *)(pData + 4))); // Byte 4~7, this must be swapped last | |
2874 | } | |
2875 | #endif // RTMP_MAC_PCI // | |
2876 | ||
2877 | /* | |
2878 | ======================================================================== | |
2879 | ||
2880 | Routine Description: | |
2881 | Endian conversion of all kinds of 802.11 frames . | |
2882 | ||
2883 | Arguments: | |
2884 | pAd Pointer to our adapter | |
2885 | pData Pointer to the 802.11 frame structure | |
2886 | Dir Direction of the frame | |
2887 | FromRxDoneInt Caller is from RxDone interrupt | |
2888 | ||
2889 | Return Value: | |
2890 | None | |
2891 | ||
2892 | Note: | |
2893 | Call this function when read or update buffer data | |
2894 | ======================================================================== | |
2895 | */ | |
2896 | static inline VOID RTMPFrameEndianChange( | |
2897 | IN PRTMP_ADAPTER pAd, | |
2898 | IN PUCHAR pData, | |
2899 | IN ULONG Dir, | |
2900 | IN BOOLEAN FromRxDoneInt) | |
2901 | { | |
2902 | PHEADER_802_11 pFrame; | |
2903 | PUCHAR pMacHdr; | |
2904 | ||
2905 | // swab 16 bit fields - Frame Control field | |
2906 | if(Dir == DIR_READ) | |
2907 | { | |
2908 | *(USHORT *)pData = SWAP16(*(USHORT *)pData); | |
2909 | } | |
2910 | ||
2911 | pFrame = (PHEADER_802_11) pData; | |
2912 | pMacHdr = (PUCHAR) pFrame; | |
2913 | ||
2914 | // swab 16 bit fields - Duration/ID field | |
2915 | *(USHORT *)(pMacHdr + 2) = SWAP16(*(USHORT *)(pMacHdr + 2)); | |
2916 | ||
2917 | // swab 16 bit fields - Sequence Control field | |
2918 | *(USHORT *)(pMacHdr + 22) = SWAP16(*(USHORT *)(pMacHdr + 22)); | |
2919 | ||
2920 | if(pFrame->FC.Type == BTYPE_MGMT) | |
2921 | { | |
2922 | switch(pFrame->FC.SubType) | |
2923 | { | |
2924 | case SUBTYPE_ASSOC_REQ: | |
2925 | case SUBTYPE_REASSOC_REQ: | |
2926 | // swab 16 bit fields - CapabilityInfo field | |
2927 | pMacHdr += sizeof(HEADER_802_11); | |
2928 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2929 | ||
2930 | // swab 16 bit fields - Listen Interval field | |
2931 | pMacHdr += 2; | |
2932 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2933 | break; | |
2934 | ||
2935 | case SUBTYPE_ASSOC_RSP: | |
2936 | case SUBTYPE_REASSOC_RSP: | |
2937 | // swab 16 bit fields - CapabilityInfo field | |
2938 | pMacHdr += sizeof(HEADER_802_11); | |
2939 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2940 | ||
2941 | // swab 16 bit fields - Status Code field | |
2942 | pMacHdr += 2; | |
2943 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2944 | ||
2945 | // swab 16 bit fields - AID field | |
2946 | pMacHdr += 2; | |
2947 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2948 | break; | |
2949 | ||
2950 | case SUBTYPE_AUTH: | |
2951 | // If from APHandleRxDoneInterrupt routine, it is still a encrypt format. | |
2952 | // The convertion is delayed to RTMPHandleDecryptionDoneInterrupt. | |
2953 | if(!FromRxDoneInt && pFrame->FC.Wep == 1) | |
2954 | break; | |
2955 | else | |
2956 | { | |
2957 | // swab 16 bit fields - Auth Alg No. field | |
2958 | pMacHdr += sizeof(HEADER_802_11); | |
2959 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2960 | ||
2961 | // swab 16 bit fields - Auth Seq No. field | |
2962 | pMacHdr += 2; | |
2963 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2964 | ||
2965 | // swab 16 bit fields - Status Code field | |
2966 | pMacHdr += 2; | |
2967 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2968 | } | |
2969 | break; | |
2970 | ||
2971 | case SUBTYPE_BEACON: | |
2972 | case SUBTYPE_PROBE_RSP: | |
2973 | // swab 16 bit fields - BeaconInterval field | |
2974 | pMacHdr += (sizeof(HEADER_802_11) + TIMESTAMP_LEN); | |
2975 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2976 | ||
2977 | // swab 16 bit fields - CapabilityInfo field | |
2978 | pMacHdr += sizeof(USHORT); | |
2979 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2980 | break; | |
2981 | ||
2982 | case SUBTYPE_DEAUTH: | |
2983 | case SUBTYPE_DISASSOC: | |
2984 | // swab 16 bit fields - Reason code field | |
2985 | pMacHdr += sizeof(HEADER_802_11); | |
2986 | *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); | |
2987 | break; | |
2988 | } | |
2989 | } | |
2990 | else if( pFrame->FC.Type == BTYPE_DATA ) | |
2991 | { | |
2992 | } | |
2993 | else if(pFrame->FC.Type == BTYPE_CNTL) | |
2994 | { | |
2995 | switch(pFrame->FC.SubType) | |
2996 | { | |
2997 | case SUBTYPE_BLOCK_ACK_REQ: | |
2998 | { | |
2999 | PFRAME_BA_REQ pBAReq = (PFRAME_BA_REQ)pFrame; | |
3000 | *(USHORT *)(&pBAReq->BARControl) = SWAP16(*(USHORT *)(&pBAReq->BARControl)); | |
3001 | pBAReq->BAStartingSeq.word = SWAP16(pBAReq->BAStartingSeq.word); | |
3002 | } | |
3003 | break; | |
3004 | case SUBTYPE_BLOCK_ACK: | |
3005 | // For Block Ack packet, the HT_CONTROL field is in the same offset with Addr3 | |
3006 | *(UINT32 *)(&pFrame->Addr3[0]) = SWAP32(*(UINT32 *)(&pFrame->Addr3[0])); | |
3007 | break; | |
3008 | ||
3009 | case SUBTYPE_ACK: | |
3010 | //For ACK packet, the HT_CONTROL field is in the same offset with Addr2 | |
3011 | *(UINT32 *)(&pFrame->Addr2[0])= SWAP32(*(UINT32 *)(&pFrame->Addr2[0])); | |
3012 | break; | |
3013 | } | |
3014 | } | |
3015 | else | |
3016 | { | |
3017 | DBGPRINT(RT_DEBUG_ERROR,("Invalid Frame Type!!!\n")); | |
3018 | } | |
3019 | ||
3020 | // swab 16 bit fields - Frame Control | |
3021 | if(Dir == DIR_WRITE) | |
3022 | { | |
3023 | *(USHORT *)pData = SWAP16(*(USHORT *)pData); | |
3024 | } | |
3025 | } | |
3026 | #endif // RT_BIG_ENDIAN // | |
3027 | ||
3028 | ||
3029 | /*************************************************************************** | |
3030 | * Other static inline function definitions | |
3031 | **************************************************************************/ | |
3032 | static inline VOID ConvertMulticastIP2MAC( | |
3033 | IN PUCHAR pIpAddr, | |
3034 | IN PUCHAR *ppMacAddr, | |
3035 | IN UINT16 ProtoType) | |
3036 | { | |
3037 | if (pIpAddr == NULL) | |
3038 | return; | |
3039 | ||
3040 | if (ppMacAddr == NULL || *ppMacAddr == NULL) | |
3041 | return; | |
3042 | ||
3043 | switch (ProtoType) | |
3044 | { | |
3045 | case ETH_P_IPV6: | |
3046 | // memset(*ppMacAddr, 0, ETH_LENGTH_OF_ADDRESS); | |
3047 | *(*ppMacAddr) = 0x33; | |
3048 | *(*ppMacAddr + 1) = 0x33; | |
3049 | *(*ppMacAddr + 2) = pIpAddr[12]; | |
3050 | *(*ppMacAddr + 3) = pIpAddr[13]; | |
3051 | *(*ppMacAddr + 4) = pIpAddr[14]; | |
3052 | *(*ppMacAddr + 5) = pIpAddr[15]; | |
3053 | break; | |
3054 | ||
3055 | case ETH_P_IP: | |
3056 | default: | |
3057 | // memset(*ppMacAddr, 0, ETH_LENGTH_OF_ADDRESS); | |
3058 | *(*ppMacAddr) = 0x01; | |
3059 | *(*ppMacAddr + 1) = 0x00; | |
3060 | *(*ppMacAddr + 2) = 0x5e; | |
3061 | *(*ppMacAddr + 3) = pIpAddr[1] & 0x7f; | |
3062 | *(*ppMacAddr + 4) = pIpAddr[2]; | |
3063 | *(*ppMacAddr + 5) = pIpAddr[3]; | |
3064 | break; | |
3065 | } | |
3066 | ||
3067 | return; | |
3068 | } | |
3069 | ||
3070 | ||
3071 | char *GetPhyMode(int Mode); | |
3072 | char* GetBW(int BW); | |
3073 | ||
3074 | ||
3075 | ||
3076 | BOOLEAN RTMPCheckForHang( | |
3077 | IN NDIS_HANDLE MiniportAdapterContext); | |
3078 | ||
3079 | VOID RTMPHalt( | |
3080 | IN NDIS_HANDLE MiniportAdapterContext); | |
3081 | ||
3082 | // | |
3083 | // Private routines in rtmp_init.c | |
3084 | // | |
3085 | NDIS_STATUS RTMPAllocAdapterBlock( | |
3086 | IN PVOID handle, | |
3087 | OUT PRTMP_ADAPTER *ppAdapter); | |
3088 | ||
3089 | NDIS_STATUS RTMPAllocTxRxRingMemory( | |
3090 | IN PRTMP_ADAPTER pAd); | |
3091 | ||
3092 | NDIS_STATUS RTMPFindAdapter( | |
3093 | IN PRTMP_ADAPTER pAd, | |
3094 | IN NDIS_HANDLE WrapperConfigurationContext); | |
3095 | ||
3096 | NDIS_STATUS RTMPReadParametersHook( | |
3097 | IN PRTMP_ADAPTER pAd); | |
3098 | ||
3099 | NDIS_STATUS RTMPSetProfileParameters( | |
3100 | IN RTMP_ADAPTER *pAd, | |
3101 | IN PSTRING pBuffer); | |
3102 | ||
3103 | INT RTMPGetKeyParameter( | |
3104 | IN PSTRING key, | |
3105 | OUT PSTRING dest, | |
3106 | IN INT destsize, | |
3107 | IN PSTRING buffer, | |
3108 | IN BOOLEAN bTrimSpace); | |
3109 | ||
3110 | VOID RTMPFreeAdapter( | |
3111 | IN PRTMP_ADAPTER pAd); | |
3112 | ||
3113 | NDIS_STATUS NICReadRegParameters( | |
3114 | IN PRTMP_ADAPTER pAd, | |
3115 | IN NDIS_HANDLE WrapperConfigurationContext); | |
3116 | ||
3117 | #ifdef RTMP_RF_RW_SUPPORT | |
3118 | VOID NICInitRFRegisters( | |
3119 | IN PRTMP_ADAPTER pAd); | |
3120 | ||
3121 | VOID RtmpChipOpsRFHook( | |
3122 | IN RTMP_ADAPTER *pAd); | |
3123 | ||
3124 | NDIS_STATUS RT30xxWriteRFRegister( | |
3125 | IN PRTMP_ADAPTER pAd, | |
3126 | IN UCHAR regID, | |
3127 | IN UCHAR value); | |
3128 | ||
3129 | NDIS_STATUS RT30xxReadRFRegister( | |
3130 | IN PRTMP_ADAPTER pAd, | |
3131 | IN UCHAR regID, | |
3132 | IN PUCHAR pValue); | |
3133 | #endif // RTMP_RF_RW_SUPPORT // | |
3134 | ||
3135 | VOID NICReadEEPROMParameters( | |
3136 | IN PRTMP_ADAPTER pAd, | |
3137 | IN PUCHAR mac_addr); | |
3138 | ||
3139 | VOID NICInitAsicFromEEPROM( | |
3140 | IN PRTMP_ADAPTER pAd); | |
3141 | ||
3142 | ||
3143 | NDIS_STATUS NICInitializeAdapter( | |
3144 | IN PRTMP_ADAPTER pAd, | |
3145 | IN BOOLEAN bHardReset); | |
3146 | ||
3147 | NDIS_STATUS NICInitializeAsic( | |
3148 | IN PRTMP_ADAPTER pAd, | |
3149 | IN BOOLEAN bHardReset); | |
3150 | ||
3151 | VOID NICIssueReset( | |
3152 | IN PRTMP_ADAPTER pAd); | |
3153 | ||
3154 | VOID RTMPRingCleanUp( | |
3155 | IN PRTMP_ADAPTER pAd, | |
3156 | IN UCHAR RingType); | |
3157 | ||
3158 | VOID RxTest( | |
3159 | IN PRTMP_ADAPTER pAd); | |
3160 | ||
3161 | NDIS_STATUS DbgSendPacket( | |
3162 | IN PRTMP_ADAPTER pAd, | |
3163 | IN PNDIS_PACKET pPacket); | |
3164 | ||
3165 | VOID UserCfgInit( | |
3166 | IN PRTMP_ADAPTER pAd); | |
3167 | ||
3168 | VOID NICResetFromError( | |
3169 | IN PRTMP_ADAPTER pAd); | |
3170 | ||
3171 | NDIS_STATUS NICLoadFirmware( | |
3172 | IN PRTMP_ADAPTER pAd); | |
3173 | ||
3174 | VOID NICEraseFirmware( | |
3175 | IN PRTMP_ADAPTER pAd); | |
3176 | ||
3177 | NDIS_STATUS NICLoadRateSwitchingParams( | |
3178 | IN PRTMP_ADAPTER pAd); | |
3179 | ||
3180 | BOOLEAN NICCheckForHang( | |
3181 | IN PRTMP_ADAPTER pAd); | |
3182 | ||
3183 | VOID NICUpdateFifoStaCounters( | |
3184 | IN PRTMP_ADAPTER pAd); | |
3185 | ||
3186 | VOID NICUpdateRawCounters( | |
3187 | IN PRTMP_ADAPTER pAd); | |
3188 | ||
3189 | VOID RTMPZeroMemory( | |
3190 | IN PVOID pSrc, | |
3191 | IN ULONG Length); | |
3192 | ||
3193 | ULONG RTMPCompareMemory( | |
3194 | IN PVOID pSrc1, | |
3195 | IN PVOID pSrc2, | |
3196 | IN ULONG Length); | |
3197 | ||
3198 | VOID RTMPMoveMemory( | |
3199 | OUT PVOID pDest, | |
3200 | IN PVOID pSrc, | |
3201 | IN ULONG Length); | |
3202 | ||
3203 | VOID AtoH( | |
3204 | PSTRING src, | |
3205 | PUCHAR dest, | |
3206 | int destlen); | |
3207 | ||
3208 | UCHAR BtoH( | |
3209 | char ch); | |
3210 | ||
3211 | VOID RTMPPatchMacBbpBug( | |
3212 | IN PRTMP_ADAPTER pAd); | |
3213 | ||
3214 | VOID RTMPPatchCardBus( | |
3215 | IN PRTMP_ADAPTER pAdapter); | |
3216 | ||
3217 | VOID RTMPPatchRalinkCardBus( | |
3218 | IN PRTMP_ADAPTER pAdapter, | |
3219 | IN ULONG Bus); | |
3220 | ||
3221 | ULONG RTMPReadCBConfig( | |
3222 | IN ULONG Bus, | |
3223 | IN ULONG Slot, | |
3224 | IN ULONG Func, | |
3225 | IN ULONG Offset); | |
3226 | ||
3227 | VOID RTMPWriteCBConfig( | |
3228 | IN ULONG Bus, | |
3229 | IN ULONG Slot, | |
3230 | IN ULONG Func, | |
3231 | IN ULONG Offset, | |
3232 | IN ULONG Value); | |
3233 | ||
3234 | VOID RTMPInitTimer( | |
3235 | IN PRTMP_ADAPTER pAd, | |
3236 | IN PRALINK_TIMER_STRUCT pTimer, | |
3237 | IN PVOID pTimerFunc, | |
3238 | IN PVOID pData, | |
3239 | IN BOOLEAN Repeat); | |
3240 | ||
3241 | VOID RTMPSetTimer( | |
3242 | IN PRALINK_TIMER_STRUCT pTimer, | |
3243 | IN ULONG Value); | |
3244 | ||
3245 | ||
3246 | VOID RTMPModTimer( | |
3247 | IN PRALINK_TIMER_STRUCT pTimer, | |
3248 | IN ULONG Value); | |
3249 | ||
3250 | VOID RTMPCancelTimer( | |
3251 | IN PRALINK_TIMER_STRUCT pTimer, | |
3252 | OUT BOOLEAN *pCancelled); | |
3253 | ||
3254 | VOID RTMPSetLED( | |
3255 | IN PRTMP_ADAPTER pAd, | |
3256 | IN UCHAR Status); | |
3257 | ||
3258 | VOID RTMPSetSignalLED( | |
3259 | IN PRTMP_ADAPTER pAd, | |
3260 | IN NDIS_802_11_RSSI Dbm); | |
3261 | ||
3262 | ||
3263 | VOID RTMPEnableRxTx( | |
3264 | IN PRTMP_ADAPTER pAd); | |
3265 | ||
3266 | // | |
3267 | // prototype in action.c | |
3268 | // | |
3269 | VOID ActionStateMachineInit( | |
3270 | IN PRTMP_ADAPTER pAd, | |
3271 | IN STATE_MACHINE *S, | |
3272 | OUT STATE_MACHINE_FUNC Trans[]); | |
3273 | ||
3274 | VOID MlmeADDBAAction( | |
3275 | IN PRTMP_ADAPTER pAd, | |
3276 | IN MLME_QUEUE_ELEM *Elem); | |
3277 | ||
3278 | VOID MlmeDELBAAction( | |
3279 | IN PRTMP_ADAPTER pAd, | |
3280 | IN MLME_QUEUE_ELEM *Elem); | |
3281 | ||
3282 | VOID MlmeDLSAction( | |
3283 | IN PRTMP_ADAPTER pAd, | |
3284 | IN MLME_QUEUE_ELEM *Elem); | |
3285 | ||
3286 | VOID MlmeInvalidAction( | |
3287 | IN PRTMP_ADAPTER pAd, | |
3288 | IN MLME_QUEUE_ELEM *Elem); | |
3289 | ||
3290 | VOID MlmeQOSAction( | |
3291 | IN PRTMP_ADAPTER pAd, | |
3292 | IN MLME_QUEUE_ELEM *Elem); | |
3293 | ||
3294 | #ifdef DOT11_N_SUPPORT | |
3295 | VOID PeerAddBAReqAction( | |
3296 | IN PRTMP_ADAPTER pAd, | |
3297 | IN MLME_QUEUE_ELEM *Elem); | |
3298 | ||
3299 | VOID PeerAddBARspAction( | |
3300 | IN PRTMP_ADAPTER pAd, | |
3301 | IN MLME_QUEUE_ELEM *Elem); | |
3302 | ||
3303 | VOID PeerDelBAAction( | |
3304 | IN PRTMP_ADAPTER pAd, | |
3305 | IN MLME_QUEUE_ELEM *Elem); | |
3306 | ||
3307 | VOID PeerBAAction( | |
3308 | IN PRTMP_ADAPTER pAd, | |
3309 | IN MLME_QUEUE_ELEM *Elem); | |
3310 | #endif // DOT11_N_SUPPORT // | |
3311 | ||
3312 | VOID SendPSMPAction( | |
3313 | IN PRTMP_ADAPTER pAd, | |
3314 | IN UCHAR Wcid, | |
3315 | IN UCHAR Psmp); | |
3316 | ||
3317 | ||
3318 | VOID PeerRMAction( | |
3319 | IN PRTMP_ADAPTER pAd, | |
3320 | IN MLME_QUEUE_ELEM *Elem); | |
3321 | ||
3322 | VOID PeerPublicAction( | |
3323 | IN PRTMP_ADAPTER pAd, | |
3324 | IN MLME_QUEUE_ELEM *Elem); | |
3325 | ||
3326 | #ifdef CONFIG_STA_SUPPORT | |
3327 | VOID StaPublicAction( | |
3328 | IN PRTMP_ADAPTER pAd, | |
3329 | IN UCHAR Bss2040Coexist); | |
3330 | #endif // CONFIG_STA_SUPPORT // | |
3331 | ||
3332 | ||
3333 | VOID PeerBSSTranAction( | |
3334 | IN PRTMP_ADAPTER pAd, | |
3335 | IN MLME_QUEUE_ELEM *Elem); | |
3336 | ||
3337 | #ifdef DOT11_N_SUPPORT | |
3338 | VOID PeerHTAction( | |
3339 | IN PRTMP_ADAPTER pAd, | |
3340 | IN MLME_QUEUE_ELEM *Elem); | |
3341 | #endif // DOT11_N_SUPPORT // | |
3342 | ||
3343 | VOID PeerQOSAction( | |
3344 | IN PRTMP_ADAPTER pAd, | |
3345 | IN MLME_QUEUE_ELEM *Elem); | |
3346 | ||
3347 | #ifdef QOS_DLS_SUPPORT | |
3348 | VOID PeerDLSAction( | |
3349 | IN PRTMP_ADAPTER pAd, | |
3350 | IN MLME_QUEUE_ELEM *Elem); | |
3351 | #endif // QOS_DLS_SUPPORT // | |
3352 | ||
3353 | #ifdef CONFIG_STA_SUPPORT | |
3354 | #ifdef QOS_DLS_SUPPORT | |
3355 | VOID DlsParmFill( | |
3356 | IN PRTMP_ADAPTER pAd, | |
3357 | IN OUT MLME_DLS_REQ_STRUCT *pDlsReq, | |
3358 | IN PRT_802_11_DLS pDls, | |
3359 | IN USHORT reason); | |
3360 | #endif // QOS_DLS_SUPPORT // | |
3361 | #endif // CONFIG_STA_SUPPORT // | |
3362 | ||
3363 | #ifdef DOT11_N_SUPPORT | |
3364 | VOID RECBATimerTimeout( | |
3365 | IN PVOID SystemSpecific1, | |
3366 | IN PVOID FunctionContext, | |
3367 | IN PVOID SystemSpecific2, | |
3368 | IN PVOID SystemSpecific3); | |
3369 | ||
3370 | VOID ORIBATimerTimeout( | |
3371 | IN PRTMP_ADAPTER pAd); | |
3372 | ||
3373 | VOID SendRefreshBAR( | |
3374 | IN PRTMP_ADAPTER pAd, | |
3375 | IN MAC_TABLE_ENTRY *pEntry); | |
3376 | ||
3377 | #ifdef DOT11N_DRAFT3 | |
3378 | VOID SendBSS2040CoexistMgmtAction( | |
3379 | IN PRTMP_ADAPTER pAd, | |
3380 | IN UCHAR Wcid, | |
3381 | IN UCHAR apidx, | |
3382 | IN UCHAR InfoReq); | |
3383 | ||
3384 | VOID SendNotifyBWActionFrame( | |
3385 | IN PRTMP_ADAPTER pAd, | |
3386 | IN UCHAR Wcid, | |
3387 | IN UCHAR apidx); | |
3388 | ||
3389 | BOOLEAN ChannelSwitchSanityCheck( | |
3390 | IN PRTMP_ADAPTER pAd, | |
3391 | IN UCHAR Wcid, | |
3392 | IN UCHAR NewChannel, | |
3393 | IN UCHAR Secondary); | |
3394 | ||
3395 | VOID ChannelSwitchAction( | |
3396 | IN PRTMP_ADAPTER pAd, | |
3397 | IN UCHAR Wcid, | |
3398 | IN UCHAR Channel, | |
3399 | IN UCHAR Secondary); | |
3400 | ||
3401 | ULONG BuildIntolerantChannelRep( | |
3402 | IN PRTMP_ADAPTER pAd, | |
3403 | IN PUCHAR pDest); | |
3404 | ||
3405 | VOID Update2040CoexistFrameAndNotify( | |
3406 | IN PRTMP_ADAPTER pAd, | |
3407 | IN UCHAR Wcid, | |
3408 | IN BOOLEAN bAddIntolerantCha); | |
3409 | ||
3410 | VOID Send2040CoexistAction( | |
3411 | IN PRTMP_ADAPTER pAd, | |
3412 | IN UCHAR Wcid, | |
3413 | IN BOOLEAN bAddIntolerantCha); | |
3414 | #endif // DOT11N_DRAFT3 // | |
3415 | #endif // DOT11_N_SUPPORT // | |
3416 | ||
3417 | VOID ActHeaderInit( | |
3418 | IN PRTMP_ADAPTER pAd, | |
3419 | IN OUT PHEADER_802_11 pHdr80211, | |
3420 | IN PUCHAR Addr1, | |
3421 | IN PUCHAR Addr2, | |
3422 | IN PUCHAR Addr3); | |
3423 | ||
3424 | VOID BarHeaderInit( | |
3425 | IN PRTMP_ADAPTER pAd, | |
3426 | IN OUT PFRAME_BAR pCntlBar, | |
3427 | IN PUCHAR pDA, | |
3428 | IN PUCHAR pSA); | |
3429 | ||
3430 | VOID InsertActField( | |
3431 | IN PRTMP_ADAPTER pAd, | |
3432 | OUT PUCHAR pFrameBuf, | |
3433 | OUT PULONG pFrameLen, | |
3434 | IN UINT8 Category, | |
3435 | IN UINT8 ActCode); | |
3436 | ||
3437 | BOOLEAN QosBADataParse( | |
3438 | IN PRTMP_ADAPTER pAd, | |
3439 | IN BOOLEAN bAMSDU, | |
3440 | IN PUCHAR p8023Header, | |
3441 | IN UCHAR WCID, | |
3442 | IN UCHAR TID, | |
3443 | IN USHORT Sequence, | |
3444 | IN UCHAR DataOffset, | |
3445 | IN USHORT Datasize, | |
3446 | IN UINT CurRxIndex); | |
3447 | ||
3448 | #ifdef DOT11_N_SUPPORT | |
3449 | BOOLEAN CntlEnqueueForRecv( | |
3450 | IN PRTMP_ADAPTER pAd, | |
3451 | IN ULONG Wcid, | |
3452 | IN ULONG MsgLen, | |
3453 | IN PFRAME_BA_REQ pMsg); | |
3454 | ||
3455 | VOID BaAutoManSwitch( | |
3456 | IN PRTMP_ADAPTER pAd); | |
3457 | #endif // DOT11_N_SUPPORT // | |
3458 | ||
3459 | VOID HTIOTCheck( | |
3460 | IN PRTMP_ADAPTER pAd, | |
3461 | IN UCHAR BatRecIdx); | |
3462 | ||
3463 | // | |
3464 | // Private routines in rtmp_data.c | |
3465 | // | |
3466 | BOOLEAN RTMPHandleRxDoneInterrupt( | |
3467 | IN PRTMP_ADAPTER pAd); | |
3468 | ||
3469 | VOID RTMPHandleTxDoneInterrupt( | |
3470 | IN PRTMP_ADAPTER pAd); | |
3471 | ||
3472 | BOOLEAN RTMPHandleTxRingDmaDoneInterrupt( | |
3473 | IN PRTMP_ADAPTER pAd, | |
3474 | IN INT_SOURCE_CSR_STRUC TxRingBitmap); | |
3475 | ||
3476 | VOID RTMPHandleMgmtRingDmaDoneInterrupt( | |
3477 | IN PRTMP_ADAPTER pAd); | |
3478 | ||
3479 | VOID RTMPHandleTBTTInterrupt( | |
3480 | IN PRTMP_ADAPTER pAd); | |
3481 | ||
3482 | VOID RTMPHandlePreTBTTInterrupt( | |
3483 | IN PRTMP_ADAPTER pAd); | |
3484 | ||
3485 | void RTMPHandleTwakeupInterrupt( | |
3486 | IN PRTMP_ADAPTER pAd); | |
3487 | ||
3488 | VOID RTMPHandleRxCoherentInterrupt( | |
3489 | IN PRTMP_ADAPTER pAd); | |
3490 | ||
3491 | ||
3492 | BOOLEAN TxFrameIsAggregatible( | |
3493 | IN PRTMP_ADAPTER pAd, | |
3494 | IN PUCHAR pPrevAddr1, | |
3495 | IN PUCHAR p8023hdr); | |
3496 | ||
3497 | BOOLEAN PeerIsAggreOn( | |
3498 | IN PRTMP_ADAPTER pAd, | |
3499 | IN ULONG TxRate, | |
3500 | IN PMAC_TABLE_ENTRY pMacEntry); | |
3501 | ||
3502 | ||
3503 | NDIS_STATUS Sniff2BytesFromNdisBuffer( | |
3504 | IN PNDIS_BUFFER pFirstBuffer, | |
3505 | IN UCHAR DesiredOffset, | |
3506 | OUT PUCHAR pByte0, | |
3507 | OUT PUCHAR pByte1); | |
3508 | ||
3509 | NDIS_STATUS STASendPacket( | |
3510 | IN PRTMP_ADAPTER pAd, | |
3511 | IN PNDIS_PACKET pPacket); | |
3512 | ||
3513 | VOID STASendPackets( | |
3514 | IN NDIS_HANDLE MiniportAdapterContext, | |
3515 | IN PPNDIS_PACKET ppPacketArray, | |
3516 | IN UINT NumberOfPackets); | |
3517 | ||
3518 | VOID RTMPDeQueuePacket( | |
3519 | IN PRTMP_ADAPTER pAd, | |
3520 | IN BOOLEAN bIntContext, | |
3521 | IN UCHAR QueIdx, | |
3522 | IN UCHAR Max_Tx_Packets); | |
3523 | ||
3524 | NDIS_STATUS RTMPHardTransmit( | |
3525 | IN PRTMP_ADAPTER pAd, | |
3526 | IN PNDIS_PACKET pPacket, | |
3527 | IN UCHAR QueIdx, | |
3528 | OUT PULONG pFreeTXDLeft); | |
3529 | ||
3530 | NDIS_STATUS STAHardTransmit( | |
3531 | IN PRTMP_ADAPTER pAd, | |
3532 | IN TX_BLK *pTxBlk, | |
3533 | IN UCHAR QueIdx); | |
3534 | ||
3535 | VOID STARxEAPOLFrameIndicate( | |
3536 | IN PRTMP_ADAPTER pAd, | |
3537 | IN MAC_TABLE_ENTRY *pEntry, | |
3538 | IN RX_BLK *pRxBlk, | |
3539 | IN UCHAR FromWhichBSSID); | |
3540 | ||
3541 | NDIS_STATUS RTMPFreeTXDRequest( | |
3542 | IN PRTMP_ADAPTER pAd, | |
3543 | IN UCHAR RingType, | |
3544 | IN UCHAR NumberRequired, | |
3545 | IN PUCHAR FreeNumberIs); | |
3546 | ||
3547 | NDIS_STATUS MlmeHardTransmit( | |
3548 | IN PRTMP_ADAPTER pAd, | |
3549 | IN UCHAR QueIdx, | |
3550 | IN PNDIS_PACKET pPacket); | |
3551 | ||
3552 | NDIS_STATUS MlmeHardTransmitMgmtRing( | |
3553 | IN PRTMP_ADAPTER pAd, | |
3554 | IN UCHAR QueIdx, | |
3555 | IN PNDIS_PACKET pPacket); | |
3556 | ||
3557 | #ifdef RTMP_MAC_PCI | |
3558 | NDIS_STATUS MlmeHardTransmitTxRing( | |
3559 | IN PRTMP_ADAPTER pAd, | |
3560 | IN UCHAR QueIdx, | |
3561 | IN PNDIS_PACKET pPacket); | |
3562 | ||
3563 | NDIS_STATUS MlmeDataHardTransmit( | |
3564 | IN PRTMP_ADAPTER pAd, | |
3565 | IN UCHAR QueIdx, | |
3566 | IN PNDIS_PACKET pPacket); | |
3567 | ||
3568 | VOID RTMPWriteTxDescriptor( | |
3569 | IN PRTMP_ADAPTER pAd, | |
3570 | IN PTXD_STRUC pTxD, | |
3571 | IN BOOLEAN bWIV, | |
3572 | IN UCHAR QSEL); | |
3573 | #endif // RTMP_MAC_PCI // | |
3574 | ||
3575 | USHORT RTMPCalcDuration( | |
3576 | IN PRTMP_ADAPTER pAd, | |
3577 | IN UCHAR Rate, | |
3578 | IN ULONG Size); | |
3579 | ||
3580 | VOID RTMPWriteTxWI( | |
3581 | IN PRTMP_ADAPTER pAd, | |
3582 | IN PTXWI_STRUC pTxWI, | |
3583 | IN BOOLEAN FRAG, | |
3584 | IN BOOLEAN CFACK, | |
3585 | IN BOOLEAN InsTimestamp, | |
3586 | IN BOOLEAN AMPDU, | |
3587 | IN BOOLEAN Ack, | |
3588 | IN BOOLEAN NSeq, // HW new a sequence. | |
3589 | IN UCHAR BASize, | |
3590 | IN UCHAR WCID, | |
3591 | IN ULONG Length, | |
3592 | IN UCHAR PID, | |
3593 | IN UCHAR TID, | |
3594 | IN UCHAR TxRate, | |
3595 | IN UCHAR Txopmode, | |
3596 | IN BOOLEAN CfAck, | |
3597 | IN HTTRANSMIT_SETTING *pTransmit); | |
3598 | ||
3599 | ||
3600 | VOID RTMPWriteTxWI_Data( | |
3601 | IN PRTMP_ADAPTER pAd, | |
3602 | IN OUT PTXWI_STRUC pTxWI, | |
3603 | IN TX_BLK *pTxBlk); | |
3604 | ||
3605 | ||
3606 | VOID RTMPWriteTxWI_Cache( | |
3607 | IN PRTMP_ADAPTER pAd, | |
3608 | IN OUT PTXWI_STRUC pTxWI, | |
3609 | IN TX_BLK *pTxBlk); | |
3610 | ||
3611 | VOID RTMPSuspendMsduTransmission( | |
3612 | IN PRTMP_ADAPTER pAd); | |
3613 | ||
3614 | VOID RTMPResumeMsduTransmission( | |
3615 | IN PRTMP_ADAPTER pAd); | |
3616 | ||
3617 | NDIS_STATUS MiniportMMRequest( | |
3618 | IN PRTMP_ADAPTER pAd, | |
3619 | IN UCHAR QueIdx, | |
3620 | IN PUCHAR pData, | |
3621 | IN UINT Length); | |
3622 | ||
3623 | //+++mark by shiang, now this function merge to MiniportMMRequest() | |
3624 | //---mark by shiang, now this function merge to MiniportMMRequest() | |
3625 | ||
3626 | VOID RTMPSendNullFrame( | |
3627 | IN PRTMP_ADAPTER pAd, | |
3628 | IN UCHAR TxRate, | |
3629 | IN BOOLEAN bQosNull); | |
3630 | ||
3631 | VOID RTMPSendDisassociationFrame( | |
3632 | IN PRTMP_ADAPTER pAd); | |
3633 | ||
3634 | VOID RTMPSendRTSFrame( | |
3635 | IN PRTMP_ADAPTER pAd, | |
3636 | IN PUCHAR pDA, | |
3637 | IN unsigned int NextMpduSize, | |
3638 | IN UCHAR TxRate, | |
3639 | IN UCHAR RTSRate, | |
3640 | IN USHORT AckDuration, | |
3641 | IN UCHAR QueIdx, | |
3642 | IN UCHAR FrameGap); | |
3643 | ||
3644 | ||
3645 | NDIS_STATUS RTMPApplyPacketFilter( | |
3646 | IN PRTMP_ADAPTER pAd, | |
3647 | IN PRT28XX_RXD_STRUC pRxD, | |
3648 | IN PHEADER_802_11 pHeader); | |
3649 | ||
3650 | PQUEUE_HEADER RTMPCheckTxSwQueue( | |
3651 | IN PRTMP_ADAPTER pAd, | |
3652 | OUT UCHAR *QueIdx); | |
3653 | ||
3654 | #ifdef CONFIG_STA_SUPPORT | |
3655 | VOID RTMPReportMicError( | |
3656 | IN PRTMP_ADAPTER pAd, | |
3657 | IN PCIPHER_KEY pWpaKey); | |
3658 | ||
3659 | VOID WpaMicFailureReportFrame( | |
3660 | IN PRTMP_ADAPTER pAd, | |
3661 | IN MLME_QUEUE_ELEM *Elem); | |
3662 | ||
3663 | VOID WpaDisassocApAndBlockAssoc( | |
3664 | IN PVOID SystemSpecific1, | |
3665 | IN PVOID FunctionContext, | |
3666 | IN PVOID SystemSpecific2, | |
3667 | IN PVOID SystemSpecific3); | |
3668 | ||
3669 | VOID WpaStaPairwiseKeySetting( | |
3670 | IN PRTMP_ADAPTER pAd); | |
3671 | ||
3672 | VOID WpaStaGroupKeySetting( | |
3673 | IN PRTMP_ADAPTER pAd); | |
3674 | ||
3675 | #endif // CONFIG_STA_SUPPORT // | |
3676 | ||
3677 | NDIS_STATUS RTMPCloneNdisPacket( | |
3678 | IN PRTMP_ADAPTER pAd, | |
3679 | IN BOOLEAN pInsAMSDUHdr, | |
3680 | IN PNDIS_PACKET pInPacket, | |
3681 | OUT PNDIS_PACKET *ppOutPacket); | |
3682 | ||
3683 | NDIS_STATUS RTMPAllocateNdisPacket( | |
3684 | IN PRTMP_ADAPTER pAd, | |
3685 | IN PNDIS_PACKET *pPacket, | |
3686 | IN PUCHAR pHeader, | |
3687 | IN UINT HeaderLen, | |
3688 | IN PUCHAR pData, | |
3689 | IN UINT DataLen); | |
3690 | ||
3691 | VOID RTMPFreeNdisPacket( | |
3692 | IN PRTMP_ADAPTER pAd, | |
3693 | IN PNDIS_PACKET pPacket); | |
3694 | ||
3695 | BOOLEAN RTMPFreeTXDUponTxDmaDone( | |
3696 | IN PRTMP_ADAPTER pAd, | |
3697 | IN UCHAR QueIdx); | |
3698 | ||
3699 | BOOLEAN RTMPCheckDHCPFrame( | |
3700 | IN PRTMP_ADAPTER pAd, | |
3701 | IN PNDIS_PACKET pPacket); | |
3702 | ||
3703 | ||
3704 | BOOLEAN RTMPCheckEtherType( | |
3705 | IN PRTMP_ADAPTER pAd, | |
3706 | IN PNDIS_PACKET pPacket); | |
3707 | ||
3708 | ||
3709 | VOID RTMPCckBbpTuning( | |
3710 | IN PRTMP_ADAPTER pAd, | |
3711 | IN UINT TxRate); | |
3712 | ||
3713 | // | |
3714 | // Private routines in rtmp_wep.c | |
3715 | // | |
3716 | VOID RTMPInitWepEngine( | |
3717 | IN PRTMP_ADAPTER pAd, | |
3718 | IN PUCHAR pKey, | |
3719 | IN UCHAR KeyId, | |
3720 | IN UCHAR KeyLen, | |
3721 | IN PUCHAR pDest); | |
3722 | ||
3723 | VOID RTMPEncryptData( | |
3724 | IN PRTMP_ADAPTER pAd, | |
3725 | IN PUCHAR pSrc, | |
3726 | IN PUCHAR pDest, | |
3727 | IN UINT Len); | |
3728 | ||
3729 | BOOLEAN RTMPDecryptData( | |
3730 | IN PRTMP_ADAPTER pAdapter, | |
3731 | IN PUCHAR pSrc, | |
3732 | IN UINT Len, | |
3733 | IN UINT idx); | |
3734 | ||
3735 | BOOLEAN RTMPSoftDecryptWEP( | |
3736 | IN PRTMP_ADAPTER pAd, | |
3737 | IN PUCHAR pData, | |
3738 | IN ULONG DataByteCnt, | |
3739 | IN PCIPHER_KEY pGroupKey); | |
3740 | ||
3741 | VOID RTMPSetICV( | |
3742 | IN PRTMP_ADAPTER pAd, | |
3743 | IN PUCHAR pDest); | |
3744 | ||
3745 | VOID ARCFOUR_INIT( | |
3746 | IN PARCFOURCONTEXT Ctx, | |
3747 | IN PUCHAR pKey, | |
3748 | IN UINT KeyLen); | |
3749 | ||
3750 | UCHAR ARCFOUR_BYTE( | |
3751 | IN PARCFOURCONTEXT Ctx); | |
3752 | ||
3753 | VOID ARCFOUR_DECRYPT( | |
3754 | IN PARCFOURCONTEXT Ctx, | |
3755 | IN PUCHAR pDest, | |
3756 | IN PUCHAR pSrc, | |
3757 | IN UINT Len); | |
3758 | ||
3759 | VOID ARCFOUR_ENCRYPT( | |
3760 | IN PARCFOURCONTEXT Ctx, | |
3761 | IN PUCHAR pDest, | |
3762 | IN PUCHAR pSrc, | |
3763 | IN UINT Len); | |
3764 | ||
3765 | VOID WPAARCFOUR_ENCRYPT( | |
3766 | IN PARCFOURCONTEXT Ctx, | |
3767 | IN PUCHAR pDest, | |
3768 | IN PUCHAR pSrc, | |
3769 | IN UINT Len); | |
3770 | ||
3771 | UINT RTMP_CALC_FCS32( | |
3772 | IN UINT Fcs, | |
3773 | IN PUCHAR Cp, | |
3774 | IN INT Len); | |
3775 | ||
3776 | // | |
3777 | // MLME routines | |
3778 | // | |
3779 | ||
3780 | // Asic/RF/BBP related functions | |
3781 | ||
3782 | VOID AsicAdjustTxPower( | |
3783 | IN PRTMP_ADAPTER pAd); | |
3784 | ||
3785 | VOID AsicUpdateProtect( | |
3786 | IN PRTMP_ADAPTER pAd, | |
3787 | IN USHORT OperaionMode, | |
3788 | IN UCHAR SetMask, | |
3789 | IN BOOLEAN bDisableBGProtect, | |
3790 | IN BOOLEAN bNonGFExist); | |
3791 | ||
3792 | VOID AsicSwitchChannel( | |
3793 | IN PRTMP_ADAPTER pAd, | |
3794 | IN UCHAR Channel, | |
3795 | IN BOOLEAN bScan); | |
3796 | ||
3797 | VOID AsicLockChannel( | |
3798 | IN PRTMP_ADAPTER pAd, | |
3799 | IN UCHAR Channel) ; | |
3800 | ||
3801 | VOID AsicAntennaSelect( | |
3802 | IN PRTMP_ADAPTER pAd, | |
3803 | IN UCHAR Channel); | |
3804 | ||
3805 | VOID AsicAntennaSetting( | |
3806 | IN PRTMP_ADAPTER pAd, | |
3807 | IN ABGBAND_STATE BandState); | |
3808 | ||
3809 | VOID AsicRfTuningExec( | |
3810 | IN PVOID SystemSpecific1, | |
3811 | IN PVOID FunctionContext, | |
3812 | IN PVOID SystemSpecific2, | |
3813 | IN PVOID SystemSpecific3); | |
3814 | ||
3815 | #ifdef CONFIG_STA_SUPPORT | |
3816 | ||
3817 | VOID AsicResetBBPAgent( | |
3818 | IN PRTMP_ADAPTER pAd); | |
3819 | ||
3820 | VOID AsicSleepThenAutoWakeup( | |
3821 | IN PRTMP_ADAPTER pAd, | |
3822 | IN USHORT TbttNumToNextWakeUp); | |
3823 | ||
3824 | VOID AsicForceSleep( | |
3825 | IN PRTMP_ADAPTER pAd); | |
3826 | ||
3827 | VOID AsicForceWakeup( | |
3828 | IN PRTMP_ADAPTER pAd, | |
3829 | IN BOOLEAN bFromTx); | |
3830 | #endif // CONFIG_STA_SUPPORT // | |
3831 | ||
3832 | VOID AsicSetBssid( | |
3833 | IN PRTMP_ADAPTER pAd, | |
3834 | IN PUCHAR pBssid); | |
3835 | ||
3836 | VOID AsicSetMcastWC( | |
3837 | IN PRTMP_ADAPTER pAd); | |
3838 | ||
3839 | ||
3840 | VOID AsicDelWcidTab( | |
3841 | IN PRTMP_ADAPTER pAd, | |
3842 | IN UCHAR Wcid); | |
3843 | ||
3844 | VOID AsicEnableRDG( | |
3845 | IN PRTMP_ADAPTER pAd); | |
3846 | ||
3847 | VOID AsicDisableRDG( | |
3848 | IN PRTMP_ADAPTER pAd); | |
3849 | ||
3850 | VOID AsicDisableSync( | |
3851 | IN PRTMP_ADAPTER pAd); | |
3852 | ||
3853 | VOID AsicEnableBssSync( | |
3854 | IN PRTMP_ADAPTER pAd); | |
3855 | ||
3856 | VOID AsicEnableIbssSync( | |
3857 | IN PRTMP_ADAPTER pAd); | |
3858 | ||
3859 | VOID AsicSetEdcaParm( | |
3860 | IN PRTMP_ADAPTER pAd, | |
3861 | IN PEDCA_PARM pEdcaParm); | |
3862 | ||
3863 | VOID AsicSetSlotTime( | |
3864 | IN PRTMP_ADAPTER pAd, | |
3865 | IN BOOLEAN bUseShortSlotTime); | |
3866 | ||
3867 | ||
3868 | VOID AsicAddSharedKeyEntry( | |
3869 | IN PRTMP_ADAPTER pAd, | |
3870 | IN UCHAR BssIndex, | |
3871 | IN UCHAR KeyIdx, | |
3872 | IN UCHAR CipherAlg, | |
3873 | IN PUCHAR pKey, | |
3874 | IN PUCHAR pTxMic, | |
3875 | IN PUCHAR pRxMic); | |
3876 | ||
3877 | VOID AsicRemoveSharedKeyEntry( | |
3878 | IN PRTMP_ADAPTER pAd, | |
3879 | IN UCHAR BssIndex, | |
3880 | IN UCHAR KeyIdx); | |
3881 | ||
3882 | VOID AsicUpdateWCIDAttribute( | |
3883 | IN PRTMP_ADAPTER pAd, | |
3884 | IN USHORT WCID, | |
3885 | IN UCHAR BssIndex, | |
3886 | IN UCHAR CipherAlg, | |
3887 | IN BOOLEAN bUsePairewiseKeyTable); | |
3888 | ||
3889 | VOID AsicUpdateWCIDIVEIV( | |
3890 | IN PRTMP_ADAPTER pAd, | |
3891 | IN USHORT WCID, | |
3892 | IN ULONG uIV, | |
3893 | IN ULONG uEIV); | |
3894 | ||
3895 | VOID AsicUpdateRxWCIDTable( | |
3896 | IN PRTMP_ADAPTER pAd, | |
3897 | IN USHORT WCID, | |
3898 | IN PUCHAR pAddr); | |
3899 | ||
3900 | VOID AsicAddKeyEntry( | |
3901 | IN PRTMP_ADAPTER pAd, | |
3902 | IN USHORT WCID, | |
3903 | IN UCHAR BssIndex, | |
3904 | IN UCHAR KeyIdx, | |
3905 | IN PCIPHER_KEY pCipherKey, | |
3906 | IN BOOLEAN bUsePairewiseKeyTable, | |
3907 | IN BOOLEAN bTxKey); | |
3908 | ||
3909 | VOID AsicAddPairwiseKeyEntry( | |
3910 | IN PRTMP_ADAPTER pAd, | |
3911 | IN PUCHAR pAddr, | |
3912 | IN UCHAR WCID, | |
3913 | IN CIPHER_KEY *pCipherKey); | |
3914 | ||
3915 | VOID AsicRemovePairwiseKeyEntry( | |
3916 | IN PRTMP_ADAPTER pAd, | |
3917 | IN UCHAR BssIdx, | |
3918 | IN UCHAR Wcid); | |
3919 | ||
3920 | BOOLEAN AsicSendCommandToMcu( | |
3921 | IN PRTMP_ADAPTER pAd, | |
3922 | IN UCHAR Command, | |
3923 | IN UCHAR Token, | |
3924 | IN UCHAR Arg0, | |
3925 | IN UCHAR Arg1); | |
3926 | ||
3927 | ||
3928 | #ifdef RTMP_MAC_PCI | |
3929 | BOOLEAN AsicCheckCommanOk( | |
3930 | IN PRTMP_ADAPTER pAd, | |
3931 | IN UCHAR Command); | |
3932 | #endif // RTMP_MAC_PCI // | |
3933 | ||
3934 | VOID MacAddrRandomBssid( | |
3935 | IN PRTMP_ADAPTER pAd, | |
3936 | OUT PUCHAR pAddr); | |
3937 | ||
3938 | VOID MgtMacHeaderInit( | |
3939 | IN PRTMP_ADAPTER pAd, | |
3940 | IN OUT PHEADER_802_11 pHdr80211, | |
3941 | IN UCHAR SubType, | |
3942 | IN UCHAR ToDs, | |
3943 | IN PUCHAR pDA, | |
3944 | IN PUCHAR pBssid); | |
3945 | ||
3946 | VOID MlmeRadioOff( | |
3947 | IN PRTMP_ADAPTER pAd); | |
3948 | ||
3949 | VOID MlmeRadioOn( | |
3950 | IN PRTMP_ADAPTER pAd); | |
3951 | ||
3952 | ||
3953 | VOID BssTableInit( | |
3954 | IN BSS_TABLE *Tab); | |
3955 | ||
3956 | #ifdef DOT11_N_SUPPORT | |
3957 | VOID BATableInit( | |
3958 | IN PRTMP_ADAPTER pAd, | |
3959 | IN BA_TABLE *Tab); | |
3960 | #endif // DOT11_N_SUPPORT // | |
3961 | ||
3962 | ULONG BssTableSearch( | |
3963 | IN BSS_TABLE *Tab, | |
3964 | IN PUCHAR pBssid, | |
3965 | IN UCHAR Channel); | |
3966 | ||
3967 | ULONG BssSsidTableSearch( | |
3968 | IN BSS_TABLE *Tab, | |
3969 | IN PUCHAR pBssid, | |
3970 | IN PUCHAR pSsid, | |
3971 | IN UCHAR SsidLen, | |
3972 | IN UCHAR Channel); | |
3973 | ||
3974 | ULONG BssTableSearchWithSSID( | |
3975 | IN BSS_TABLE *Tab, | |
3976 | IN PUCHAR Bssid, | |
3977 | IN PUCHAR pSsid, | |
3978 | IN UCHAR SsidLen, | |
3979 | IN UCHAR Channel); | |
3980 | ||
3981 | ULONG BssSsidTableSearchBySSID( | |
3982 | IN BSS_TABLE *Tab, | |
3983 | IN PUCHAR pSsid, | |
3984 | IN UCHAR SsidLen); | |
3985 | ||
3986 | VOID BssTableDeleteEntry( | |
3987 | IN OUT PBSS_TABLE pTab, | |
3988 | IN PUCHAR pBssid, | |
3989 | IN UCHAR Channel); | |
3990 | ||
3991 | #ifdef DOT11_N_SUPPORT | |
3992 | VOID BATableDeleteORIEntry( | |
3993 | IN OUT PRTMP_ADAPTER pAd, | |
3994 | IN BA_ORI_ENTRY *pBAORIEntry); | |
3995 | ||
3996 | VOID BATableDeleteRECEntry( | |
3997 | IN OUT PRTMP_ADAPTER pAd, | |
3998 | IN BA_REC_ENTRY *pBARECEntry); | |
3999 | ||
4000 | VOID BATableTearORIEntry( | |
4001 | IN OUT PRTMP_ADAPTER pAd, | |
4002 | IN UCHAR TID, | |
4003 | IN UCHAR Wcid, | |
4004 | IN BOOLEAN bForceDelete, | |
4005 | IN BOOLEAN ALL); | |
4006 | ||
4007 | VOID BATableTearRECEntry( | |
4008 | IN OUT PRTMP_ADAPTER pAd, | |
4009 | IN UCHAR TID, | |
4010 | IN UCHAR WCID, | |
4011 | IN BOOLEAN ALL); | |
4012 | #endif // DOT11_N_SUPPORT // | |
4013 | ||
4014 | VOID BssEntrySet( | |
4015 | IN PRTMP_ADAPTER pAd, | |
4016 | OUT PBSS_ENTRY pBss, | |
4017 | IN PUCHAR pBssid, | |
4018 | IN CHAR Ssid[], | |
4019 | IN UCHAR SsidLen, | |
4020 | IN UCHAR BssType, | |
4021 | IN USHORT BeaconPeriod, | |
4022 | IN PCF_PARM CfParm, | |
4023 | IN USHORT AtimWin, | |
4024 | IN USHORT CapabilityInfo, | |
4025 | IN UCHAR SupRate[], | |
4026 | IN UCHAR SupRateLen, | |
4027 | IN UCHAR ExtRate[], | |
4028 | IN UCHAR ExtRateLen, | |
4029 | IN HT_CAPABILITY_IE *pHtCapability, | |
4030 | IN ADD_HT_INFO_IE *pAddHtInfo, // AP might use this additional ht info IE | |
4031 | IN UCHAR HtCapabilityLen, | |
4032 | IN UCHAR AddHtInfoLen, | |
4033 | IN UCHAR NewExtChanOffset, | |
4034 | IN UCHAR Channel, | |
4035 | IN CHAR Rssi, | |
4036 | IN LARGE_INTEGER TimeStamp, | |
4037 | IN UCHAR CkipFlag, | |
4038 | IN PEDCA_PARM pEdcaParm, | |
4039 | IN PQOS_CAPABILITY_PARM pQosCapability, | |
4040 | IN PQBSS_LOAD_PARM pQbssLoad, | |
4041 | IN USHORT LengthVIE, | |
4042 | IN PNDIS_802_11_VARIABLE_IEs pVIE); | |
4043 | ||
4044 | ULONG BssTableSetEntry( | |
4045 | IN PRTMP_ADAPTER pAd, | |
4046 | OUT PBSS_TABLE pTab, | |
4047 | IN PUCHAR pBssid, | |
4048 | IN CHAR Ssid[], | |
4049 | IN UCHAR SsidLen, | |
4050 | IN UCHAR BssType, | |
4051 | IN USHORT BeaconPeriod, | |
4052 | IN CF_PARM *CfParm, | |
4053 | IN USHORT AtimWin, | |
4054 | IN USHORT CapabilityInfo, | |
4055 | IN UCHAR SupRate[], | |
4056 | IN UCHAR SupRateLen, | |
4057 | IN UCHAR ExtRate[], | |
4058 | IN UCHAR ExtRateLen, | |
4059 | IN HT_CAPABILITY_IE *pHtCapability, | |
4060 | IN ADD_HT_INFO_IE *pAddHtInfo, // AP might use this additional ht info IE | |
4061 | IN UCHAR HtCapabilityLen, | |
4062 | IN UCHAR AddHtInfoLen, | |
4063 | IN UCHAR NewExtChanOffset, | |
4064 | IN UCHAR Channel, | |
4065 | IN CHAR Rssi, | |
4066 | IN LARGE_INTEGER TimeStamp, | |
4067 | IN UCHAR CkipFlag, | |
4068 | IN PEDCA_PARM pEdcaParm, | |
4069 | IN PQOS_CAPABILITY_PARM pQosCapability, | |
4070 | IN PQBSS_LOAD_PARM pQbssLoad, | |
4071 | IN USHORT LengthVIE, | |
4072 | IN PNDIS_802_11_VARIABLE_IEs pVIE); | |
4073 | ||
4074 | #ifdef DOT11_N_SUPPORT | |
4075 | VOID BATableInsertEntry( | |
4076 | IN PRTMP_ADAPTER pAd, | |
4077 | IN USHORT Aid, | |
4078 | IN USHORT TimeOutValue, | |
4079 | IN USHORT StartingSeq, | |
4080 | IN UCHAR TID, | |
4081 | IN UCHAR BAWinSize, | |
4082 | IN UCHAR OriginatorStatus, | |
4083 | IN BOOLEAN IsRecipient); | |
4084 | ||
4085 | #ifdef DOT11N_DRAFT3 | |
4086 | VOID Bss2040CoexistTimeOut( | |
4087 | IN PVOID SystemSpecific1, | |
4088 | IN PVOID FunctionContext, | |
4089 | IN PVOID SystemSpecific2, | |
4090 | IN PVOID SystemSpecific3); | |
4091 | ||
4092 | ||
4093 | VOID TriEventInit( | |
4094 | IN PRTMP_ADAPTER pAd); | |
4095 | ||
4096 | ULONG TriEventTableSetEntry( | |
4097 | IN PRTMP_ADAPTER pAd, | |
4098 | OUT TRIGGER_EVENT_TAB *Tab, | |
4099 | IN PUCHAR pBssid, | |
4100 | IN HT_CAPABILITY_IE *pHtCapability, | |
4101 | IN UCHAR HtCapabilityLen, | |
4102 | IN UCHAR RegClass, | |
4103 | IN UCHAR ChannelNo); | |
4104 | ||
4105 | VOID TriEventCounterMaintenance( | |
4106 | IN PRTMP_ADAPTER pAd); | |
4107 | #endif // DOT11N_DRAFT3 // | |
4108 | #endif // DOT11_N_SUPPORT // | |
4109 | ||
4110 | VOID BssTableSsidSort( | |
4111 | IN PRTMP_ADAPTER pAd, | |
4112 | OUT BSS_TABLE *OutTab, | |
4113 | IN CHAR Ssid[], | |
4114 | IN UCHAR SsidLen); | |
4115 | ||
4116 | VOID BssTableSortByRssi( | |
4117 | IN OUT BSS_TABLE *OutTab); | |
4118 | ||
4119 | VOID BssCipherParse( | |
4120 | IN OUT PBSS_ENTRY pBss); | |
4121 | ||
4122 | NDIS_STATUS MlmeQueueInit( | |
4123 | IN MLME_QUEUE *Queue); | |
4124 | ||
4125 | VOID MlmeQueueDestroy( | |
4126 | IN MLME_QUEUE *Queue); | |
4127 | ||
4128 | BOOLEAN MlmeEnqueue( | |
4129 | IN PRTMP_ADAPTER pAd, | |
4130 | IN ULONG Machine, | |
4131 | IN ULONG MsgType, | |
4132 | IN ULONG MsgLen, | |
4133 | IN VOID *Msg); | |
4134 | ||
4135 | BOOLEAN MlmeEnqueueForRecv( | |
4136 | IN PRTMP_ADAPTER pAd, | |
4137 | IN ULONG Wcid, | |
4138 | IN ULONG TimeStampHigh, | |
4139 | IN ULONG TimeStampLow, | |
4140 | IN UCHAR Rssi0, | |
4141 | IN UCHAR Rssi1, | |
4142 | IN UCHAR Rssi2, | |
4143 | IN ULONG MsgLen, | |
4144 | IN PVOID Msg, | |
4145 | IN UCHAR Signal); | |
4146 | ||
4147 | ||
4148 | BOOLEAN MlmeDequeue( | |
4149 | IN MLME_QUEUE *Queue, | |
4150 | OUT MLME_QUEUE_ELEM **Elem); | |
4151 | ||
4152 | VOID MlmeRestartStateMachine( | |
4153 | IN PRTMP_ADAPTER pAd); | |
4154 | ||
4155 | BOOLEAN MlmeQueueEmpty( | |
4156 | IN MLME_QUEUE *Queue); | |
4157 | ||
4158 | BOOLEAN MlmeQueueFull( | |
4159 | IN MLME_QUEUE *Queue); | |
4160 | ||
4161 | BOOLEAN MsgTypeSubst( | |
4162 | IN PRTMP_ADAPTER pAd, | |
4163 | IN PFRAME_802_11 pFrame, | |
4164 | OUT INT *Machine, | |
4165 | OUT INT *MsgType); | |
4166 | ||
4167 | VOID StateMachineInit( | |
4168 | IN STATE_MACHINE *Sm, | |
4169 | IN STATE_MACHINE_FUNC Trans[], | |
4170 | IN ULONG StNr, | |
4171 | IN ULONG MsgNr, | |
4172 | IN STATE_MACHINE_FUNC DefFunc, | |
4173 | IN ULONG InitState, | |
4174 | IN ULONG Base); | |
4175 | ||
4176 | VOID StateMachineSetAction( | |
4177 | IN STATE_MACHINE *S, | |
4178 | IN ULONG St, | |
4179 | ULONG Msg, | |
4180 | IN STATE_MACHINE_FUNC F); | |
4181 | ||
4182 | VOID StateMachinePerformAction( | |
4183 | IN PRTMP_ADAPTER pAd, | |
4184 | IN STATE_MACHINE *S, | |
4185 | IN MLME_QUEUE_ELEM *Elem); | |
4186 | ||
4187 | VOID Drop( | |
4188 | IN PRTMP_ADAPTER pAd, | |
4189 | IN MLME_QUEUE_ELEM *Elem); | |
4190 | ||
4191 | VOID AssocStateMachineInit( | |
4192 | IN PRTMP_ADAPTER pAd, | |
4193 | IN STATE_MACHINE *Sm, | |
4194 | OUT STATE_MACHINE_FUNC Trans[]); | |
4195 | ||
4196 | VOID ReassocTimeout( | |
4197 | IN PVOID SystemSpecific1, | |
4198 | IN PVOID FunctionContext, | |
4199 | IN PVOID SystemSpecific2, | |
4200 | IN PVOID SystemSpecific3); | |
4201 | ||
4202 | VOID AssocTimeout( | |
4203 | IN PVOID SystemSpecific1, | |
4204 | IN PVOID FunctionContext, | |
4205 | IN PVOID SystemSpecific2, | |
4206 | IN PVOID SystemSpecific3); | |
4207 | ||
4208 | VOID DisassocTimeout( | |
4209 | IN PVOID SystemSpecific1, | |
4210 | IN PVOID FunctionContext, | |
4211 | IN PVOID SystemSpecific2, | |
4212 | IN PVOID SystemSpecific3); | |
4213 | ||
4214 | //---------------------------------------------- | |
4215 | VOID MlmeDisassocReqAction( | |
4216 | IN PRTMP_ADAPTER pAd, | |
4217 | IN MLME_QUEUE_ELEM *Elem); | |
4218 | ||
4219 | VOID MlmeAssocReqAction( | |
4220 | IN PRTMP_ADAPTER pAd, | |
4221 | IN MLME_QUEUE_ELEM *Elem); | |
4222 | ||
4223 | VOID MlmeReassocReqAction( | |
4224 | IN PRTMP_ADAPTER pAd, | |
4225 | IN MLME_QUEUE_ELEM *Elem); | |
4226 | ||
4227 | VOID MlmeDisassocReqAction( | |
4228 | IN PRTMP_ADAPTER pAd, | |
4229 | IN MLME_QUEUE_ELEM *Elem); | |
4230 | ||
4231 | VOID PeerAssocRspAction( | |
4232 | IN PRTMP_ADAPTER pAd, | |
4233 | IN MLME_QUEUE_ELEM *Elem); | |
4234 | ||
4235 | VOID PeerReassocRspAction( | |
4236 | IN PRTMP_ADAPTER pAd, | |
4237 | IN MLME_QUEUE_ELEM *Elem); | |
4238 | ||
4239 | VOID PeerDisassocAction( | |
4240 | IN PRTMP_ADAPTER pAd, | |
4241 | IN MLME_QUEUE_ELEM *Elem); | |
4242 | ||
4243 | VOID DisassocTimeoutAction( | |
4244 | IN PRTMP_ADAPTER pAd, | |
4245 | IN MLME_QUEUE_ELEM *Elem); | |
4246 | ||
4247 | VOID AssocTimeoutAction( | |
4248 | IN PRTMP_ADAPTER pAd, | |
4249 | IN MLME_QUEUE_ELEM *Elem); | |
4250 | ||
4251 | VOID ReassocTimeoutAction( | |
4252 | IN PRTMP_ADAPTER pAd, | |
4253 | IN MLME_QUEUE_ELEM *Elem); | |
4254 | ||
4255 | VOID Cls3errAction( | |
4256 | IN PRTMP_ADAPTER pAd, | |
4257 | IN PUCHAR pAddr); | |
4258 | ||
4259 | VOID InvalidStateWhenAssoc( | |
4260 | IN PRTMP_ADAPTER pAd, | |
4261 | IN MLME_QUEUE_ELEM *Elem); | |
4262 | ||
4263 | VOID InvalidStateWhenReassoc( | |
4264 | IN PRTMP_ADAPTER pAd, | |
4265 | IN MLME_QUEUE_ELEM *Elem); | |
4266 | ||
4267 | VOID InvalidStateWhenDisassociate( | |
4268 | IN PRTMP_ADAPTER pAd, | |
4269 | IN MLME_QUEUE_ELEM *Elem); | |
4270 | ||
4271 | ||
4272 | VOID ComposePsPoll( | |
4273 | IN PRTMP_ADAPTER pAd); | |
4274 | ||
4275 | VOID ComposeNullFrame( | |
4276 | IN PRTMP_ADAPTER pAd); | |
4277 | ||
4278 | VOID AssocPostProc( | |
4279 | IN PRTMP_ADAPTER pAd, | |
4280 | IN PUCHAR pAddr2, | |
4281 | IN USHORT CapabilityInfo, | |
4282 | IN USHORT Aid, | |
4283 | IN UCHAR SupRate[], | |
4284 | IN UCHAR SupRateLen, | |
4285 | IN UCHAR ExtRate[], | |
4286 | IN UCHAR ExtRateLen, | |
4287 | IN PEDCA_PARM pEdcaParm, | |
4288 | IN HT_CAPABILITY_IE *pHtCapability, | |
4289 | IN UCHAR HtCapabilityLen, | |
4290 | IN ADD_HT_INFO_IE *pAddHtInfo); | |
4291 | ||
4292 | VOID AuthStateMachineInit( | |
4293 | IN PRTMP_ADAPTER pAd, | |
4294 | IN PSTATE_MACHINE sm, | |
4295 | OUT STATE_MACHINE_FUNC Trans[]); | |
4296 | ||
4297 | VOID AuthTimeout( | |
4298 | IN PVOID SystemSpecific1, | |
4299 | IN PVOID FunctionContext, | |
4300 | IN PVOID SystemSpecific2, | |
4301 | IN PVOID SystemSpecific3); | |
4302 | ||
4303 | VOID MlmeAuthReqAction( | |
4304 | IN PRTMP_ADAPTER pAd, | |
4305 | IN MLME_QUEUE_ELEM *Elem); | |
4306 | ||
4307 | VOID PeerAuthRspAtSeq2Action( | |
4308 | IN PRTMP_ADAPTER pAd, | |
4309 | IN MLME_QUEUE_ELEM *Elem); | |
4310 | ||
4311 | VOID PeerAuthRspAtSeq4Action( | |
4312 | IN PRTMP_ADAPTER pAd, | |
4313 | IN MLME_QUEUE_ELEM *Elem); | |
4314 | ||
4315 | VOID AuthTimeoutAction( | |
4316 | IN PRTMP_ADAPTER pAd, | |
4317 | IN MLME_QUEUE_ELEM *Elem); | |
4318 | ||
4319 | VOID Cls2errAction( | |
4320 | IN PRTMP_ADAPTER pAd, | |
4321 | IN PUCHAR pAddr); | |
4322 | ||
4323 | VOID MlmeDeauthReqAction( | |
4324 | IN PRTMP_ADAPTER pAd, | |
4325 | IN MLME_QUEUE_ELEM *Elem); | |
4326 | ||
4327 | VOID InvalidStateWhenAuth( | |
4328 | IN PRTMP_ADAPTER pAd, | |
4329 | IN MLME_QUEUE_ELEM *Elem); | |
4330 | ||
4331 | //============================================= | |
4332 | ||
4333 | VOID AuthRspStateMachineInit( | |
4334 | IN PRTMP_ADAPTER pAd, | |
4335 | IN PSTATE_MACHINE Sm, | |
4336 | IN STATE_MACHINE_FUNC Trans[]); | |
4337 | ||
4338 | VOID PeerDeauthAction( | |
4339 | IN PRTMP_ADAPTER pAd, | |
4340 | IN MLME_QUEUE_ELEM *Elem); | |
4341 | ||
4342 | VOID PeerAuthSimpleRspGenAndSend( | |
4343 | IN PRTMP_ADAPTER pAd, | |
4344 | IN PHEADER_802_11 pHdr80211, | |
4345 | IN USHORT Alg, | |
4346 | IN USHORT Seq, | |
4347 | IN USHORT Reason, | |
4348 | IN USHORT Status); | |
4349 | ||
4350 | // | |
4351 | // Private routines in dls.c | |
4352 | // | |
4353 | ||
4354 | #ifdef CONFIG_STA_SUPPORT | |
4355 | #ifdef QOS_DLS_SUPPORT | |
4356 | void DlsStateMachineInit( | |
4357 | IN PRTMP_ADAPTER pAd, | |
4358 | IN STATE_MACHINE *Sm, | |
4359 | OUT STATE_MACHINE_FUNC Trans[]); | |
4360 | ||
4361 | VOID MlmeDlsReqAction( | |
4362 | IN PRTMP_ADAPTER pAd, | |
4363 | IN MLME_QUEUE_ELEM *Elem); | |
4364 | ||
4365 | VOID PeerDlsReqAction( | |
4366 | IN PRTMP_ADAPTER pAd, | |
4367 | IN MLME_QUEUE_ELEM *Elem); | |
4368 | ||
4369 | VOID PeerDlsRspAction( | |
4370 | IN PRTMP_ADAPTER pAd, | |
4371 | IN MLME_QUEUE_ELEM *Elem); | |
4372 | ||
4373 | VOID MlmeDlsTearDownAction( | |
4374 | IN PRTMP_ADAPTER pAd, | |
4375 | IN MLME_QUEUE_ELEM *Elem); | |
4376 | ||
4377 | VOID PeerDlsTearDownAction( | |
4378 | IN PRTMP_ADAPTER pAd, | |
4379 | IN MLME_QUEUE_ELEM *Elem); | |
4380 | ||
4381 | VOID RTMPCheckDLSTimeOut( | |
4382 | IN PRTMP_ADAPTER pAd); | |
4383 | ||
4384 | BOOLEAN RTMPRcvFrameDLSCheck( | |
4385 | IN PRTMP_ADAPTER pAd, | |
4386 | IN PHEADER_802_11 pHeader, | |
4387 | IN ULONG Len, | |
4388 | IN PRT28XX_RXD_STRUC pRxD); | |
4389 | ||
4390 | INT RTMPCheckDLSFrame( | |
4391 | IN PRTMP_ADAPTER pAd, | |
4392 | IN PUCHAR pDA); | |
4393 | ||
4394 | VOID RTMPSendDLSTearDownFrame( | |
4395 | IN PRTMP_ADAPTER pAd, | |
4396 | IN PUCHAR pDA); | |
4397 | ||
4398 | NDIS_STATUS RTMPSendSTAKeyRequest( | |
4399 | IN PRTMP_ADAPTER pAd, | |
4400 | IN PUCHAR pDA); | |
4401 | ||
4402 | NDIS_STATUS RTMPSendSTAKeyHandShake( | |
4403 | IN PRTMP_ADAPTER pAd, | |
4404 | IN PUCHAR pDA); | |
4405 | ||
4406 | VOID DlsTimeoutAction( | |
4407 | IN PVOID SystemSpecific1, | |
4408 | IN PVOID FunctionContext, | |
4409 | IN PVOID SystemSpecific2, | |
4410 | IN PVOID SystemSpecific3); | |
4411 | ||
4412 | BOOLEAN MlmeDlsReqSanity( | |
4413 | IN PRTMP_ADAPTER pAd, | |
4414 | IN VOID *Msg, | |
4415 | IN ULONG MsgLen, | |
4416 | OUT PRT_802_11_DLS *pDLS, | |
4417 | OUT PUSHORT pReason); | |
4418 | ||
4419 | INT Set_DlsEntryInfo_Display_Proc( | |
4420 | IN PRTMP_ADAPTER pAd, | |
4421 | IN PUCHAR arg); | |
4422 | ||
4423 | MAC_TABLE_ENTRY *MacTableInsertDlsEntry( | |
4424 | IN PRTMP_ADAPTER pAd, | |
4425 | IN PUCHAR pAddr, | |
4426 | IN UINT DlsEntryIdx); | |
4427 | ||
4428 | BOOLEAN MacTableDeleteDlsEntry( | |
4429 | IN PRTMP_ADAPTER pAd, | |
4430 | IN USHORT wcid, | |
4431 | IN PUCHAR pAddr); | |
4432 | ||
4433 | MAC_TABLE_ENTRY *DlsEntryTableLookup( | |
4434 | IN PRTMP_ADAPTER pAd, | |
4435 | IN PUCHAR pAddr, | |
4436 | IN BOOLEAN bResetIdelCount); | |
4437 | ||
4438 | MAC_TABLE_ENTRY *DlsEntryTableLookupByWcid( | |
4439 | IN PRTMP_ADAPTER pAd, | |
4440 | IN UCHAR wcid, | |
4441 | IN PUCHAR pAddr, | |
4442 | IN BOOLEAN bResetIdelCount); | |
4443 | ||
4444 | INT Set_DlsAddEntry_Proc( | |
4445 | IN PRTMP_ADAPTER pAd, | |
4446 | IN PSTRING arg); | |
4447 | ||
4448 | INT Set_DlsTearDownEntry_Proc( | |
4449 | IN PRTMP_ADAPTER pAd, | |
4450 | IN PSTRING arg); | |
4451 | #endif // QOS_DLS_SUPPORT // | |
4452 | #endif // CONFIG_STA_SUPPORT // | |
4453 | ||
4454 | #ifdef QOS_DLS_SUPPORT | |
4455 | BOOLEAN PeerDlsReqSanity( | |
4456 | IN PRTMP_ADAPTER pAd, | |
4457 | IN VOID *Msg, | |
4458 | IN ULONG MsgLen, | |
4459 | OUT PUCHAR pDA, | |
4460 | OUT PUCHAR pSA, | |
4461 | OUT USHORT *pCapabilityInfo, | |
4462 | OUT USHORT *pDlsTimeout, | |
4463 | OUT UCHAR *pRatesLen, | |
4464 | OUT UCHAR Rates[], | |
4465 | OUT UCHAR *pHtCapabilityLen, | |
4466 | OUT HT_CAPABILITY_IE *pHtCapability); | |
4467 | ||
4468 | BOOLEAN PeerDlsRspSanity( | |
4469 | IN PRTMP_ADAPTER pAd, | |
4470 | IN VOID *Msg, | |
4471 | IN ULONG MsgLen, | |
4472 | OUT PUCHAR pDA, | |
4473 | OUT PUCHAR pSA, | |
4474 | OUT USHORT *pCapabilityInfo, | |
4475 | OUT USHORT *pStatus, | |
4476 | OUT UCHAR *pRatesLen, | |
4477 | OUT UCHAR Rates[], | |
4478 | OUT UCHAR *pHtCapabilityLen, | |
4479 | OUT HT_CAPABILITY_IE *pHtCapability); | |
4480 | ||
4481 | BOOLEAN PeerDlsTearDownSanity( | |
4482 | IN PRTMP_ADAPTER pAd, | |
4483 | IN VOID *Msg, | |
4484 | IN ULONG MsgLen, | |
4485 | OUT PUCHAR pDA, | |
4486 | OUT PUCHAR pSA, | |
4487 | OUT USHORT *pReason); | |
4488 | #endif // QOS_DLS_SUPPORT // | |
4489 | ||
4490 | //======================================== | |
4491 | ||
4492 | VOID SyncStateMachineInit( | |
4493 | IN PRTMP_ADAPTER pAd, | |
4494 | IN STATE_MACHINE *Sm, | |
4495 | OUT STATE_MACHINE_FUNC Trans[]); | |
4496 | ||
4497 | VOID BeaconTimeout( | |
4498 | IN PVOID SystemSpecific1, | |
4499 | IN PVOID FunctionContext, | |
4500 | IN PVOID SystemSpecific2, | |
4501 | IN PVOID SystemSpecific3); | |
4502 | ||
4503 | VOID ScanTimeout( | |
4504 | IN PVOID SystemSpecific1, | |
4505 | IN PVOID FunctionContext, | |
4506 | IN PVOID SystemSpecific2, | |
4507 | IN PVOID SystemSpecific3); | |
4508 | ||
4509 | VOID MlmeScanReqAction( | |
4510 | IN PRTMP_ADAPTER pAd, | |
4511 | IN MLME_QUEUE_ELEM *Elem); | |
4512 | ||
4513 | VOID InvalidStateWhenScan( | |
4514 | IN PRTMP_ADAPTER pAd, | |
4515 | IN MLME_QUEUE_ELEM *Elem); | |
4516 | ||
4517 | VOID InvalidStateWhenJoin( | |
4518 | IN PRTMP_ADAPTER pAd, | |
4519 | IN MLME_QUEUE_ELEM *Elem); | |
4520 | ||
4521 | VOID InvalidStateWhenStart( | |
4522 | IN PRTMP_ADAPTER pAd, | |
4523 | IN MLME_QUEUE_ELEM *Elem); | |
4524 | ||
4525 | VOID PeerBeacon( | |
4526 | IN PRTMP_ADAPTER pAd, | |
4527 | IN MLME_QUEUE_ELEM *Elem); | |
4528 | ||
4529 | VOID EnqueueProbeRequest( | |
4530 | IN PRTMP_ADAPTER pAd); | |
4531 | ||
4532 | BOOLEAN ScanRunning( | |
4533 | IN PRTMP_ADAPTER pAd); | |
4534 | //========================================= | |
4535 | ||
4536 | VOID MlmeCntlInit( | |
4537 | IN PRTMP_ADAPTER pAd, | |
4538 | IN STATE_MACHINE *S, | |
4539 | OUT STATE_MACHINE_FUNC Trans[]); | |
4540 | ||
4541 | VOID MlmeCntlMachinePerformAction( | |
4542 | IN PRTMP_ADAPTER pAd, | |
4543 | IN STATE_MACHINE *S, | |
4544 | IN MLME_QUEUE_ELEM *Elem); | |
4545 | ||
4546 | VOID CntlIdleProc( | |
4547 | IN PRTMP_ADAPTER pAd, | |
4548 | IN MLME_QUEUE_ELEM *Elem); | |
4549 | ||
4550 | VOID CntlOidScanProc( | |
4551 | IN PRTMP_ADAPTER pAd, | |
4552 | IN MLME_QUEUE_ELEM *Elem); | |
4553 | ||
4554 | VOID CntlOidSsidProc( | |
4555 | IN PRTMP_ADAPTER pAd, | |
4556 | IN MLME_QUEUE_ELEM * Elem); | |
4557 | ||
4558 | VOID CntlOidRTBssidProc( | |
4559 | IN PRTMP_ADAPTER pAd, | |
4560 | IN MLME_QUEUE_ELEM * Elem); | |
4561 | ||
4562 | VOID CntlMlmeRoamingProc( | |
4563 | IN PRTMP_ADAPTER pAd, | |
4564 | IN MLME_QUEUE_ELEM * Elem); | |
4565 | ||
4566 | VOID CntlWaitDisassocProc( | |
4567 | IN PRTMP_ADAPTER pAd, | |
4568 | IN MLME_QUEUE_ELEM *Elem); | |
4569 | ||
4570 | VOID CntlWaitJoinProc( | |
4571 | IN PRTMP_ADAPTER pAd, | |
4572 | IN MLME_QUEUE_ELEM *Elem); | |
4573 | ||
4574 | VOID CntlWaitReassocProc( | |
4575 | IN PRTMP_ADAPTER pAd, | |
4576 | IN MLME_QUEUE_ELEM *Elem); | |
4577 | ||
4578 | VOID CntlWaitStartProc( | |
4579 | IN PRTMP_ADAPTER pAd, | |
4580 | IN MLME_QUEUE_ELEM *Elem); | |
4581 | ||
4582 | VOID CntlWaitAuthProc( | |
4583 | IN PRTMP_ADAPTER pAd, | |
4584 | IN MLME_QUEUE_ELEM *Elem); | |
4585 | ||
4586 | VOID CntlWaitAuthProc2( | |
4587 | IN PRTMP_ADAPTER pAd, | |
4588 | IN MLME_QUEUE_ELEM *Elem); | |
4589 | ||
4590 | VOID CntlWaitAssocProc( | |
4591 | IN PRTMP_ADAPTER pAd, | |
4592 | IN MLME_QUEUE_ELEM *Elem); | |
4593 | ||
4594 | #ifdef QOS_DLS_SUPPORT | |
4595 | VOID CntlOidDLSSetupProc( | |
4596 | IN PRTMP_ADAPTER pAd, | |
4597 | IN MLME_QUEUE_ELEM *Elem); | |
4598 | #endif // QOS_DLS_SUPPORT // | |
4599 | ||
4600 | VOID LinkUp( | |
4601 | IN PRTMP_ADAPTER pAd, | |
4602 | IN UCHAR BssType); | |
4603 | ||
4604 | VOID LinkDown( | |
4605 | IN PRTMP_ADAPTER pAd, | |
4606 | IN BOOLEAN IsReqFromAP); | |
4607 | ||
4608 | VOID IterateOnBssTab( | |
4609 | IN PRTMP_ADAPTER pAd); | |
4610 | ||
4611 | VOID IterateOnBssTab2( | |
4612 | IN PRTMP_ADAPTER pAd);; | |
4613 | ||
4614 | VOID JoinParmFill( | |
4615 | IN PRTMP_ADAPTER pAd, | |
4616 | IN OUT MLME_JOIN_REQ_STRUCT *JoinReq, | |
4617 | IN ULONG BssIdx); | |
4618 | ||
4619 | VOID AssocParmFill( | |
4620 | IN PRTMP_ADAPTER pAd, | |
4621 | IN OUT MLME_ASSOC_REQ_STRUCT *AssocReq, | |
4622 | IN PUCHAR pAddr, | |
4623 | IN USHORT CapabilityInfo, | |
4624 | IN ULONG Timeout, | |
4625 | IN USHORT ListenIntv); | |
4626 | ||
4627 | VOID ScanParmFill( | |
4628 | IN PRTMP_ADAPTER pAd, | |
4629 | IN OUT MLME_SCAN_REQ_STRUCT *ScanReq, | |
4630 | IN STRING Ssid[], | |
4631 | IN UCHAR SsidLen, | |
4632 | IN UCHAR BssType, | |
4633 | IN UCHAR ScanType); | |
4634 | ||
4635 | VOID DisassocParmFill( | |
4636 | IN PRTMP_ADAPTER pAd, | |
4637 | IN OUT MLME_DISASSOC_REQ_STRUCT *DisassocReq, | |
4638 | IN PUCHAR pAddr, | |
4639 | IN USHORT Reason); | |
4640 | ||
4641 | VOID StartParmFill( | |
4642 | IN PRTMP_ADAPTER pAd, | |
4643 | IN OUT MLME_START_REQ_STRUCT *StartReq, | |
4644 | IN CHAR Ssid[], | |
4645 | IN UCHAR SsidLen); | |
4646 | ||
4647 | VOID AuthParmFill( | |
4648 | IN PRTMP_ADAPTER pAd, | |
4649 | IN OUT MLME_AUTH_REQ_STRUCT *AuthReq, | |
4650 | IN PUCHAR pAddr, | |
4651 | IN USHORT Alg); | |
4652 | ||
4653 | VOID EnqueuePsPoll( | |
4654 | IN PRTMP_ADAPTER pAd); | |
4655 | ||
4656 | VOID EnqueueBeaconFrame( | |
4657 | IN PRTMP_ADAPTER pAd); | |
4658 | ||
4659 | VOID MlmeJoinReqAction( | |
4660 | IN PRTMP_ADAPTER pAd, | |
4661 | IN MLME_QUEUE_ELEM *Elem); | |
4662 | ||
4663 | VOID MlmeScanReqAction( | |
4664 | IN PRTMP_ADAPTER pAd, | |
4665 | IN MLME_QUEUE_ELEM *Elem); | |
4666 | ||
4667 | VOID MlmeStartReqAction( | |
4668 | IN PRTMP_ADAPTER pAd, | |
4669 | IN MLME_QUEUE_ELEM *Elem); | |
4670 | ||
4671 | VOID ScanTimeoutAction( | |
4672 | IN PRTMP_ADAPTER pAd, | |
4673 | IN MLME_QUEUE_ELEM *Elem); | |
4674 | ||
4675 | VOID BeaconTimeoutAtJoinAction( | |
4676 | IN PRTMP_ADAPTER pAd, | |
4677 | IN MLME_QUEUE_ELEM *Elem); | |
4678 | ||
4679 | VOID PeerBeaconAtScanAction( | |
4680 | IN PRTMP_ADAPTER pAd, | |
4681 | IN MLME_QUEUE_ELEM *Elem); | |
4682 | ||
4683 | VOID PeerBeaconAtJoinAction( | |
4684 | IN PRTMP_ADAPTER pAd, | |
4685 | IN MLME_QUEUE_ELEM *Elem); | |
4686 | ||
4687 | VOID PeerBeacon( | |
4688 | IN PRTMP_ADAPTER pAd, | |
4689 | IN MLME_QUEUE_ELEM *Elem); | |
4690 | ||
4691 | VOID PeerProbeReqAction( | |
4692 | IN PRTMP_ADAPTER pAd, | |
4693 | IN MLME_QUEUE_ELEM *Elem); | |
4694 | ||
4695 | VOID ScanNextChannel( | |
4696 | IN PRTMP_ADAPTER pAd); | |
4697 | ||
4698 | ULONG MakeIbssBeacon( | |
4699 | IN PRTMP_ADAPTER pAd); | |
4700 | ||
4701 | VOID CCXAdjacentAPReport( | |
4702 | IN PRTMP_ADAPTER pAd); | |
4703 | ||
4704 | BOOLEAN MlmeScanReqSanity( | |
4705 | IN PRTMP_ADAPTER pAd, | |
4706 | IN VOID *Msg, | |
4707 | IN ULONG MsgLen, | |
4708 | OUT UCHAR *BssType, | |
4709 | OUT CHAR ssid[], | |
4710 | OUT UCHAR *SsidLen, | |
4711 | OUT UCHAR *ScanType); | |
4712 | ||
4713 | BOOLEAN PeerBeaconAndProbeRspSanity( | |
4714 | IN PRTMP_ADAPTER pAd, | |
4715 | IN VOID *Msg, | |
4716 | IN ULONG MsgLen, | |
4717 | IN UCHAR MsgChannel, | |
4718 | OUT PUCHAR pAddr2, | |
4719 | OUT PUCHAR pBssid, | |
4720 | OUT CHAR Ssid[], | |
4721 | OUT UCHAR *pSsidLen, | |
4722 | OUT UCHAR *pBssType, | |
4723 | OUT USHORT *pBeaconPeriod, | |
4724 | OUT UCHAR *pChannel, | |
4725 | OUT UCHAR *pNewChannel, | |
4726 | OUT LARGE_INTEGER *pTimestamp, | |
4727 | OUT CF_PARM *pCfParm, | |
4728 | OUT USHORT *pAtimWin, | |
4729 | OUT USHORT *pCapabilityInfo, | |
4730 | OUT UCHAR *pErp, | |
4731 | OUT UCHAR *pDtimCount, | |
4732 | OUT UCHAR *pDtimPeriod, | |
4733 | OUT UCHAR *pBcastFlag, | |
4734 | OUT UCHAR *pMessageToMe, | |
4735 | OUT UCHAR SupRate[], | |
4736 | OUT UCHAR *pSupRateLen, | |
4737 | OUT UCHAR ExtRate[], | |
4738 | OUT UCHAR *pExtRateLen, | |
4739 | OUT UCHAR *pCkipFlag, | |
4740 | OUT UCHAR *pAironetCellPowerLimit, | |
4741 | OUT PEDCA_PARM pEdcaParm, | |
4742 | OUT PQBSS_LOAD_PARM pQbssLoad, | |
4743 | OUT PQOS_CAPABILITY_PARM pQosCapability, | |
4744 | OUT ULONG *pRalinkIe, | |
4745 | OUT UCHAR *pHtCapabilityLen, | |
4746 | #ifdef CONFIG_STA_SUPPORT | |
4747 | OUT UCHAR *pPreNHtCapabilityLen, | |
4748 | #endif // CONFIG_STA_SUPPORT // | |
4749 | OUT HT_CAPABILITY_IE *pHtCapability, | |
4750 | OUT UCHAR *AddHtInfoLen, | |
4751 | OUT ADD_HT_INFO_IE *AddHtInfo, | |
4752 | OUT UCHAR *NewExtChannel, | |
4753 | OUT USHORT *LengthVIE, | |
4754 | OUT PNDIS_802_11_VARIABLE_IEs pVIE); | |
4755 | ||
4756 | BOOLEAN PeerAddBAReqActionSanity( | |
4757 | IN PRTMP_ADAPTER pAd, | |
4758 | IN VOID *pMsg, | |
4759 | IN ULONG MsgLen, | |
4760 | OUT PUCHAR pAddr2); | |
4761 | ||
4762 | BOOLEAN PeerAddBARspActionSanity( | |
4763 | IN PRTMP_ADAPTER pAd, | |
4764 | IN VOID *pMsg, | |
4765 | IN ULONG MsgLen); | |
4766 | ||
4767 | BOOLEAN PeerDelBAActionSanity( | |
4768 | IN PRTMP_ADAPTER pAd, | |
4769 | IN UCHAR Wcid, | |
4770 | IN VOID *pMsg, | |
4771 | IN ULONG MsgLen); | |
4772 | ||
4773 | BOOLEAN MlmeAssocReqSanity( | |
4774 | IN PRTMP_ADAPTER pAd, | |
4775 | IN VOID *Msg, | |
4776 | IN ULONG MsgLen, | |
4777 | OUT PUCHAR pApAddr, | |
4778 | OUT USHORT *CapabilityInfo, | |
4779 | OUT ULONG *Timeout, | |
4780 | OUT USHORT *ListenIntv); | |
4781 | ||
4782 | BOOLEAN MlmeAuthReqSanity( | |
4783 | IN PRTMP_ADAPTER pAd, | |
4784 | IN VOID *Msg, | |
4785 | IN ULONG MsgLen, | |
4786 | OUT PUCHAR pAddr, | |
4787 | OUT ULONG *Timeout, | |
4788 | OUT USHORT *Alg); | |
4789 | ||
4790 | BOOLEAN MlmeStartReqSanity( | |
4791 | IN PRTMP_ADAPTER pAd, | |
4792 | IN VOID *Msg, | |
4793 | IN ULONG MsgLen, | |
4794 | OUT CHAR Ssid[], | |
4795 | OUT UCHAR *Ssidlen); | |
4796 | ||
4797 | BOOLEAN PeerAuthSanity( | |
4798 | IN PRTMP_ADAPTER pAd, | |
4799 | IN VOID *Msg, | |
4800 | IN ULONG MsgLen, | |
4801 | OUT PUCHAR pAddr, | |
4802 | OUT USHORT *Alg, | |
4803 | OUT USHORT *Seq, | |
4804 | OUT USHORT *Status, | |
4805 | OUT CHAR ChlgText[]); | |
4806 | ||
4807 | BOOLEAN PeerAssocRspSanity( | |
4808 | IN PRTMP_ADAPTER pAd, | |
4809 | IN VOID *pMsg, | |
4810 | IN ULONG MsgLen, | |
4811 | OUT PUCHAR pAddr2, | |
4812 | OUT USHORT *pCapabilityInfo, | |
4813 | OUT USHORT *pStatus, | |
4814 | OUT USHORT *pAid, | |
4815 | OUT UCHAR SupRate[], | |
4816 | OUT UCHAR *pSupRateLen, | |
4817 | OUT UCHAR ExtRate[], | |
4818 | OUT UCHAR *pExtRateLen, | |
4819 | OUT HT_CAPABILITY_IE *pHtCapability, | |
4820 | OUT ADD_HT_INFO_IE *pAddHtInfo, // AP might use this additional ht info IE | |
4821 | OUT UCHAR *pHtCapabilityLen, | |
4822 | OUT UCHAR *pAddHtInfoLen, | |
4823 | OUT UCHAR *pNewExtChannelOffset, | |
4824 | OUT PEDCA_PARM pEdcaParm, | |
4825 | OUT UCHAR *pCkipFlag); | |
4826 | ||
4827 | BOOLEAN PeerDisassocSanity( | |
4828 | IN PRTMP_ADAPTER pAd, | |
4829 | IN VOID *Msg, | |
4830 | IN ULONG MsgLen, | |
4831 | OUT PUCHAR pAddr2, | |
4832 | OUT USHORT *Reason); | |
4833 | ||
4834 | BOOLEAN PeerWpaMessageSanity( | |
4835 | IN PRTMP_ADAPTER pAd, | |
4836 | IN PEAPOL_PACKET pMsg, | |
4837 | IN ULONG MsgLen, | |
4838 | IN UCHAR MsgType, | |
4839 | IN MAC_TABLE_ENTRY *pEntry); | |
4840 | ||
4841 | BOOLEAN PeerDeauthSanity( | |
4842 | IN PRTMP_ADAPTER pAd, | |
4843 | IN VOID *Msg, | |
4844 | IN ULONG MsgLen, | |
4845 | OUT PUCHAR pAddr2, | |
4846 | OUT USHORT *Reason); | |
4847 | ||
4848 | BOOLEAN PeerProbeReqSanity( | |
4849 | IN PRTMP_ADAPTER pAd, | |
4850 | IN VOID *Msg, | |
4851 | IN ULONG MsgLen, | |
4852 | OUT PUCHAR pAddr2, | |
4853 | OUT CHAR Ssid[], | |
4854 | OUT UCHAR *pSsidLen); | |
4855 | ||
4856 | BOOLEAN GetTimBit( | |
4857 | IN CHAR *Ptr, | |
4858 | IN USHORT Aid, | |
4859 | OUT UCHAR *TimLen, | |
4860 | OUT UCHAR *BcastFlag, | |
4861 | OUT UCHAR *DtimCount, | |
4862 | OUT UCHAR *DtimPeriod, | |
4863 | OUT UCHAR *MessageToMe); | |
4864 | ||
4865 | UCHAR ChannelSanity( | |
4866 | IN PRTMP_ADAPTER pAd, | |
4867 | IN UCHAR channel); | |
4868 | ||
4869 | NDIS_802_11_NETWORK_TYPE NetworkTypeInUseSanity( | |
4870 | IN PBSS_ENTRY pBss); | |
4871 | ||
4872 | ||
4873 | BOOLEAN MlmeDelBAReqSanity( | |
4874 | IN PRTMP_ADAPTER pAd, | |
4875 | IN VOID *Msg, | |
4876 | IN ULONG MsgLen); | |
4877 | ||
4878 | BOOLEAN MlmeAddBAReqSanity( | |
4879 | IN PRTMP_ADAPTER pAd, | |
4880 | IN VOID *Msg, | |
4881 | IN ULONG MsgLen, | |
4882 | OUT PUCHAR pAddr2); | |
4883 | ||
4884 | ULONG MakeOutgoingFrame( | |
4885 | OUT UCHAR *Buffer, | |
4886 | OUT ULONG *Length, ...); | |
4887 | ||
4888 | VOID LfsrInit( | |
4889 | IN PRTMP_ADAPTER pAd, | |
4890 | IN ULONG Seed); | |
4891 | ||
4892 | UCHAR RandomByte( | |
4893 | IN PRTMP_ADAPTER pAd); | |
4894 | ||
4895 | VOID AsicUpdateAutoFallBackTable( | |
4896 | IN PRTMP_ADAPTER pAd, | |
4897 | IN PUCHAR pTxRate); | |
4898 | ||
4899 | VOID MlmePeriodicExec( | |
4900 | IN PVOID SystemSpecific1, | |
4901 | IN PVOID FunctionContext, | |
4902 | IN PVOID SystemSpecific2, | |
4903 | IN PVOID SystemSpecific3); | |
4904 | ||
4905 | VOID LinkDownExec( | |
4906 | IN PVOID SystemSpecific1, | |
4907 | IN PVOID FunctionContext, | |
4908 | IN PVOID SystemSpecific2, | |
4909 | IN PVOID SystemSpecific3); | |
4910 | ||
4911 | VOID LinkUpExec( | |
4912 | IN PVOID SystemSpecific1, | |
4913 | IN PVOID FunctionContext, | |
4914 | IN PVOID SystemSpecific2, | |
4915 | IN PVOID SystemSpecific3); | |
4916 | ||
4917 | VOID STAMlmePeriodicExec( | |
4918 | PRTMP_ADAPTER pAd); | |
4919 | ||
4920 | VOID MlmeAutoScan( | |
4921 | IN PRTMP_ADAPTER pAd); | |
4922 | ||
4923 | VOID MlmeAutoReconnectLastSSID( | |
4924 | IN PRTMP_ADAPTER pAd); | |
4925 | ||
4926 | BOOLEAN MlmeValidateSSID( | |
4927 | IN PUCHAR pSsid, | |
4928 | IN UCHAR SsidLen); | |
4929 | ||
4930 | VOID MlmeCheckForRoaming( | |
4931 | IN PRTMP_ADAPTER pAd, | |
4932 | IN ULONG Now32); | |
4933 | ||
4934 | BOOLEAN MlmeCheckForFastRoaming( | |
4935 | IN PRTMP_ADAPTER pAd); | |
4936 | ||
4937 | VOID MlmeDynamicTxRateSwitching( | |
4938 | IN PRTMP_ADAPTER pAd); | |
4939 | ||
4940 | VOID MlmeSetTxRate( | |
4941 | IN PRTMP_ADAPTER pAd, | |
4942 | IN PMAC_TABLE_ENTRY pEntry, | |
4943 | IN PRTMP_TX_RATE_SWITCH pTxRate); | |
4944 | ||
4945 | VOID MlmeSelectTxRateTable( | |
4946 | IN PRTMP_ADAPTER pAd, | |
4947 | IN PMAC_TABLE_ENTRY pEntry, | |
4948 | IN PUCHAR *ppTable, | |
4949 | IN PUCHAR pTableSize, | |
4950 | IN PUCHAR pInitTxRateIdx); | |
4951 | ||
4952 | VOID MlmeCalculateChannelQuality( | |
4953 | IN PRTMP_ADAPTER pAd, | |
4954 | IN PMAC_TABLE_ENTRY pMacEntry, | |
4955 | IN ULONG Now); | |
4956 | ||
4957 | VOID MlmeCheckPsmChange( | |
4958 | IN PRTMP_ADAPTER pAd, | |
4959 | IN ULONG Now32); | |
4960 | ||
4961 | VOID MlmeSetPsmBit( | |
4962 | IN PRTMP_ADAPTER pAd, | |
4963 | IN USHORT psm); | |
4964 | ||
4965 | VOID MlmeSetTxPreamble( | |
4966 | IN PRTMP_ADAPTER pAd, | |
4967 | IN USHORT TxPreamble); | |
4968 | ||
4969 | VOID UpdateBasicRateBitmap( | |
4970 | IN PRTMP_ADAPTER pAd); | |
4971 | ||
4972 | VOID MlmeUpdateTxRates( | |
4973 | IN PRTMP_ADAPTER pAd, | |
4974 | IN BOOLEAN bLinkUp, | |
4975 | IN UCHAR apidx); | |
4976 | ||
4977 | #ifdef DOT11_N_SUPPORT | |
4978 | VOID MlmeUpdateHtTxRates( | |
4979 | IN PRTMP_ADAPTER pAd, | |
4980 | IN UCHAR apidx); | |
4981 | #endif // DOT11_N_SUPPORT // | |
4982 | ||
4983 | VOID RTMPCheckRates( | |
4984 | IN PRTMP_ADAPTER pAd, | |
4985 | IN OUT UCHAR SupRate[], | |
4986 | IN OUT UCHAR *SupRateLen); | |
4987 | ||
4988 | #ifdef CONFIG_STA_SUPPORT | |
4989 | BOOLEAN RTMPCheckChannel( | |
4990 | IN PRTMP_ADAPTER pAd, | |
4991 | IN UCHAR CentralChannel, | |
4992 | IN UCHAR Channel); | |
4993 | #endif // CONFIG_STA_SUPPORT // | |
4994 | ||
4995 | BOOLEAN RTMPCheckHt( | |
4996 | IN PRTMP_ADAPTER pAd, | |
4997 | IN UCHAR Wcid, | |
4998 | IN OUT HT_CAPABILITY_IE *pHtCapability, | |
4999 | IN OUT ADD_HT_INFO_IE *pAddHtInfo); | |
5000 | ||
5001 | VOID StaQuickResponeForRateUpExec( | |
5002 | IN PVOID SystemSpecific1, | |
5003 | IN PVOID FunctionContext, | |
5004 | IN PVOID SystemSpecific2, | |
5005 | IN PVOID SystemSpecific3); | |
5006 | ||
5007 | VOID AsicBbpTuning1( | |
5008 | IN PRTMP_ADAPTER pAd); | |
5009 | ||
5010 | VOID AsicBbpTuning2( | |
5011 | IN PRTMP_ADAPTER pAd); | |
5012 | ||
5013 | VOID RTMPUpdateMlmeRate( | |
5014 | IN PRTMP_ADAPTER pAd); | |
5015 | ||
5016 | CHAR RTMPMaxRssi( | |
5017 | IN PRTMP_ADAPTER pAd, | |
5018 | IN CHAR Rssi0, | |
5019 | IN CHAR Rssi1, | |
5020 | IN CHAR Rssi2); | |
5021 | ||
5022 | #ifdef RT30xx | |
5023 | VOID AsicSetRxAnt( | |
5024 | IN PRTMP_ADAPTER pAd, | |
5025 | IN UCHAR Ant); | |
5026 | ||
5027 | VOID RTMPFilterCalibration( | |
5028 | IN PRTMP_ADAPTER pAd); | |
5029 | ||
5030 | #ifdef RTMP_EFUSE_SUPPORT | |
5031 | //2008/09/11:KH add to support efuse<-- | |
5032 | INT set_eFuseGetFreeBlockCount_Proc( | |
5033 | IN PRTMP_ADAPTER pAd, | |
5034 | IN PSTRING arg); | |
5035 | ||
5036 | INT set_eFusedump_Proc( | |
5037 | IN PRTMP_ADAPTER pAd, | |
5038 | IN PSTRING arg); | |
5039 | ||
5040 | INT set_eFuseLoadFromBin_Proc( | |
5041 | IN PRTMP_ADAPTER pAd, | |
5042 | IN PSTRING arg); | |
5043 | ||
5044 | VOID eFusePhysicalReadRegisters( | |
5045 | IN PRTMP_ADAPTER pAd, | |
5046 | IN USHORT Offset, | |
5047 | IN USHORT Length, | |
5048 | OUT USHORT* pData); | |
5049 | ||
5050 | int RtmpEfuseSupportCheck( | |
5051 | IN RTMP_ADAPTER *pAd); | |
5052 | ||
5053 | INT set_eFuseBufferModeWriteBack_Proc( | |
5054 | IN PRTMP_ADAPTER pAd, | |
5055 | IN PSTRING arg); | |
5056 | ||
5057 | INT eFuseLoadEEPROM( | |
5058 | IN PRTMP_ADAPTER pAd); | |
5059 | ||
5060 | INT eFuseWriteEeeppromBuf( | |
5061 | IN PRTMP_ADAPTER pAd); | |
5062 | ||
5063 | VOID eFuseGetFreeBlockCount(IN PRTMP_ADAPTER pAd, | |
5064 | PUINT EfuseFreeBlock); | |
5065 | ||
5066 | INT eFuse_init( | |
5067 | IN PRTMP_ADAPTER pAd); | |
5068 | ||
5069 | NTSTATUS eFuseRead( | |
5070 | IN PRTMP_ADAPTER pAd, | |
5071 | IN USHORT Offset, | |
5072 | OUT PUCHAR pData, | |
5073 | IN USHORT Length); | |
5074 | ||
5075 | NTSTATUS eFuseWrite( | |
5076 | IN PRTMP_ADAPTER pAd, | |
5077 | IN USHORT Offset, | |
5078 | IN PUCHAR pData, | |
5079 | IN USHORT length); | |
5080 | //2008/09/11:KH add to support efuse--> | |
5081 | #endif // RTMP_EFUSE_SUPPORT // | |
5082 | ||
5083 | // add by johnli, RF power sequence setup | |
5084 | VOID RT30xxLoadRFNormalModeSetup( | |
5085 | IN PRTMP_ADAPTER pAd); | |
5086 | ||
5087 | VOID RT30xxLoadRFSleepModeSetup( | |
5088 | IN PRTMP_ADAPTER pAd); | |
5089 | ||
5090 | VOID RT30xxReverseRFSleepModeSetup( | |
5091 | IN PRTMP_ADAPTER pAd); | |
5092 | // end johnli | |
5093 | ||
5094 | ||
5095 | #ifdef RT3090 | |
5096 | VOID NICInitRT3090RFRegisters( | |
5097 | IN RTMP_ADAPTER *pAd); | |
5098 | #endif // RT3090 // | |
5099 | ||
5100 | VOID RT30xxHaltAction( | |
5101 | IN PRTMP_ADAPTER pAd); | |
5102 | ||
5103 | VOID RT30xxSetRxAnt( | |
5104 | IN PRTMP_ADAPTER pAd, | |
5105 | IN UCHAR Ant); | |
5106 | #endif // RT30xx // | |
5107 | #ifdef RT33xx | |
5108 | VOID RT33xxLoadRFNormalModeSetup( | |
5109 | IN PRTMP_ADAPTER pAd); | |
5110 | ||
5111 | VOID RT33xxLoadRFSleepModeSetup( | |
5112 | IN PRTMP_ADAPTER pAd); | |
5113 | ||
5114 | VOID RT33xxReverseRFSleepModeSetup( | |
5115 | IN PRTMP_ADAPTER pAd); | |
5116 | ||
5117 | #ifdef RT3370 | |
5118 | VOID NICInitRT3370RFRegisters( | |
5119 | IN RTMP_ADAPTER *pAd); | |
5120 | #endif // RT3070 // | |
5121 | ||
5122 | #ifdef RT3390 | |
5123 | VOID NICInitRT3390RFRegisters( | |
5124 | IN RTMP_ADAPTER *pAd); | |
5125 | #endif // RT3090 // | |
5126 | ||
5127 | VOID RT33xxHaltAction( | |
5128 | IN PRTMP_ADAPTER pAd); | |
5129 | ||
5130 | VOID RT33xxSetRxAnt( | |
5131 | IN PRTMP_ADAPTER pAd, | |
5132 | IN UCHAR Ant); | |
5133 | ||
5134 | #endif // RT33xx // | |
5135 | ||
5136 | ||
5137 | ||
5138 | VOID AsicEvaluateRxAnt( | |
5139 | IN PRTMP_ADAPTER pAd); | |
5140 | ||
5141 | VOID AsicRxAntEvalTimeout( | |
5142 | IN PVOID SystemSpecific1, | |
5143 | IN PVOID FunctionContext, | |
5144 | IN PVOID SystemSpecific2, | |
5145 | IN PVOID SystemSpecific3); | |
5146 | ||
5147 | VOID APSDPeriodicExec( | |
5148 | IN PVOID SystemSpecific1, | |
5149 | IN PVOID FunctionContext, | |
5150 | IN PVOID SystemSpecific2, | |
5151 | IN PVOID SystemSpecific3); | |
5152 | ||
5153 | BOOLEAN RTMPCheckEntryEnableAutoRateSwitch( | |
5154 | IN PRTMP_ADAPTER pAd, | |
5155 | IN PMAC_TABLE_ENTRY pEntry); | |
5156 | ||
5157 | UCHAR RTMPStaFixedTxMode( | |
5158 | IN PRTMP_ADAPTER pAd, | |
5159 | IN PMAC_TABLE_ENTRY pEntry); | |
5160 | ||
5161 | VOID RTMPUpdateLegacyTxSetting( | |
5162 | UCHAR fixed_tx_mode, | |
5163 | PMAC_TABLE_ENTRY pEntry); | |
5164 | ||
5165 | BOOLEAN RTMPAutoRateSwitchCheck( | |
5166 | IN PRTMP_ADAPTER pAd); | |
5167 | ||
5168 | NDIS_STATUS MlmeInit( | |
5169 | IN PRTMP_ADAPTER pAd); | |
5170 | ||
5171 | VOID MlmeHandler( | |
5172 | IN PRTMP_ADAPTER pAd); | |
5173 | ||
5174 | VOID MlmeHalt( | |
5175 | IN PRTMP_ADAPTER pAd); | |
5176 | ||
5177 | VOID MlmeResetRalinkCounters( | |
5178 | IN PRTMP_ADAPTER pAd); | |
5179 | ||
5180 | VOID BuildChannelList( | |
5181 | IN PRTMP_ADAPTER pAd); | |
5182 | ||
5183 | UCHAR FirstChannel( | |
5184 | IN PRTMP_ADAPTER pAd); | |
5185 | ||
5186 | UCHAR NextChannel( | |
5187 | IN PRTMP_ADAPTER pAd, | |
5188 | IN UCHAR channel); | |
5189 | ||
5190 | VOID ChangeToCellPowerLimit( | |
5191 | IN PRTMP_ADAPTER pAd, | |
5192 | IN UCHAR AironetCellPowerLimit); | |
5193 | ||
5194 | // | |
5195 | // Prototypes of function definition in rtmp_tkip.c | |
5196 | // | |
5197 | VOID RTMPInitTkipEngine( | |
5198 | IN PRTMP_ADAPTER pAd, | |
5199 | IN PUCHAR pTKey, | |
5200 | IN UCHAR KeyId, | |
5201 | IN PUCHAR pTA, | |
5202 | IN PUCHAR pMICKey, | |
5203 | IN PUCHAR pTSC, | |
5204 | OUT PULONG pIV16, | |
5205 | OUT PULONG pIV32); | |
5206 | ||
5207 | VOID RTMPInitMICEngine( | |
5208 | IN PRTMP_ADAPTER pAd, | |
5209 | IN PUCHAR pKey, | |
5210 | IN PUCHAR pDA, | |
5211 | IN PUCHAR pSA, | |
5212 | IN UCHAR UserPriority, | |
5213 | IN PUCHAR pMICKey); | |
5214 | ||
5215 | BOOLEAN RTMPTkipCompareMICValue( | |
5216 | IN PRTMP_ADAPTER pAd, | |
5217 | IN PUCHAR pSrc, | |
5218 | IN PUCHAR pDA, | |
5219 | IN PUCHAR pSA, | |
5220 | IN PUCHAR pMICKey, | |
5221 | IN UCHAR UserPriority, | |
5222 | IN UINT Len); | |
5223 | ||
5224 | VOID RTMPCalculateMICValue( | |
5225 | IN PRTMP_ADAPTER pAd, | |
5226 | IN PNDIS_PACKET pPacket, | |
5227 | IN PUCHAR pEncap, | |
5228 | IN PCIPHER_KEY pKey, | |
5229 | IN UCHAR apidx); | |
5230 | ||
5231 | BOOLEAN RTMPTkipCompareMICValueWithLLC( | |
5232 | IN PRTMP_ADAPTER pAd, | |
5233 | IN PUCHAR pLLC, | |
5234 | IN PUCHAR pSrc, | |
5235 | IN PUCHAR pDA, | |
5236 | IN PUCHAR pSA, | |
5237 | IN PUCHAR pMICKey, | |
5238 | IN UINT Len); | |
5239 | ||
5240 | VOID RTMPTkipAppendByte( | |
5241 | IN PTKIP_KEY_INFO pTkip, | |
5242 | IN UCHAR uChar); | |
5243 | ||
5244 | VOID RTMPTkipAppend( | |
5245 | IN PTKIP_KEY_INFO pTkip, | |
5246 | IN PUCHAR pSrc, | |
5247 | IN UINT nBytes); | |
5248 | ||
5249 | VOID RTMPTkipGetMIC( | |
5250 | IN PTKIP_KEY_INFO pTkip); | |
5251 | ||
5252 | BOOLEAN RTMPSoftDecryptTKIP( | |
5253 | IN PRTMP_ADAPTER pAd, | |
5254 | IN PUCHAR pData, | |
5255 | IN ULONG DataByteCnt, | |
5256 | IN UCHAR UserPriority, | |
5257 | IN PCIPHER_KEY pWpaKey); | |
5258 | ||
5259 | BOOLEAN RTMPSoftDecryptAES( | |
5260 | IN PRTMP_ADAPTER pAd, | |
5261 | IN PUCHAR pData, | |
5262 | IN ULONG DataByteCnt, | |
5263 | IN PCIPHER_KEY pWpaKey); | |
5264 | ||
5265 | ||
5266 | ||
5267 | // | |
5268 | // Prototypes of function definition in cmm_info.c | |
5269 | // | |
5270 | INT RT_CfgSetCountryRegion( | |
5271 | IN PRTMP_ADAPTER pAd, | |
5272 | IN PSTRING arg, | |
5273 | IN INT band); | |
5274 | ||
5275 | INT RT_CfgSetWirelessMode( | |
5276 | IN PRTMP_ADAPTER pAd, | |
5277 | IN PSTRING arg); | |
5278 | ||
5279 | INT RT_CfgSetShortSlot( | |
5280 | IN PRTMP_ADAPTER pAd, | |
5281 | IN PSTRING arg); | |
5282 | ||
5283 | INT RT_CfgSetWepKey( | |
5284 | IN PRTMP_ADAPTER pAd, | |
5285 | IN PSTRING keyString, | |
5286 | IN CIPHER_KEY *pSharedKey, | |
5287 | IN INT keyIdx); | |
5288 | ||
5289 | INT RT_CfgSetWPAPSKKey( | |
5290 | IN RTMP_ADAPTER *pAd, | |
5291 | IN PSTRING keyString, | |
5292 | IN UCHAR *pHashStr, | |
5293 | IN INT hashStrLen, | |
5294 | OUT PUCHAR pPMKBuf); | |
5295 | ||
5296 | ||
5297 | ||
5298 | // | |
5299 | // Prototypes of function definition in cmm_info.c | |
5300 | // | |
5301 | NDIS_STATUS RTMPWPARemoveKeyProc( | |
5302 | IN PRTMP_ADAPTER pAd, | |
5303 | IN PVOID pBuf); | |
5304 | ||
5305 | VOID RTMPWPARemoveAllKeys( | |
5306 | IN PRTMP_ADAPTER pAd); | |
5307 | ||
5308 | BOOLEAN RTMPCheckStrPrintAble( | |
5309 | IN CHAR *pInPutStr, | |
5310 | IN UCHAR strLen); | |
5311 | ||
5312 | VOID RTMPSetPhyMode( | |
5313 | IN PRTMP_ADAPTER pAd, | |
5314 | IN ULONG phymode); | |
5315 | ||
5316 | VOID RTMPUpdateHTIE( | |
5317 | IN RT_HT_CAPABILITY *pRtHt, | |
5318 | IN UCHAR *pMcsSet, | |
5319 | OUT HT_CAPABILITY_IE *pHtCapability, | |
5320 | OUT ADD_HT_INFO_IE *pAddHtInfo); | |
5321 | ||
5322 | VOID RTMPAddWcidAttributeEntry( | |
5323 | IN PRTMP_ADAPTER pAd, | |
5324 | IN UCHAR BssIdx, | |
5325 | IN UCHAR KeyIdx, | |
5326 | IN UCHAR CipherAlg, | |
5327 | IN MAC_TABLE_ENTRY *pEntry); | |
5328 | ||
5329 | PSTRING GetEncryptType( | |
5330 | CHAR enc); | |
5331 | ||
5332 | PSTRING GetAuthMode( | |
5333 | CHAR auth); | |
5334 | ||
5335 | ||
5336 | VOID RTMPIndicateWPA2Status( | |
5337 | IN PRTMP_ADAPTER pAdapter); | |
5338 | ||
5339 | VOID RTMPOPModeSwitching( | |
5340 | IN PRTMP_ADAPTER pAd); | |
5341 | ||
5342 | ||
5343 | #ifdef DOT11_N_SUPPORT | |
5344 | VOID RTMPSetHT( | |
5345 | IN PRTMP_ADAPTER pAd, | |
5346 | IN OID_SET_HT_PHYMODE *pHTPhyMode); | |
5347 | ||
5348 | VOID RTMPSetIndividualHT( | |
5349 | IN PRTMP_ADAPTER pAd, | |
5350 | IN UCHAR apidx); | |
5351 | #endif // DOT11_N_SUPPORT // | |
5352 | ||
5353 | VOID RTMPSendWirelessEvent( | |
5354 | IN PRTMP_ADAPTER pAd, | |
5355 | IN USHORT Event_flag, | |
5356 | IN PUCHAR pAddr, | |
5357 | IN UCHAR BssIdx, | |
5358 | IN CHAR Rssi); | |
5359 | ||
5360 | VOID NICUpdateCntlCounters( | |
5361 | IN PRTMP_ADAPTER pAd, | |
5362 | IN PHEADER_802_11 pHeader, | |
5363 | IN UCHAR SubType, | |
5364 | IN PRXWI_STRUC pRxWI); | |
5365 | ||
5366 | VOID DBGPRINT_TX_RING( | |
5367 | IN PRTMP_ADAPTER pAd, | |
5368 | IN UCHAR QueIdx); | |
5369 | ||
5370 | VOID DBGPRINT_RX_RING( | |
5371 | IN PRTMP_ADAPTER pAd); | |
5372 | ||
5373 | CHAR ConvertToRssi( | |
5374 | IN PRTMP_ADAPTER pAd, | |
5375 | IN CHAR Rssi, | |
5376 | IN UCHAR RssiNumber); | |
5377 | ||
5378 | ||
5379 | #ifdef DOT11N_DRAFT3 | |
5380 | VOID BuildEffectedChannelList( | |
5381 | IN PRTMP_ADAPTER pAd); | |
5382 | #endif // DOT11N_DRAFT3 // | |
5383 | ||
5384 | ||
5385 | VOID APAsicEvaluateRxAnt( | |
5386 | IN PRTMP_ADAPTER pAd); | |
5387 | ||
5388 | #ifdef ANT_DIVERSITY_SUPPORT | |
5389 | VOID APAsicAntennaAvg( | |
5390 | IN PRTMP_ADAPTER pAd, | |
5391 | IN UCHAR AntSelect, | |
5392 | IN SHORT *RssiAvg); | |
5393 | #endif // ANT_DIVERSITY_SUPPORT // | |
5394 | ||
5395 | VOID APAsicRxAntEvalTimeout( | |
5396 | IN PRTMP_ADAPTER pAd); | |
5397 | ||
5398 | /*=================================== | |
5399 | Function prototype in cmm_wpa.c | |
5400 | =================================== */ | |
5401 | VOID RTMPToWirelessSta( | |
5402 | IN PRTMP_ADAPTER pAd, | |
5403 | IN PMAC_TABLE_ENTRY pEntry, | |
5404 | IN PUCHAR pHeader802_3, | |
5405 | IN UINT HdrLen, | |
5406 | IN PUCHAR pData, | |
5407 | IN UINT DataLen, | |
5408 | IN BOOLEAN bClearFrame); | |
5409 | ||
5410 | VOID WpaDerivePTK( | |
5411 | IN PRTMP_ADAPTER pAd, | |
5412 | IN UCHAR *PMK, | |
5413 | IN UCHAR *ANonce, | |
5414 | IN UCHAR *AA, | |
5415 | IN UCHAR *SNonce, | |
5416 | IN UCHAR *SA, | |
5417 | OUT UCHAR *output, | |
5418 | IN UINT len); | |
5419 | ||
5420 | VOID GenRandom( | |
5421 | IN PRTMP_ADAPTER pAd, | |
5422 | IN UCHAR *macAddr, | |
5423 | OUT UCHAR *random); | |
5424 | ||
5425 | BOOLEAN RTMPCheckWPAframe( | |
5426 | IN PRTMP_ADAPTER pAd, | |
5427 | IN PMAC_TABLE_ENTRY pEntry, | |
5428 | IN PUCHAR pData, | |
5429 | IN ULONG DataByteCount, | |
5430 | IN UCHAR FromWhichBSSID); | |
5431 | ||
5432 | VOID AES_GTK_KEY_UNWRAP( | |
5433 | IN UCHAR *key, | |
5434 | OUT UCHAR *plaintext, | |
5435 | IN UINT32 c_len, | |
5436 | IN UCHAR *ciphertext); | |
5437 | ||
5438 | BOOLEAN RTMPParseEapolKeyData( | |
5439 | IN PRTMP_ADAPTER pAd, | |
5440 | IN PUCHAR pKeyData, | |
5441 | IN UCHAR KeyDataLen, | |
5442 | IN UCHAR GroupKeyIndex, | |
5443 | IN UCHAR MsgType, | |
5444 | IN BOOLEAN bWPA2, | |
5445 | IN MAC_TABLE_ENTRY *pEntry); | |
5446 | ||
5447 | VOID ConstructEapolMsg( | |
5448 | IN PMAC_TABLE_ENTRY pEntry, | |
5449 | IN UCHAR GroupKeyWepStatus, | |
5450 | IN UCHAR MsgType, | |
5451 | IN UCHAR DefaultKeyIdx, | |
5452 | IN UCHAR *KeyNonce, | |
5453 | IN UCHAR *TxRSC, | |
5454 | IN UCHAR *GTK, | |
5455 | IN UCHAR *RSNIE, | |
5456 | IN UCHAR RSNIE_Len, | |
5457 | OUT PEAPOL_PACKET pMsg); | |
5458 | ||
5459 | NDIS_STATUS RTMPSoftDecryptBroadCastData( | |
5460 | IN PRTMP_ADAPTER pAd, | |
5461 | IN RX_BLK *pRxBlk, | |
5462 | IN NDIS_802_11_ENCRYPTION_STATUS GroupCipher, | |
5463 | IN PCIPHER_KEY pShard_key); | |
5464 | ||
5465 | VOID RTMPMakeRSNIE( | |
5466 | IN PRTMP_ADAPTER pAd, | |
5467 | IN UINT AuthMode, | |
5468 | IN UINT WepStatus, | |
5469 | IN UCHAR apidx); | |
5470 | ||
5471 | // | |
5472 | // function prototype in ap_wpa.c | |
5473 | // | |
5474 | VOID RTMPGetTxTscFromAsic( | |
5475 | IN PRTMP_ADAPTER pAd, | |
5476 | IN UCHAR apidx, | |
5477 | OUT PUCHAR pTxTsc); | |
5478 | ||
5479 | VOID APInstallPairwiseKey( | |
5480 | PRTMP_ADAPTER pAd, | |
5481 | PMAC_TABLE_ENTRY pEntry); | |
5482 | ||
5483 | MAC_TABLE_ENTRY *PACInquiry( | |
5484 | IN PRTMP_ADAPTER pAd, | |
5485 | IN ULONG Wcid); | |
5486 | ||
5487 | UINT APValidateRSNIE( | |
5488 | IN PRTMP_ADAPTER pAd, | |
5489 | IN PMAC_TABLE_ENTRY pEntry, | |
5490 | IN PUCHAR pRsnIe, | |
5491 | IN UCHAR rsnie_len); | |
5492 | ||
5493 | VOID HandleCounterMeasure( | |
5494 | IN PRTMP_ADAPTER pAd, | |
5495 | IN MAC_TABLE_ENTRY *pEntry); | |
5496 | ||
5497 | VOID WPAStart4WayHS( | |
5498 | IN PRTMP_ADAPTER pAd, | |
5499 | IN MAC_TABLE_ENTRY *pEntry, | |
5500 | IN ULONG TimeInterval); | |
5501 | ||
5502 | VOID WPAStart2WayGroupHS( | |
5503 | IN PRTMP_ADAPTER pAd, | |
5504 | IN MAC_TABLE_ENTRY *pEntry); | |
5505 | ||
5506 | VOID PeerPairMsg1Action( | |
5507 | IN PRTMP_ADAPTER pAd, | |
5508 | IN MAC_TABLE_ENTRY *pEntry, | |
5509 | IN MLME_QUEUE_ELEM *Elem); | |
5510 | ||
5511 | VOID PeerPairMsg2Action( | |
5512 | IN PRTMP_ADAPTER pAd, | |
5513 | IN MAC_TABLE_ENTRY *pEntry, | |
5514 | IN MLME_QUEUE_ELEM *Elem); | |
5515 | ||
5516 | VOID PeerPairMsg3Action( | |
5517 | IN PRTMP_ADAPTER pAd, | |
5518 | IN MAC_TABLE_ENTRY *pEntry, | |
5519 | IN MLME_QUEUE_ELEM *Elem); | |
5520 | ||
5521 | VOID PeerPairMsg4Action( | |
5522 | IN PRTMP_ADAPTER pAd, | |
5523 | IN MAC_TABLE_ENTRY *pEntry, | |
5524 | IN MLME_QUEUE_ELEM *Elem); | |
5525 | ||
5526 | VOID PeerGroupMsg1Action( | |
5527 | IN PRTMP_ADAPTER pAd, | |
5528 | IN PMAC_TABLE_ENTRY pEntry, | |
5529 | IN MLME_QUEUE_ELEM *Elem); | |
5530 | ||
5531 | VOID PeerGroupMsg2Action( | |
5532 | IN PRTMP_ADAPTER pAd, | |
5533 | IN PMAC_TABLE_ENTRY pEntry, | |
5534 | IN VOID *Msg, | |
5535 | IN UINT MsgLen); | |
5536 | ||
5537 | VOID CMTimerExec( | |
5538 | IN PVOID SystemSpecific1, | |
5539 | IN PVOID FunctionContext, | |
5540 | IN PVOID SystemSpecific2, | |
5541 | IN PVOID SystemSpecific3); | |
5542 | ||
5543 | VOID WPARetryExec( | |
5544 | IN PVOID SystemSpecific1, | |
5545 | IN PVOID FunctionContext, | |
5546 | IN PVOID SystemSpecific2, | |
5547 | IN PVOID SystemSpecific3); | |
5548 | ||
5549 | VOID EnqueueStartForPSKExec( | |
5550 | IN PVOID SystemSpecific1, | |
5551 | IN PVOID FunctionContext, | |
5552 | IN PVOID SystemSpecific2, | |
5553 | IN PVOID SystemSpecific3); | |
5554 | ||
5555 | VOID RTMPHandleSTAKey( | |
5556 | IN PRTMP_ADAPTER pAdapter, | |
5557 | IN MAC_TABLE_ENTRY *pEntry, | |
5558 | IN MLME_QUEUE_ELEM *Elem); | |
5559 | ||
5560 | VOID PairDisAssocAction( | |
5561 | IN PRTMP_ADAPTER pAd, | |
5562 | IN PMAC_TABLE_ENTRY pEntry, | |
5563 | IN USHORT Reason); | |
5564 | ||
5565 | VOID MlmeDeAuthAction( | |
5566 | IN PRTMP_ADAPTER pAd, | |
5567 | IN PMAC_TABLE_ENTRY pEntry, | |
5568 | IN USHORT Reason); | |
5569 | ||
5570 | VOID GREKEYPeriodicExec( | |
5571 | IN PVOID SystemSpecific1, | |
5572 | IN PVOID FunctionContext, | |
5573 | IN PVOID SystemSpecific2, | |
5574 | IN PVOID SystemSpecific3); | |
5575 | ||
5576 | VOID WpaDeriveGTK( | |
5577 | IN UCHAR *PMK, | |
5578 | IN UCHAR *GNonce, | |
5579 | IN UCHAR *AA, | |
5580 | OUT UCHAR *output, | |
5581 | IN UINT len); | |
5582 | ||
5583 | VOID AES_GTK_KEY_WRAP( | |
5584 | IN UCHAR *key, | |
5585 | IN UCHAR *plaintext, | |
5586 | IN UINT32 p_len, | |
5587 | OUT UCHAR *ciphertext); | |
5588 | ||
5589 | VOID AES_128_CMAC( | |
5590 | IN PUCHAR key, | |
5591 | IN PUCHAR input, | |
5592 | IN INT len, | |
5593 | OUT PUCHAR mac); | |
5594 | ||
5595 | VOID WpaSend( | |
5596 | IN PRTMP_ADAPTER pAdapter, | |
5597 | IN PUCHAR pPacket, | |
5598 | IN ULONG Len); | |
5599 | ||
5600 | VOID RTMPAddPMKIDCache( | |
5601 | IN PRTMP_ADAPTER pAd, | |
5602 | IN INT apidx, | |
5603 | IN PUCHAR pAddr, | |
5604 | IN UCHAR *PMKID, | |
5605 | IN UCHAR *PMK); | |
5606 | ||
5607 | INT RTMPSearchPMKIDCache( | |
5608 | IN PRTMP_ADAPTER pAd, | |
5609 | IN INT apidx, | |
5610 | IN PUCHAR pAddr); | |
5611 | ||
5612 | VOID RTMPDeletePMKIDCache( | |
5613 | IN PRTMP_ADAPTER pAd, | |
5614 | IN INT apidx, | |
5615 | IN INT idx); | |
5616 | ||
5617 | VOID RTMPMaintainPMKIDCache( | |
5618 | IN PRTMP_ADAPTER pAd); | |
5619 | ||
5620 | VOID RTMPSendTriggerFrame( | |
5621 | IN PRTMP_ADAPTER pAd, | |
5622 | IN PVOID pBuffer, | |
5623 | IN ULONG Length, | |
5624 | IN UCHAR TxRate, | |
5625 | IN BOOLEAN bQosNull); | |
5626 | ||
5627 | //typedef void (*TIMER_FUNCTION)(unsigned long); | |
5628 | ||
5629 | ||
5630 | /* timeout -- ms */ | |
5631 | VOID RTMP_SetPeriodicTimer( | |
5632 | IN NDIS_MINIPORT_TIMER *pTimer, | |
5633 | IN unsigned long timeout); | |
5634 | ||
5635 | VOID RTMP_OS_Init_Timer( | |
5636 | IN PRTMP_ADAPTER pAd, | |
5637 | IN NDIS_MINIPORT_TIMER *pTimer, | |
5638 | IN TIMER_FUNCTION function, | |
5639 | IN PVOID data); | |
5640 | ||
5641 | VOID RTMP_OS_Add_Timer( | |
5642 | IN NDIS_MINIPORT_TIMER *pTimer, | |
5643 | IN unsigned long timeout); | |
5644 | ||
5645 | VOID RTMP_OS_Mod_Timer( | |
5646 | IN NDIS_MINIPORT_TIMER *pTimer, | |
5647 | IN unsigned long timeout); | |
5648 | ||
5649 | ||
5650 | VOID RTMP_OS_Del_Timer( | |
5651 | IN NDIS_MINIPORT_TIMER *pTimer, | |
5652 | OUT BOOLEAN *pCancelled); | |
5653 | ||
5654 | ||
5655 | VOID RTMP_OS_Release_Packet( | |
5656 | IN PRTMP_ADAPTER pAd, | |
5657 | IN PQUEUE_ENTRY pEntry); | |
5658 | ||
5659 | VOID RTMPusecDelay( | |
5660 | IN ULONG usec); | |
5661 | ||
5662 | NDIS_STATUS os_alloc_mem( | |
5663 | IN RTMP_ADAPTER *pAd, | |
5664 | OUT UCHAR **mem, | |
5665 | IN ULONG size); | |
5666 | ||
5667 | NDIS_STATUS os_free_mem( | |
5668 | IN PRTMP_ADAPTER pAd, | |
5669 | IN PVOID mem); | |
5670 | ||
5671 | ||
5672 | void RTMP_AllocateSharedMemory( | |
5673 | IN PRTMP_ADAPTER pAd, | |
5674 | IN ULONG Length, | |
5675 | IN BOOLEAN Cached, | |
5676 | OUT PVOID *VirtualAddress, | |
5677 | OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); | |
5678 | ||
5679 | VOID RTMPFreeTxRxRingMemory( | |
5680 | IN PRTMP_ADAPTER pAd); | |
5681 | ||
5682 | NDIS_STATUS AdapterBlockAllocateMemory( | |
5683 | IN PVOID handle, | |
5684 | OUT PVOID *ppAd); | |
5685 | ||
5686 | void RTMP_AllocateTxDescMemory( | |
5687 | IN PRTMP_ADAPTER pAd, | |
5688 | IN UINT Index, | |
5689 | IN ULONG Length, | |
5690 | IN BOOLEAN Cached, | |
5691 | OUT PVOID *VirtualAddress, | |
5692 | OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); | |
5693 | ||
5694 | void RTMP_AllocateFirstTxBuffer( | |
5695 | IN PRTMP_ADAPTER pAd, | |
5696 | IN UINT Index, | |
5697 | IN ULONG Length, | |
5698 | IN BOOLEAN Cached, | |
5699 | OUT PVOID *VirtualAddress, | |
5700 | OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); | |
5701 | ||
5702 | void RTMP_FreeFirstTxBuffer( | |
5703 | IN PRTMP_ADAPTER pAd, | |
5704 | IN ULONG Length, | |
5705 | IN BOOLEAN Cached, | |
5706 | IN PVOID VirtualAddress, | |
5707 | IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); | |
5708 | ||
5709 | void RTMP_AllocateMgmtDescMemory( | |
5710 | IN PRTMP_ADAPTER pAd, | |
5711 | IN ULONG Length, | |
5712 | IN BOOLEAN Cached, | |
5713 | OUT PVOID *VirtualAddress, | |
5714 | OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); | |
5715 | ||
5716 | void RTMP_AllocateRxDescMemory( | |
5717 | IN PRTMP_ADAPTER pAd, | |
5718 | IN ULONG Length, | |
5719 | IN BOOLEAN Cached, | |
5720 | OUT PVOID *VirtualAddress, | |
5721 | OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); | |
5722 | ||
5723 | void RTMP_FreeDescMemory( | |
5724 | IN PRTMP_ADAPTER pAd, | |
5725 | IN ULONG Length, | |
5726 | IN PVOID VirtualAddress, | |
5727 | IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); | |
5728 | ||
5729 | PNDIS_PACKET RtmpOSNetPktAlloc( | |
5730 | IN RTMP_ADAPTER *pAd, | |
5731 | IN int size); | |
5732 | ||
5733 | PNDIS_PACKET RTMP_AllocateRxPacketBuffer( | |
5734 | IN PRTMP_ADAPTER pAd, | |
5735 | IN ULONG Length, | |
5736 | IN BOOLEAN Cached, | |
5737 | OUT PVOID *VirtualAddress, | |
5738 | OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); | |
5739 | ||
5740 | PNDIS_PACKET RTMP_AllocateTxPacketBuffer( | |
5741 | IN PRTMP_ADAPTER pAd, | |
5742 | IN ULONG Length, | |
5743 | IN BOOLEAN Cached, | |
5744 | OUT PVOID *VirtualAddress); | |
5745 | ||
5746 | PNDIS_PACKET RTMP_AllocateFragPacketBuffer( | |
5747 | IN PRTMP_ADAPTER pAd, | |
5748 | IN ULONG Length); | |
5749 | ||
5750 | void RTMP_QueryPacketInfo( | |
5751 | IN PNDIS_PACKET pPacket, | |
5752 | OUT PACKET_INFO *pPacketInfo, | |
5753 | OUT PUCHAR *pSrcBufVA, | |
5754 | OUT UINT *pSrcBufLen); | |
5755 | ||
5756 | void RTMP_QueryNextPacketInfo( | |
5757 | IN PNDIS_PACKET *ppPacket, | |
5758 | OUT PACKET_INFO *pPacketInfo, | |
5759 | OUT PUCHAR *pSrcBufVA, | |
5760 | OUT UINT *pSrcBufLen); | |
5761 | ||
5762 | ||
5763 | BOOLEAN RTMP_FillTxBlkInfo( | |
5764 | IN RTMP_ADAPTER *pAd, | |
5765 | IN TX_BLK *pTxBlk); | |
5766 | ||
5767 | ||
5768 | PRTMP_SCATTER_GATHER_LIST | |
5769 | rt_get_sg_list_from_packet(PNDIS_PACKET pPacket, RTMP_SCATTER_GATHER_LIST *sg); | |
5770 | ||
5771 | ||
5772 | void announce_802_3_packet( | |
5773 | IN PRTMP_ADAPTER pAd, | |
5774 | IN PNDIS_PACKET pPacket); | |
5775 | ||
5776 | ||
5777 | UINT BA_Reorder_AMSDU_Annnounce( | |
5778 | IN PRTMP_ADAPTER pAd, | |
5779 | IN PNDIS_PACKET pPacket); | |
5780 | ||
5781 | ||
5782 | UINT Handle_AMSDU_Packet( | |
5783 | IN PRTMP_ADAPTER pAd, | |
5784 | IN PUCHAR pData, | |
5785 | IN ULONG DataSize, | |
5786 | IN UCHAR FromWhichBSSID); | |
5787 | ||
5788 | ||
5789 | void convert_802_11_to_802_3_packet( | |
5790 | IN PRTMP_ADAPTER pAd, | |
5791 | IN PNDIS_PACKET pPacket, | |
5792 | IN PUCHAR p8023hdr, | |
5793 | IN PUCHAR pData, | |
5794 | IN ULONG DataSize, | |
5795 | IN UCHAR FromWhichBSSID); | |
5796 | ||
5797 | ||
5798 | PNET_DEV get_netdev_from_bssid( | |
5799 | IN PRTMP_ADAPTER pAd, | |
5800 | IN UCHAR FromWhichBSSID); | |
5801 | ||
5802 | ||
5803 | PNDIS_PACKET duplicate_pkt( | |
5804 | IN PRTMP_ADAPTER pAd, | |
5805 | IN PUCHAR pHeader802_3, | |
5806 | IN UINT HdrLen, | |
5807 | IN PUCHAR pData, | |
5808 | IN ULONG DataSize, | |
5809 | IN UCHAR FromWhichBSSID); | |
5810 | ||
5811 | ||
5812 | PNDIS_PACKET duplicate_pkt_with_TKIP_MIC( | |
5813 | IN PRTMP_ADAPTER pAd, | |
5814 | IN PNDIS_PACKET pOldPkt); | |
5815 | ||
5816 | PNDIS_PACKET duplicate_pkt_with_VLAN( | |
5817 | IN PRTMP_ADAPTER pAd, | |
5818 | IN PUCHAR pHeader802_3, | |
5819 | IN UINT HdrLen, | |
5820 | IN PUCHAR pData, | |
5821 | IN ULONG DataSize, | |
5822 | IN UCHAR FromWhichBSSID); | |
5823 | ||
5824 | ||
5825 | UCHAR VLAN_8023_Header_Copy( | |
5826 | IN PRTMP_ADAPTER pAd, | |
5827 | IN PUCHAR pHeader802_3, | |
5828 | IN UINT HdrLen, | |
5829 | OUT PUCHAR pData, | |
5830 | IN UCHAR FromWhichBSSID); | |
5831 | ||
5832 | #ifdef DOT11_N_SUPPORT | |
5833 | void ba_flush_reordering_timeout_mpdus( | |
5834 | IN PRTMP_ADAPTER pAd, | |
5835 | IN PBA_REC_ENTRY pBAEntry, | |
5836 | IN ULONG Now32); | |
5837 | ||
5838 | ||
5839 | VOID BAOriSessionSetUp( | |
5840 | IN PRTMP_ADAPTER pAd, | |
5841 | IN MAC_TABLE_ENTRY *pEntry, | |
5842 | IN UCHAR TID, | |
5843 | IN USHORT TimeOut, | |
5844 | IN ULONG DelayTime, | |
5845 | IN BOOLEAN isForced); | |
5846 | ||
5847 | VOID BASessionTearDownALL( | |
5848 | IN OUT PRTMP_ADAPTER pAd, | |
5849 | IN UCHAR Wcid); | |
5850 | #endif // DOT11_N_SUPPORT // | |
5851 | ||
5852 | BOOLEAN OS_Need_Clone_Packet(void); | |
5853 | ||
5854 | ||
5855 | VOID build_tx_packet( | |
5856 | IN PRTMP_ADAPTER pAd, | |
5857 | IN PNDIS_PACKET pPacket, | |
5858 | IN PUCHAR pFrame, | |
5859 | IN ULONG FrameLen); | |
5860 | ||
5861 | ||
5862 | VOID BAOriSessionTearDown( | |
5863 | IN OUT PRTMP_ADAPTER pAd, | |
5864 | IN UCHAR Wcid, | |
5865 | IN UCHAR TID, | |
5866 | IN BOOLEAN bPassive, | |
5867 | IN BOOLEAN bForceSend); | |
5868 | ||
5869 | VOID BARecSessionTearDown( | |
5870 | IN OUT PRTMP_ADAPTER pAd, | |
5871 | IN UCHAR Wcid, | |
5872 | IN UCHAR TID, | |
5873 | IN BOOLEAN bPassive); | |
5874 | ||
5875 | BOOLEAN ba_reordering_resource_init(PRTMP_ADAPTER pAd, int num); | |
5876 | void ba_reordering_resource_release(PRTMP_ADAPTER pAd); | |
5877 | ||
5878 | ||
5879 | ||
5880 | #ifdef NINTENDO_AP | |
5881 | VOID InitNINTENDO_TABLE( | |
5882 | IN PRTMP_ADAPTER pAd); | |
5883 | ||
5884 | UCHAR CheckNINTENDO_TABLE( | |
5885 | IN PRTMP_ADAPTER pAd, | |
5886 | PCHAR pDS_Ssid, | |
5887 | UCHAR DS_SsidLen, | |
5888 | PUCHAR pDS_Addr); | |
5889 | ||
5890 | UCHAR DelNINTENDO_ENTRY( | |
5891 | IN PRTMP_ADAPTER pAd, | |
5892 | UCHAR * pDS_Addr); | |
5893 | ||
5894 | VOID RTMPIoctlNintendoCapable( | |
5895 | IN PRTMP_ADAPTER pAd, | |
5896 | IN struct iwreq *wrq); | |
5897 | ||
5898 | VOID RTMPIoctlNintendoGetTable( | |
5899 | IN PRTMP_ADAPTER pAd, | |
5900 | IN struct iwreq *wrq); | |
5901 | ||
5902 | VOID RTMPIoctlNintendoSetTable( | |
5903 | IN PRTMP_ADAPTER pAd, | |
5904 | IN struct iwreq *wrq); | |
5905 | ||
5906 | #endif // NINTENDO_AP // | |
5907 | ||
5908 | BOOLEAN rtstrmactohex( | |
5909 | IN PSTRING s1, | |
5910 | IN PSTRING s2); | |
5911 | ||
5912 | BOOLEAN rtstrcasecmp( | |
5913 | IN PSTRING s1, | |
5914 | IN PSTRING s2); | |
5915 | ||
5916 | PSTRING rtstrstruncasecmp( | |
5917 | IN PSTRING s1, | |
5918 | IN PSTRING s2); | |
5919 | ||
5920 | PSTRING rtstrstr( | |
5921 | IN const PSTRING s1, | |
5922 | IN const PSTRING s2); | |
5923 | ||
5924 | PSTRING rstrtok( | |
5925 | IN PSTRING s, | |
5926 | IN const PSTRING ct); | |
5927 | ||
5928 | int rtinet_aton( | |
5929 | const PSTRING cp, | |
5930 | unsigned int *addr); | |
5931 | ||
5932 | ////////// common ioctl functions ////////// | |
5933 | INT Set_DriverVersion_Proc( | |
5934 | IN PRTMP_ADAPTER pAd, | |
5935 | IN PSTRING arg); | |
5936 | ||
5937 | INT Set_CountryRegion_Proc( | |
5938 | IN PRTMP_ADAPTER pAd, | |
5939 | IN PSTRING arg); | |
5940 | ||
5941 | INT Set_CountryRegionABand_Proc( | |
5942 | IN PRTMP_ADAPTER pAd, | |
5943 | IN PSTRING arg); | |
5944 | ||
5945 | INT Set_WirelessMode_Proc( | |
5946 | IN PRTMP_ADAPTER pAd, | |
5947 | IN PSTRING arg); | |
5948 | ||
5949 | INT Set_Channel_Proc( | |
5950 | IN PRTMP_ADAPTER pAd, | |
5951 | IN PSTRING arg); | |
5952 | ||
5953 | INT Set_ShortSlot_Proc( | |
5954 | IN PRTMP_ADAPTER pAd, | |
5955 | IN PSTRING arg); | |
5956 | ||
5957 | INT Set_TxPower_Proc( | |
5958 | IN PRTMP_ADAPTER pAd, | |
5959 | IN PSTRING arg); | |
5960 | ||
5961 | INT Set_BGProtection_Proc( | |
5962 | IN PRTMP_ADAPTER pAd, | |
5963 | IN PSTRING arg); | |
5964 | ||
5965 | INT Set_TxPreamble_Proc( | |
5966 | IN PRTMP_ADAPTER pAd, | |
5967 | IN PSTRING arg); | |
5968 | ||
5969 | INT Set_RTSThreshold_Proc( | |
5970 | IN PRTMP_ADAPTER pAd, | |
5971 | IN PSTRING arg); | |
5972 | ||
5973 | INT Set_FragThreshold_Proc( | |
5974 | IN PRTMP_ADAPTER pAd, | |
5975 | IN PSTRING arg); | |
5976 | ||
5977 | INT Set_TxBurst_Proc( | |
5978 | IN PRTMP_ADAPTER pAd, | |
5979 | IN PSTRING arg); | |
5980 | ||
5981 | #ifdef AGGREGATION_SUPPORT | |
5982 | INT Set_PktAggregate_Proc( | |
5983 | IN PRTMP_ADAPTER pAd, | |
5984 | IN PSTRING arg); | |
5985 | #endif // AGGREGATION_SUPPORT // | |
5986 | ||
5987 | #ifdef INF_AMAZON_PPA | |
5988 | INT Set_INF_AMAZON_SE_PPA_Proc( | |
5989 | IN PRTMP_ADAPTER pAd, | |
5990 | IN PUCHAR arg); | |
5991 | ||
5992 | #endif // INF_AMAZON_PPA // | |
5993 | ||
5994 | INT Set_IEEE80211H_Proc( | |
5995 | IN PRTMP_ADAPTER pAd, | |
5996 | IN PSTRING arg); | |
5997 | ||
5998 | #ifdef DBG | |
5999 | INT Set_Debug_Proc( | |
6000 | IN PRTMP_ADAPTER pAd, | |
6001 | IN PSTRING arg); | |
6002 | #endif | |
6003 | ||
6004 | INT Show_DescInfo_Proc( | |
6005 | IN PRTMP_ADAPTER pAd, | |
6006 | IN PSTRING arg); | |
6007 | ||
6008 | INT Set_ResetStatCounter_Proc( | |
6009 | IN PRTMP_ADAPTER pAd, | |
6010 | IN PSTRING arg); | |
6011 | ||
6012 | #ifdef DOT11_N_SUPPORT | |
6013 | INT Set_BASetup_Proc( | |
6014 | IN PRTMP_ADAPTER pAd, | |
6015 | IN PSTRING arg); | |
6016 | ||
6017 | INT Set_BADecline_Proc( | |
6018 | IN PRTMP_ADAPTER pAd, | |
6019 | IN PSTRING arg); | |
6020 | ||
6021 | INT Set_BAOriTearDown_Proc( | |
6022 | IN PRTMP_ADAPTER pAd, | |
6023 | IN PSTRING arg); | |
6024 | ||
6025 | INT Set_BARecTearDown_Proc( | |
6026 | IN PRTMP_ADAPTER pAd, | |
6027 | IN PSTRING arg); | |
6028 | ||
6029 | INT Set_HtBw_Proc( | |
6030 | IN PRTMP_ADAPTER pAd, | |
6031 | IN PSTRING arg); | |
6032 | ||
6033 | INT Set_HtMcs_Proc( | |
6034 | IN PRTMP_ADAPTER pAd, | |
6035 | IN PSTRING arg); | |
6036 | ||
6037 | INT Set_HtGi_Proc( | |
6038 | IN PRTMP_ADAPTER pAd, | |
6039 | IN PSTRING arg); | |
6040 | ||
6041 | INT Set_HtOpMode_Proc( | |
6042 | IN PRTMP_ADAPTER pAd, | |
6043 | IN PSTRING arg); | |
6044 | ||
6045 | INT Set_HtStbc_Proc( | |
6046 | IN PRTMP_ADAPTER pAd, | |
6047 | IN PSTRING arg); | |
6048 | ||
6049 | INT Set_HtHtc_Proc( | |
6050 | IN PRTMP_ADAPTER pAd, | |
6051 | IN PSTRING arg); | |
6052 | ||
6053 | INT Set_HtExtcha_Proc( | |
6054 | IN PRTMP_ADAPTER pAd, | |
6055 | IN PSTRING arg); | |
6056 | ||
6057 | INT Set_HtMpduDensity_Proc( | |
6058 | IN PRTMP_ADAPTER pAd, | |
6059 | IN PSTRING arg); | |
6060 | ||
6061 | INT Set_HtBaWinSize_Proc( | |
6062 | IN PRTMP_ADAPTER pAd, | |
6063 | IN PSTRING arg); | |
6064 | ||
6065 | INT Set_HtRdg_Proc( | |
6066 | IN PRTMP_ADAPTER pAd, | |
6067 | IN PSTRING arg); | |
6068 | ||
6069 | INT Set_HtLinkAdapt_Proc( | |
6070 | IN PRTMP_ADAPTER pAd, | |
6071 | IN PSTRING arg); | |
6072 | ||
6073 | INT Set_HtAmsdu_Proc( | |
6074 | IN PRTMP_ADAPTER pAd, | |
6075 | IN PSTRING arg); | |
6076 | ||
6077 | INT Set_HtAutoBa_Proc( | |
6078 | IN PRTMP_ADAPTER pAd, | |
6079 | IN PSTRING arg); | |
6080 | ||
6081 | INT Set_HtProtect_Proc( | |
6082 | IN PRTMP_ADAPTER pAd, | |
6083 | IN PSTRING arg); | |
6084 | ||
6085 | INT Set_HtMimoPs_Proc( | |
6086 | IN PRTMP_ADAPTER pAd, | |
6087 | IN PSTRING arg); | |
6088 | ||
6089 | ||
6090 | INT Set_ForceShortGI_Proc( | |
6091 | IN PRTMP_ADAPTER pAd, | |
6092 | IN PSTRING arg); | |
6093 | ||
6094 | INT Set_ForceGF_Proc( | |
6095 | IN PRTMP_ADAPTER pAd, | |
6096 | IN PSTRING arg); | |
6097 | ||
6098 | INT SetCommonHT( | |
6099 | IN PRTMP_ADAPTER pAd); | |
6100 | ||
6101 | INT Set_SendPSMPAction_Proc( | |
6102 | IN PRTMP_ADAPTER pAd, | |
6103 | IN PSTRING arg); | |
6104 | ||
6105 | INT Set_HtMIMOPSmode_Proc( | |
6106 | IN PRTMP_ADAPTER pAd, | |
6107 | IN PSTRING arg); | |
6108 | ||
6109 | ||
6110 | INT Set_HtTxBASize_Proc( | |
6111 | IN PRTMP_ADAPTER pAd, | |
6112 | IN PSTRING arg); | |
6113 | ||
6114 | INT Set_HtDisallowTKIP_Proc( | |
6115 | IN PRTMP_ADAPTER pAd, | |
6116 | IN PSTRING arg); | |
6117 | ||
6118 | #endif // DOT11_N_SUPPORT // | |
6119 | ||
6120 | ||
6121 | ||
6122 | #ifdef CONFIG_STA_SUPPORT | |
6123 | //Dls , kathy | |
6124 | VOID RTMPSendDLSTearDownFrame( | |
6125 | IN PRTMP_ADAPTER pAd, | |
6126 | IN PUCHAR pDA); | |
6127 | ||
6128 | #ifdef DOT11_N_SUPPORT | |
6129 | //Block ACK | |
6130 | VOID QueryBATABLE( | |
6131 | IN PRTMP_ADAPTER pAd, | |
6132 | OUT PQUERYBA_TABLE pBAT); | |
6133 | #endif // DOT11_N_SUPPORT // | |
6134 | ||
6135 | #ifdef WPA_SUPPLICANT_SUPPORT | |
6136 | INT WpaCheckEapCode( | |
6137 | IN PRTMP_ADAPTER pAd, | |
6138 | IN PUCHAR pFrame, | |
6139 | IN USHORT FrameLen, | |
6140 | IN USHORT OffSet); | |
6141 | ||
6142 | VOID WpaSendMicFailureToWpaSupplicant( | |
6143 | IN PRTMP_ADAPTER pAd, | |
6144 | IN BOOLEAN bUnicast); | |
6145 | ||
6146 | VOID SendAssocIEsToWpaSupplicant( | |
6147 | IN PRTMP_ADAPTER pAd); | |
6148 | #endif // WPA_SUPPLICANT_SUPPORT // | |
6149 | ||
6150 | #ifdef NATIVE_WPA_SUPPLICANT_SUPPORT | |
6151 | int wext_notify_event_assoc( | |
6152 | IN RTMP_ADAPTER *pAd); | |
6153 | #endif // NATIVE_WPA_SUPPLICANT_SUPPORT // | |
6154 | ||
6155 | #endif // CONFIG_STA_SUPPORT // | |
6156 | ||
6157 | ||
6158 | ||
6159 | #ifdef DOT11_N_SUPPORT | |
6160 | VOID Handle_BSS_Width_Trigger_Events( | |
6161 | IN PRTMP_ADAPTER pAd); | |
6162 | ||
6163 | void build_ext_channel_switch_ie( | |
6164 | IN PRTMP_ADAPTER pAd, | |
6165 | IN HT_EXT_CHANNEL_SWITCH_ANNOUNCEMENT_IE *pIE); | |
6166 | #endif // DOT11_N_SUPPORT // | |
6167 | ||
6168 | ||
6169 | BOOLEAN APRxDoneInterruptHandle( | |
6170 | IN PRTMP_ADAPTER pAd); | |
6171 | ||
6172 | BOOLEAN STARxDoneInterruptHandle( | |
6173 | IN PRTMP_ADAPTER pAd, | |
6174 | IN BOOLEAN argc); | |
6175 | ||
6176 | #ifdef DOT11_N_SUPPORT | |
6177 | // AMPDU packet indication | |
6178 | VOID Indicate_AMPDU_Packet( | |
6179 | IN PRTMP_ADAPTER pAd, | |
6180 | IN RX_BLK *pRxBlk, | |
6181 | IN UCHAR FromWhichBSSID); | |
6182 | ||
6183 | // AMSDU packet indication | |
6184 | VOID Indicate_AMSDU_Packet( | |
6185 | IN PRTMP_ADAPTER pAd, | |
6186 | IN RX_BLK *pRxBlk, | |
6187 | IN UCHAR FromWhichBSSID); | |
6188 | #endif // DOT11_N_SUPPORT // | |
6189 | ||
6190 | // Normal legacy Rx packet indication | |
6191 | VOID Indicate_Legacy_Packet( | |
6192 | IN PRTMP_ADAPTER pAd, | |
6193 | IN RX_BLK *pRxBlk, | |
6194 | IN UCHAR FromWhichBSSID); | |
6195 | ||
6196 | VOID Indicate_EAPOL_Packet( | |
6197 | IN PRTMP_ADAPTER pAd, | |
6198 | IN RX_BLK *pRxBlk, | |
6199 | IN UCHAR FromWhichBSSID); | |
6200 | ||
6201 | void update_os_packet_info( | |
6202 | IN PRTMP_ADAPTER pAd, | |
6203 | IN RX_BLK *pRxBlk, | |
6204 | IN UCHAR FromWhichBSSID); | |
6205 | ||
6206 | void wlan_802_11_to_802_3_packet( | |
6207 | IN PRTMP_ADAPTER pAd, | |
6208 | IN RX_BLK *pRxBlk, | |
6209 | IN PUCHAR pHeader802_3, | |
6210 | IN UCHAR FromWhichBSSID); | |
6211 | ||
6212 | UINT deaggregate_AMSDU_announce( | |
6213 | IN PRTMP_ADAPTER pAd, | |
6214 | PNDIS_PACKET pPacket, | |
6215 | IN PUCHAR pData, | |
6216 | IN ULONG DataSize); | |
6217 | ||
6218 | ||
6219 | #ifdef CONFIG_STA_SUPPORT | |
6220 | // remove LLC and get 802_3 Header | |
6221 | #define RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(_pRxBlk, _pHeader802_3) \ | |
6222 | { \ | |
6223 | PUCHAR _pRemovedLLCSNAP = NULL, _pDA, _pSA; \ | |
6224 | \ | |
6225 | if (RX_BLK_TEST_FLAG(_pRxBlk, fRX_MESH)) \ | |
6226 | { \ | |
6227 | _pDA = _pRxBlk->pHeader->Addr3; \ | |
6228 | _pSA = (PUCHAR)_pRxBlk->pHeader + sizeof(HEADER_802_11); \ | |
6229 | } \ | |
6230 | else \ | |
6231 | { \ | |
6232 | if (RX_BLK_TEST_FLAG(_pRxBlk, fRX_INFRA)) \ | |
6233 | { \ | |
6234 | _pDA = _pRxBlk->pHeader->Addr1; \ | |
6235 | if (RX_BLK_TEST_FLAG(_pRxBlk, fRX_DLS)) \ | |
6236 | _pSA = _pRxBlk->pHeader->Addr2; \ | |
6237 | else \ | |
6238 | _pSA = _pRxBlk->pHeader->Addr3; \ | |
6239 | } \ | |
6240 | else \ | |
6241 | { \ | |
6242 | _pDA = _pRxBlk->pHeader->Addr1; \ | |
6243 | _pSA = _pRxBlk->pHeader->Addr2; \ | |
6244 | } \ | |
6245 | } \ | |
6246 | \ | |
6247 | CONVERT_TO_802_3(_pHeader802_3, _pDA, _pSA, _pRxBlk->pData, \ | |
6248 | _pRxBlk->DataSize, _pRemovedLLCSNAP); \ | |
6249 | } | |
6250 | #endif // CONFIG_STA_SUPPORT // | |
6251 | ||
6252 | ||
6253 | BOOLEAN APFowardWirelessStaToWirelessSta( | |
6254 | IN PRTMP_ADAPTER pAd, | |
6255 | IN PNDIS_PACKET pPacket, | |
6256 | IN ULONG FromWhichBSSID); | |
6257 | ||
6258 | VOID Announce_or_Forward_802_3_Packet( | |
6259 | IN PRTMP_ADAPTER pAd, | |
6260 | IN PNDIS_PACKET pPacket, | |
6261 | IN UCHAR FromWhichBSSID); | |
6262 | ||
6263 | VOID Sta_Announce_or_Forward_802_3_Packet( | |
6264 | IN PRTMP_ADAPTER pAd, | |
6265 | IN PNDIS_PACKET pPacket, | |
6266 | IN UCHAR FromWhichBSSID); | |
6267 | ||
6268 | ||
6269 | #ifdef CONFIG_STA_SUPPORT | |
6270 | #define ANNOUNCE_OR_FORWARD_802_3_PACKET(_pAd, _pPacket, _FromWhichBSS)\ | |
6271 | Sta_Announce_or_Forward_802_3_Packet(_pAd, _pPacket, _FromWhichBSS); | |
6272 | //announce_802_3_packet(_pAd, _pPacket); | |
6273 | #endif // CONFIG_STA_SUPPORT // | |
6274 | ||
6275 | ||
6276 | PNDIS_PACKET DuplicatePacket( | |
6277 | IN PRTMP_ADAPTER pAd, | |
6278 | IN PNDIS_PACKET pPacket, | |
6279 | IN UCHAR FromWhichBSSID); | |
6280 | ||
6281 | ||
6282 | PNDIS_PACKET ClonePacket( | |
6283 | IN PRTMP_ADAPTER pAd, | |
6284 | IN PNDIS_PACKET pPacket, | |
6285 | IN PUCHAR pData, | |
6286 | IN ULONG DataSize); | |
6287 | ||
6288 | ||
6289 | // Normal, AMPDU or AMSDU | |
6290 | VOID CmmRxnonRalinkFrameIndicate( | |
6291 | IN PRTMP_ADAPTER pAd, | |
6292 | IN RX_BLK *pRxBlk, | |
6293 | IN UCHAR FromWhichBSSID); | |
6294 | ||
6295 | VOID CmmRxRalinkFrameIndicate( | |
6296 | IN PRTMP_ADAPTER pAd, | |
6297 | IN MAC_TABLE_ENTRY *pEntry, | |
6298 | IN RX_BLK *pRxBlk, | |
6299 | IN UCHAR FromWhichBSSID); | |
6300 | ||
6301 | VOID Update_Rssi_Sample( | |
6302 | IN PRTMP_ADAPTER pAd, | |
6303 | IN RSSI_SAMPLE *pRssi, | |
6304 | IN PRXWI_STRUC pRxWI); | |
6305 | ||
6306 | PNDIS_PACKET GetPacketFromRxRing( | |
6307 | IN PRTMP_ADAPTER pAd, | |
6308 | OUT PRT28XX_RXD_STRUC pSaveRxD, | |
6309 | OUT BOOLEAN *pbReschedule, | |
6310 | IN OUT UINT32 *pRxPending); | |
6311 | ||
6312 | PNDIS_PACKET RTMPDeFragmentDataFrame( | |
6313 | IN PRTMP_ADAPTER pAd, | |
6314 | IN RX_BLK *pRxBlk); | |
6315 | ||
6316 | //////////////////////////////////////// | |
6317 | ||
6318 | VOID RTMPIoctlGetSiteSurvey( | |
6319 | IN PRTMP_ADAPTER pAdapter, | |
6320 | IN struct iwreq *wrq); | |
6321 | ||
6322 | ||
6323 | ||
6324 | ||
6325 | ||
6326 | #ifdef SNMP_SUPPORT | |
6327 | //for snmp , kathy | |
6328 | typedef struct _DefaultKeyIdxValue | |
6329 | { | |
6330 | UCHAR KeyIdx; | |
6331 | UCHAR Value[16]; | |
6332 | } DefaultKeyIdxValue, *PDefaultKeyIdxValue; | |
6333 | #endif | |
6334 | ||
6335 | ||
6336 | #ifdef CONFIG_STA_SUPPORT | |
6337 | enum { | |
6338 | DIDmsg_lnxind_wlansniffrm = 0x00000044, | |
6339 | DIDmsg_lnxind_wlansniffrm_hosttime = 0x00010044, | |
6340 | DIDmsg_lnxind_wlansniffrm_mactime = 0x00020044, | |
6341 | DIDmsg_lnxind_wlansniffrm_channel = 0x00030044, | |
6342 | DIDmsg_lnxind_wlansniffrm_rssi = 0x00040044, | |
6343 | DIDmsg_lnxind_wlansniffrm_sq = 0x00050044, | |
6344 | DIDmsg_lnxind_wlansniffrm_signal = 0x00060044, | |
6345 | DIDmsg_lnxind_wlansniffrm_noise = 0x00070044, | |
6346 | DIDmsg_lnxind_wlansniffrm_rate = 0x00080044, | |
6347 | DIDmsg_lnxind_wlansniffrm_istx = 0x00090044, | |
6348 | DIDmsg_lnxind_wlansniffrm_frmlen = 0x000A0044 | |
6349 | }; | |
6350 | enum { | |
6351 | P80211ENUM_msgitem_status_no_value = 0x00 | |
6352 | }; | |
6353 | enum { | |
6354 | P80211ENUM_truth_false = 0x00, | |
6355 | P80211ENUM_truth_true = 0x01 | |
6356 | }; | |
6357 | ||
6358 | /* Definition from madwifi */ | |
6359 | typedef struct { | |
6360 | UINT32 did; | |
6361 | UINT16 status; | |
6362 | UINT16 len; | |
6363 | UINT32 data; | |
6364 | } p80211item_uint32_t; | |
6365 | ||
6366 | typedef struct { | |
6367 | UINT32 msgcode; | |
6368 | UINT32 msglen; | |
6369 | #define WLAN_DEVNAMELEN_MAX 16 | |
6370 | UINT8 devname[WLAN_DEVNAMELEN_MAX]; | |
6371 | p80211item_uint32_t hosttime; | |
6372 | p80211item_uint32_t mactime; | |
6373 | p80211item_uint32_t channel; | |
6374 | p80211item_uint32_t rssi; | |
6375 | p80211item_uint32_t sq; | |
6376 | p80211item_uint32_t signal; | |
6377 | p80211item_uint32_t noise; | |
6378 | p80211item_uint32_t rate; | |
6379 | p80211item_uint32_t istx; | |
6380 | p80211item_uint32_t frmlen; | |
6381 | } wlan_ng_prism2_header; | |
6382 | ||
6383 | /* The radio capture header precedes the 802.11 header. */ | |
6384 | typedef struct PACKED _ieee80211_radiotap_header { | |
6385 | UINT8 it_version; /* Version 0. Only increases | |
6386 | * for drastic changes, | |
6387 | * introduction of compatible | |
6388 | * new fields does not count. | |
6389 | */ | |
6390 | UINT8 it_pad; | |
6391 | UINT16 it_len; /* length of the whole | |
6392 | * header in bytes, including | |
6393 | * it_version, it_pad, | |
6394 | * it_len, and data fields. | |
6395 | */ | |
6396 | UINT32 it_present; /* A bitmap telling which | |
6397 | * fields are present. Set bit 31 | |
6398 | * (0x80000000) to extend the | |
6399 | * bitmap by another 32 bits. | |
6400 | * Additional extensions are made | |
6401 | * by setting bit 31. | |
6402 | */ | |
6403 | }ieee80211_radiotap_header ; | |
6404 | ||
6405 | enum ieee80211_radiotap_type { | |
6406 | IEEE80211_RADIOTAP_TSFT = 0, | |
6407 | IEEE80211_RADIOTAP_FLAGS = 1, | |
6408 | IEEE80211_RADIOTAP_RATE = 2, | |
6409 | IEEE80211_RADIOTAP_CHANNEL = 3, | |
6410 | IEEE80211_RADIOTAP_FHSS = 4, | |
6411 | IEEE80211_RADIOTAP_DBM_ANTSIGNAL = 5, | |
6412 | IEEE80211_RADIOTAP_DBM_ANTNOISE = 6, | |
6413 | IEEE80211_RADIOTAP_LOCK_QUALITY = 7, | |
6414 | IEEE80211_RADIOTAP_TX_ATTENUATION = 8, | |
6415 | IEEE80211_RADIOTAP_DB_TX_ATTENUATION = 9, | |
6416 | IEEE80211_RADIOTAP_DBM_TX_POWER = 10, | |
6417 | IEEE80211_RADIOTAP_ANTENNA = 11, | |
6418 | IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12, | |
6419 | IEEE80211_RADIOTAP_DB_ANTNOISE = 13 | |
6420 | }; | |
6421 | ||
6422 | #define WLAN_RADIOTAP_PRESENT ( \ | |
6423 | (1 << IEEE80211_RADIOTAP_TSFT) | \ | |
6424 | (1 << IEEE80211_RADIOTAP_FLAGS) | \ | |
6425 | (1 << IEEE80211_RADIOTAP_RATE) | \ | |
6426 | 0) | |
6427 | ||
6428 | typedef struct _wlan_radiotap_header { | |
6429 | ieee80211_radiotap_header wt_ihdr; | |
6430 | INT64 wt_tsft; | |
6431 | UINT8 wt_flags; | |
6432 | UINT8 wt_rate; | |
6433 | } wlan_radiotap_header; | |
6434 | /* Definition from madwifi */ | |
6435 | ||
6436 | void send_monitor_packets( | |
6437 | IN PRTMP_ADAPTER pAd, | |
6438 | IN RX_BLK *pRxBlk); | |
6439 | ||
6440 | ||
6441 | VOID RTMPSetDesiredRates( | |
6442 | IN PRTMP_ADAPTER pAdapter, | |
6443 | IN LONG Rates); | |
6444 | #endif // CONFIG_STA_SUPPORT // | |
6445 | ||
6446 | INT Set_FixedTxMode_Proc( | |
6447 | IN PRTMP_ADAPTER pAd, | |
6448 | IN PSTRING arg); | |
6449 | ||
6450 | #ifdef CONFIG_APSTA_MIXED_SUPPORT | |
6451 | INT Set_OpMode_Proc( | |
6452 | IN PRTMP_ADAPTER pAd, | |
6453 | IN PSTRING arg); | |
6454 | #endif // CONFIG_APSTA_MIXED_SUPPORT // | |
6455 | ||
6456 | INT Set_LongRetryLimit_Proc( | |
6457 | IN PRTMP_ADAPTER pAdapter, | |
6458 | IN PSTRING arg); | |
6459 | ||
6460 | INT Set_ShortRetryLimit_Proc( | |
6461 | IN PRTMP_ADAPTER pAdapter, | |
6462 | IN PSTRING arg); | |
6463 | ||
6464 | BOOLEAN RT28XXChipsetCheck( | |
6465 | IN void *_dev_p); | |
6466 | ||
6467 | ||
6468 | VOID RT28XXDMADisable( | |
6469 | IN RTMP_ADAPTER *pAd); | |
6470 | ||
6471 | VOID RT28XXDMAEnable( | |
6472 | IN RTMP_ADAPTER *pAd); | |
6473 | ||
6474 | VOID RT28xx_UpdateBeaconToAsic( | |
6475 | IN RTMP_ADAPTER * pAd, | |
6476 | IN INT apidx, | |
6477 | IN ULONG BeaconLen, | |
6478 | IN ULONG UpdatePos); | |
6479 | ||
6480 | int rt28xx_init( | |
6481 | IN PRTMP_ADAPTER pAd, | |
6482 | IN PSTRING pDefaultMac, | |
6483 | IN PSTRING pHostName); | |
6484 | ||
6485 | BOOLEAN RT28XXSecurityKeyAdd( | |
6486 | IN PRTMP_ADAPTER pAd, | |
6487 | IN ULONG apidx, | |
6488 | IN ULONG KeyIdx, | |
6489 | IN MAC_TABLE_ENTRY *pEntry); | |
6490 | ||
6491 | NDIS_STATUS RtmpNetTaskInit( | |
6492 | IN RTMP_ADAPTER *pAd); | |
6493 | ||
6494 | VOID RtmpNetTaskExit( | |
6495 | IN PRTMP_ADAPTER pAd); | |
6496 | ||
6497 | NDIS_STATUS RtmpMgmtTaskInit( | |
6498 | IN RTMP_ADAPTER *pAd); | |
6499 | ||
6500 | VOID RtmpMgmtTaskExit( | |
6501 | IN RTMP_ADAPTER *pAd); | |
6502 | ||
6503 | void tbtt_tasklet(unsigned long data); | |
6504 | ||
6505 | ||
6506 | PNET_DEV RtmpPhyNetDevInit( | |
6507 | IN RTMP_ADAPTER *pAd, | |
6508 | IN RTMP_OS_NETDEV_OP_HOOK *pNetHook); | |
6509 | ||
6510 | BOOLEAN RtmpPhyNetDevExit( | |
6511 | IN RTMP_ADAPTER *pAd, | |
6512 | IN PNET_DEV net_dev); | |
6513 | ||
6514 | INT RtmpRaDevCtrlInit( | |
6515 | IN RTMP_ADAPTER *pAd, | |
6516 | IN RTMP_INF_TYPE infType); | |
6517 | ||
6518 | BOOLEAN RtmpRaDevCtrlExit( | |
6519 | IN RTMP_ADAPTER *pAd); | |
6520 | ||
6521 | ||
6522 | #ifdef RTMP_MAC_PCI | |
6523 | // | |
6524 | // Function Prototype in cmm_data_pci.c | |
6525 | // | |
6526 | USHORT RtmpPCI_WriteTxResource( | |
6527 | IN PRTMP_ADAPTER pAd, | |
6528 | IN TX_BLK *pTxBlk, | |
6529 | IN BOOLEAN bIsLast, | |
6530 | OUT USHORT *FreeNumber); | |
6531 | ||
6532 | USHORT RtmpPCI_WriteSingleTxResource( | |
6533 | IN PRTMP_ADAPTER pAd, | |
6534 | IN TX_BLK *pTxBlk, | |
6535 | IN BOOLEAN bIsLast, | |
6536 | OUT USHORT *FreeNumber); | |
6537 | ||
6538 | USHORT RtmpPCI_WriteMultiTxResource( | |
6539 | IN PRTMP_ADAPTER pAd, | |
6540 | IN TX_BLK *pTxBlk, | |
6541 | IN UCHAR frameNum, | |
6542 | OUT USHORT *FreeNumber); | |
6543 | ||
6544 | USHORT RtmpPCI_WriteFragTxResource( | |
6545 | IN PRTMP_ADAPTER pAd, | |
6546 | IN TX_BLK *pTxBlk, | |
6547 | IN UCHAR fragNum, | |
6548 | OUT USHORT *FreeNumber); | |
6549 | ||
6550 | USHORT RtmpPCI_WriteSubTxResource( | |
6551 | IN PRTMP_ADAPTER pAd, | |
6552 | IN TX_BLK *pTxBlk, | |
6553 | IN BOOLEAN bIsLast, | |
6554 | OUT USHORT *FreeNumber); | |
6555 | ||
6556 | VOID RtmpPCI_FinalWriteTxResource( | |
6557 | IN PRTMP_ADAPTER pAd, | |
6558 | IN TX_BLK *pTxBlk, | |
6559 | IN USHORT totalMPDUSize, | |
6560 | IN USHORT FirstTxIdx); | |
6561 | ||
6562 | VOID RtmpPCIDataLastTxIdx( | |
6563 | IN PRTMP_ADAPTER pAd, | |
6564 | IN UCHAR QueIdx, | |
6565 | IN USHORT LastTxIdx); | |
6566 | ||
6567 | VOID RtmpPCIDataKickOut( | |
6568 | IN PRTMP_ADAPTER pAd, | |
6569 | IN TX_BLK *pTxBlk, | |
6570 | IN UCHAR QueIdx); | |
6571 | ||
6572 | ||
6573 | int RtmpPCIMgmtKickOut( | |
6574 | IN RTMP_ADAPTER *pAd, | |
6575 | IN UCHAR QueIdx, | |
6576 | IN PNDIS_PACKET pPacket, | |
6577 | IN PUCHAR pSrcBufVA, | |
6578 | IN UINT SrcBufLen); | |
6579 | ||
6580 | ||
6581 | NDIS_STATUS RTMPCheckRxError( | |
6582 | IN PRTMP_ADAPTER pAd, | |
6583 | IN PHEADER_802_11 pHeader, | |
6584 | IN PRXWI_STRUC pRxWI, | |
6585 | IN PRT28XX_RXD_STRUC pRxD); | |
6586 | ||
6587 | BOOLEAN RT28xxPciAsicRadioOff( | |
6588 | IN PRTMP_ADAPTER pAd, | |
6589 | IN UCHAR Level, | |
6590 | IN USHORT TbttNumToNextWakeUp); | |
6591 | ||
6592 | BOOLEAN RT28xxPciAsicRadioOn( | |
6593 | IN PRTMP_ADAPTER pAd, | |
6594 | IN UCHAR Level); | |
6595 | ||
6596 | #ifdef CONFIG_STA_SUPPORT | |
6597 | VOID RTMPInitPCIeLinkCtrlValue( | |
6598 | IN PRTMP_ADAPTER pAd); | |
6599 | ||
6600 | VOID RTMPFindHostPCIDev( | |
6601 | IN PRTMP_ADAPTER pAd); | |
6602 | ||
6603 | VOID RTMPPCIeLinkCtrlValueRestore( | |
6604 | IN PRTMP_ADAPTER pAd, | |
6605 | IN UCHAR Level); | |
6606 | ||
6607 | VOID RTMPPCIeLinkCtrlSetting( | |
6608 | IN PRTMP_ADAPTER pAd, | |
6609 | IN USHORT Max); | |
6610 | ||
6611 | VOID RTMPrt3xSetPCIePowerLinkCtrl( | |
6612 | IN PRTMP_ADAPTER pAd); | |
6613 | ||
6614 | ||
6615 | VOID RT28xxPciStaAsicForceWakeup( | |
6616 | IN PRTMP_ADAPTER pAd, | |
6617 | IN BOOLEAN bFromTx); | |
6618 | ||
6619 | VOID RT28xxPciStaAsicSleepThenAutoWakeup( | |
6620 | IN PRTMP_ADAPTER pAd, | |
6621 | IN USHORT TbttNumToNextWakeUp); | |
6622 | ||
6623 | VOID PsPollWakeExec( | |
6624 | IN PVOID SystemSpecific1, | |
6625 | IN PVOID FunctionContext, | |
6626 | IN PVOID SystemSpecific2, | |
6627 | IN PVOID SystemSpecific3); | |
6628 | ||
6629 | VOID RadioOnExec( | |
6630 | IN PVOID SystemSpecific1, | |
6631 | IN PVOID FunctionContext, | |
6632 | IN PVOID SystemSpecific2, | |
6633 | IN PVOID SystemSpecific3); | |
6634 | #endif // CONFIG_STA_SUPPORT // | |
6635 | ||
6636 | VOID RT28xxPciMlmeRadioOn( | |
6637 | IN PRTMP_ADAPTER pAd); | |
6638 | ||
6639 | VOID RT28xxPciMlmeRadioOFF( | |
6640 | IN PRTMP_ADAPTER pAd); | |
6641 | #endif // RTMP_MAC_PCI // | |
6642 | ||
6643 | VOID AsicTurnOffRFClk( | |
6644 | IN PRTMP_ADAPTER pAd, | |
6645 | IN UCHAR Channel); | |
6646 | ||
6647 | VOID AsicTurnOnRFClk( | |
6648 | IN PRTMP_ADAPTER pAd, | |
6649 | IN UCHAR Channel); | |
6650 | ||
6651 | ||
6652 | ||
6653 | #ifdef RTMP_TIMER_TASK_SUPPORT | |
6654 | INT RtmpTimerQThread( | |
6655 | IN OUT PVOID Context); | |
6656 | ||
6657 | RTMP_TIMER_TASK_ENTRY *RtmpTimerQInsert( | |
6658 | IN RTMP_ADAPTER *pAd, | |
6659 | IN RALINK_TIMER_STRUCT *pTimer); | |
6660 | ||
6661 | BOOLEAN RtmpTimerQRemove( | |
6662 | IN RTMP_ADAPTER *pAd, | |
6663 | IN RALINK_TIMER_STRUCT *pTimer); | |
6664 | ||
6665 | void RtmpTimerQExit( | |
6666 | IN RTMP_ADAPTER *pAd); | |
6667 | ||
6668 | void RtmpTimerQInit( | |
6669 | IN RTMP_ADAPTER *pAd); | |
6670 | #endif // RTMP_TIMER_TASK_SUPPORT // | |
6671 | ||
6672 | ||
6673 | ||
6674 | //////////////////////////////////////// | |
6675 | ||
6676 | VOID QBSS_LoadInit( | |
6677 | IN RTMP_ADAPTER *pAd); | |
6678 | ||
6679 | UINT32 QBSS_LoadElementAppend( | |
6680 | IN RTMP_ADAPTER *pAd, | |
6681 | OUT UINT8 *buf_p); | |
6682 | ||
6683 | VOID QBSS_LoadUpdate( | |
6684 | IN RTMP_ADAPTER *pAd); | |
6685 | ||
6686 | /////////////////////////////////////// | |
6687 | INT RTMPShowCfgValue( | |
6688 | IN PRTMP_ADAPTER pAd, | |
6689 | IN PSTRING pName, | |
6690 | IN PSTRING pBuf); | |
6691 | ||
6692 | PSTRING RTMPGetRalinkAuthModeStr( | |
6693 | IN NDIS_802_11_AUTHENTICATION_MODE authMode); | |
6694 | ||
6695 | PSTRING RTMPGetRalinkEncryModeStr( | |
6696 | IN USHORT encryMode); | |
6697 | ////////////////////////////////////// | |
6698 | ||
6699 | #ifdef CONFIG_STA_SUPPORT | |
6700 | VOID AsicStaBbpTuning( | |
6701 | IN PRTMP_ADAPTER pAd); | |
6702 | ||
6703 | BOOLEAN StaAddMacTableEntry( | |
6704 | IN PRTMP_ADAPTER pAd, | |
6705 | IN PMAC_TABLE_ENTRY pEntry, | |
6706 | IN UCHAR MaxSupportedRateIn500Kbps, | |
6707 | IN HT_CAPABILITY_IE *pHtCapability, | |
6708 | IN UCHAR HtCapabilityLen, | |
6709 | IN ADD_HT_INFO_IE *pAddHtInfo, | |
6710 | IN UCHAR AddHtInfoLen, | |
6711 | IN USHORT CapabilityInfo); | |
6712 | ||
6713 | ||
6714 | BOOLEAN AUTH_ReqSend( | |
6715 | IN PRTMP_ADAPTER pAd, | |
6716 | IN PMLME_QUEUE_ELEM pElem, | |
6717 | IN PRALINK_TIMER_STRUCT pAuthTimer, | |
6718 | IN PSTRING pSMName, | |
6719 | IN USHORT SeqNo, | |
6720 | IN PUCHAR pNewElement, | |
6721 | IN ULONG ElementLen); | |
6722 | #endif // CONFIG_STA_SUPPORT // | |
6723 | ||
6724 | void RTMP_IndicateMediaState( | |
6725 | IN PRTMP_ADAPTER pAd); | |
6726 | ||
6727 | VOID ReSyncBeaconTime( | |
6728 | IN PRTMP_ADAPTER pAd); | |
6729 | ||
6730 | VOID RTMPSetAGCInitValue( | |
6731 | IN PRTMP_ADAPTER pAd, | |
6732 | IN UCHAR BandWidth); | |
6733 | ||
6734 | int rt28xx_close(IN PNET_DEV dev); | |
6735 | int rt28xx_open(IN PNET_DEV dev); | |
6736 | ||
6737 | ||
6738 | #define VIRTUAL_IF_INC(__pAd) ((__pAd)->VirtualIfCnt++) | |
6739 | #define VIRTUAL_IF_DEC(__pAd) ((__pAd)->VirtualIfCnt--) | |
6740 | #define VIRTUAL_IF_NUM(__pAd) ((__pAd)->VirtualIfCnt) | |
6741 | ||
6742 | ||
6743 | #ifdef LINUX | |
6744 | __inline INT VIRTUAL_IF_UP(PRTMP_ADAPTER pAd) | |
6745 | { | |
6746 | if (VIRTUAL_IF_NUM(pAd) == 0) | |
6747 | { | |
6748 | if (rt28xx_open(pAd->net_dev) != 0) | |
6749 | { | |
6750 | DBGPRINT(RT_DEBUG_TRACE, ("rt28xx_open return fail!\n")); | |
6751 | return -1; | |
6752 | } | |
6753 | } | |
6754 | else | |
6755 | { | |
6756 | } | |
6757 | VIRTUAL_IF_INC(pAd); | |
6758 | return 0; | |
6759 | } | |
6760 | ||
6761 | __inline VOID VIRTUAL_IF_DOWN(PRTMP_ADAPTER pAd) | |
6762 | { | |
6763 | VIRTUAL_IF_DEC(pAd); | |
6764 | if (VIRTUAL_IF_NUM(pAd) == 0) | |
6765 | rt28xx_close(pAd->net_dev); | |
6766 | return; | |
6767 | } | |
6768 | #endif // LINUX // | |
6769 | ||
6770 | ||
6771 | ||
6772 | ||
6773 | /* | |
6774 | OS Related funciton prototype definitions. | |
6775 | TODO: Maybe we need to move these function prototypes to other proper place. | |
6776 | */ | |
6777 | int RtmpOSWrielessEventSend( | |
6778 | IN RTMP_ADAPTER *pAd, | |
6779 | IN UINT32 eventType, | |
6780 | IN INT flags, | |
6781 | IN PUCHAR pSrcMac, | |
6782 | IN PUCHAR pData, | |
6783 | IN UINT32 dataLen); | |
6784 | ||
6785 | int RtmpOSNetDevAddrSet( | |
6786 | IN PNET_DEV pNetDev, | |
6787 | IN PUCHAR pMacAddr); | |
6788 | ||
6789 | int RtmpOSNetDevAttach( | |
6790 | IN PNET_DEV pNetDev, | |
6791 | IN RTMP_OS_NETDEV_OP_HOOK *pDevOpHook); | |
6792 | ||
6793 | void RtmpOSNetDevClose( | |
6794 | IN PNET_DEV pNetDev); | |
6795 | ||
6796 | void RtmpOSNetDevDetach( | |
6797 | IN PNET_DEV pNetDev); | |
6798 | ||
6799 | INT RtmpOSNetDevAlloc( | |
6800 | IN PNET_DEV *pNewNetDev, | |
6801 | IN UINT32 privDataSize); | |
6802 | ||
6803 | void RtmpOSNetDevFree( | |
6804 | IN PNET_DEV pNetDev); | |
6805 | ||
6806 | PNET_DEV RtmpOSNetDevGetByName( | |
6807 | IN PNET_DEV pNetDev, | |
6808 | IN PSTRING pDevName); | |
6809 | ||
6810 | void RtmpOSNetDeviceRefPut( | |
6811 | IN PNET_DEV pNetDev); | |
6812 | ||
6813 | PNET_DEV RtmpOSNetDevCreate( | |
6814 | IN RTMP_ADAPTER *pAd, | |
6815 | IN INT devType, | |
6816 | IN INT devNum, | |
6817 | IN INT privMemSize, | |
6818 | IN PSTRING pNamePrefix); | |
6819 | ||
6820 | /* | |
6821 | Task operation related function prototypes | |
6822 | */ | |
6823 | void RtmpOSTaskCustomize( | |
6824 | IN RTMP_OS_TASK *pTask); | |
6825 | ||
6826 | INT RtmpOSTaskNotifyToExit( | |
6827 | IN RTMP_OS_TASK *pTask); | |
6828 | ||
6829 | NDIS_STATUS RtmpOSTaskKill( | |
6830 | IN RTMP_OS_TASK *pTask); | |
6831 | ||
6832 | NDIS_STATUS RtmpOSTaskInit( | |
6833 | IN RTMP_OS_TASK *pTask, | |
6834 | PSTRING pTaskName, | |
6835 | VOID *pPriv); | |
6836 | ||
6837 | NDIS_STATUS RtmpOSTaskAttach( | |
6838 | IN RTMP_OS_TASK *pTask, | |
6839 | IN int (*fn)(void *), | |
6840 | IN void *arg); | |
6841 | ||
6842 | ||
6843 | /* | |
6844 | File operation related function prototypes | |
6845 | */ | |
6846 | RTMP_OS_FD RtmpOSFileOpen( | |
6847 | IN char *pPath, | |
6848 | IN int flag, | |
6849 | IN int mode); | |
6850 | ||
6851 | int RtmpOSFileClose( | |
6852 | IN RTMP_OS_FD osfd); | |
6853 | ||
6854 | void RtmpOSFileSeek( | |
6855 | IN RTMP_OS_FD osfd, | |
6856 | IN int offset); | |
6857 | ||
6858 | int RtmpOSFileRead( | |
6859 | IN RTMP_OS_FD osfd, | |
6860 | IN char *pDataPtr, | |
6861 | IN int readLen); | |
6862 | ||
6863 | int RtmpOSFileWrite( | |
6864 | IN RTMP_OS_FD osfd, | |
6865 | IN char *pDataPtr, | |
6866 | IN int writeLen); | |
6867 | ||
6868 | void RtmpOSFSInfoChange( | |
6869 | IN RTMP_OS_FS_INFO *pOSFSInfo, | |
6870 | IN BOOLEAN bSet); | |
6871 | ||
6872 | ||
6873 | #endif // __RTMP_H__ |