Merge commit 'v2.6.30-rc5' into sched/core
[linux-2.6] / drivers / staging / rt2860 / ap.h
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     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
55 BOOLEAN 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
63 BOOLEAN APHandleRxDoneInterrupt(
64     IN  PRTMP_ADAPTER   pAd);
65
66 VOID    APSendPackets(
67         IN      NDIS_HANDLE             MiniportAdapterContext,
68         IN      PPNDIS_PACKET   ppPacketArray,
69         IN      UINT                    NumberOfPackets);
70
71 NDIS_STATUS APSendPacket(
72     IN  PRTMP_ADAPTER   pAd,
73     IN  PNDIS_PACKET    pPacket);
74
75
76 NDIS_STATUS APHardTransmit(
77         IN      PRTMP_ADAPTER   pAd,
78         IN      TX_BLK                  *pTxBlk,
79         IN      UCHAR                   QueIdx);
80
81 VOID APRxEAPOLFrameIndicate(
82         IN      PRTMP_ADAPTER   pAd,
83         IN      MAC_TABLE_ENTRY *pEntry,
84         IN      RX_BLK                  *pRxBlk,
85         IN      UCHAR                   FromWhichBSSID);
86
87 NDIS_STATUS APCheckRxError(
88         IN      PRTMP_ADAPTER   pAd,
89         IN      PRT28XX_RXD_STRUC               pRxD,
90         IN      UCHAR                   Wcid);
91
92 BOOLEAN APCheckClass2Class3Error(
93     IN  PRTMP_ADAPTER   pAd,
94         IN ULONG Wcid,
95         IN  PHEADER_802_11  pHeader);
96
97 VOID APHandleRxPsPoll(
98         IN      PRTMP_ADAPTER   pAd,
99         IN      PUCHAR                  pAddr,
100         IN      USHORT                  Aid,
101     IN  BOOLEAN                 isActive);
102
103 VOID    RTMPDescriptorEndianChange(
104     IN  PUCHAR          pData,
105     IN  ULONG           DescriptorType);
106
107 VOID    RTMPFrameEndianChange(
108     IN  PRTMP_ADAPTER   pAd,
109     IN  PUCHAR          pData,
110     IN  ULONG           Dir,
111     IN  BOOLEAN         FromRxDoneInt);
112
113 // ap_assoc.c
114
115 VOID APAssocStateMachineInit(
116     IN  PRTMP_ADAPTER   pAd,
117     IN  STATE_MACHINE *S,
118     OUT STATE_MACHINE_FUNC Trans[]);
119
120 VOID  APPeerAssocReqAction(
121     IN  PRTMP_ADAPTER   pAd,
122     IN  MLME_QUEUE_ELEM *Elem);
123
124 VOID  APPeerReassocReqAction(
125     IN  PRTMP_ADAPTER   pAd,
126     IN  MLME_QUEUE_ELEM *Elem);
127
128 VOID  APPeerDisassocReqAction(
129     IN  PRTMP_ADAPTER   pAd,
130     IN  MLME_QUEUE_ELEM *Elem);
131
132 VOID MbssKickOutStas(
133         IN PRTMP_ADAPTER pAd,
134         IN INT apidx,
135         IN USHORT Reason);
136
137 VOID APMlmeKickOutSta(
138     IN PRTMP_ADAPTER pAd,
139         IN PUCHAR pStaAddr,
140         IN UCHAR Wcid,
141         IN USHORT Reason);
142
143 VOID APMlmeDisassocReqAction(
144     IN PRTMP_ADAPTER pAd,
145     IN MLME_QUEUE_ELEM *Elem);
146
147 VOID  APCls3errAction(
148     IN  PRTMP_ADAPTER   pAd,
149         IN      ULONG Wcid,
150     IN  PHEADER_802_11  pHeader);
151
152
153 USHORT 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
171 void APAuthStateMachineInit(
172     IN PRTMP_ADAPTER pAd,
173     IN STATE_MACHINE *Sm,
174     OUT STATE_MACHINE_FUNC Trans[]);
175
176 VOID APMlmeDeauthReqAction(
177     IN PRTMP_ADAPTER pAd,
178     IN MLME_QUEUE_ELEM *Elem);
179
180 VOID APCls2errAction(
181     IN PRTMP_ADAPTER pAd,
182         IN      ULONG Wcid,
183     IN  PHEADER_802_11  pHeader);
184
185 // ap_authrsp.c
186
187 VOID APAuthRspStateMachineInit(
188     IN PRTMP_ADAPTER pAd,
189     IN PSTATE_MACHINE Sm,
190     IN STATE_MACHINE_FUNC Trans[]);
191
192 VOID APPeerAuthAtAuthRspIdleAction(
193     IN  PRTMP_ADAPTER   pAd,
194     IN  MLME_QUEUE_ELEM *Elem);
195
196 VOID APPeerDeauthReqAction(
197     IN PRTMP_ADAPTER    pAd,
198     IN MLME_QUEUE_ELEM *Elem);
199
200 VOID 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
209 BOOLEAN BeaconTransmitRequired(
210         IN PRTMP_ADAPTER        pAd,
211         IN INT                          apidx);
212
213 VOID APMakeBssBeacon(
214     IN  PRTMP_ADAPTER   pAd,
215         IN      INT                             apidx);
216
217 VOID  APUpdateBeaconFrame(
218     IN  PRTMP_ADAPTER   pAd,
219         IN      INT                             apidx);
220
221 VOID APMakeAllBssBeacon(
222     IN  PRTMP_ADAPTER   pAd);
223
224 VOID  APUpdateAllBeaconFrame(
225     IN  PRTMP_ADAPTER   pAd);
226
227
228 // ap_sync.c
229
230 VOID APSyncStateMachineInit(
231     IN PRTMP_ADAPTER pAd,
232     IN STATE_MACHINE *Sm,
233     OUT STATE_MACHINE_FUNC Trans[]);
234
235 VOID APScanTimeout(
236         IN PVOID SystemSpecific1,
237         IN PVOID FunctionContext,
238         IN PVOID SystemSpecific2,
239         IN PVOID SystemSpecific3);
240
241 VOID APInvalidStateWhenScan(
242         IN PRTMP_ADAPTER pAd,
243         IN MLME_QUEUE_ELEM *Elem);
244
245 VOID APScanTimeoutAction(
246         IN PRTMP_ADAPTER pAd,
247         IN MLME_QUEUE_ELEM *Elem);
248
249 VOID APPeerProbeReqAction(
250     IN  PRTMP_ADAPTER pAd,
251     IN  MLME_QUEUE_ELEM *Elem);
252
253 VOID APPeerBeaconAction(
254     IN PRTMP_ADAPTER pAd,
255     IN MLME_QUEUE_ELEM *Elem);
256
257 VOID APMlmeScanReqAction(
258         IN PRTMP_ADAPTER pAd,
259         IN MLME_QUEUE_ELEM *Elem);
260
261 VOID APPeerBeaconAtScanAction(
262         IN PRTMP_ADAPTER pAd,
263         IN MLME_QUEUE_ELEM *Elem);
264
265 VOID APScanCnclAction(
266         IN PRTMP_ADAPTER pAd,
267         IN MLME_QUEUE_ELEM *Elem);
268
269 VOID ApSiteSurvey(
270         IN PRTMP_ADAPTER pAd);
271
272 VOID 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
282 BOOLEAN ApScanRunning(
283         IN PRTMP_ADAPTER pAd);
284
285 #ifdef DOT11N_DRAFT3
286 VOID APOverlappingBSSScan(
287         IN RTMP_ADAPTER *pAd);
288 #endif // DOT11N_DRAFT3 //
289
290 // ap_wpa.c
291
292 VOID APWpaStateMachineInit(
293     IN  PRTMP_ADAPTER   pAd,
294     IN  STATE_MACHINE *Sm,
295     OUT STATE_MACHINE_FUNC Trans[]);
296
297 // ap_mlme.c
298
299 VOID APMlmePeriodicExec(
300     IN  PRTMP_ADAPTER   pAd);
301
302 VOID 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
309 VOID APMlmeSetTxRate(
310         IN PRTMP_ADAPTER                pAd,
311         IN PMAC_TABLE_ENTRY             pEntry,
312         IN PRTMP_TX_RATE_SWITCH pTxRate);
313
314 VOID APMlmeDynamicTxRateSwitching(
315     IN PRTMP_ADAPTER pAd);
316
317 VOID APQuickResponeForRateUpExec(
318     IN PVOID SystemSpecific1,
319     IN PVOID FunctionContext,
320     IN PVOID SystemSpecific2,
321     IN PVOID SystemSpecific3);
322
323 BOOLEAN APMsgTypeSubst(
324     IN PRTMP_ADAPTER pAd,
325     IN PFRAME_802_11 pFrame,
326     OUT INT *Machine,
327     OUT INT *MsgType);
328
329 VOID APQuickResponeForRateUpExec(
330     IN PVOID SystemSpecific1,
331     IN PVOID FunctionContext,
332     IN PVOID SystemSpecific2,
333     IN PVOID SystemSpecific3);
334
335
336 VOID RTMPSetPiggyBack(
337         IN PRTMP_ADAPTER        pAd,
338         IN BOOLEAN                      bPiggyBack);
339
340 VOID APAsicEvaluateRxAnt(
341         IN PRTMP_ADAPTER        pAd);
342
343 VOID APAsicRxAntEvalTimeout(
344         IN PRTMP_ADAPTER        pAd);
345
346 // ap.c
347
348 VOID APSwitchChannel(
349         IN PRTMP_ADAPTER pAd,
350         IN INT Channel);
351
352 NDIS_STATUS APInitialize(
353     IN  PRTMP_ADAPTER   pAd);
354
355 VOID APShutdown(
356     IN PRTMP_ADAPTER    pAd);
357
358 VOID APStartUp(
359     IN  PRTMP_ADAPTER   pAd);
360
361 VOID APStop(
362     IN  PRTMP_ADAPTER   pAd);
363
364 VOID APCleanupPsQueue(
365     IN  PRTMP_ADAPTER   pAd,
366     IN  PQUEUE_HEADER   pQueue);
367
368 VOID MacTableReset(
369     IN  PRTMP_ADAPTER   pAd);
370
371 MAC_TABLE_ENTRY *MacTableInsertEntry(
372     IN  PRTMP_ADAPTER   pAd,
373     IN  PUCHAR          pAddr,
374         IN      UCHAR                   apidx,
375         IN BOOLEAN      CleanAll);
376
377 BOOLEAN MacTableDeleteEntry(
378     IN  PRTMP_ADAPTER   pAd,
379         IN USHORT wcid,
380     IN  PUCHAR          pAddr);
381
382 MAC_TABLE_ENTRY *MacTableLookup(
383     IN  PRTMP_ADAPTER   pAd,
384     IN  PUCHAR          pAddr);
385
386 VOID MacTableMaintenance(
387     IN PRTMP_ADAPTER pAd);
388
389 UINT32 MacTableAssocStaNumGet(
390         IN PRTMP_ADAPTER pAd);
391
392 MAC_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
400 BOOLEAN APPsIndicate(
401     IN  PRTMP_ADAPTER   pAd,
402     IN  PUCHAR          pAddr,
403         IN ULONG Wcid,
404     IN  UCHAR           Psm);
405
406 VOID ApLogEvent(
407     IN PRTMP_ADAPTER    pAd,
408     IN PUCHAR           pAddr,
409     IN USHORT           Event);
410
411 #ifdef DOT11_N_SUPPORT
412 VOID APUpdateOperationMode(
413     IN PRTMP_ADAPTER pAd);
414 #endif // DOT11_N_SUPPORT //
415
416 VOID APUpdateCapabilityAndErpIe(
417         IN PRTMP_ADAPTER pAd);
418
419 BOOLEAN ApCheckAccessControlList(
420         IN PRTMP_ADAPTER pAd,
421         IN PUCHAR        pAddr,
422         IN UCHAR         Apidx);
423
424 VOID ApUpdateAccessControlList(
425     IN PRTMP_ADAPTER pAd,
426     IN UCHAR         Apidx);
427
428 VOID 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
438 VOID ApSendFrame(
439     IN  PRTMP_ADAPTER   pAd,
440     IN  PVOID           pBuffer,
441     IN  ULONG           Length,
442     IN  UCHAR           TxRate,
443     IN  UCHAR           PID);
444
445 VOID ApEnqueueAckFrame(
446     IN PRTMP_ADAPTER pAd,
447     IN PUCHAR        pAddr,
448     IN UCHAR         TxRate,
449         IN UCHAR         apidx);
450
451 UCHAR APAutoSelectChannel(
452         IN PRTMP_ADAPTER pAd,
453         IN BOOLEAN Optimal);
454
455 // ap_sanity.c
456
457
458 BOOLEAN 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
481 BOOLEAN PeerDisassocReqSanity(
482     IN PRTMP_ADAPTER pAd,
483     IN VOID *Msg,
484     IN ULONG MsgLen,
485     OUT PUCHAR pAddr2,
486     OUT USHORT *Reason);
487
488 BOOLEAN PeerDeauthReqSanity(
489     IN PRTMP_ADAPTER pAd,
490     IN VOID *Msg,
491     IN ULONG MsgLen,
492     OUT PUCHAR pAddr2,
493     OUT USHORT *Reason);
494
495 BOOLEAN 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
506 BOOLEAN 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
514 BOOLEAN 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
535 NDIS_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
543 NDIS_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