From b834021a5ec0ce6edff736ea44a42262e0431194 Mon Sep 17 00:00:00 2001 From: Hanumantha Reddy Pothula Date: Tue, 12 Jan 2016 11:16:06 +0530 Subject: [PATCH] qcacld-3.0: Process SIR_LIM_ADDTS_RSP_TIMEOUT command in defer state qcacld-2.0 to qcacld-3.0 propagation If ADDTS response timer is fired because of not receiving ADDTS RSP within time then this timer handler posts SIR_LIM_ADDTS_RSP_TIMEOUT command to LIM. But if deferring is enabled(say due to processing any action frame) then SIR_LIM_ADDTS_RSP_TIMEOUT command will be added to defer queue and as gLimAddtsSent is set to TRUE, including this command all other defer commands will never be processed. This may lead to active command timeout. Hence process SIR_LIM_ADDTS_RSP_TIMEOUT command in defer state. Change-Id: I48f09a7fd560702ac7701e0a1a41c77ad94626d4 CRs-Fixed: 919490 --- core/mac/src/pe/lim/lim_process_message_queue.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/mac/src/pe/lim/lim_process_message_queue.c b/core/mac/src/pe/lim/lim_process_message_queue.c index d6e314e7d962..aa73bca79dfa 100644 --- a/core/mac/src/pe/lim/lim_process_message_queue.c +++ b/core/mac/src/pe/lim/lim_process_message_queue.c @@ -288,6 +288,19 @@ uint8_t static def_msg_decision(tpAniSirGlobal pMac, tpSirMsgQ limMsg) (limMsg->type != WMA_START_OEM_DATA_RSP) && #endif (limMsg->type != WMA_ADD_TS_RSP) && + /* + * LIM won't process any defer queue commands if gLimAddtsSent is + * set to TRUE. gLimAddtsSent will be set TRUE to while sending + * ADDTS REQ. Say, when deferring is enabled, if + * SIR_LIM_ADDTS_RSP_TIMEOUT is posted (because of not receiving ADDTS + * RSP) then this command will be added to defer queue and as + * gLimAddtsSent is set TRUE LIM will never process any commands from + * defer queue, including SIR_LIM_ADDTS_RSP_TIMEOUT. Hence allowing + * SIR_LIM_ADDTS_RSP_TIMEOUT command to be processed with deferring + * enabled, so that this will be processed immediately and sets + * gLimAddtsSent to FALSE. + */ + (limMsg->type != SIR_LIM_ADDTS_RSP_TIMEOUT) && /* Allow processing of RX frames while awaiting reception * of ADD TS response over the air. This logic particularly * handles the case when host sends ADD BA request to FW