summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormukul sharma <mukul@qti.qualcomm.com>2015-07-31 18:34:42 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-08-11 13:50:42 +0530
commitc19ef22c2ca14cdc2f91cc41167424b0ca848101 (patch)
tree16a312ebd39bc689bd3909f1341ba725375522b7
parent6a7ec0d45edb5a652dd244ef0079d0eac425acb5 (diff)
qcacld-2.0: Avoid beacon/probe rsp while waiting for set link rsp
In join suspend link callback, lim is setting mlm state to WT_JOIN_BEACON_STATE and sending set link request to fwr. But before set link rsp receive, host is receiving beacon / probe rsp. Hence lim is announcing join success and moving to different mlm state. When Set link rsp comes it will not be handled, Due to this vdev start will not be send to firmware. As part of this fix mlm state will be moved to WT_JOIN_BEACON_STATE after receiving set link response in host. Change-Id: Icb325b4c6967644df5c5089010663a5d159804e6 CRs-Fixed: 880797
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c40
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c11
2 files changed, 26 insertions, 25 deletions
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
index f48889ee3ffb..7dee298a7118 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
@@ -2075,26 +2075,24 @@ void lim_post_join_set_link_state_callback(tpAniSirGlobal mac,
goto failure;
}
- if (session_entry->limMlmState == eLIM_MLM_WT_JOIN_BEACON_STATE) {
- chan_num = session_entry->currentOperChannel;
- sec_chan_offset = session_entry->htSecondaryChannelOffset;
- /*
- * store the channel switch sessionEntry in the lim
- * global variable
- */
- session_entry->channelChangeReasonCode =
+ chan_num = session_entry->currentOperChannel;
+ sec_chan_offset = session_entry->htSecondaryChannelOffset;
+ /*
+ * store the channel switch sessionEntry in the lim
+ * global variable
+ */
+ session_entry->channelChangeReasonCode =
LIM_SWITCH_CHANNEL_JOIN;
#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
- session_entry->pLimMlmReassocRetryReq = NULL;
+ session_entry->pLimMlmReassocRetryReq = NULL;
#endif
- limLog(mac, LOG1, FL("[limProcessMlmJoinReq]: suspend link on sessionid: %d setting channel to: %d with secChanOffset:%d and maxtxPower: %d"),
- session_entry->peSessionId, chan_num,
- sec_chan_offset,
- session_entry->maxTxPower);
- limSetChannel(mac, chan_num, sec_chan_offset,
- session_entry->maxTxPower,
- session_entry->peSessionId);
- }
+ limLog(mac, LOG1, FL("[limProcessMlmJoinReq]: suspend link on sessionid: %d setting channel to: %d with secChanOffset:%d and maxtxPower: %d"),
+ session_entry->peSessionId, chan_num,
+ sec_chan_offset,
+ session_entry->maxTxPower);
+ limSetChannel(mac, chan_num, sec_chan_offset,
+ session_entry->maxTxPower,
+ session_entry->peSessionId);
return;
failure:
@@ -2142,14 +2140,6 @@ limProcessMlmPostJoinSuspendLink(tpAniSirGlobal pMac, eHalStatus status, tANI_U3
limLog(pMac, LOGE, FL("Sessionid %d Suspend link(NOTIFY_BSS) failed. "
"still proceeding with join"),psessionEntry->peSessionId);
}
- psessionEntry->limPrevMlmState = psessionEntry->limMlmState;
- psessionEntry->limMlmState = eLIM_MLM_WT_JOIN_BEACON_STATE;
- MTRACE(macTrace(pMac, TRACE_CODE_MLM_STATE, psessionEntry->peSessionId, psessionEntry->limMlmState));
-
- limLog(pMac, LOG1, FL("Sessionid %d prev lim state %d new lim state %d "
- "systemrole = %d"), psessionEntry->peSessionId,
- psessionEntry->limPrevMlmState,
- psessionEntry->limMlmState, GET_LIM_SYSTEM_ROLE(psessionEntry));
limDeactivateAndChangeTimer(pMac, eLIM_JOIN_FAIL_TIMER);
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
index 862184ffa060..b124fca023b7 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
@@ -3872,6 +3872,17 @@ static void limProcessSwitchChannelJoinReq(tpAniSirGlobal pMac, tpPESession pses
}
}
+ psessionEntry->limPrevMlmState = psessionEntry->limMlmState;
+ psessionEntry->limMlmState = eLIM_MLM_WT_JOIN_BEACON_STATE;
+ MTRACE(macTrace(pMac, TRACE_CODE_MLM_STATE,
+ psessionEntry->peSessionId, psessionEntry->limMlmState));
+
+ limLog(pMac, LOG1,
+ FL("Sessionid %d prev lim state %d new lim state %d systemrole %d"),
+ psessionEntry->peSessionId,
+ psessionEntry->limPrevMlmState,
+ psessionEntry->limMlmState, GET_LIM_SYSTEM_ROLE(psessionEntry));
+
/* Update the lim global gLimTriggerBackgroundScanDuringQuietBss */
if(wlan_cfgGetInt(pMac, WNI_CFG_TRIG_STA_BK_SCAN, &val) != eSIR_SUCCESS)
limLog(pMac, LOGP, FL("failed to get WNI_CFG_TRIG_STA_BK_SCAN cfg value!"));