summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/mac/src/pe/lim/lim_link_monitoring_algo.c14
-rw-r--r--core/sme/src/csr/csr_api_roam.c31
2 files changed, 17 insertions, 28 deletions
diff --git a/core/mac/src/pe/lim/lim_link_monitoring_algo.c b/core/mac/src/pe/lim/lim_link_monitoring_algo.c
index b528f76eb3bd..b47b56b05afe 100644
--- a/core/mac/src/pe/lim/lim_link_monitoring_algo.c
+++ b/core/mac/src/pe/lim/lim_link_monitoring_algo.c
@@ -221,11 +221,17 @@ void lim_delete_sta_context(tpAniSirGlobal mac_ctx, tpSirMsgQ lim_msg)
switch (msg->reasonCode) {
case HAL_DEL_STA_REASON_CODE_KEEP_ALIVE:
if (LIM_IS_STA_ROLE(session_entry) && !msg->is_tdls) {
- if (session_entry->limMlmState !=
- eLIM_MLM_LINK_ESTABLISHED_STATE) {
- pe_err("Do not process in limMlmState %s(%x)",
+ if (!((session_entry->limMlmState ==
+ eLIM_MLM_LINK_ESTABLISHED_STATE) &&
+ (session_entry->limSmeState !=
+ eLIM_SME_WT_DISASSOC_STATE) &&
+ (session_entry->limSmeState !=
+ eLIM_SME_WT_DEAUTH_STATE))) {
+ pe_err("Do not process in limMlmState %s(%x) limSmeState %s(%x)",
lim_mlm_state_str(session_entry->limMlmState),
- session_entry->limMlmState);
+ session_entry->limMlmState,
+ lim_mlm_state_str(session_entry->limSmeState),
+ session_entry->limSmeState);
qdf_mem_free(msg);
return;
}
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index 5af6c7623386..3c091fb1c03e 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -11985,17 +11985,12 @@ QDF_STATUS csr_roam_lost_link(tpAniSirGlobal pMac, uint32_t sessionId,
tSirSmeDisassocInd *pDisassocIndMsg = NULL;
eCsrRoamResult result = eCSR_ROAM_RESULT_LOSTLINK;
tCsrRoamInfo roamInfo;
- bool fToRoam;
tCsrRoamSession *pSession = CSR_GET_SESSION(pMac, sessionId);
if (!pSession) {
sme_err("session: %d not found", sessionId);
return QDF_STATUS_E_FAILURE;
}
- /* Only need to roam for infra station. In this case P2P client will
- * roam as well
- */
- fToRoam = CSR_IS_INFRASTRUCTURE(&pSession->connectedProfile);
pSession->fCancelRoaming = false;
if (eWNI_SME_DISASSOC_IND == type) {
result = eCSR_ROAM_RESULT_DISASSOC_IND;
@@ -12025,9 +12020,6 @@ QDF_STATUS csr_roam_lost_link(tpAniSirGlobal pMac, uint32_t sessionId,
else if (eWNI_SME_DEAUTH_IND == type)
status = csr_send_mb_deauth_cnf_msg(pMac, pDeauthIndMsg);
- if (!QDF_IS_STATUS_SUCCESS(status))
- /* If fail to send confirmation to PE, not to trigger roaming */
- fToRoam = false;
/* prepare to tell HDD to disconnect */
qdf_mem_set(&roamInfo, sizeof(tCsrRoamInfo), 0);
roamInfo.statusCode = (tSirResultCodes) pSession->roamingStatusCode;
@@ -12048,22 +12040,6 @@ QDF_STATUS csr_roam_lost_link(tpAniSirGlobal pMac, uint32_t sessionId,
}
sme_debug("roamInfo.staId: %d", roamInfo.staId);
- /* See if we can possibly roam. If so, start the roaming process and
- * notify HDD that we are roaming. But if we cannot possibly roam, or
- * if we are unable to currently roam, then notify HDD of the lost link
- */
- if (fToRoam) {
- /* Only remove the connected BSS in infrastructure mode */
- csr_roam_remove_connected_bss_from_scan_cache(pMac,
- &pSession->
- connectedProfile);
- /* Not to do anying for lostlink with WDS */
- status = csr_roam_start_roaming(pMac, sessionId,
- (eWNI_SME_DEAUTH_IND == type) ?
- eCsrLostlinkRoamingDeauth :
- eCsrLostlinkRoamingDisassoc);
- }
-
return status;
}
@@ -18706,6 +18682,13 @@ QDF_STATUS csr_queue_sme_command(tpAniSirGlobal pMac, tSmeCmd *pCommand,
if ((pCommand->command == eSmeCommandScan)
|| (pCommand->command == eSmeCommandRemainOnChannel)) {
+ if (csr_ll_count(&pMac->sme.smeScanCmdActiveList) >=
+ pMac->scan.max_scan_count) {
+ sme_err("scan pending list count %d",
+ pMac->sme.smeScanCmdPendingList.Count);
+ csr_scan_call_callback(pMac, pCommand, eCSR_SCAN_ABORT);
+ return QDF_STATUS_E_FAILURE;
+ }
sme_debug(
"scan pending list count %d scan_id %d",
pMac->sme.smeScanCmdPendingList.Count,