diff options
| author | mukul sharma <mukul@qti.qualcomm.com> | 2015-07-31 18:34:42 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2015-08-11 13:50:42 +0530 |
| commit | c19ef22c2ca14cdc2f91cc41167424b0ca848101 (patch) | |
| tree | 16a312ebd39bc689bd3909f1341ba725375522b7 | |
| parent | 6a7ec0d45edb5a652dd244ef0079d0eac425acb5 (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.c | 40 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c | 11 |
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!")); |
