qcacld-3.0: Add debug code to rootcause command timeout issue.

qcacld-2.0 to qcacld-3.0 propagation

when EXIT_BMPS is pending in activeList, it causes crash
with excess logging for RoamPending list. In this scenario
gTraceTbl has lost SME details due to other MTRACE commands.
Because of which, the issue is not rootcaused.

Add below changes to rootcause if the issue appears again:
1. print only first 5 commands from roamPendingList
2. Bug_on if the commandlist is full
3. Add MTRACE for PMC commands

CRs-Fixed: 833261
Change-Id: Id5bb399c4a8c8e84ddfa121a66881e3ecb901b05
This commit is contained in:
DARAM SUDHA
2015-05-26 19:26:16 +05:30
committed by Prakash Dhavali
parent b1e0e4b2c7
commit f6c3f9705e

View File

@@ -546,29 +546,37 @@ tSmeCmd *sme_get_command_buffer(tpAniSirGlobal pMac)
csr_ll_next(&pMac->sme.smeCmdPendingList, pEntry, csr_ll_next(&pMac->sme.smeCmdPendingList, pEntry,
LL_ACCESS_NOLOCK); LL_ACCESS_NOLOCK);
} }
/* Increment static variable so that it prints
* pending command only once
*/
sme_command_queue_full++;
csr_ll_unlock(&pMac->sme.smeCmdPendingList); csr_ll_unlock(&pMac->sme.smeCmdPendingList);
idx = 1;
/* There may be some more command in CSR's own pending queue */ /* There may be some more command in CSR's own pending queue */
csr_ll_lock(&pMac->roam.roamCmdPendingList); csr_ll_lock(&pMac->roam.roamCmdPendingList);
pEntry = pEntry =
csr_ll_peek_head(&pMac->roam.roamCmdPendingList, csr_ll_peek_head(&pMac->roam.roamCmdPendingList,
LL_ACCESS_NOLOCK); LL_ACCESS_NOLOCK);
while (pEntry) { while (pEntry && !sme_command_queue_full) {
pTempCmd = GET_BASE_ADDR(pEntry, tSmeCmd, Link); pTempCmd = GET_BASE_ADDR(pEntry, tSmeCmd, Link);
sms_log(pMac, LOGE, /* Print only 1st five commands from CSR pending queue */
"Out of command buffer.... CSR pending command #%d (0x%X)", if (idx <= 5)
idx++, pTempCmd->command); sms_log(pMac, LOGE,
"Out of command buffer.... "
"CSR roamCmdPendingList command #%d (0x%X)",
idx, pTempCmd->command);
idx++;
dump_csr_command_info(pMac, pTempCmd); dump_csr_command_info(pMac, pTempCmd);
pEntry = pEntry =
csr_ll_next(&pMac->roam.roamCmdPendingList, pEntry, csr_ll_next(&pMac->roam.roamCmdPendingList, pEntry,
LL_ACCESS_NOLOCK); LL_ACCESS_NOLOCK);
} }
/* Increment static variable so that it prints
* pending command only once
*/
sme_command_queue_full++;
csr_ll_unlock(&pMac->roam.roamCmdPendingList); csr_ll_unlock(&pMac->roam.roamCmdPendingList);
/* panic with out-of-command */
CDF_BUG(0);
} }
/* memset to zero */ /* memset to zero */