blob: 64d86f63bd964a5539e260f3f53ad2e5adb02f12 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Jeff Johnson32d95a32012-09-10 13:15:23 -07002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -07003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * Airgo Networks, Inc proprietary. All rights reserved.
24 * This file limTypes.h contains the definitions used by all
25 * all LIM modules.
26 * Author: Chandra Modumudi
27 * Date: 02/11/02
28 * History:-
29 * Date Modified by Modification Information
30 * --------------------------------------------------------------------
31 *
32 */
33#ifndef __LIM_TYPES_H
34#define __LIM_TYPES_H
35
36#include "wniApi.h"
37#include "sirApi.h"
38#include "sirCommon.h"
39#include "sirMacProtDef.h"
40#include "utilsApi.h"
41
42#ifdef FEATURE_WLAN_NON_INTEGRATED_SOC
43#include "halCommonApi.h"
44#endif
45#ifdef FEATURE_WLAN_INTEGRATED_SOC
46#include "wlan_qct_wdi_ds.h"
47#endif
48
49#include "limApi.h"
50#include "limDebug.h"
51#include "limSendSmeRspMessages.h"
52#include "sysGlobal.h"
53#include "dphGlobal.h"
54#include "parserApi.h"
55
56#define LINK_TEST_DEFER 1
57
58#define TRACE_EVENT_CNF_TIMER_DEACT 0x6600
59#define TRACE_EVENT_CNF_TIMER_ACT 0x6601
60#define TRACE_EVENT_AUTH_RSP_TIMER_DEACT 0x6602
61#define TRACE_EVENT_AUTH_RSP_TIMER_ACT 0x6603
62
63// MLM message types
64#define LIM_MLM_MSG_START 1000
65#define LIM_MLM_SCAN_REQ LIM_MLM_MSG_START
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -080066#define LIM_MLM_SCAN_CNF (LIM_MLM_MSG_START + 1)
67#define LIM_MLM_START_REQ (LIM_MLM_MSG_START + 2)
68#define LIM_MLM_START_CNF (LIM_MLM_MSG_START + 3)
69#define LIM_MLM_JOIN_REQ (LIM_MLM_MSG_START + 4)
70#define LIM_MLM_JOIN_CNF (LIM_MLM_MSG_START + 5)
71#define LIM_MLM_AUTH_REQ (LIM_MLM_MSG_START + 6)
72#define LIM_MLM_AUTH_CNF (LIM_MLM_MSG_START + 7)
73#define LIM_MLM_AUTH_IND (LIM_MLM_MSG_START + 8)
74#define LIM_MLM_ASSOC_REQ (LIM_MLM_MSG_START + 9)
75#define LIM_MLM_ASSOC_CNF (LIM_MLM_MSG_START + 10)
76#define LIM_MLM_ASSOC_IND (LIM_MLM_MSG_START + 11)
77#define LIM_MLM_DISASSOC_REQ (LIM_MLM_MSG_START + 12)
78#define LIM_MLM_DISASSOC_CNF (LIM_MLM_MSG_START + 13)
79#define LIM_MLM_DISASSOC_IND (LIM_MLM_MSG_START + 14)
80#define LIM_MLM_REASSOC_REQ (LIM_MLM_MSG_START + 15)
81#define LIM_MLM_REASSOC_CNF (LIM_MLM_MSG_START + 16)
82#define LIM_MLM_REASSOC_IND (LIM_MLM_MSG_START + 17)
83#define LIM_MLM_DEAUTH_REQ (LIM_MLM_MSG_START + 18)
84#define LIM_MLM_DEAUTH_CNF (LIM_MLM_MSG_START + 19)
85#define LIM_MLM_DEAUTH_IND (LIM_MLM_MSG_START + 20)
86#define LIM_MLM_TSPEC_REQ (LIM_MLM_MSG_START + 21)
87#define LIM_MLM_TSPEC_CNF (LIM_MLM_MSG_START + 22)
88#define LIM_MLM_TSPEC_IND (LIM_MLM_MSG_START + 23)
89#define LIM_MLM_SETKEYS_REQ (LIM_MLM_MSG_START + 24)
90#define LIM_MLM_SETKEYS_CNF (LIM_MLM_MSG_START + 25)
91#define LIM_MLM_LINK_TEST_STOP_REQ (LIM_MLM_MSG_START + 30)
92#define LIM_MLM_PURGE_STA_IND (LIM_MLM_MSG_START + 31)
93#define LIM_MLM_ADDBA_REQ (LIM_MLM_MSG_START + 32)
94#define LIM_MLM_ADDBA_CNF (LIM_MLM_MSG_START + 33)
95#define LIM_MLM_ADDBA_IND (LIM_MLM_MSG_START + 34)
96#define LIM_MLM_ADDBA_RSP (LIM_MLM_MSG_START + 35)
97#define LIM_MLM_DELBA_REQ (LIM_MLM_MSG_START + 36)
98#define LIM_MLM_DELBA_CNF (LIM_MLM_MSG_START + 37)
99#define LIM_MLM_DELBA_IND (LIM_MLM_MSG_START + 38)
100#define LIM_MLM_REMOVEKEY_REQ (LIM_MLM_MSG_START + 39)
101#define LIM_MLM_REMOVEKEY_CNF (LIM_MLM_MSG_START + 40)
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
Jeff Johnsone7245742012-09-05 17:12:55 -0700103#ifdef FEATURE_OEM_DATA_SUPPORT
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800104#define LIM_MLM_OEM_DATA_REQ (LIM_MLM_MSG_START + 41)
105#define LIM_MLM_OEM_DATA_CNF (LIM_MLM_MSG_START + 42)
Jeff Johnsone7245742012-09-05 17:12:55 -0700106#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700107
108#define LIM_HASH_ADD 0
109#define LIM_HASH_UPDATE 1
110
111#define LIM_WEP_IN_FC 1
112#define LIM_NO_WEP_IN_FC 0
113
114#define LIM_DECRYPT_ICV_FAIL 1
115
116/// Definitions to distinquish between Association/Reassociaton
117#define LIM_ASSOC 0
118#define LIM_REASSOC 1
119
120/// Minimum Memory blocks require for different scenario
121#define LIM_MIN_MEM_ASSOC 4
122
123/// Verifies whether given mac addr matches the CURRENT Bssid
124#define IS_CURRENT_BSSID(pMac, addr,psessionEntry) (palEqualMemory(pMac->hHdd, addr, \
125 psessionEntry->bssId, \
126 sizeof(psessionEntry->bssId)))
127/// Verifies whether given addr matches the REASSOC Bssid
128#define IS_REASSOC_BSSID(pMac, addr,psessionEntry) (palEqualMemory(pMac->hHdd, addr, \
129 psessionEntry->limReAssocbssId, \
130 sizeof(psessionEntry->limReAssocbssId)))
131
132#define REQ_TYPE_REGISTRAR (0x2)
133#define REQ_TYPE_WLAN_MANAGER_REGISTRAR (0x3)
134
135#define RESP_TYPE_REGISTRAR (0x2)
136#define RESP_TYPE_ENROLLEE_INFO_ONLY (0x0)
137#define RESP_TYPE_ENROLLEE_OPEN_8021X (0x1)
138#define RESP_TYPE_AP (0x3)
139#define LIM_TX_FRAMES_THRESHOLD_ON_CHIP 300
140
141
142// enums used by LIM are as follows
143
144enum eLimDisassocTrigger
145{
146 eLIM_HOST_DISASSOC,
147 eLIM_PEER_ENTITY_DISASSOC,
148 eLIM_LINK_MONITORING_DISASSOC,
149 eLIM_PROMISCUOUS_MODE_DISASSOC,
150 eLIM_HOST_DEAUTH,
151 eLIM_PEER_ENTITY_DEAUTH,
152 eLIM_LINK_MONITORING_DEAUTH,
153 eLIM_JOIN_FAILURE,
154 eLIM_REASSOC_REJECT
155};
156
157/* Reason code to determine the channel change context while sending
158 * WDA_CHNL_SWITCH_REQ message to HAL
159 */
160enum eChannelChangeReasonCodes
161{
162 LIM_SWITCH_CHANNEL_REASSOC,
163 LIM_SWITCH_CHANNEL_JOIN,
164 LIM_SWITCH_CHANNEL_OPERATION, // Generic change channel
165};
166
167typedef struct sLimAuthRspTimeout
168{
169 tSirMacAddr peerMacAddr;
170} tLimAuthRspTimeout;
171
172typedef struct sLimMlmStartReq
173{
174 tSirMacSSid ssId;
175 tSirBssType bssType;
176 tSirMacAddr bssId;
177 tSirMacBeaconInterval beaconPeriod;
178 tANI_U8 dtimPeriod;
179 tSirMacCfParamSet cfParamSet;
180 tSirMacChanNum channelNumber;
Jeff Johnsone7245742012-09-05 17:12:55 -0700181 ePhyChanBondState cbMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700182 tANI_U16 atimWindow;
183 tSirMacRateSet rateSet;
184 tANI_U8 sessionId; //Added For BT-AMP Support
185
186 // Parameters reqd for new HAL (message) interface
187 tSirNwType nwType;
188 tANI_U8 htCapable;
189 tSirMacHTOperatingMode htOperMode;
190 tANI_U8 dualCTSProtection;
191 tANI_U8 txChannelWidthSet;
192#ifdef WLAN_SOFTAP_FEATURE
193 tANI_U8 ssidHidden;
194 tANI_U8 wps_state;
195 tANI_U8 obssProtEnabled;
196#endif
197} tLimMlmStartReq, *tpLimMlmStartReq;
198
199typedef struct sLimMlmStartCnf
200{
201 tSirResultCodes resultCode;
202 tANI_U8 sessionId;
203} tLimMlmStartCnf, *tpLimMlmStartCnf;
204
205typedef struct sLimMlmScanCnf
206{
207 tSirResultCodes resultCode;
208 tANI_U16 scanResultLength;
209 tSirBssDescription bssDescription[1];
210 tANI_U8 sessionId;
211} tLimMlmScanCnf, *tpLimMlmScanCnf;
212
213typedef struct sLimScanResult
214{
215 tANI_U16 numBssDescriptions;
216 tSirBssDescription bssDescription[1];
217} tLimScanResult;
218
219typedef struct sLimMlmJoinCnf
220{
221 tSirResultCodes resultCode;
222 tANI_U16 protStatusCode;
223 tANI_U8 sessionId;
224} tLimMlmJoinCnf, *tpLimMlmJoinCnf;
225
226typedef struct sLimMlmAssocReq
227{
228 tSirMacAddr peerMacAddr;
229 tANI_U32 assocFailureTimeout;
230 tANI_U16 capabilityInfo;
231 tSirMacListenInterval listenInterval;
232 tANI_U8 sessionId;
233} tLimMlmAssocReq, *tpLimMlmAssocReq;
234
235typedef struct sLimMlmAssocCnf
236{
237 tSirResultCodes resultCode; //Internal status code.
238 tANI_U16 protStatusCode; //Protocol Status code.
239 tANI_U8 sessionId;
240} tLimMlmAssocCnf, *tpLimMlmAssocCnf;
241
242typedef struct sLimMlmAssocInd
243{
244 tSirMacAddr peerMacAddr;
245 tANI_U16 aid;
246 tAniAuthType authType;
247 tAniSSID ssId;
248 tSirRSNie rsnIE;
249 tSirAddie addIE; // additional IE recevied from the peer, which possibly includes WSC IE and/or P2P IE.
250 tSirMacCapabilityInfo capabilityInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -0700251 tAniBool spectrumMgtIndicator;
252 tSirMacPowerCapInfo powerCap;
253 tSirSupChnl supportedChannels;
254 tANI_U8 sessionId;
255
256
257#ifdef WLAN_SOFTAP_FEATURE
258 tAniBool WmmStaInfoPresent;
259#endif
260
261#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
262 tANI_U16 seqNum;
263 tAniBool wniIndicator;
264 tAniBool bpIndicator;
265 tSirBpIndicatorType bpType;
266 tSirNwType nwType;
267 tSirAssocType assocType; // Indicates whether STA is LB'ed or not
268 tSirLoad load; // Current load on the radio for LB
269 tANI_U32 numBss; // List received from STA
270 tSirNeighborBssInfo neighborList[1]; // List received from STA
271#endif
272 // Required for indicating the frames to upper layer
273 tANI_U32 beaconLength;
274 tANI_U8* beaconPtr;
275 tANI_U32 assocReqLength;
276 tANI_U8* assocReqPtr;
277} tLimMlmAssocInd, *tpLimMlmAssocInd;
278
279typedef struct sLimMlmReassocReq
280{
281 tSirMacAddr peerMacAddr;
282 tANI_U32 reassocFailureTimeout;
283 tANI_U16 capabilityInfo;
284 tSirMacListenInterval listenInterval;
285 tANI_U8 sessionId;
286} tLimMlmReassocReq, *tpLimMlmReassocReq;
287
288typedef struct sLimMlmReassocCnf
289{
290 tSirResultCodes resultCode;
291 tANI_U16 protStatusCode; //Protocol Status code.
292 tANI_U8 sessionId;
293} tLimMlmReassocCnf, *tpLimMlmReassocCnf;
294
295typedef struct sLimMlmReassocInd
296{
297 tSirMacAddr peerMacAddr;
298 tSirMacAddr currentApAddr;
299 tANI_U16 aid;
300 tAniAuthType authType;
301 tAniSSID ssId;
302 tSirRSNie rsnIE;
303 tSirAddie addIE; // additional IE recevied from the peer, which can be WSC IE and/or P2P IE.
304 tSirMacCapabilityInfo capabilityInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -0700305 tAniBool spectrumMgtIndicator;
306 tSirMacPowerCapInfo powerCap;
307 tSirSupChnl supportedChannels;
308
309#ifdef WLAN_SOFTAP_FEATURE
310 tAniBool WmmStaInfoPresent;
311#endif
312
313#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
314 tANI_U16 seqNum;
315 tAniBool wniIndicator;
316 tAniBool bpIndicator;
317 tSirBpIndicatorType bpType;
318 tSirNwType nwType;
319 tSirAssocType reassocType; // Indicates whether STA is LB'ed or not
320 tSirLoad load; // Current load on the radio for LB
321 tANI_U32 numBss; // List received from STA
322 tSirNeighborBssInfo neighborList[1]; // List received from STA
323#endif
324 // Required for indicating the frames to upper layer
325 tANI_U32 beaconLength;
326 tANI_U8* beaconPtr;
327 tANI_U32 assocReqLength;
328 tANI_U8* assocReqPtr;
329} tLimMlmReassocInd, *tpLimMlmReassocInd;
330
331typedef struct sLimMlmAuthCnf
332{
333 tSirMacAddr peerMacAddr;
334 tAniAuthType authType;
335 tSirResultCodes resultCode;
336 tANI_U16 protStatusCode;
337 tANI_U8 sessionId;
338} tLimMlmAuthCnf, *tpLimMlmAuthCnf;
339
340typedef struct sLimMlmAuthInd
341{
342 tSirMacAddr peerMacAddr;
343 tAniAuthType authType;
344 tANI_U8 sessionId;
345} tLimMlmAuthInd, *tpLimMlmAuthInd;
346
347typedef struct sLimMlmDeauthReq
348{
349 tSirMacAddr peerMacAddr;
350 tANI_U16 reasonCode;
351 tANI_U16 deauthTrigger;
352 tANI_U16 aid;
353 tANI_U8 sessionId; //Added for BT-AMP SUPPORT
354
355} tLimMlmDeauthReq, *tpLimMlmDeauthReq;
356
357typedef struct sLimMlmDeauthCnf
358{
359 tSirMacAddr peerMacAddr;
360 tSirResultCodes resultCode;
361 tANI_U16 deauthTrigger;
362 tANI_U16 aid;
363 tANI_U8 sessionId;
364} tLimMlmDeauthCnf, *tpLimMLmDeauthCnf;
365
366typedef struct sLimMlmDeauthInd
367{
368 tSirMacAddr peerMacAddr;
369 tANI_U16 reasonCode;
370 tANI_U16 deauthTrigger;
371 tANI_U16 aid;
372} tLimMlmDeauthInd, *tpLimMlmDeauthInd;
373
374typedef struct sLimMlmDisassocReq
375{
376 tSirMacAddr peerMacAddr;
377 tANI_U16 reasonCode;
378 tANI_U16 disassocTrigger;
379 tANI_U16 aid;
380 tANI_U8 sessionId;
381} tLimMlmDisassocReq, *tpLimMlmDisassocReq;
382
383typedef struct sLimMlmDisassocCnf
384{
385 tSirMacAddr peerMacAddr;
386 tSirResultCodes resultCode;
387 tANI_U16 disassocTrigger;
388 tANI_U16 aid;
389 tANI_U8 sessionId;
390} tLimMlmDisassocCnf, *tpLimMlmDisassocCnf;
391
392typedef struct sLimMlmDisassocInd
393{
394 tSirMacAddr peerMacAddr;
395 tANI_U16 reasonCode;
396 tANI_U16 disassocTrigger;
397 tANI_U16 aid;
398 tANI_U8 sessionId;
399} tLimMlmDisassocInd, *tpLimMlmDisassocInd;
400
401typedef struct sLimMlmPurgeStaReq
402{
403 tSirMacAddr peerMacAddr;
404 tANI_U16 aid;
405 tANI_U8 sessionId;//Added For BT-AMP Support
406} tLimMlmPurgeStaReq, *tpLimMlmPurgeStaReq;
407
408typedef struct sLimMlmPurgeStaInd
409{
410 tSirMacAddr peerMacAddr;
411 tANI_U16 reasonCode;
412 tANI_U16 purgeTrigger;
413 tANI_U16 aid;
414 tANI_U8 sessionId;
415} tLimMlmPurgeStaInd, *tpLimMlmPurgeStaInd;
416
417typedef struct sLimMlmSetKeysReq
418{
419 tSirMacAddr peerMacAddr;
420 tANI_U8 sessionId; //Added For BT-AMP Support
421 tANI_U16 aid;
422 tAniEdType edType; // Encryption/Decryption type
423 tANI_U8 numKeys;
424 tSirKeys key[SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS];
425} tLimMlmSetKeysReq, *tpLimMlmSetKeysReq;
426
427typedef struct sLimMlmSetKeysCnf
428{
429 tSirMacAddr peerMacAddr;
430 tANI_U16 resultCode;
431 tANI_U16 aid;
432 tANI_U8 sessionId;
433} tLimMlmSetKeysCnf, *tpLimMlmSetKeysCnf;
434
435typedef struct sLimMlmRemoveKeyReq
436{
437 tSirMacAddr peerMacAddr;
438 tANI_U8 sessionId; //Added FOr BT-AMP Support
439 tAniEdType edType; // Encryption/Decryption type
440 tANI_U8 wepType; //STATIC / DYNAMIC specifier
441 tANI_U8 keyId; //Key Id To be removed.
442 tANI_BOOLEAN unicast;
443} tLimMlmRemoveKeyReq, *tpLimMlmRemoveKeyReq;
444
445typedef struct sLimMlmRemoveKeyCnf
446{
447 tSirMacAddr peerMacAddr;
448 tANI_U16 resultCode;
449 tANI_U8 sessionId;
450} tLimMlmRemoveKeyCnf, *tpLimMlmRemoveKeyCnf;
451
452
453typedef struct sLimMlmResetReq
454{
455 tSirMacAddr macAddr;
456 tANI_U8 performCleanup;
457 tANI_U8 sessionId;
458} tLimMlmResetReq, *tpLimMlmResetReq;
459
460typedef struct sLimMlmResetCnf
461{
462 tSirMacAddr macAddr;
463 tSirResultCodes resultCode;
464 tANI_U8 sessionId;
465} tLimMlmResetCnf, *tpLimMlmResetCnf;
466
467
468typedef struct sLimMlmLinkTestStopReq
469{
470 tSirMacAddr peerMacAddr;
471 tANI_U8 sessionId;
472#ifdef ANI_PRODUCT_TYPE_AP
473 tANI_U16 aid;
474#endif
475} tLimMlmLinkTestStopReq, *tpLimMlmLinkTestStopReq;
476
477
478//
479// Block ACK related MLME data structures
480//
481
482typedef struct sLimMlmAddBAReq
483{
484
485 // ADDBA recipient
486 tSirMacAddr peerMacAddr;
487
488 // ADDBA Action Frame dialog token
489 tANI_U8 baDialogToken;
490
491 // ADDBA requested for TID
492 tANI_U8 baTID;
493
494 // BA policy
495 // 0 - Delayed BA (Not supported)
496 // 1 - Immediate BA
497 tANI_U8 baPolicy;
498
499 // BA buffer size - (0..127) max size MSDU's
500 tANI_U16 baBufferSize;
501
502 // BA timeout in TU's
503 // 0 means no timeout will occur
504 tANI_U16 baTimeout;
505
506 // ADDBA failure timeout in TU's
507 // Greater than or equal to 1
508 tANI_U16 addBAFailureTimeout;
509
510 // BA Starting Sequence Number
511 tANI_U16 baSSN;
512
513 tANI_U8 sessionId;
514
515} tLimMlmAddBAReq, *tpLimMlmAddBAReq;
516
517typedef struct sLimMlmAddBACnf
518{
519
520 // ADDBA recipient
521 tSirMacAddr peerMacAddr;
522
523 // ADDBA Action Frame dialog token
524 tANI_U8 baDialogToken;
525
526 // ADDBA requested for TID
527 tANI_U8 baTID;
528
529 // BA status code
530 tSirMacStatusCodes addBAResultCode;
531
532 // BA policy
533 // 0 - Delayed BA (Not supported)
534 // 1 - Immediate BA
535 tANI_U8 baPolicy;
536
537 // BA buffer size - (0..127) max size MSDU's
538 tANI_U16 baBufferSize;
539
540 // BA timeout in TU's
541 // 0 means no timeout will occur
542 tANI_U16 baTimeout;
543
544 // ADDBA direction
545 // 1 - Originator
546 // 0 - Recipient
547 tANI_U8 baDirection;
548 tANI_U8 sessionId;
549
550
551} tLimMlmAddBACnf, *tpLimMlmAddBACnf;
552
553typedef struct sLimMlmAddBAInd
554{
555
556 // ADDBA recipient
557 tSirMacAddr peerMacAddr;
558
559 // ADDBA Action Frame dialog token
560 tANI_U8 baDialogToken;
561
562 // ADDBA requested for TID
563 tANI_U8 baTID;
564
565 // BA policy
566 // 0 - Delayed BA (Not supported)
567 // 1 - Immediate BA
568 tANI_U8 baPolicy;
569
570 // BA buffer size - (0..127) max size MSDU's
571 tANI_U16 baBufferSize;
572
573 // BA timeout in TU's
574 // 0 means no timeout will occur
575 tANI_U16 baTimeout;
576
577} tLimMlmAddBAInd, *tpLimMlmAddBAInd;
578
579typedef struct sLimMlmAddBARsp
580{
581
582 // ADDBA recipient
583 tSirMacAddr peerMacAddr;
584
585 // ADDBA Action Frame dialog token
586 tANI_U8 baDialogToken;
587
588 // ADDBA requested for TID
589 tANI_U8 baTID;
590
591 // BA status code
592 tSirMacStatusCodes addBAResultCode;
593
594 // BA policy
595 // 0 - Delayed BA (Not supported)
596 // 1 - Immediate BA
597 tANI_U8 baPolicy;
598
599 // BA buffer size - (0..127) max size MSDU's
600 tANI_U16 baBufferSize;
601
602 // BA timeout in TU's
603 // 0 means no timeout will occur
604 tANI_U16 baTimeout;
605
606 //reserved for alignment
607 tANI_U8 rsvd[2];
608
609 /* PE session id*/
610 tANI_U8 sessionId;
611
612 } tLimMlmAddBARsp, *tpLimMlmAddBARsp;
613
614//
615// NOTE - Overloading DELBA IND and DELBA CNF
616// to use the same data structure as DELBA REQ
617// as the parameters do not vary too much.
618//
619typedef struct sLimMlmDelBAReq
620{
621
622 // ADDBA recipient
623 tSirMacAddr peerMacAddr;
624
625 // DELBA direction
626 // 1 - Originator
627 // 0 - Recipient
628 tANI_U8 baDirection;
629
630 // DELBA requested for TID
631 tANI_U8 baTID;
632
633 // DELBA reason code
634 tSirMacReasonCodes delBAReasonCode;
635
636 tANI_U8 sessionId;
637
638} tLimMlmDelBAReq, *tpLimMlmDelBAReq, tLimMlmDelBAInd, *tpLimMlmDelBAInd, tLimMlmDelBACnf, *tpLimMlmDelBACnf;
639
640// Function templates
641
642tANI_BOOLEAN limProcessSmeReqMessages(tpAniSirGlobal, tpSirMsgQ);
643void limProcessMlmReqMessages(tpAniSirGlobal, tpSirMsgQ);
644void limProcessMlmRspMessages(tpAniSirGlobal, tANI_U32, tANI_U32 *);
645void limProcessLmmMessages(tpAniSirGlobal, tANI_U32, tANI_U32 *);
646void limProcessSmeDelBssRsp( tpAniSirGlobal , tANI_U32,tpPESession);
647
648void limGetRandomBssid(tpAniSirGlobal pMac ,tANI_U8 *data);
649
Jeff Johnson295189b2012-06-20 16:38:30 -0700650// Function to handle HT and HT IE CFG parameter intializations
Jeff Johnsone7245742012-09-05 17:12:55 -0700651void handleHTCapabilityandHTInfo(struct sAniSirGlobal *pMac, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700652
653// Function to handle CFG parameter updates
654void limHandleCFGparamUpdate(tpAniSirGlobal, tANI_U32);
655
656// Function to apply CFG parameters before join/reassoc/start BSS
657void limApplyConfiguration(tpAniSirGlobal,tpPESession);
658
659#ifdef WLAN_SOFTAP_FEATURE
660void limSetCfgProtection(tpAniSirGlobal pMac, tpPESession pesessionEntry);
661#else
662void limSetCfgProtection(tpAniSirGlobal pMac);
663#endif
664
665
666// Function to Initialize MLM state machine on STA
667void limInitMlm(tpAniSirGlobal);
668
669// Function to cleanup MLM state machine
670void limCleanupMlm(tpAniSirGlobal);
671
672// Function to cleanup LMM state machine
673void limCleanupLmm(tpAniSirGlobal);
674
Jeff Johnson295189b2012-06-20 16:38:30 -0700675// Management frame handling functions
676void limProcessBeaconFrame(tpAniSirGlobal, tANI_U8 *,tpPESession);
677void limProcessBeaconFrameNoSession(tpAniSirGlobal, tANI_U8 *);
678void limProcessProbeReqFrame(tpAniSirGlobal, tANI_U8 *, tpPESession);
679void limProcessProbeRspFrame(tpAniSirGlobal, tANI_U8 *, tpPESession);
680void limProcessProbeRspFrameNoSession(tpAniSirGlobal, tANI_U8 *);
681void limProcessProbeReqFrame_multiple_BSS(tpAniSirGlobal, tANI_U8 *,tpPESession);
682
683
684// Process Auth frame when we have a session in progress.
685void limProcessAuthFrame(tpAniSirGlobal, tANI_U8 *,tpPESession);
686#ifdef WLAN_FEATURE_VOWIFI_11R
687int limProcessAuthFrameNoSession(tpAniSirGlobal pMac, tANI_U8 *, void *body);
688#endif
689
690void limProcessAssocReqFrame(tpAniSirGlobal, tANI_U8 *, tANI_U8, tpPESession);
691void limSendMlmAssocInd(tpAniSirGlobal pMac, tpDphHashNode pStaDs, tpPESession psessionEntry);
692
693
694void limProcessAssocRspFrame(tpAniSirGlobal, tANI_U8 *, tANI_U8,tpPESession);
695void limProcessDisassocFrame(tpAniSirGlobal, tANI_U8 *,tpPESession);
696void limProcessDeauthFrame(tpAniSirGlobal, tANI_U8 *,tpPESession);
697void limProcessActionFrame(tpAniSirGlobal, tANI_U8 *,tpPESession);
698#if defined WLAN_FEATURE_P2P
699void limProcessActionFrameNoSession(tpAniSirGlobal pMac, tANI_U8 *pRxMetaInfo);
700#endif
701
702
703tSirRetStatus limPopulateMacHeader(tpAniSirGlobal, tANI_U8*, tANI_U8, tANI_U8, tSirMacAddr,tSirMacAddr);
704tSirRetStatus limSendProbeReqMgmtFrame(tpAniSirGlobal, tSirMacSSid *, tSirMacAddr, tANI_U8, tSirMacAddr, tANI_U32, tANI_U32, tANI_U8 *);
705void limSendProbeRspMgmtFrame(tpAniSirGlobal, tSirMacAddr, tpAniSSID, short, tANI_U8, tpPESession, tANI_U8);
706void limSendAuthMgmtFrame(tpAniSirGlobal, tSirMacAuthFrameBody *, tSirMacAddr, tANI_U8,tpPESession);
707void limSendAssocReqMgmtFrame(tpAniSirGlobal, tLimMlmAssocReq *,tpPESession);
708void limSendReassocReqMgmtFrame(tpAniSirGlobal, tLimMlmReassocReq *,tpPESession);
709#ifdef WLAN_FEATURE_VOWIFI_11R
710void limSendReassocReqWithFTIEsMgmtFrame(tpAniSirGlobal pMac,
711 tLimMlmReassocReq *pMlmReassocReq,tpPESession psessionEntry);
712#endif
713void limSendDeltsReqActionFrame(tpAniSirGlobal pMac, tSirMacAddr peer,
714 tANI_U8 wmmTspecPresent, tSirMacTSInfo *pTsinfo,
715 tSirMacTspecIE *pTspecIe, tpPESession psessionEntry);
716void limSendAddtsReqActionFrame(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr,
717 tSirAddtsReqInfo *addts,tpPESession);
718void limSendAddtsRspActionFrame(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr,
719 tANI_U16 statusCode, tSirAddtsReqInfo *addts, tSirMacScheduleIE *pSchedule,tpPESession);
720
721#ifdef ANI_PRODUCT_TYPE_AP
722void limSendAssocRspMgmtFrame(tpAniSirGlobal, tANI_U16, tANI_U16, tSirMacAddr, tANI_U8, tpDphHashNode pSta,tpPESession);
723#endif
724void limSendAssocRspMgmtFrame(tpAniSirGlobal, tANI_U16, tANI_U16, tSirMacAddr, tANI_U8, tpDphHashNode pSta,tpPESession);
725
726void limSendNullDataFrame(tpAniSirGlobal, tpDphHashNode);
727void limSendDisassocMgmtFrame(tpAniSirGlobal, tANI_U16, tSirMacAddr,tpPESession);
728void limSendDeauthMgmtFrame(tpAniSirGlobal, tANI_U16, tSirMacAddr,tpPESession);
729
730void limContinueChannelScan(tpAniSirGlobal);
731tSirResultCodes limMlmAddBss(tpAniSirGlobal, tLimMlmStartReq *,tpPESession psessionEntry);
732
Jeff Johnsone7245742012-09-05 17:12:55 -0700733#if 1 //(WNI_POLARIS_FW_PACKAGE == ADVANCED) && defined(ANI_PRODUCT_TYPE_AP)
734tSirRetStatus limSendChannelSwitchMgmtFrame(tpAniSirGlobal, tSirMacAddr, tANI_U8, tANI_U8, tANI_U8, tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700735#endif
736
Mohit Khanna4a70d262012-09-11 16:30:12 -0700737#ifdef WLAN_FEATURE_11AC
738tSirRetStatus limSendVHTOpmodeNotificationFrame(tpAniSirGlobal pMac,tSirMacAddr peer,tANI_U8 nMode, tpPESession psessionEntry );
Madan Mohan Koyyalamudic6226de2012-09-18 16:33:31 -0700739tSirRetStatus limSendVHTChannelSwitchMgmtFrame(tpAniSirGlobal pMac,tSirMacAddr peer,tANI_U8 nChanWidth, tANI_U8 nNewChannel, tANI_U8 ncbMode, tpPESession psessionEntry );
Mohit Khanna4a70d262012-09-11 16:30:12 -0700740#endif
741
Jeff Johnson295189b2012-06-20 16:38:30 -0700742#if defined WLAN_FEATURE_VOWIFI
743tSirRetStatus limSendNeighborReportRequestFrame(tpAniSirGlobal, tpSirMacNeighborReportReq, tSirMacAddr, tpPESession);
744tSirRetStatus limSendLinkReportActionFrame(tpAniSirGlobal, tpSirMacLinkReport, tSirMacAddr, tpPESession );
745tSirRetStatus limSendRadioMeasureReportActionFrame(tpAniSirGlobal, tANI_U8, tANI_U8, tpSirMacRadioMeasureReport, tSirMacAddr, tpPESession);
746#endif
747
748#ifdef FEATURE_WLAN_CCX
749void limProcessIappFrame(tpAniSirGlobal, tANI_U8 *,tpPESession);
750#endif
751
752// Algorithms & Link Monitoring related functions
753tSirBackgroundScanMode limSelectsBackgroundScanMode(tpAniSirGlobal);
754void limTriggerBackgroundScan(tpAniSirGlobal);
755void limAbortBackgroundScan(tpAniSirGlobal);
756
757/// Function that handles heartbeat failure
758void limHandleHeartBeatFailure(tpAniSirGlobal,tpPESession);
759
760/// Function that triggers link tear down with AP upon HB failure
761void limTearDownLinkWithAp(tpAniSirGlobal,tANI_U8, tSirMacReasonCodes);
762
763#ifdef ANI_PRODUCT_TYPE_AP
764/// Function that performs periodic release of AIDs
765void limReleaseAIDHandler(tpAniSirGlobal);
766
767/// Function that performs periodic cleanup of Pre-auth contexts
768void limPreAuthClnupHandler(tpAniSirGlobal);
769
770/// Function that processes CF-poll response message from SCH
771void limHandleCFpollRsp(tANI_U32);
772
773/// Function that processes PS-poll message from PMM
774void limHandlePSpoll(tANI_U32);
775#endif
776
777/// Function that sends keep alive message to peer(s)
778void limSendKeepAliveToPeer(tpAniSirGlobal);
779
780/// Function that processes Max retries interrupt from TFP
781void limHandleMaxRetriesInterrupt(tANI_U32);
782
783/// Function that processes messages deferred during Learn mode
784void limProcessDeferredMessageQueue(tpAniSirGlobal);
785
786/// Function that defers the messages received
787tANI_U32 limDeferMsg(tpAniSirGlobal, tSirMsgQ *);
788
789/// Function that sets system into scan mode
790void limSetScanMode(tpAniSirGlobal pMac);
791
792/// Function that Switches the Channel and sets the CB Mode
Jeff Johnsone7245742012-09-05 17:12:55 -0700793void limSetChannel(tpAniSirGlobal pMac, tANI_U8 channel, tANI_U8 secChannelOffset, tPowerdBm maxTxPower, tANI_U8 peSessionId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700794
795/// Function that completes channel scan
796void limCompleteMlmScan(tpAniSirGlobal, tSirResultCodes);
797
Jeff Johnsone7245742012-09-05 17:12:55 -0700798#ifdef FEATURE_OEM_DATA_SUPPORT
799/// Funtion that sets system into meas mode for oem data req
800void limSetOemDataReqMode(tpAniSirGlobal pMac, eHalStatus status, tANI_U32* data);
801#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700802
803#ifdef ANI_SUPPORT_11H
804/// Function that sends Measurement Report action frame
805tSirRetStatus limSendMeasReportFrame(tpAniSirGlobal, tpSirMacMeasReqActionFrame, tSirMacAddr);
806
807/// Function that sends TPC Report action frame
808tSirRetStatus limSendTpcReportFrame(tpAniSirGlobal, tpSirMacTpcReqActionFrame, tSirMacAddr);
809#endif
810
811/// Function that sends TPC Request action frame
812void limSendTpcRequestFrame(tpAniSirGlobal, tSirMacAddr);
813
814// Function(s) to handle responses received from HAL
815void limProcessMlmAddBssRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ );
816void limProcessMlmAddStaRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQt,tpPESession psessionEntry);
817void limProcessMlmDelStaRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ );
818void limProcessMlmDelBssRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ,tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700819void limProcessStaMlmAddStaRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ ,tpPESession psessionEntry);
820void limProcessStaMlmDelStaRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ,tpPESession psessionEntry);
821void limProcessStaMlmDelBssRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ ,tpPESession psessionEntry);
822void limProcessMlmSetStaKeyRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ );
823void limProcessMlmSetBssKeyRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ );
824
825
826
827#ifdef GEN4_SCAN
828// Function to process WDA_INIT_SCAN_RSP message
829void limProcessInitScanRsp(tpAniSirGlobal, void * );
830
831// Function to process WDA_START_SCAN_RSP message
832void limProcessStartScanRsp(tpAniSirGlobal, void * );
833
834// Function to process WDA_END_SCAN_RSP message
835void limProcessEndScanRsp(tpAniSirGlobal, void * );
836
837// Function to process WDA_FINISH_SCAN_RSP message
838void limProcessFinishScanRsp(tpAniSirGlobal, void * );
839
840// Function to process WDA_SWITCH_CHANNEL_RSP message
841void limProcessSwitchChannelRsp(tpAniSirGlobal pMac, void * );
842
843void limSendHalInitScanReq( tpAniSirGlobal, tLimLimHalScanState, tSirLinkTrafficCheck);
844void limSendHalStartScanReq( tpAniSirGlobal, tANI_U8, tLimLimHalScanState);
845void limSendHalEndScanReq( tpAniSirGlobal, tANI_U8, tLimLimHalScanState);
846void limSendHalFinishScanReq( tpAniSirGlobal, tLimLimHalScanState);
847
848void limContinuePostChannelScan(tpAniSirGlobal pMac);
849void limContinueChannelLearn( tpAniSirGlobal );
850//WLAN_SUSPEND_LINK Related
851tANI_U8 limIsLinkSuspended(tpAniSirGlobal pMac);
852void limSuspendLink(tpAniSirGlobal, tSirLinkTrafficCheck, SUSPEND_RESUME_LINK_CALLBACK, tANI_U32*);
853void limResumeLink(tpAniSirGlobal, SUSPEND_RESUME_LINK_CALLBACK, tANI_U32*);
854//end WLAN_SUSPEND_LINK Related
855#endif // GEN4_SCAN
856
857tSirRetStatus limSendAddBAReq( tpAniSirGlobal pMac,
858 tpLimMlmAddBAReq pMlmAddBAReq,tpPESession);
859
860tSirRetStatus limSendAddBARsp( tpAniSirGlobal pMac,
861 tpLimMlmAddBARsp pMlmAddBARsp,tpPESession);
862
863tSirRetStatus limSendDelBAInd( tpAniSirGlobal pMac,
864 tpLimMlmDelBAReq pMlmDelBAReq ,tpPESession psessionEntry);
865#if 0
866tSirRetStatus limSendSMPowerStateFrame( tpAniSirGlobal pMac,
867 tSirMacAddr peer, tSirMacHTMIMOPowerSaveState State );
868#endif
869
870void limProcessMlmHalAddBARsp( tpAniSirGlobal pMac,
871 tpSirMsgQ limMsgQ );
872
873void limProcessMlmHalBADeleteInd( tpAniSirGlobal pMac,
874 tpSirMsgQ limMsgQ );
875
876void limProcessMlmRemoveKeyRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ );
877
878void limProcessLearnIntervalTimeout(tpAniSirGlobal pMac);
879#ifdef WLAN_FEATURE_11W
880//11w SA query request action frame handler
881tSirRetStatus limSendSaQueryResponseFrame( tpAniSirGlobal pMac,
882 tANI_U16 transId, tSirMacAddr peer,tpPESession psessionEntry);
883#endif
884// Inline functions
885
886/**
887 * limPostSmeMessage()
888 *
889 *FUNCTION:
890 * This function is called by limProcessMlmMessages(). In this
891 * function MLM sub-module invokes MLM ind/cnf primitives.
892 *
893 *LOGIC:
894 * Initially MLM makes an SME function call to invoke MLM ind/cnf
895 * primitive. In future this can be enhanced to 'post' messages to SME.
896 *
897 *ASSUMPTIONS:
898 * NA
899 *
900 *NOTE:
901 * NA
902 *
903 * @param pMac Pointer to Global MAC structure
904 * @param msgType Indicates the MLM primitive message type
905 * @param *pMsgBuf A pointer to the MLM message buffer
906 *
907 * @return None
908 */
909static inline void
910limPostSmeMessage(tpAniSirGlobal pMac, tANI_U32 msgType, tANI_U32 *pMsgBuf)
911{
912 tSirMsgQ msg;
913
914 if(pMsgBuf == NULL)
915 {
916 limLog(pMac, LOGE,FL("Buffer is Pointing to NULL\n"));
917 return;
918 }
919
920 msg.type = (tANI_U16)msgType;
921 msg.bodyptr = pMsgBuf;
922 msg.bodyval = 0;
923 if (msgType > eWNI_SME_MSG_TYPES_BEGIN)
924 limProcessSmeReqMessages(pMac, &msg);
925 else
926 limProcessMlmRspMessages(pMac, msgType, pMsgBuf);
927} /*** end limPostSmeMessage() ***/
928
929/**
930 * limPostMlmMessage()
931 *
932 *FUNCTION:
933 * This function is called by limProcessSmeMessages(). In this
934 * function SME invokes MLME primitives.
935 *
936 *PARAMS:
937 *
938 *LOGIC:
939 * Initially SME makes an MLM function call to invoke MLM primitive.
940 * In future this can be enhanced to 'post' messages to MLM.
941 *
942 *ASSUMPTIONS:
943 * NA
944 *
945 *NOTE:
946 * NA
947 *
948 * @param pMac Pointer to Global MAC structure
949 * @param msgType Indicates the MLM primitive message type
950 * @param *pMsgBuf A pointer to the MLM message buffer
951 *
952 * @return None
953 */
954static inline void
955limPostMlmMessage(tpAniSirGlobal pMac, tANI_U32 msgType, tANI_U32 *pMsgBuf)
956{
957
958 tSirMsgQ msg;
959 if(pMsgBuf == NULL)
960 {
961 limLog(pMac, LOGE,FL("Buffer is Pointing to NULL\n"));
962 return;
963 }
964 msg.type = (tANI_U16) msgType;
965 msg.bodyptr = pMsgBuf;
966 msg.bodyval = 0;
967 limProcessMlmReqMessages(pMac, &msg);
968} /*** end limPostMlmMessage() ***/
969
970
971
972/**
973 * limGetCurrentScanChannel()
974 *
975 *FUNCTION:
976 * This function is called in various places to get current channel
977 * number being scanned.
978 *
979 *PARAMS:
980 *
981 *LOGIC:
982 *
983 *ASSUMPTIONS:
984 * NA
985 *
986 *NOTE:
987 * NA
988 *
989 * @param pMac Pointer to Global MAC structure
990 * @return Channel number
991 */
992static inline tANI_U8
993limGetCurrentScanChannel(tpAniSirGlobal pMac)
994{
995 tANI_U8 *pChanNum = pMac->lim.gpLimMlmScanReq->channelList.channelNumber;
996
997 return (*(pChanNum + pMac->lim.gLimCurrentScanChannelId));
998} /*** end limGetCurrentScanChannel() ***/
999
1000
1001
1002/**
1003 * limGetIElenFromBssDescription()
1004 *
1005 *FUNCTION:
1006 * This function is called in various places to get IE length
1007 * from tSirBssDescription structure
1008 * number being scanned.
1009 *
1010 *PARAMS:
1011 *
1012 *LOGIC:
1013 *
1014 *ASSUMPTIONS:
1015 * NA
1016 *
1017 *NOTE:
1018 * NA
1019 *
1020 * @param pBssDescr
1021 * @return Total IE length
1022 */
1023
1024static inline tANI_U16
1025limGetIElenFromBssDescription(tpSirBssDescription pBssDescr)
1026{
1027 if (!pBssDescr)
1028 return 0;
1029
1030 return ((tANI_U16) (pBssDescr->length + sizeof(tANI_U16) +
1031 sizeof(tANI_U32) - sizeof(tSirBssDescription)));
1032} /*** end limGetIElenFromBssDescription() ***/
1033
1034#ifdef WLAN_SOFTAP_FEATURE
1035/**
1036 * limSendBeaconInd()
1037 *
1038 *FUNCTION:
1039 * This function is called to send the beacon indication
1040 * number being scanned.
1041 *
1042 *PARAMS:
1043 *
1044 *LOGIC:
1045 *
1046 *ASSUMPTIONS:
1047*/
1048
1049void
1050limSendBeaconInd(tpAniSirGlobal pMac, tpPESession psessionEntry);
1051#endif
1052
1053#ifdef WLAN_SOFTAP_FEATURE
1054
1055void limGetWPSPBCSessions(tpAniSirGlobal pMac, tANI_U8 *addr, tANI_U8 *uuid_e, eWPSPBCOverlap *overlap, tpPESession psessionEntry);
1056void limWPSPBCTimeout(tpAniSirGlobal pMac, tpPESession psessionEntry);
1057void limWPSPBCClose(tpAniSirGlobal pMac, tpPESession psessionEntry);
1058void limRemovePBCSessions(tpAniSirGlobal pMac, tSirMacAddr pRemoveMac,tpPESession psessionEntry);
1059
1060
1061tSirRetStatus
1062limIsSmeGetWPSPBCSessionsReqValid(tpAniSirGlobal pMac, tSirSmeGetWPSPBCSessionsReq *pGetWPSPBCSessionsReq, tANI_U8 *pBuf);
1063
1064#define LIM_WPS_OVERLAP_TIMER_MS 10000
1065#endif
1066
1067void
1068limSuspendLink(tpAniSirGlobal pMac, tSirLinkTrafficCheck trafficCheck, SUSPEND_RESUME_LINK_CALLBACK callback, tANI_U32 *data);
1069void
1070limResumeLink(tpAniSirGlobal pMac, SUSPEND_RESUME_LINK_CALLBACK callback, tANI_U32 *data);
1071
1072void
1073limChangeChannelWithCallback(tpAniSirGlobal pMac, tANI_U8 newChannel,
1074 CHANGE_CHANNEL_CALLBACK callback, tANI_U32 *cbdata, tpPESession psessionEntry);
1075
1076#ifdef WLAN_FEATURE_P2P
1077void limSendSmeMgmtFrameInd(
1078 tpAniSirGlobal pMac, tANI_U8 frameType,
1079 tANI_U8 *frame, tANI_U32 frameLen, tANI_U16 sessionId,
Jeff Johnsone7245742012-09-05 17:12:55 -07001080 tANI_U32 rxChan, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -07001081void limProcessRemainOnChnTimeout(tpAniSirGlobal pMac);
1082void limSendP2PActionFrame(tpAniSirGlobal pMac, tpSirMsgQ pMsg);
1083void limAbortRemainOnChan(tpAniSirGlobal pMac);
1084tSirRetStatus __limProcessSmeNoAUpdate(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf);
1085#endif
1086#endif /* __LIM_TYPES_H */
1087