Limit the deferred message queue full logs to minimum
In scan state when the deferred message queue becomes full,
related logs floods which lead to crash.Limit the logs.
Change-Id: I1dcdc6c9ddcdd89ac599b0274c3db93356402cda
CRs-fixed: 462620,459393
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index 68f0d4b..a7445f1 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -1006,6 +1006,7 @@
palZeroMemory(pMac->hHdd, pMac->pmm.gPmmTim.pTim, sizeof(tANI_U8)*pMac->lim.maxStation);
pMac->lim.mgmtFrameSessionId = 0xff;
+ pMac->lim.deferredMsgCnt = 0;
if( !VOS_IS_STATUS_SUCCESS( vos_lock_init( &pMac->lim.lkPeGlobalLock ) ) )
{
diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
index 8d77500..44cee2d 100644
--- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
+++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
@@ -1028,9 +1028,12 @@
// Defer processsing this message
if (limDeferMsg(pMac, limMsg) != TX_SUCCESS)
{
+ if(!(pMac->lim.deferredMsgCnt & 0xF))
+ {
PELOGE(limLog(pMac, LOGE, FL("Unable to Defer message(0x%X) limSmeState %d (prev sme state %d) sysRole %d mlm state %d (prev mlm state %d)\n"),
limMsg->type, pMac->lim.gLimSmeState, pMac->lim.gLimPrevSmeState,
pMac->lim.gLimSystemRole, pMac->lim.gLimMlmState, pMac->lim.gLimPrevMlmState);)
+ }
limLogSessionStates(pMac);
limPrintMsgName(pMac, LOGE, limMsg->type);
}
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index 250fbc8..4030cb7 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -1327,7 +1327,14 @@
**/
if (pMac->lim.gLimDeferredMsgQ.size >= MAX_DEFERRED_QUEUE_LEN)
{
- PELOGE(limLog(pMac, LOGE, FL("Deferred Message Queue is full. Msg: %d\n"), limMsg->type);)
+ if(!(pMac->lim.deferredMsgCnt & 0xF))
+ {
+ PELOGE(limLog(pMac, LOGE, FL("Deferred Message Queue is full. Msg:%d Messages Failed:%d\n"), limMsg->type, ++pMac->lim.deferredMsgCnt);)
+ }
+ else
+ {
+ pMac->lim.deferredMsgCnt++;
+ }
return TX_QUEUE_FULL;
}
@@ -1372,6 +1379,12 @@
++pMac->lim.gLimDeferredMsgQ.size;
+ /* reset the count here since we are able to defer the message */
+ if(pMac->lim.deferredMsgCnt != 0)
+ {
+ pMac->lim.deferredMsgCnt = 0;
+ }
+
/*
** if the write pointer hits the end of the queue, rewind it
**/