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