qcacld-3.0: Ignore active timeout handler in case of ROC timeout

qcacld-2.0 to qcacld-3.0 propagation

DUT sends continuous GO Negotiation Response for the request
while ROC is in progress. These frames increase timeout of
cancel ROC timer and ROC is not removed from the active timout.
This can cause ROC to be in active cmd list even after current
timeout value.

Add changes to return from active timeout handler in case of ROC.

Change-Id: I58577b5d2addf7614d8ee458df0ce4632dafa7c0
CRs-Fixed: 990808
This commit is contained in:
Kapil Gupta
2016-08-09 16:41:24 +05:30
committed by qcabuildsw
parent a7852cbd2f
commit 63ddab2c4b

View File

@@ -11648,6 +11648,8 @@ void active_list_cmd_timeout_handle(void *userData)
{
tHalHandle hal = (tHalHandle)userData;
tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
tListElem *entry;
tSmeCmd *temp_cmd = NULL;
if (NULL == mac_ctx) {
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
@@ -11673,6 +11675,14 @@ void active_list_cmd_timeout_handle(void *userData)
else
qdf_trace_dump_all(mac_ctx, 0, 0, 500, 0);
entry = csr_ll_peek_head(&mac_ctx->sme.smeCmdActiveList,
LL_ACCESS_LOCK);
if (entry)
temp_cmd = GET_BASE_ADDR(entry, tSmeCmd, Link);
/* Ignore if ROC took more than 120 sec */
if (temp_cmd && (eSmeCommandRemainOnChannel == temp_cmd->command))
return;
if (mac_ctx->sme.enableSelfRecovery) {
sme_save_active_cmd_stats(hal);
cds_trigger_recovery();