blob: ebe5b5abdcb303ef06213f88d1799dfce98fd5dd [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 * aniGlobal.h: MAC Modules Adapter Definitions.
25 * Author: V. K. Kandarpa
26 * Date: 10/25/2002
27 *
28 * History:-
29 * Date: 04/08/2008 Modified by: Santosh Mandiganal
30 * Modification Information: Added the logDump.h header file and defined the
31 * dumpTablecurrentId, dumpTableEntry.
32 * --------------------------------------------------------------------------
33 *
34 */
35
36#ifndef _ANIGLOBAL_H
37#define _ANIGLOBAL_H
38
39// Take care to avoid redefinition of this type, if it is
40// already defined in "halWmmApi.h"
41#if !defined(_HALMAC_WMM_API_H)
42typedef struct sAniSirGlobal *tpAniSirGlobal;
43#endif
44
45#include "halTypes.h"
46#include "sirCommon.h"
47#include "aniSystemDefs.h"
48#ifndef ANI_OS_TYPE_OSX
49#include "sysDef.h"
50#endif
51#include "dphGlobal.h"
52#include "limGlobal.h"
53#include "pmmGlobal.h"
54#include "schGlobal.h"
55#include "sysGlobal.h"
56#include "cfgGlobal.h"
57#include "utilsGlobal.h"
58#include "sirApi.h"
59
60#ifdef FEATURE_WLAN_NON_INTEGRATED_SOC
61#include "halGlobal.h"
62#include "halDataStruct.h"
63#include "phyGlobal.h"
64#include "pttModule.h"
65#endif
66
67#ifdef FEATURE_WLAN_INTEGRATED_SOC
68#include "wlan_qct_hal.h"
69#endif
70
71#ifdef ANI_PRODUCT_TYPE_CLIENT
72#include "pmc.h"
73#endif
74
75#include "csrApi.h"
76#ifdef WLAN_FEATURE_VOWIFI_11R
77#include "sme_FTApi.h"
78#endif
79#include "csrSupport.h"
80#include "smeInternal.h"
81#include "ccmApi.h"
82#include "btcApi.h"
83#include "csrInternal.h"
84
Jeff Johnsone7245742012-09-05 17:12:55 -070085#ifdef FEATURE_OEM_DATA_SUPPORT
86#include "oemDataInternal.h"
87#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070088
89#if defined WLAN_FEATURE_VOWIFI
90#include "smeRrmInternal.h"
91#include "rrmGlobal.h"
92#endif
93#if defined FEATURE_WLAN_CCX
94#include "ccxApi.h"
95#include "ccxGlobal.h"
96#endif
97#ifdef WLAN_FEATURE_P2P
98#include "p2p_Api.h"
99#endif
100
101#if defined WLAN_FEATURE_VOWIFI_11R
102#include <limFTDefs.h>
103#endif
104
105
106#ifdef ANI_DVT_DEBUG
107#include "dvtModule.h"
108#endif
109
110// New HAL API interface defs.
111#include "logDump.h"
112
113#ifdef FEATURE_WLAN_INTEGRATED_SOC
114//Check if this definition can actually move here from halInternal.h even for Volans. In that case
115//this featurization can be removed.
116#define PMAC_STRUCT( _hHal ) ( (tpAniSirGlobal)_hHal )
117#endif
118
119#define ANI_DRIVER_TYPE(pMac) (((tpAniSirGlobal)(pMac))->gDriverType)
120// -------------------------------------------------------------------
121// Bss Qos Caps bit map definition
122#define LIM_BSS_CAPS_OFFSET_HCF 0
123#define LIM_BSS_CAPS_OFFSET_WME 1
124#define LIM_BSS_CAPS_OFFSET_WSM 2
125
126#define LIM_BSS_CAPS_HCF (1 << LIM_BSS_CAPS_OFFSET_HCF)
127#define LIM_BSS_CAPS_WME (1 << LIM_BSS_CAPS_OFFSET_WME)
128#define LIM_BSS_CAPS_WSM (1 << LIM_BSS_CAPS_OFFSET_WSM)
129
130// cap should be one of HCF/WME/WSM
131#define LIM_BSS_CAPS_GET(cap, val) (((val) & (LIM_BSS_CAPS_ ## cap)) >> LIM_BSS_CAPS_OFFSET_ ## cap)
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800132#define LIM_BSS_CAPS_SET(cap, val) ((val) |= (LIM_BSS_CAPS_ ## cap ))
133#define LIM_BSS_CAPS_CLR(cap, val) ((val) &= (~ (LIM_BSS_CAPS_ ## cap)))
Jeff Johnson295189b2012-06-20 16:38:30 -0700134
135// 40 beacons per heart beat interval is the default + 1 to count the rest
136#define MAX_NO_BEACONS_PER_HEART_BEAT_INTERVAL 41
137
138/* max number of legacy bssid we can store during scan on one channel */
139#define MAX_NUM_LEGACY_BSSID_PER_CHANNEL 10
140
141#if defined WLAN_FEATURE_P2P
142#define P2P_WILDCARD_SSID "DIRECT-" //TODO Put it in proper place;
143#define P2P_WILDCARD_SSID_LEN 7
144
145#ifdef WLAN_FEATURE_CONCURRENT_P2P
146#define MAX_NO_OF_P2P_SESSIONS 5
147#endif //WLAN_FEATURE_CONCURRENT_P2P
148#endif //WLAN_FEATURE_P2P
149
150// -------------------------------------------------------------------
151// Change channel generic scheme
152typedef void (*CHANGE_CHANNEL_CALLBACK)(tpAniSirGlobal pMac, eHalStatus status, tANI_U32 *data,
153 tpPESession psessionEntry);
154
155/// LIM global definitions
156typedef struct sAniSirLimIbss
157{
158 void *pHdr;
159 void *pBeacon;
160} tAniSirLimIbss;
161
162typedef struct sDialogueToken
163{
164 //bytes 0-3
165 tANI_U16 assocId;
166 tANI_U8 token;
167 tANI_U8 rsvd1;
168 //Bytes 4-7
169 tANI_U16 tid;
170 tANI_U8 rsvd2[2];
171
172 struct sDialogueToken* next;
173}tDialogueToken, *tpDialogueToken;
174
175typedef struct sLimTimers
176{
177 //TIMERS IN LIM ARE NOT SUPPOSED TO BE ZEROED OUT DURING RESET.
178 //DURING limInitialize DONOT ZERO THEM OUT.
179
180//STA SPECIFIC TIMERS
181#if defined(ANI_PRODUCT_TYPE_CLIENT) || defined(ANI_AP_CLIENT_SDK)
182 // Periodic background scan timer
183 TX_TIMER gLimBackgroundScanTimer;
184#endif
185
186 TX_TIMER gLimPreAuthClnupTimer;
187 //TX_TIMER gLimAuthResponseTimer[HAL_NUM_STA];
188
189 // Association related timers
190 TX_TIMER gLimAssocFailureTimer;
191 TX_TIMER gLimReassocFailureTimer;
192
193
194 /// Heartbeat timer on STA
195 TX_TIMER gLimHeartBeatTimer;
196
197 /// Wait for Probe after Heartbeat failure timer on STA
198 TX_TIMER gLimProbeAfterHBTimer;
199
200
201 // Authentication related timers
202 TX_TIMER gLimAuthFailureTimer;
203
204 // Join Failure timeout on STA
205 TX_TIMER gLimJoinFailureTimer;
206
207 // Keepalive timer
208 TX_TIMER gLimKeepaliveTimer;
209
210 // Scan related timers
211 TX_TIMER gLimMinChannelTimer;
212 TX_TIMER gLimMaxChannelTimer;
213 TX_TIMER gLimPeriodicProbeReqTimer;
214
215 // CNF_WAIT timer
216 TX_TIMER *gpLimCnfWaitTimer;
217
218 // Send Disassociate frame threshold parameters
219 TX_TIMER gLimSendDisassocFrameThresholdTimer;
220
221 TX_TIMER gLimAddtsRspTimer; // max wait for a response
222
223 // Update OLBC Cache Timer
224 TX_TIMER gLimUpdateOlbcCacheTimer;
225
226 TX_TIMER gLimChannelSwitchTimer;
227 // This TIMER is started on the STA, as indicated by the
228 // AP in its Quiet BSS IE, for the specified interval
229 TX_TIMER gLimQuietTimer;
230 // This TIMER is started on the AP, prior to the AP going
231 // into LEARN mode
232 // This TIMER is started on the STA, for the specified
233 // quiet duration
234 TX_TIMER gLimQuietBssTimer;
235
236#ifdef WLAN_FEATURE_VOWIFI_11R
237 TX_TIMER gLimFTPreAuthRspTimer;
238#endif
239
240#ifdef FEATURE_WLAN_CCX
241 TX_TIMER gLimCcxTsmTimer;
242#endif
243#ifdef WLAN_FEATURE_P2P
244 TX_TIMER gLimRemainOnChannelTimer;
245#endif
Madan Mohan Koyyalamudi521ff192012-11-15 17:13:08 -0800246 TX_TIMER gLimDisassocAckTimer;
247 TX_TIMER gLimDeauthAckTimer;
Jeff Johnson295189b2012-06-20 16:38:30 -0700248//********************TIMER SECTION ENDS**************************************************
249// ALL THE FIELDS BELOW THIS CAN BE ZEROED OUT in limInitialize
250//****************************************************************************************
251
252}tLimTimers;
253
Madan Mohan Koyyalamudi521ff192012-11-15 17:13:08 -0800254typedef struct {
255 void *pMlmDisassocReq;
256 void *pMlmDeauthReq;
257}tLimDisassocDeauthCnfReq;
Jeff Johnson295189b2012-06-20 16:38:30 -0700258
259typedef struct sAniSirLim
260{
261 ////////////////////////////////////// TIMER RELATED START ///////////////////////////////////////////
262
263 tLimTimers limTimers;
264 /// Flag to track if LIM timers are created or not
265 tANI_U32 gLimTimersCreated;
266
267
268 ////////////////////////////////////// TIMER RELATED END ///////////////////////////////////////////
269
270 ////////////////////////////////////// SCAN/LEARN RELATED START ///////////////////////////////////////////
271 /**
272 * This flag when set, will use scan mode instead of
273 * Learn mode on BP/AP. By default this flag is set
274 * to true until HIF getting stuck in 0x800 state is
275 * debugged.
276 */
277 tANI_U32 gLimUseScanModeForLearnMode;
278
279 /**
280 * This is useful for modules other than LIM
281 * to see if system is in scan/learn mode or not
282 */
283 tANI_U32 gLimSystemInScanLearnMode;
284
285 // Scan related globals on STA
286 tANI_U8 gLimReturnAfterFirstMatch;
287 tANI_U8 gLim24Band11dScanDone;
288 tANI_U8 gLim50Band11dScanDone;
289 tANI_U8 gLimReturnUniqueResults;
290
291 // Background Scan related globals on STA
292 tANI_U32 gLimNumOfBackgroundScanSuccess;
293 tANI_U32 gLimNumOfConsecutiveBkgndScanFailure;
294 tANI_U32 gLimNumOfForcedBkgndScan;
295 tANI_U8 gLimBackgroundScanDisable; //based on BG timer
296 tANI_U8 gLimForceBackgroundScanDisable; //debug control flag
297 tANI_U8 gLimBackgroundScanTerminate; //controlled by SME
298 tANI_U8 gLimReportBackgroundScanResults;//controlled by SME
299
300 /// Place holder for current channel ID
301 /// being scanned
302 tANI_U32 gLimCurrentScanChannelId;
303
304 // Hold onto SCAN criteria
305 tLimMlmScanReq *gpLimMlmScanReq;
306
307 /// This indicates total length of 'matched' scan results
308 tANI_U16 gLimMlmScanResultLength;
309
310 /// This indicates total length of 'cached' scan results
311 tANI_U16 gLimSmeScanResultLength;
312
313 /**
314 * Hash table definition for storing SCAN results
315 * This is the placed holder for 'cached' scan results
316 */
317 tLimScanResultNode
318 *gLimCachedScanHashTable[LIM_MAX_NUM_OF_SCAN_RESULTS];
319
320#if defined(ANI_PRODUCT_TYPE_CLIENT) || defined(ANI_AP_CLIENT_SDK)
321 /// Place holder for current channel ID
322 /// being scanned during background scanning
323 tANI_U32 gLimBackgroundScanChannelId;
324 /// flag to indicate that bacground scan timer has been started
325 tANI_U8 gLimBackgroundScanStarted;
326
327 /* Used to store the list of legacy bss sta detected during scan on one channel */
328 tANI_U16 gLimRestoreCBNumScanInterval;
329 tANI_U16 gLimRestoreCBCount;
330 tSirMacAddr gLimLegacyBssidList[MAX_NUM_LEGACY_BSSID_PER_CHANNEL];
331#endif
332
333 //
334 // If this flag is 1,
335 // then, LIM will "try and trigger" a background
336 // scan whenever it receives a Quiet BSS IE
337 //
338 // If this flag is 0,
339 // then, LIM will simply shut-off Tx/Rx whenever it
340 // receives a Quiet BSS IE.
341 // This is the default behavior when a Quiet BSS IE
342 // is received and 11H is enabled
343 //
344 tANI_U32 gLimTriggerBackgroundScanDuringQuietBss;
345
346#ifdef ANI_AP_SDK
347 tLimScanDurationConvert gLimScanDurationConvert; /* Used to store converted scan duration values in TU and TICKS */
348#endif /* ANI_AP_SDK */
349
350#ifdef WLAN_FEATURE_P2P
351 // This variable store the total duration to do scan
352 tANI_U32 gTotalScanDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -0700353 tANI_U32 p2pRemOnChanTimeStamp;
Jeff Johnson295189b2012-06-20 16:38:30 -0700354#endif
355
356 // abort scan is used to abort an on-going scan
357 tANI_U8 abortScan;
358 tLimScanChnInfo scanChnInfo;
359
360 ////////////////////////////////////// SCAN/LEARN RELATED START ///////////////////////////////////////////
361 tSirMacAddr gSelfMacAddr; //added for BT-AMP Support
362
363 ////////////////////////////////////////// BSS RELATED END ///////////////////////////////////////////
364 // Place holder for StartBssReq message
365 // received by SME state machine
366
367#if defined(ANI_PRODUCT_TYPE_AP)
368 // Place holder for Neighbor BSS list received in
369 // SME_JOIN/REASSOC_REQ messages
370 tSirMultipleNeighborBssInfo gLimNeighborBssList;
371#endif
372 tANI_U8 gLimCurrentBssUapsd;
373
374
375/* These global varibales are now moved to session Table in order to support BT-AMP oct 9th review */
376#if 0
377 // Place holder for BSS description that we're
378 // currently joined with
379 tSirMacAddr gLimCurrentBssId;
380 tSirMacChanNum gLimCurrentChannelId;
381 tSirMacSSid gLimCurrentSSID;
382 tANI_U16 gLimCurrentBssCaps;
383
384 // QosCaps is a bit map of various qos capabilities - see defn above
385 tANI_U8 gLimCurrentBssQosCaps;
386 tANI_U16 gLimCurrentBssPropCap;
387 tANI_U8 gLimSentCapsChangeNtf;
388 tANI_U32 gLimCurrentTitanHtCaps;
389
390 // Place holder for BSS description that
391 // we're currently Reassociating
392 tSirMacAddr gLimReassocBssId;
393 tSirMacChanNum gLimReassocChannelId;
394 tSirMacSSid gLimReassocSSID;
395 tANI_U16 gLimReassocBssCaps;
396 tANI_U8 gLimReassocBssQosCaps;
397 tANI_U16 gLimReassocBssPropCap;
398 tANI_U32 gLimReassocTitanHtCaps;
399
400 tANI_U8 gLimBssIdx; // BSSIdx is made session speicific
401#endif
402
403 tANI_U8 gLimForceNoPropIE; /* This is used for testing sta legacy bss detect feature */
404
405 //
406 // Store the BSS Index returned by HAL during
407 // WDA_ADD_BSS_RSP here.
408 //
409 // For now:
410 // This will be used during WDA_SET_BSSKEY_REQ in
411 // order to set the GTK
412 // Later:
413 // There could be other interfaces needing this info
414 //
415
416 //
417 // Due to the asynchronous nature of the interface
418 // between PE <-> HAL, some transient information
419 // like this needs to be cached.
420 // This is cached upon receipt of eWNI_SME_SETCONTEXT_REQ.
421 // This is released while posting LIM_MLM_SETKEYS_CNF
422 //
423 void* gpLimMlmSetKeysReq;
424 void* gpLimMlmRemoveKeyReq;
425
426 //On STA: staid for self generated by HAL and sent as response to 'ADD STA' msg.
427 //On AP: staid corresponding to BSS generated by HAL and sent as response to 'ADD BSS' msg.
428 // tANI_U16 gLimStaid; // TO SUPPORT BT-AMP
429
430 ////////////////////////////////////////// BSS RELATED END ///////////////////////////////////////////
431
432 ////////////////////////////////////////// IBSS RELATED START ///////////////////////////////////////////
433 // This indicates whether we've a partner
434 // that is also transmitting Beacon frame
435 // in IBSS
436 //tANI_U8 gLimIbssActive; oct1 review
437
438 //This indicates whether this STA coalesced and adapter to peer's capabilities or not.
439 tANI_U8 gLimIbssCoalescingHappened;
440
441 /// Definition for storing IBSS peers BSS description
442 tLimIbssPeerNode *gLimIbssPeerList;
443 tANI_U32 gLimNumIbssPeers;
444
445 // ibss info - params for which ibss to join while coalescing
446 tAniSirLimIbss ibssInfo;
447
448 ////////////////////////////////////////// IBSS RELATED END ///////////////////////////////////////////
449
450 ////////////////////////////////////////// STATS/COUNTER RELATED START ///////////////////////////////////////////
451
452 tANI_U16 maxStation;
453 tANI_U16 maxBssId;
454
455 tANI_U32 gLimNumBeaconsRcvd;
456 tANI_U32 gLimNumBeaconsIgnored;
457
458 tANI_U32 gLimNumDeferredMsgs;
459
460 /// Variable to keep track of number of currently associated STAs
461 tANI_U16 gLimNumOfCurrentSTAs;
462 tANI_U16 gLimNumOfAniSTAs; // count of ANI peers
463 tANI_U16 gLimAssocStaLimit;
464
465 /// This indicates number of RXed Beacons during HB period
466 // tANI_U8 gLimRxedBeaconCntDuringHB;
467
468 // Heart-Beat interval value
469 tANI_U32 gLimHeartBeatCount;
470
471 // Statistics to keep track of no. beacons rcvd in heart beat interval
472 tANI_U16 gLimHeartBeatBeaconStats[MAX_NO_BEACONS_PER_HEART_BEAT_INTERVAL];
473
474#ifdef WLAN_DEBUG
475 // Debug counters
476 tANI_U32 numTot, numBbt, numProtErr, numLearn, numLearnIgnore;
477 tANI_U32 numSme, numMAC[4][16];
478
479 // Debug counter to track number of Assoc Req frame drops
480 // when received in pStaDs->mlmState other than LINK_ESTABLISED
481 tANI_U32 gLimNumAssocReqDropInvldState;
482 // counters to track rejection of Assoc Req due to Admission Control
483 tANI_U32 gLimNumAssocReqDropACRejectTS;
484 tANI_U32 gLimNumAssocReqDropACRejectSta;
485 // Debug counter to track number of Reassoc Req frame drops
486 // when received in pStaDs->mlmState other than LINK_ESTABLISED
487 tANI_U32 gLimNumReassocReqDropInvldState;
488 // Debug counter to track number of Hash Miss event that
489 // will not cause a sending of de-auth/de-associate frame
490 tANI_U32 gLimNumHashMissIgnored;
491
492 // Debug counter to track number of Beacon frames
493 // received in unexpected state
494 tANI_U32 gLimUnexpBcnCnt;
495
496 // Debug counter to track number of Beacon frames
497 // received in wt-join-state that do have SSID mismatch
498 tANI_U32 gLimBcnSSIDMismatchCnt;
499
500 // Debug counter to track number of Link establishments on STA/BP
501 tANI_U32 gLimNumLinkEsts;
502
503 // Debug counter to track number of Rx cleanup
504 tANI_U32 gLimNumRxCleanup;
505
506 // Debug counter to track different parse problem
507 tANI_U32 gLim11bStaAssocRejectCount;
508
509#endif
510
511 //Time stamp of the last beacon received from the BSS to which STA is connected.
512 tANI_U64 gLastBeaconTimeStamp;
513 //RX Beacon count for the current BSS to which STA is connected.
514 tANI_U32 gCurrentBssBeaconCnt;
515 tANI_U8 gLastBeaconDtimCount;
516 tANI_U8 gLastBeaconDtimPeriod;
517
518
519 ////////////////////////////////////////// STATS/COUNTER RELATED END ///////////////////////////////////////////
520
521
522 ////////////////////////////////////////// STATES RELATED START ///////////////////////////////////////////
523 // Counts Heartbeat failures
524 tANI_U8 gLimHBfailureCntInLinkEstState;
525 tANI_U8 gLimProbeFailureAfterHBfailedCnt;
526 tANI_U8 gLimHBfailureCntInOtherStates;
527
528 /**
529 * This variable indicates whether LIM module need to
530 * send response to host. Used to identify whether a request
531 * is generated internally within LIM module or by host
532 */
533 tANI_U8 gLimRspReqd;
534
535 /// Previous SME State
536 tLimSmeStates gLimPrevSmeState;
537
538 /// MLM State visible across all Sirius modules
539 tLimMlmStates gLimMlmState;
540
541 /// Previous MLM State
542 tLimMlmStates gLimPrevMlmState;
543
544#ifdef GEN4_SCAN
545 // LIM to HAL SCAN Management Message Interface states
546 tLimLimHalScanState gLimHalScanState;
547//WLAN_SUSPEND_LINK Related
548 SUSPEND_RESUME_LINK_CALLBACK gpLimSuspendCallback;
549 tANI_U32 *gpLimSuspendData;
550 SUSPEND_RESUME_LINK_CALLBACK gpLimResumeCallback;
551 tANI_U32 *gpLimResumeData;
552//end WLAN_SUSPEND_LINK Related
553 tANI_U8 fScanDisabled;
554 //Can be set to invalid channel. If it is invalid, HAL
555 //should move to previous valid channel or stay in the
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 //current channel. CB state goes along with channel to resume to
557 tANI_U16 gResumeChannel;
558 ePhyChanBondState gResumePhyCbState;
Jeff Johnson295189b2012-06-20 16:38:30 -0700559#endif // GEN4_SCAN
560
561 // Change channel generic scheme
562 CHANGE_CHANNEL_CALLBACK gpchangeChannelCallback;
563 tANI_U32 *gpchangeChannelData;
564
565 /// SME State visible across all Sirius modules
566 tLimSmeStates gLimSmeState;
567 /// This indicates whether we're an AP, STA in BSS/IBSS
568 tLimSystemRole gLimSystemRole;
569
570 // Number of STAs that do not support short preamble
571 tLimNoShortParams gLimNoShortParams;
572
573 // Number of STAs that do not support short slot time
574 tLimNoShortSlotParams gLimNoShortSlotParams;
575
576
577 // OLBC parameters
578 tLimProtStaParams gLimOverlap11gParams;
579
580 tLimProtStaParams gLimOverlap11aParams;
581 tLimProtStaParams gLimOverlapHt20Params;
582 tLimProtStaParams gLimOverlapNonGfParams;
583
584 //
585 // ---------------- DPH -----------------------
586 // these used to live in DPH but are now moved here (where they belong)
587 tANI_U32 gLimPhyMode;
588 tANI_U32 propRateAdjustPeriod;
589 tANI_U32 scanStartTime; // used to measure scan time
590
Jeff Johnsone7245742012-09-05 17:12:55 -0700591 //tANI_U8 gLimBssid[6];
Jeff Johnson295189b2012-06-20 16:38:30 -0700592 tANI_U8 gLimMyMacAddr[6];
593 tANI_U8 ackPolicy;
594
595 tANI_U8 gLimQosEnabled:1; //11E
596 tANI_U8 gLimWmeEnabled:1; //WME
597 tANI_U8 gLimWsmEnabled:1; //WSM
598 tANI_U8 gLimHcfEnabled:1;
599 tANI_U8 gLim11dEnabled:1;
600 tANI_U8 gLimProbeRespDisableFlag:1; // control over probe response
601 // ---------------- DPH -----------------------
602
603 ////////////////////////////////////////// STATES RELATED END ///////////////////////////////////////////
604
605 ////////////////////////////////////////// MISC RELATED START ///////////////////////////////////////////
606#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
607 // Place holder for alternate radio list
608 tSirMultipleAlternateRadioInfo gLimAlternateRadioList;
609#endif
610
611 // Place holder for Measurement Req/Rsp/Ind related info
612#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && defined(ANI_PRODUCT_TYPE_AP)
613 tpSirSmeMeasurementReq gpLimMeasReq;
614 tLimMeasParams gLimMeasParams;
615 tpLimMeasData gpLimMeasData;
616#endif
617
618 // WDS info
619 tANI_U32 gLimNumWdsInfoInd;
620 tANI_U32 gLimNumWdsInfoSet;
621 tSirWdsInfo gLimWdsInfo;
622
623 // Deferred Queue Paramters
624 tLimDeferredMsgQParams gLimDeferredMsgQ;
625
626 // addts request if any - only one can be outstanding at any time
627 tSirAddtsReq gLimAddtsReq;
628 tANI_U8 gLimAddtsSent;
629 tANI_U8 gLimAddtsRspTimerCount;
630
631 //protection related config cache
632 tCfgProtection cfgProtection;
633
634 tANI_U8 gLimProtectionControl;
635 //RF band to determibe 2.4/5 GHZ
636
637 // alternate radio info used by STA
638 tSirAlternateRadioInfo gLimAlternateRadio;
639
640 //This flag will remain to be set except while LIM is waiting for specific response messages
641 //from HAL. e.g when LIM issues ADD_STA req it will clear this flag and when it will receive
642 //the response the flag will be set.
643 tANI_U8 gLimProcessDefdMsgs;
644
645 // UAPSD flag used on AP
646 tANI_U8 gUapsdEnable;
647
648 /* Used on STA, this is a static UAPSD mask setting
649 * derived from SME_JOIN_REQ and SME_REASSOC_REQ. If a
650 * particular AC bit is set, it means the AC is both
651 * trigger enabled and delivery enabled.
652 */
653 tANI_U8 gUapsdPerAcBitmask;
654
655 /* Used on STA, this is a dynamic UPASD mask setting
656 * derived from AddTS Rsp and DelTS frame. If a
657 * particular AC bit is set, it means AC is trigger
658 * enabled.
659 */
660 tANI_U8 gUapsdPerAcTriggerEnableMask;
661
662 /* Used on STA, dynamic UPASD mask setting
663 * derived from AddTS Rsp and DelTs frame. If
664 * a particular AC bit is set, it means AC is
665 * delivery enabled.
666 */
667 tANI_U8 gUapsdPerAcDeliveryEnableMask;
668
669 /* Used on STA for AC downgrade. This is a dynamic mask
670 * setting which keep tracks of ACs being admitted.
671 * If bit is set to 0: That partiular AC is not admitted
672 * If bit is set to 1: That particular AC is admitted
673 */
674 tANI_U8 gAcAdmitMask[SIR_MAC_DIRECTION_DIRECT];
675
676 //dialogue token List head/tail for Action frames request sent.
677 tpDialogueToken pDialogueTokenHead;
678 tpDialogueToken pDialogueTokenTail;
679
680 tLimTspecInfo tspecInfo[LIM_NUM_TSPEC_MAX];
681
682 // admission control policy information
683 tLimAdmitPolicyInfo admitPolicyInfo;
684
685
686
687 ////////////////////////////////////////// MISC RELATED END ///////////////////////////////////////////
688
689 ////////////////////////////////////////// ASSOC RELATED START ///////////////////////////////////////////
690 // Place holder for JoinReq message
691 // received by SME state machine
692 // tpSirSmeJoinReq gpLimJoinReq;
693
694 // Place holder for ReassocReq message
695 // received by SME state machine
696 //tpSirSmeReassocReq gpLimReassocReq; sep23 review
697
698 /**
699 * Following is the place holder for free AID pool.
700 * A non-zero value indicates that AID is available
701 * for assignment.
702 */
703 tANI_U8 *gpLimAIDpool;
704 tANI_U8 freeAidHead;
705 tANI_U8 freeAidTail;
706
707 // Current Authentication type used at STA
708 //tAniAuthType gLimCurrentAuthType;
709
710 // Place holder for current authentication request
711 // being handled
712 tLimMlmAuthReq *gpLimMlmAuthReq;
713
714 // Place holder for Join request that we're
715 // currently attempting
Jeff Johnsone7245742012-09-05 17:12:55 -0700716 //tLimMlmJoinReq *gpLimMlmJoinReq;
Jeff Johnson295189b2012-06-20 16:38:30 -0700717
718 // Reason code to determine the channel change context while sending
719 // WDA_CHNL_SWITCH_REQ message to HAL
720 tANI_U32 channelChangeReasonCode;
721
722 /// MAC level Pre-authentication related globals
723 tSirMacChanNum gLimPreAuthChannelNumber;
724 tAniAuthType gLimPreAuthType;
725 tSirMacAddr gLimPreAuthPeerAddr;
726 tANI_U32 gLimNumPreAuthContexts;
727 tLimPreAuthTable gLimPreAuthTimerTable;
728
729 // Placed holder to deauth reason
730 tANI_U16 gLimDeauthReasonCode;
731
732 // Place holder for Pre-authentication node list
733 struct tLimPreAuthNode * pLimPreAuthList;
734
735 // Send Disassociate frame threshold parameters
736 tANI_U16 gLimDisassocFrameThreshold;
737 tANI_U16 gLimDisassocFrameCredit;
738
739 // Assoc or ReAssoc Response Data/Frame
740 void *gLimAssocResponseData;
741
742 //One cache for each overlap and associated case.
743 tCacheParams protStaOverlapCache[LIM_PROT_STA_OVERLAP_CACHE_SIZE];
744 tCacheParams protStaCache[LIM_PROT_STA_CACHE_SIZE];
745
746 ////////////////////////////////////////// ASSOC RELATED END ///////////////////////////////////////////
747
748
Jeff Johnson295189b2012-06-20 16:38:30 -0700749
750 //
751 // For DEBUG purposes
752 // Primarily for - TITAN BEACON workaround
753 // Symptom - TFP/PHY gets stuck
754 //
755 tANI_U32 gLimScanOverride;
756 // Holds the desired tSirScanType, as requested by SME
757 tSirScanType gLimScanOverrideSaved;
758
Jeff Johnson295189b2012-06-20 16:38:30 -0700759 //
760 // CB State protection, operated upon as follows:
761 // 1 - CB is enabled in the hardware ONLY WHEN a Titan
762 // STA associates with the AP
763 // 0 - CB is enabled/disabled based on the configuration
764 // received as per eWNI_SME_START_BSS_REQ
765 //
766 tANI_U32 gLimCBStateProtection;
767
768 // Count of TITAN STA's currently associated
769 tANI_U16 gLimTitanStaCount;
770
771 //
772 // For DEBUG purposes
773 // Primarily for - TITAN workaround
774 // Symptom - Avoid NULL data frames
775 // Applies to AP only
776 //
777 tANI_U32 gLimBlockNonTitanSta;
778 /////////////////////////// TITAN related globals //////////////////////////////////////////
779
780
781 //////////////////////////////// HT RELATED //////////////////////////////////////////
782 //
783 // The following global LIM variables maintain/manage
784 // the runtime configurations related to 802.11n
785
786 // 802.11n Station detected HT capability in Beacon Frame
787 tANI_U8 htCapabilityPresentInBeacon;
788
789 // 802.11 HT capability: Enabled or Disabled
790 tANI_U8 htCapability;
791
792
793 tANI_U8 gHTGreenfield;
794
Jeff Johnson295189b2012-06-20 16:38:30 -0700795 tANI_U8 gHTShortGI40Mhz;
796 tANI_U8 gHTShortGI20Mhz;
797
798 //Set to 0 for 3839 octets
799 //Set to 1 for 7935 octets
800 tANI_U8 gHTMaxAmsduLength;
801
802
803 // DSSS/CCK at 40 MHz: Enabled 1 or Disabled
804 tANI_U8 gHTDsssCckRate40MHzSupport;
805
806 // PSMP Support: Enabled 1 or Disabled 0
807 tANI_U8 gHTPSMPSupport;
808
809 // L-SIG TXOP Protection used only if peer support available
810 tANI_U8 gHTLsigTXOPProtection;
811
812 // MIMO Power Save
813 tSirMacHTMIMOPowerSaveState gHTMIMOPSState;
814
815 // Scan In Power Save
816 tANI_U8 gScanInPowersave;
817
818 //
819 // A-MPDU Density
820 // 000 - No restriction
821 // 001 - 1/8 usec
822 // 010 - 1/4 usec
823 // 011 - 1/2 usec
824 // 100 - 1 usec
825 // 101 - 2 usec
826 // 110 - 4 usec
827 // 111 - 8 usec
828 //
829 tANI_U8 gHTAMpduDensity;
830
831 tANI_BOOLEAN gMaxAmsduSizeEnabled;
832 // Maximum Tx/Rx A-MPDU factor
833 tANI_U8 gHTMaxRxAMpduFactor;
834
835 //
836 // Scheduled PSMP related - Service Interval Granularity
837 // 000 - 5 ms
838 // 001 - 10 ms
839 // 010 - 15 ms
840 // 011 - 20 ms
841 // 100 - 25 ms
842 // 101 - 30 ms
843 // 110 - 35 ms
844 // 111 - 40 ms
845 //
846 tANI_U8 gHTServiceIntervalGranularity;
847
848 // Indicates whether an AP wants to associate PSMP enabled Stations
849 tANI_U8 gHTControlledAccessOnly;
850
851 // RIFS Mode. Set if no APSD legacy devices associated
852 tANI_U8 gHTRifsMode;
853 // OBss Mode . set when we have Non HT STA is associated or with in overlap bss
854 tANI_U8 gHTObssMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700855
856 // Identifies the current Operating Mode
857 tSirMacHTOperatingMode gHTOperMode;
858
859 // Indicates if PCO is activated in the BSS
860 tANI_U8 gHTPCOActive;
861
862 //
863 // If PCO is active, indicates which PCO phase to use
864 // 0 - switch to 20 MHz phase
865 // 1 - switch to 40 MHz phase
866 //
867 tANI_U8 gHTPCOPhase;
868
869 //
870 // Used only in beacons. For PR, this is set to 0
871 // 0 - Primary beacon
872 // 1 - Secondary beacon
873 //
874 tANI_U8 gHTSecondaryBeacon;
875
876 //
877 // Dual CTS Protection
878 // 0 - Use RTS/CTS
879 // 1 - Dual CTS Protection is used
880 //
881 tANI_U8 gHTDualCTSProtection;
882
883 //
884 // Identifies a single STBC MCS that shall ne used for
885 // STBC control frames and STBC beacons
886 //
887 tANI_U8 gHTSTBCBasicMCS;
888
889 tANI_U8 gHTNonGFDevicesPresent;
890
891 tANI_U8 gAddBA_Declined; // Flag to Decline the BAR if the particular bit (0-7) is being set
892
893 //////////////////////////////// HT RELATED //////////////////////////////////////////
894
895
896 // wsc info required to form the wsc IE
897 tLimWscIeInfo wscIeInfo;
898 tpPESession gpSession ; //Pointer to session table
899 /*
900 * sessionID and transactionID from SME is stored here for those messages, for which
901 * there is no session context in PE, e.g. Scan related messages.
902 **/
903 tANI_U8 gSmeSessionId;
904 tANI_U16 gTransactionId;
905
Jeff Johnsone7245742012-09-05 17:12:55 -0700906#ifdef FEATURE_OEM_DATA_SUPPORT
907tLimMlmOemDataReq *gpLimMlmOemDataReq;
908tLimMlmOemDataRsp *gpLimMlmOemDataRsp;
909#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700910
911#ifdef WLAN_FEATURE_P2P
912 tSirRemainOnChnReq *gpLimRemainOnChanReq; //hold remain on chan request in this buf
913 vos_list_t gLimMgmtFrameRegistratinQueue;
914 tANI_U32 actionFrameSessionId;
915#endif
Madan Mohan Koyyalamudi70bb4cb2012-10-18 19:31:25 -0700916 tSirBackgroundScanMode gLimBackgroundScanMode;
Madan Mohan Koyyalamudi61bc5662012-11-02 14:33:10 -0700917
918#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
919 tpPESession pSessionEntry;
920 tANI_U8 reAssocRetryAttempt;
921#endif
Madan Mohan Koyyalamudi521ff192012-11-15 17:13:08 -0800922 tLimDisassocDeauthCnfReq limDisassocDeauthCnfReq;
Jeff Johnson295189b2012-06-20 16:38:30 -0700923} tAniSirLim, *tpAniSirLim;
924
925#ifdef WLAN_FEATURE_P2P
926typedef struct sLimMgmtFrameRegistration
927{
928 vos_list_node_t node; // MUST be first element
929 tANI_U16 frameType;
930 tANI_U16 matchLen;
931 tANI_U16 sessionId;
932 tANI_U8 matchData[1];
933} tLimMgmtFrameRegistration, *tpLimMgmtFrameRegistration;
934#endif
935
936#if defined WLAN_FEATURE_VOWIFI
937typedef struct sRrmContext
938{
939 tRrmSMEContext rrmSmeContext;
940 tRrmPEContext rrmPEContext;
941}tRrmContext, *tpRrmContext;
942#endif
943
944#if defined WLAN_FEATURE_VOWIFI_11R
945typedef struct sFTContext
946{
947 tftSMEContext ftSmeContext;
948 tftPEContext ftPEContext;
949} tftContext, *tpFTContext;
950#endif
951
952#ifdef FEATURE_WLAN_INTEGRATED_SOC
953//Check if this definition can actually move here even for Volans. In that case
954//this featurization can be removed.
955/** ------------------------------------------------------------------------- *
956
957 \typedef tDriverType
958
959 \brief Indicate the driver type to the mac, and based on this do
960 appropriate initialization.
961
962 -------------------------------------------------------------------------- */
963
964typedef enum
965{
966 eDRIVER_TYPE_PRODUCTION = 0,
967 eDRIVER_TYPE_MFG = 1,
968 eDRIVER_TYPE_DVT = 2
969} tDriverType;
970
971/** ------------------------------------------------------------------------- *
972
973 \typedef tMacOpenParameters
974
975 \brief Parameters needed for Enumeration of all status codes returned by the higher level
976 interface functions.
977
978 -------------------------------------------------------------------------- */
979
980typedef struct sMacOpenParameters
981{
982 tANI_U16 maxStation;
983 tANI_U16 maxBssId;
984 tANI_U32 frameTransRequired;
985 tDriverType driverType;
986} tMacOpenParameters;
987
988typedef enum
989{
990 HAL_STOP_TYPE_SYS_RESET,
991 HAL_STOP_TYPE_SYS_DEEP_SLEEP,
992 HAL_STOP_TYPE_RF_KILL
993}tHalStopType;
994
995typedef struct sHalMacStartParameters
996{
997 // parametes for the Firmware
998 //tHalFirmwareParameters FW;
999 tDriverType driverType;
1000
1001} tHalMacStartParameters;
1002#endif
1003
1004// -------------------------------------------------------------------
1005/// MAC Sirius parameter structure
1006typedef struct sAniSirGlobal
1007
1008{
1009 tDriverType gDriverType;
1010#if defined(ANI_OS_TYPE_RTAI_LINUX)
1011 struct rtLibApp * rt;
1012#endif
1013
1014 // we should be able to save this hddHandle in here and deprecate
1015 // the pAdapter. For now, compiles are a problem because there
1016 // are dependencides on the header files that are not handling the
1017 // compiler very gracefully.
1018// tHddHandle hHdd; // Handle to the HDD.
1019 //void *hHdd;
1020 void *pAdapter; // deprecate this pAdapter pointer eventually...
1021 // all interfaces to the HDD should pass hHdd, which
1022 // is stored in this struct above.....
1023 tSirMbMsg* pResetMsg;
1024 tAniSirCfg cfg;
1025 tAniSirLim lim;
1026 //tAniSirDph dph;
1027 tAniSirPmm pmm;
1028 tAniSirSch sch;
1029 tAniSirSys sys;
1030 tAniSirUtils utils;
1031#ifdef FEATURE_WLAN_NON_INTEGRATED_SOC
1032 tAniSirHal hal;
1033 tAniSirPhy hphy;
1034#endif
1035
1036#ifndef WLAN_FTM_STUB
1037#ifdef FEATURE_WLAN_NON_INTEGRATED_SOC
1038 tPttModuleVariables ptt;
1039#endif
1040#endif
1041
1042 tAniSirTxWrapper txWrapper;
1043 // PAL/HDD handle
1044 tHddHandle hHdd;
1045
1046#ifdef ANI_DVT_DEBUG
1047 tAniSirDvt dvt;
1048#endif
1049
1050 tSmeStruct sme;
1051 tCsrScanStruct scan;
1052 tCsrRoamStruct roam;
1053
Jeff Johnsone7245742012-09-05 17:12:55 -07001054#ifdef FEATURE_OEM_DATA_SUPPORT
1055 tOemDataStruct oemData;
1056#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001057
1058#ifdef ANI_PRODUCT_TYPE_CLIENT
1059 tPmcInfo pmc;
1060 tSmeBtcInfo btc;
1061#endif
1062
1063 tCcm ccm;
1064
1065#if defined WLAN_FEATURE_VOWIFI
1066 tRrmContext rrm;
1067#endif
1068#ifdef WLAN_FEATURE_P2P
1069#ifdef WLAN_FEATURE_CONCURRENT_P2P
1070 tp2pContext p2pContext[MAX_NO_OF_P2P_SESSIONS];
1071#else
1072 tp2pContext p2pContext;
1073#endif
1074#endif
1075
1076#if defined WLAN_FEATURE_VOWIFI_11R
1077 tftContext ft;
1078#endif
1079
1080 tANI_U32 gCurrentLogSize;
1081 tANI_U32 menuCurrent;
1082 /* logDump specific */
1083 tANI_U32 dumpTablecurrentId;
1084 /* Instead of static allocation I will dyanamically allocate memory for dumpTableEntry
1085 Thinking of using linkedlist */
1086 tDumpModuleEntry *dumpTableEntry[MAX_DUMP_TABLE_ENTRY];
1087
1088} tAniSirGlobal;
1089
1090
1091
1092#endif /* _ANIGLOBAL_H */
1093