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