prima: WLAN Driver Release 3.2.0.9
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index 7b4fac0..aac103b 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -235,7 +235,7 @@
pMac->lim.gLimPrevSmeState = eLIM_SME_OFFLINE_STATE;
/// MLM State visible across all Sirius modules
- MTRACE(macTrace(pMac, TRACE_CODE_MLM_STATE, 0, eLIM_MLM_IDLE_STATE));
+ MTRACE(macTrace(pMac, TRACE_CODE_MLM_STATE, NO_SESSION, eLIM_MLM_IDLE_STATE));
pMac->lim.gLimMlmState = eLIM_MLM_IDLE_STATE;
/// Previous MLM State
@@ -248,15 +248,15 @@
#ifdef FEATURE_WLAN_INTEGRATED_SOC
/**
- * Initialize state to eLIM_MLM_OFFLINE_STATE
+ * Initialize state to eLIM_SME_OFFLINE_STATE
*/
- pMac->lim.gLimSmeState = eLIM_MLM_OFFLINE_STATE;
+ pMac->lim.gLimSmeState = eLIM_SME_OFFLINE_STATE;
#else
/**
* Initialize state to suspended state and wait for
* HAL to send LIM_RESUME_ACTIVITY_NTF message.
*/
- MTRACE(macTrace(pMac, TRACE_CODE_SME_STATE, 0, pMac->lim.gLimSmeState));
+ MTRACE(macTrace(pMac, TRACE_CODE_SME_STATE, NO_SESSION, pMac->lim.gLimSmeState));
pMac->lim.gLimSmeState = eLIM_SME_SUSPEND_STATE;
#endif /* FEATURE_WLAN_INTEGRATED_SOC */
@@ -275,7 +275,6 @@
pMac->lim.gLimPhyMode = 0;
pMac->lim.scanStartTime = 0; // used to measure scan time
- palZeroMemory(pMac->hHdd, pMac->lim.gLimBssid, sizeof(pMac->lim.gLimBssid));
palZeroMemory(pMac->hHdd, pMac->lim.gLimMyMacAddr, sizeof(pMac->lim.gLimMyMacAddr));
pMac->lim.ackPolicy = 0;
@@ -325,20 +324,11 @@
palZeroMemory(pMac->hHdd, &pMac->lim.gLimAlternateRadio, sizeof(tSirAlternateRadioInfo));
SET_LIM_PROCESS_DEFD_MESGS(pMac, true);
+#if 0
// 11h Spectrum Management Related Flag
- //pMac->lim.gLim11hEnable = 0;
- pMac->lim.gLimSpecMgmt.dot11hChanSwState = eLIM_11H_CHANSW_INIT;
LIM_SET_RADAR_DETECTED(pMac, eANI_BOOLEAN_FALSE);
pMac->sys.gSysEnableLearnMode = eANI_BOOLEAN_TRUE;
-
- // 11h Quiet Element Related Flag
- pMac->lim.gLimSpecMgmt.quietState = eLIM_QUIET_INIT;
- // A count-down value, used on the AP, to send out the
- // Quiet BSS IE in that many Beacon's
- pMac->lim.gLimSpecMgmt.quietCount = 0;
- pMac->lim.gLimSpecMgmt.fQuietEnabled = eANI_BOOLEAN_FALSE;
- pMac->lim.gLimSpecMgmt.fRadarIntrConfigured = eANI_BOOLEAN_FALSE;
-
+#endif
// WMM Related Flag
pMac->lim.gUapsdEnable = 0;
pMac->lim.gUapsdPerAcBitmask = 0;
@@ -376,7 +366,7 @@
// Place holder for current authentication request
// being handled
pMac->lim.gpLimMlmAuthReq = NULL;
- pMac->lim.gpLimMlmJoinReq = NULL;
+ //pMac->lim.gpLimMlmJoinReq = NULL;
/// MAC level Pre-authentication related globals
pMac->lim.gLimPreAuthChannelNumber = 0;
@@ -399,32 +389,20 @@
palZeroMemory(pMac->hHdd, pMac->lim.protStaOverlapCache, sizeof(tCacheParams) * LIM_PROT_STA_OVERLAP_CACHE_SIZE);
palZeroMemory(pMac->hHdd, pMac->lim.protStaCache, sizeof(tCacheParams) * LIM_PROT_STA_CACHE_SIZE);
- // Initialize Assoc/ReAssoc Response Data/Frame
- //pMac->lim.gLimAssocResponseData = NULL;
-
}
static void __limInitTitanVars(tpAniSirGlobal pMac)
{
- pMac->lim.gCbMode = WNI_CFG_CHANNEL_BONDING_MODE_DISABLE;
- SET_CB_STATE_DISABLE( pMac->lim.gCbState );
+#if 0
palZeroMemory(pMac->hHdd, &pMac->lim.gLimChannelSwitch, sizeof(tLimChannelSwitchInfo));
-
pMac->lim.gLimChannelSwitch.state = eLIM_CHANNEL_SWITCH_IDLE;
- pMac->lim.gLimChannelSwitch.secondarySubBand = eANI_CB_SECONDARY_NONE;
-
+ pMac->lim.gLimChannelSwitch.secondarySubBand = PHY_SINGLE_CHANNEL_CENTERED;
+#endif
// Debug workaround for BEACON's
// State change triggered by "dump 222"
pMac->lim.gLimScanOverride = 1;
pMac->lim.gLimScanOverrideSaved = eSIR_ACTIVE_SCAN;
-
-
- // Caches the CB State as desired by SME
- SET_CB_STATE_DISABLE( pMac->lim.gCbStateProtected );
-
- // TODO - This needs to be read off of a CFG variable
-
pMac->lim.gLimTitanStaCount = 0;
pMac->lim.gLimBlockNonTitanSta = 0;
}
@@ -432,9 +410,7 @@
static void __limInitHTVars(tpAniSirGlobal pMac)
{
pMac->lim.htCapabilityPresentInBeacon = 0;
- pMac->lim.htCapability = 0;
pMac->lim.gHTGreenfield = 0;
- pMac->lim.gHTSupportedChannelWidthSet = 0;
pMac->lim.gHTShortGI40Mhz = 0;
pMac->lim.gHTShortGI20Mhz = 0;
pMac->lim.gHTMaxAmsduLength = 0;
@@ -448,8 +424,6 @@
pMac->lim.gHTMaxRxAMpduFactor = 0;
pMac->lim.gHTServiceIntervalGranularity = 0;
pMac->lim.gHTControlledAccessOnly = 0;
- pMac->lim.gHTRecommendedTxWidthSet = 0;
- pMac->lim.gHTSecondaryChannelOffset = eHT_SECONDARY_CHANNEL_OFFSET_NONE;
pMac->lim.gHTOperMode = eSIR_HT_OP_MODE_PURE;
pMac->lim.gHTPCOActive = 0;
@@ -463,7 +437,7 @@
#if defined( FEATURE_WLAN_INTEGRATED_SOC )
static tSirRetStatus __limInitConfig( tpAniSirGlobal pMac )
{
- tANI_U32 val1, val2, val3, len;
+ tANI_U32 val1, val2, val3;
tANI_U16 val16;
tANI_U8 val8;
tSirMacHTCapabilityInfo *pHTCapabilityInfo;
@@ -472,14 +446,10 @@
tSirMacHTParametersInfo *pAmpduParamInfo;
/* Read all the CFGs here that were updated before peStart is called */
+ /* All these CFG READS/WRITES are only allowed in init, at start when there is no session
+ * and they will be used throughout when there is no session
+ */
- /* WNI_CFG_CHANNEL_BONDING_MODE */
-
- handleCBCFGChange( pMac, WNI_CFG_CHANNEL_BONDING_MODE );
-
- //for Secondary channel, change setupCBMode function OR the caller of that
- //function during Join (STA) or Start BSS(AP/IBSS) Now update the HT Capability
- //CFG based on Channel Bonding CFG
if(wlan_cfgGetInt(pMac, WNI_CFG_HT_CAP_INFO, &val1) != eSIR_SUCCESS)
{
PELOGE(limLog(pMac, LOGE, FL("could not retrieve HT Cap CFG\n"));)
@@ -515,7 +485,6 @@
pHTInfoField1 = ( tSirMacHTInfoField1* ) &val8;
pHTInfoField1->recommendedTxWidthSet =
(tANI_U8)pHTCapabilityInfo->supportedChannelWidthSet;
- pMac->lim.gHTRecommendedTxWidthSet = pHTInfoField1->recommendedTxWidthSet;
if(cfgSetInt(pMac, WNI_CFG_HT_INFO_FIELD1, *(tANI_U8*)pHTInfoField1)
!= eSIR_SUCCESS)
{
@@ -602,16 +571,6 @@
return eSIR_FAILURE;
}
- /* WNI_CFG_BSSID - this one is not updated in limHandleCFGparamUpdate do we
- want to update this? */
- len = 6;
- if (wlan_cfgGetStr(pMac, WNI_CFG_BSSID, pMac->lim.gLimBssid, &len) !=
- eSIR_SUCCESS)
- {
- limLog(pMac, LOGP, FL("cfg get bssid failed\n"));
- return eSIR_FAILURE;
- }
-
/* WNI_CFG_MAX_PS_POLL */
/* Allocate and fill in power save configuration. */
@@ -649,8 +608,7 @@
/* This was initially done after resume notification from HAL. Now, DAL is
started before PE so this can be done here */
- handleCBCFGChange( pMac, ANI_IGNORE_CFG_ID );
- handleHTCapabilityandHTInfo(pMac);
+ handleHTCapabilityandHTInfo(pMac, NULL);
return eSIR_SUCCESS;
}
@@ -671,7 +629,7 @@
{
pMac->lim.gLimSmeState = eLIM_SME_IDLE_STATE;
- MTRACE(macTrace(pMac, TRACE_CODE_SME_STATE, 0, pMac->lim.gLimSmeState));
+ MTRACE(macTrace(pMac, TRACE_CODE_SME_STATE, NO_SESSION, pMac->lim.gLimSmeState));
// By default do not return after first scan match
pMac->lim.gLimReturnAfterFirstMatch = 0;
@@ -910,11 +868,13 @@
pMac->lim.gpLimMlmAuthReq = NULL;
}
+#if 0
if (pMac->lim.gpLimMlmJoinReq != NULL)
{
palFreeMemory(pMac->hHdd, pMac->lim.gpLimMlmJoinReq);
pMac->lim.gpLimMlmJoinReq = NULL;
}
+#endif
#if 0
if (pMac->lim.gpLimReassocReq != NULL)
@@ -1074,6 +1034,9 @@
}
#endif
+#ifdef WLAN_FEATURE_P2P
+ pMac->lim.actionFrameSessionId = 0xff;
+#endif
return eSIR_SUCCESS;
}
@@ -1091,13 +1054,7 @@
if (ANI_DRIVER_TYPE(pMac) == eDRIVER_TYPE_MFG)
return eSIR_SUCCESS;
-
- palFreeMemory(pMac->hHdd, pMac->lim.limTimers.gpLimCnfWaitTimer);
- pMac->lim.limTimers.gpLimCnfWaitTimer = NULL;
- palFreeMemory(pMac->hHdd, pMac->lim.gpLimAIDpool);
- pMac->lim.gpLimAIDpool = NULL;
-
-
+
for(i =0; i < pMac->lim.maxBssId; i++)
{
if(pMac->lim.gpSession[i].valid == TRUE)
@@ -1105,7 +1062,11 @@
peDeleteSession(pMac,&pMac->lim.gpSession[i]);
}
}
-
+ palFreeMemory(pMac->hHdd, pMac->lim.limTimers.gpLimCnfWaitTimer);
+ pMac->lim.limTimers.gpLimCnfWaitTimer = NULL;
+ palFreeMemory(pMac->hHdd, pMac->lim.gpLimAIDpool);
+ pMac->lim.gpLimAIDpool = NULL;
+
palFreeMemory(pMac->hHdd, pMac->lim.gpSession);
pMac->lim.gpSession = NULL;
/*
@@ -1436,9 +1397,9 @@
{
PELOG1(limLog( pMac, LOG1,
FL ( "RxBd=%p mHdr=%p Type: %d Subtype: %d Sizes:FC%d Mgmt%d\n"),
- pRxBd, mHdr, mHdr->fc.type, mHdr->fc.subType, sizeof(tSirMacFrameCtl), sizeof(tSirMacMgmtHdr) );)
+ pRxPacketInfo, mHdr, mHdr->fc.type, mHdr->fc.subType, sizeof(tSirMacFrameCtl), sizeof(tSirMacMgmtHdr) );)
- MTRACE(macTrace(pMac, TRACE_CODE_RX_MGMT, 0,
+ MTRACE(macTrace(pMac, TRACE_CODE_RX_MGMT, NO_SESSION,
LIM_TRACE_MAKE_RXMGMT(mHdr->fc.subType,
(tANI_U16) (((tANI_U16) (mHdr->seqControl.seqNumHi << 4)) | mHdr->seqControl.seqNumLo)));)
}
@@ -1496,49 +1457,6 @@
/**
- * limCheckStateForLearnMode()
- *
- *FUNCTION:
- * This function is called by SCH to verify if LIM is in a state
- * to put system into Learn mode
- *
- *LOGIC:
- * NA
- *
- *ASSUMPTIONS:
- * NA
- *
- *NOTE:
- *
- * @param pMac - Pointer to Global MAC structure
- * @return eSIR_SUCCESS - LIM is in a state to put system
- * into Learn Mode
- * eSIR_FAILURE - LIM is NOT in a state to put system
- * into Learn Mode
- */
-
-tSirRetStatus
-limCheckStateForLearnMode(tpAniSirGlobal pMac)
-{
- switch (pMac->lim.gLimSmeState)
- {
- case eLIM_SME_OFFLINE_STATE:
- case eLIM_SME_IDLE_STATE:
- case eLIM_SME_JOIN_FAILURE_STATE:
- case eLIM_SME_NORMAL_STATE:
- case eLIM_SME_LINK_EST_STATE:
- // LIM is in a state to put system into Learn mode
- return eSIR_SUCCESS;
-
- default:
- // LIM is NOT in a state to put system into Learn mode
- return eSIR_FAILURE;
- }
-} /*** end limCheckStateForLearnMode() ***/
-
-
-
-/**
* limIsSystemInScanState()
*
*FUNCTION:
@@ -1738,7 +1656,7 @@
pMac->lim.gLimMeasParams.shortDurationCount++;
limDeactivateAndChangeTimer(pMac, eLIM_LEARN_DURATION_TIMER);
- MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, 0, eLIM_LEARN_DURATION_TIMER));
+ MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, NO_SESSION, eLIM_LEARN_DURATION_TIMER));
if (tx_timer_activate(&pMac->lim.gLimMeasParams.learnDurationTimer)
!= TX_SUCCESS)
{
@@ -1786,7 +1704,7 @@
if (pMac->lim.gLimSpecMgmt.fQuietEnabled)
{
- MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, 0, eLIM_QUIET_BSS_TIMER));
+ MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, NO_SESSION, eLIM_QUIET_BSS_TIMER));
#ifdef GEN6_TODO
/* revisit this piece of code to assign the appropriate sessionId below
* priority - HIGH
@@ -1805,7 +1723,7 @@
else
{
limDeactivateAndChangeTimer(pMac, eLIM_LEARN_INTERVAL_TIMER);
- MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, 0, eLIM_LEARN_INTERVAL_TIMER));
+ MTRACE(macTrace(pMac, TRACE_CODE_TIMER_ACTIVATE, NO_SESSION, eLIM_LEARN_INTERVAL_TIMER));
#ifdef GEN6_TODO
/* revisit this piece of code to assign the appropriate sessionId below
*/
@@ -1960,7 +1878,7 @@
mmhMsg.type = eWNI_SME_WDS_INFO_IND;
mmhMsg.bodyptr = pSirSmeWdsInfoInd;
mmhMsg.bodyval = 0;
- MTRACE(macTraceMsgTx(pMac, 0, mmhMsg.type));
+ MTRACE(macTraceMsgTx(pMac, NO_SESSION, mmhMsg.type));
limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT);
pMac->lim.gLimNumWdsInfoInd++;
}
@@ -2227,12 +2145,27 @@
{
tSirSmeApNewCaps apNewCaps;
- tANI_U32 cShortSlot, nShortSlot;
-
- apNewCaps.capabilityInfo = limGetU16((tANI_U8 *) &pBeacon->capabilityInfo);
+ tANI_U32 nShortSlot;
+ tANI_U32 val = 0;
+ tANI_U32 phyMode;
- if (wlan_cfgGetInt(pMac, WNI_CFG_SHORT_SLOT_TIME, &cShortSlot) != eSIR_SUCCESS)
- limLog(pMac, LOGP, FL("unable to get short slot time\n"));
+ // Check Admin mode first. If it is disabled just return
+ if (wlan_cfgGetInt(pMac, WNI_CFG_11G_SHORT_SLOT_TIME_ENABLED, &val)
+ != eSIR_SUCCESS)
+ {
+ limLog(pMac, LOGP,
+ FL("cfg get WNI_CFG_11G_SHORT_SLOT_TIME failed\n"));
+ return eSIR_FAILURE;
+ }
+ if (val == false)
+ return eSIR_SUCCESS;
+
+ // Check for 11a mode or 11b mode. In both cases return since slot time is constant and cannot/should not change in beacon
+ limGetPhyMode(pMac, &phyMode, psessionEntry);
+ if ((phyMode == WNI_CFG_PHY_MODE_11A) || (phyMode == WNI_CFG_PHY_MODE_11B))
+ return eSIR_SUCCESS;
+
+ apNewCaps.capabilityInfo = limGetU16((tANI_U8 *) &pBeacon->capabilityInfo);
// Earlier implementation: determine the appropriate short slot mode based on AP advertised modes
// when erp is present, apply short slot always unless, prot=on && shortSlot=off
@@ -2255,16 +2188,14 @@
*/
nShortSlot = SIR_MAC_GET_SHORT_SLOT_TIME(apNewCaps.capabilityInfo);
- if (nShortSlot != cShortSlot)
+ if (nShortSlot != psessionEntry->shortSlotTimeSupported)
{
// Short slot time capability of AP has changed. Adopt to it.
PELOG1(limLog(pMac, LOG1, FL("Shortslot capability of AP changed: %d\n"), nShortSlot);)
((tpSirMacCapabilityInfo)&psessionEntry->limCurrentBssCaps)->shortSlotTime = (tANI_U16)nShortSlot;
+ psessionEntry->shortSlotTimeSupported = nShortSlot;
pBeaconParams->fShortSlotTime = (tANI_U8) nShortSlot;
pBeaconParams->paramChangeBitmap |= PARAM_SHORT_SLOT_TIME_CHANGED;
-
- if (cfgSetInt(pMac, WNI_CFG_SHORT_SLOT_TIME, nShortSlot) != eSIR_SUCCESS)
- PELOGE(limLog(pMac, LOGE, FL("could not update short slot time at CFG\n"));)
}
return eSIR_SUCCESS;
}
@@ -2447,7 +2378,7 @@
msg.type = WDA_INIT_RADAR_IND;
msg.bodyptr = NULL;
msg.bodyval = 0;
- MTRACE(macTraceMsgTx(pMac, 0, msg.type));
+ MTRACE(macTraceMsgTx(pMac, NO_SESSION, msg.type));
status = wdaPostCtrlMsg(pMac, &msg);
if (status != eHAL_STATUS_SUCCESS)
{