blob: df6db281312135680a95638518094efb8bdd97d9 [file] [log] [blame]
Greg Kroah-Hartman91980992008-10-28 14:48:09 -07001/*
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 ap.h
29
30 Abstract:
31 Miniport generic portion header file
32
33 Revision History:
34 Who When What
35 -------- ---------- ----------------------------------------------
36 Paul Lin 08-01-2002 created
37 James Tan 09-06-2002 modified (Revise NTCRegTable)
38 John Chang 12-22-2004 modified for RT2561/2661. merge with STA driver
39*/
40#ifndef __AP_H__
41#define __AP_H__
42
43
44
45// ========================= AP RTMP.h ================================
46
47
48
49// =============================================================
50// Function Prototypes
51// =============================================================
52
53// ap_data.c
54
55BOOLEAN APBridgeToWirelessSta(
56 IN PRTMP_ADAPTER pAd,
57 IN PUCHAR pHeader,
58 IN UINT HdrLen,
59 IN PUCHAR pData,
60 IN UINT DataLen,
61 IN ULONG fromwdsidx);
62
63BOOLEAN APHandleRxDoneInterrupt(
64 IN PRTMP_ADAPTER pAd);
65
66VOID APSendPackets(
67 IN NDIS_HANDLE MiniportAdapterContext,
68 IN PPNDIS_PACKET ppPacketArray,
69 IN UINT NumberOfPackets);
70
71NDIS_STATUS APSendPacket(
72 IN PRTMP_ADAPTER pAd,
73 IN PNDIS_PACKET pPacket);
74
75
76NDIS_STATUS APHardTransmit(
77 IN PRTMP_ADAPTER pAd,
78 IN TX_BLK *pTxBlk,
79 IN UCHAR QueIdx);
80
81VOID APRxEAPOLFrameIndicate(
82 IN PRTMP_ADAPTER pAd,
83 IN MAC_TABLE_ENTRY *pEntry,
84 IN RX_BLK *pRxBlk,
85 IN UCHAR FromWhichBSSID);
86
87NDIS_STATUS APCheckRxError(
88 IN PRTMP_ADAPTER pAd,
89 IN PRT28XX_RXD_STRUC pRxD,
90 IN UCHAR Wcid);
91
92BOOLEAN APCheckClass2Class3Error(
93 IN PRTMP_ADAPTER pAd,
94 IN ULONG Wcid,
95 IN PHEADER_802_11 pHeader);
96
97VOID APHandleRxPsPoll(
98 IN PRTMP_ADAPTER pAd,
99 IN PUCHAR pAddr,
100 IN USHORT Aid,
101 IN BOOLEAN isActive);
102
103VOID RTMPDescriptorEndianChange(
104 IN PUCHAR pData,
105 IN ULONG DescriptorType);
106
107VOID RTMPFrameEndianChange(
108 IN PRTMP_ADAPTER pAd,
109 IN PUCHAR pData,
110 IN ULONG Dir,
111 IN BOOLEAN FromRxDoneInt);
112
113// ap_assoc.c
114
115VOID APAssocStateMachineInit(
116 IN PRTMP_ADAPTER pAd,
117 IN STATE_MACHINE *S,
118 OUT STATE_MACHINE_FUNC Trans[]);
119
120VOID APPeerAssocReqAction(
121 IN PRTMP_ADAPTER pAd,
122 IN MLME_QUEUE_ELEM *Elem);
123
124VOID APPeerReassocReqAction(
125 IN PRTMP_ADAPTER pAd,
126 IN MLME_QUEUE_ELEM *Elem);
127
128VOID APPeerDisassocReqAction(
129 IN PRTMP_ADAPTER pAd,
130 IN MLME_QUEUE_ELEM *Elem);
131
132VOID MbssKickOutStas(
133 IN PRTMP_ADAPTER pAd,
134 IN INT apidx,
135 IN USHORT Reason);
136
137VOID APMlmeKickOutSta(
138 IN PRTMP_ADAPTER pAd,
139 IN PUCHAR pStaAddr,
140 IN UCHAR Wcid,
141 IN USHORT Reason);
142
143VOID APMlmeDisassocReqAction(
144 IN PRTMP_ADAPTER pAd,
145 IN MLME_QUEUE_ELEM *Elem);
146
147VOID APCls3errAction(
148 IN PRTMP_ADAPTER pAd,
149 IN ULONG Wcid,
150 IN PHEADER_802_11 pHeader);
151
152
153USHORT APBuildAssociation(
154 IN PRTMP_ADAPTER pAd,
155 IN MAC_TABLE_ENTRY *pEntry,
156 IN USHORT CapabilityInfo,
157 IN UCHAR MaxSupportedRateIn500Kbps,
158 IN UCHAR *RSN,
159 IN UCHAR *pRSNLen,
160 IN BOOLEAN bWmmCapable,
161 IN ULONG RalinkIe,
162#ifdef DOT11N_DRAFT3
163 IN EXT_CAP_INFO_ELEMENT ExtCapInfo,
164#endif // DOT11N_DRAFT3 //
165 IN HT_CAPABILITY_IE *pHtCapability,
166 IN UCHAR HtCapabilityLen,
167 OUT USHORT *pAid);
168
169// ap_auth.c
170
171void APAuthStateMachineInit(
172 IN PRTMP_ADAPTER pAd,
173 IN STATE_MACHINE *Sm,
174 OUT STATE_MACHINE_FUNC Trans[]);
175
176VOID APMlmeDeauthReqAction(
177 IN PRTMP_ADAPTER pAd,
178 IN MLME_QUEUE_ELEM *Elem);
179
180VOID APCls2errAction(
181 IN PRTMP_ADAPTER pAd,
182 IN ULONG Wcid,
183 IN PHEADER_802_11 pHeader);
184
185// ap_authrsp.c
186
187VOID APAuthRspStateMachineInit(
188 IN PRTMP_ADAPTER pAd,
189 IN PSTATE_MACHINE Sm,
190 IN STATE_MACHINE_FUNC Trans[]);
191
192VOID APPeerAuthAtAuthRspIdleAction(
193 IN PRTMP_ADAPTER pAd,
194 IN MLME_QUEUE_ELEM *Elem);
195
196VOID APPeerDeauthReqAction(
197 IN PRTMP_ADAPTER pAd,
198 IN MLME_QUEUE_ELEM *Elem);
199
200VOID APPeerAuthSimpleRspGenAndSend(
201 IN PRTMP_ADAPTER pAd,
202 IN PHEADER_802_11 pHdr80211,
203 IN USHORT Alg,
204 IN USHORT Seq,
205 IN USHORT StatusCode);
206
207// ap_connect.c
208
209BOOLEAN BeaconTransmitRequired(
210 IN PRTMP_ADAPTER pAd,
211 IN INT apidx);
212
213VOID APMakeBssBeacon(
214 IN PRTMP_ADAPTER pAd,
215 IN INT apidx);
216
217VOID APUpdateBeaconFrame(
218 IN PRTMP_ADAPTER pAd,
219 IN INT apidx);
220
221VOID APMakeAllBssBeacon(
222 IN PRTMP_ADAPTER pAd);
223
224VOID APUpdateAllBeaconFrame(
225 IN PRTMP_ADAPTER pAd);
226
227
228// ap_sync.c
229
230VOID APSyncStateMachineInit(
231 IN PRTMP_ADAPTER pAd,
232 IN STATE_MACHINE *Sm,
233 OUT STATE_MACHINE_FUNC Trans[]);
234
235VOID APScanTimeout(
236 IN PVOID SystemSpecific1,
237 IN PVOID FunctionContext,
238 IN PVOID SystemSpecific2,
239 IN PVOID SystemSpecific3);
240
241VOID APInvalidStateWhenScan(
242 IN PRTMP_ADAPTER pAd,
243 IN MLME_QUEUE_ELEM *Elem);
244
245VOID APScanTimeoutAction(
246 IN PRTMP_ADAPTER pAd,
247 IN MLME_QUEUE_ELEM *Elem);
248
249VOID APPeerProbeReqAction(
250 IN PRTMP_ADAPTER pAd,
251 IN MLME_QUEUE_ELEM *Elem);
252
253VOID APPeerBeaconAction(
254 IN PRTMP_ADAPTER pAd,
255 IN MLME_QUEUE_ELEM *Elem);
256
257VOID APMlmeScanReqAction(
258 IN PRTMP_ADAPTER pAd,
259 IN MLME_QUEUE_ELEM *Elem);
260
261VOID APPeerBeaconAtScanAction(
262 IN PRTMP_ADAPTER pAd,
263 IN MLME_QUEUE_ELEM *Elem);
264
265VOID APScanCnclAction(
266 IN PRTMP_ADAPTER pAd,
267 IN MLME_QUEUE_ELEM *Elem);
268
269VOID ApSiteSurvey(
270 IN PRTMP_ADAPTER pAd);
271
272VOID SupportRate(
273 IN PUCHAR SupRate,
274 IN UCHAR SupRateLen,
275 IN PUCHAR ExtRate,
276 IN UCHAR ExtRateLen,
277 OUT PUCHAR *Rates,
278 OUT PUCHAR RatesLen,
279 OUT PUCHAR pMaxSupportRate);
280
281
282BOOLEAN ApScanRunning(
283 IN PRTMP_ADAPTER pAd);
284
285#ifdef DOT11N_DRAFT3
286VOID APOverlappingBSSScan(
287 IN RTMP_ADAPTER *pAd);
288#endif // DOT11N_DRAFT3 //
289
290// ap_wpa.c
291
292VOID APWpaStateMachineInit(
293 IN PRTMP_ADAPTER pAd,
294 IN STATE_MACHINE *Sm,
295 OUT STATE_MACHINE_FUNC Trans[]);
296
297// ap_mlme.c
298
299VOID APMlmePeriodicExec(
300 IN PRTMP_ADAPTER pAd);
301
302VOID APMlmeSelectTxRateTable(
303 IN PRTMP_ADAPTER pAd,
304 IN PMAC_TABLE_ENTRY pEntry,
305 IN PUCHAR *ppTable,
306 IN PUCHAR pTableSize,
307 IN PUCHAR pInitTxRateIdx);
308
309VOID APMlmeSetTxRate(
310 IN PRTMP_ADAPTER pAd,
311 IN PMAC_TABLE_ENTRY pEntry,
312 IN PRTMP_TX_RATE_SWITCH pTxRate);
313
314VOID APMlmeDynamicTxRateSwitching(
315 IN PRTMP_ADAPTER pAd);
316
317VOID APQuickResponeForRateUpExec(
318 IN PVOID SystemSpecific1,
319 IN PVOID FunctionContext,
320 IN PVOID SystemSpecific2,
321 IN PVOID SystemSpecific3);
322
323BOOLEAN APMsgTypeSubst(
324 IN PRTMP_ADAPTER pAd,
325 IN PFRAME_802_11 pFrame,
326 OUT INT *Machine,
327 OUT INT *MsgType);
328
329VOID APQuickResponeForRateUpExec(
330 IN PVOID SystemSpecific1,
331 IN PVOID FunctionContext,
332 IN PVOID SystemSpecific2,
333 IN PVOID SystemSpecific3);
334
335
336VOID RTMPSetPiggyBack(
337 IN PRTMP_ADAPTER pAd,
338 IN BOOLEAN bPiggyBack);
339
340VOID APAsicEvaluateRxAnt(
341 IN PRTMP_ADAPTER pAd);
342
343VOID APAsicRxAntEvalTimeout(
344 IN PRTMP_ADAPTER pAd);
345
346// ap.c
347
348VOID APSwitchChannel(
349 IN PRTMP_ADAPTER pAd,
350 IN INT Channel);
351
352NDIS_STATUS APInitialize(
353 IN PRTMP_ADAPTER pAd);
354
355VOID APShutdown(
356 IN PRTMP_ADAPTER pAd);
357
358VOID APStartUp(
359 IN PRTMP_ADAPTER pAd);
360
361VOID APStop(
362 IN PRTMP_ADAPTER pAd);
363
364VOID APCleanupPsQueue(
365 IN PRTMP_ADAPTER pAd,
366 IN PQUEUE_HEADER pQueue);
367
368VOID MacTableReset(
369 IN PRTMP_ADAPTER pAd);
370
371MAC_TABLE_ENTRY *MacTableInsertEntry(
372 IN PRTMP_ADAPTER pAd,
373 IN PUCHAR pAddr,
374 IN UCHAR apidx,
375 IN BOOLEAN CleanAll);
376
377BOOLEAN MacTableDeleteEntry(
378 IN PRTMP_ADAPTER pAd,
379 IN USHORT wcid,
380 IN PUCHAR pAddr);
381
382MAC_TABLE_ENTRY *MacTableLookup(
383 IN PRTMP_ADAPTER pAd,
384 IN PUCHAR pAddr);
385
386VOID MacTableMaintenance(
387 IN PRTMP_ADAPTER pAd);
388
389UINT32 MacTableAssocStaNumGet(
390 IN PRTMP_ADAPTER pAd);
391
392MAC_TABLE_ENTRY *APSsPsInquiry(
393 IN PRTMP_ADAPTER pAd,
394 IN PUCHAR pAddr,
395 OUT SST *Sst,
396 OUT USHORT *Aid,
397 OUT UCHAR *PsMode,
398 OUT UCHAR *Rate);
399
400BOOLEAN APPsIndicate(
401 IN PRTMP_ADAPTER pAd,
402 IN PUCHAR pAddr,
403 IN ULONG Wcid,
404 IN UCHAR Psm);
405
406VOID ApLogEvent(
407 IN PRTMP_ADAPTER pAd,
408 IN PUCHAR pAddr,
409 IN USHORT Event);
410
411#ifdef DOT11_N_SUPPORT
412VOID APUpdateOperationMode(
413 IN PRTMP_ADAPTER pAd);
414#endif // DOT11_N_SUPPORT //
415
416VOID APUpdateCapabilityAndErpIe(
417 IN PRTMP_ADAPTER pAd);
418
419BOOLEAN ApCheckAccessControlList(
420 IN PRTMP_ADAPTER pAd,
421 IN PUCHAR pAddr,
422 IN UCHAR Apidx);
423
424VOID ApUpdateAccessControlList(
425 IN PRTMP_ADAPTER pAd,
426 IN UCHAR Apidx);
427
428VOID ApEnqueueNullFrame(
429 IN PRTMP_ADAPTER pAd,
430 IN PUCHAR pAddr,
431 IN UCHAR TxRate,
432 IN UCHAR PID,
433 IN UCHAR apidx,
434 IN BOOLEAN bQosNull,
435 IN BOOLEAN bEOSP,
436 IN UCHAR OldUP);
437
438VOID ApSendFrame(
439 IN PRTMP_ADAPTER pAd,
440 IN PVOID pBuffer,
441 IN ULONG Length,
442 IN UCHAR TxRate,
443 IN UCHAR PID);
444
445VOID ApEnqueueAckFrame(
446 IN PRTMP_ADAPTER pAd,
447 IN PUCHAR pAddr,
448 IN UCHAR TxRate,
449 IN UCHAR apidx);
450
451UCHAR APAutoSelectChannel(
452 IN PRTMP_ADAPTER pAd,
453 IN BOOLEAN Optimal);
454
455// ap_sanity.c
456
457
458BOOLEAN PeerAssocReqCmmSanity(
459 IN PRTMP_ADAPTER pAd,
460 IN BOOLEAN isRessoc,
461 IN VOID *Msg,
462 IN ULONG MsgLen,
463 OUT PUCHAR pAddr2,
464 OUT USHORT *pCapabilityInfo,
465 OUT USHORT *pListenInterval,
466 OUT PUCHAR pApAddr,
467 OUT UCHAR *pSsidLen,
468 OUT char *Ssid,
469 OUT UCHAR *pRatesLen,
470 OUT UCHAR Rates[],
471 OUT UCHAR *RSN,
472 OUT UCHAR *pRSNLen,
473 OUT BOOLEAN *pbWmmCapable,
474 OUT ULONG *pRalinkIe,
475#ifdef DOT11N_DRAFT3
476 OUT EXT_CAP_INFO_ELEMENT *pExtCapInfo,
477#endif // DOT11N_DRAFT3 //
478 OUT UCHAR *pHtCapabilityLen,
479 OUT HT_CAPABILITY_IE *pHtCapability);
480
481BOOLEAN PeerDisassocReqSanity(
482 IN PRTMP_ADAPTER pAd,
483 IN VOID *Msg,
484 IN ULONG MsgLen,
485 OUT PUCHAR pAddr2,
486 OUT USHORT *Reason);
487
488BOOLEAN PeerDeauthReqSanity(
489 IN PRTMP_ADAPTER pAd,
490 IN VOID *Msg,
491 IN ULONG MsgLen,
492 OUT PUCHAR pAddr2,
493 OUT USHORT *Reason);
494
495BOOLEAN APPeerAuthSanity(
496 IN PRTMP_ADAPTER pAd,
497 IN VOID *Msg,
498 IN ULONG MsgLen,
499 OUT PUCHAR pAddr1,
500 OUT PUCHAR pAddr2,
501 OUT USHORT *Alg,
502 OUT USHORT *Seq,
503 OUT USHORT *Status,
504 CHAR *ChlgText);
505
506BOOLEAN APPeerProbeReqSanity(
507 IN PRTMP_ADAPTER pAd,
508 IN VOID *Msg,
509 IN ULONG MsgLen,
510 OUT PUCHAR pAddr2,
511 OUT CHAR Ssid[],
512 OUT UCHAR *SsidLen);
513
514BOOLEAN APPeerBeaconAndProbeRspSanity(
515 IN PRTMP_ADAPTER pAd,
516 IN VOID *Msg,
517 IN ULONG MsgLen,
518 OUT PUCHAR pAddr2,
519 OUT PUCHAR pBssid,
520 OUT CHAR Ssid[],
521 OUT UCHAR *SsidLen,
522 OUT UCHAR *BssType,
523 OUT USHORT *BeaconPeriod,
524 OUT UCHAR *Channel,
525 OUT LARGE_INTEGER *Timestamp,
526 OUT USHORT *CapabilityInfo,
527 OUT UCHAR Rate[],
528 OUT UCHAR *RateLen,
529 OUT BOOLEAN *ExtendedRateIeExist,
530 OUT UCHAR *Erp);
531
532// ap_info.c
533
534#ifdef WIN_NDIS
535NDIS_STATUS APQueryInformation(
536 IN NDIS_HANDLE MiniportAdapterContext,
537 IN NDIS_OID Oid,
538 IN PVOID pInformationBuffer,
539 IN ULONG InformationBufferLength,
540 OUT PULONG pBytesWritten,
541 OUT PULONG pBytesNeeded);
542
543NDIS_STATUS APSetInformation(
544 IN NDIS_HANDLE MiniportAdapterContext,
545 IN NDIS_OID Oid,
546 IN PVOID pInformationBuffer,
547 IN ULONG InformationBufferLength,
548 OUT PULONG pBytesRead,
549 OUT PULONG pBytesNeeded);
550#endif
551
552
553// ================== end of AP RTMP.h ========================
554
555
556#endif // __AP_H__
557