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