summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/cds/src/cds_concurrency.c8
-rw-r--r--core/sme/src/common/sme_api.c2
-rw-r--r--core/sme/src/csr/csr_api_roam.c4
-rw-r--r--core/sme/src/csr/csr_api_scan.c41
4 files changed, 38 insertions, 17 deletions
diff --git a/core/cds/src/cds_concurrency.c b/core/cds/src/cds_concurrency.c
index cd79c48c3280..6c75b584c349 100644
--- a/core/cds/src/cds_concurrency.c
+++ b/core/cds/src/cds_concurrency.c
@@ -6934,6 +6934,14 @@ static bool cds_sta_p2pgo_concur_handle(hdd_adapter_t *sta_adapter,
sta_adapter->sessionId);
if (true != ret) {
cds_err("sme_store_joinreq_param failed");
+ status = sme_scan_result_purge(
+ WLAN_HDD_GET_HAL_CTX(
+ sta_adapter),
+ scan_cache);
+ if (QDF_STATUS_SUCCESS != status) {
+ cds_err("sme_scan_result_purge failed");
+ /* Not returning */
+ }
/* Not returning */
}
cds_change_sta_conn_pending_status(true);
diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c
index 5f99b8625fa7..f59eb879c513 100644
--- a/core/sme/src/common/sme_api.c
+++ b/core/sme/src/common/sme_api.c
@@ -17413,6 +17413,8 @@ free_scan_flter:
csr_free_scan_filter(mac_ctx, scan_filter);
qdf_mem_free(scan_filter);
}
+ if (result_handle)
+ csr_scan_result_purge(mac_ctx, result_handle);
return QDF_STATUS_SUCCESS;
}
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index cd7e0e8057b0..40cf313b1e1b 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -5310,7 +5310,7 @@ static void csr_roam_join_handle_profile(tpAniSirGlobal mac_ctx,
} else {
cmd->u.roamCmd.roamProfile.uapsd_mask = 0;
}
- if (ies_local && !result->pvIes)
+ if (ies_local && !scan_result->Result.pvIes)
qdf_mem_free(ies_local);
roam_info_ptr->pProfile = profile;
session->bRefAssocStartCnt++;
@@ -9395,6 +9395,8 @@ void csr_roam_roaming_state_disassoc_rsp_processor(tpAniSirGlobal pMac,
csr_free_scan_filter(pMac, pScanFilter);
qdf_mem_free(pScanFilter);
return;
+ } else {
+ csr_scan_result_purge(pMac, hBSSList);
}
POST_ROAM_FAILURE:
diff --git a/core/sme/src/csr/csr_api_scan.c b/core/sme/src/csr/csr_api_scan.c
index b38c6487ad82..57f0645107ed 100644
--- a/core/sme/src/csr/csr_api_scan.c
+++ b/core/sme/src/csr/csr_api_scan.c
@@ -1728,10 +1728,14 @@ csr_parser_scan_result_for_5ghz_preference(tpAniSirGlobal pMac,
pIes = (tDot11fBeaconIEs *)(pBssDesc->Result.pvIes);
/* At this time, Result.pvIes may be NULL */
- status = csr_get_parsed_bss_description_ies(pMac,
- &pBssDesc->Result.BssDescriptor, &pIes);
- if (!pIes && (!QDF_IS_STATUS_SUCCESS(status)))
- continue;
+ if (NULL == pIes) {
+ status = csr_get_parsed_bss_description_ies(
+ pMac,
+ &pBssDesc->Result.BssDescriptor,
+ &pIes);
+ if (!pIes && (!QDF_IS_STATUS_SUCCESS(status)))
+ continue;
+ }
sms_log(pMac, LOG1, FL("SSID Matched"));
if (pFilter->bOSENAssociation) {
@@ -2936,12 +2940,14 @@ csr_remove_from_tmp_list(tpAniSirGlobal mac_ctx,
/* At this time, bss_dscp->Result.pvIes may be NULL */
local_ie = (tDot11fBeaconIEs *)(bss_dscp->Result.pvIes);
- status = csr_get_parsed_bss_description_ies(mac_ctx,
+ if (local_ie == NULL) {
+ status = csr_get_parsed_bss_description_ies(mac_ctx,
&bss_dscp->Result.BssDescriptor, &local_ie);
- if (!local_ie || !QDF_IS_STATUS_SUCCESS(status)) {
- sms_log(mac_ctx, LOGE, FL("Cannot pared IEs"));
- csr_free_scan_result_entry(mac_ctx, bss_dscp);
- continue;
+ if (!local_ie || !QDF_IS_STATUS_SUCCESS(status)) {
+ sms_log(mac_ctx, LOGE, FL("Cannot pared IEs"));
+ csr_free_scan_result_entry(mac_ctx, bss_dscp);
+ continue;
+ }
}
dup_bss = csr_remove_dup_bss_description(mac_ctx,
&bss_dscp->Result.BssDescriptor,
@@ -7215,13 +7221,16 @@ QDF_STATUS csr_scan_save_preferred_network_found(tpAniSirGlobal pMac,
SIR_MAC_B_PR_SSID_OFFSET), uLen);
}
local_ie = (tDot11fBeaconIEs *) (pScanResult->Result.pvIes);
- status = csr_get_parsed_bss_description_ies(pMac,
- &pScanResult->Result.BssDescriptor, &local_ie);
- if (!(local_ie || QDF_IS_STATUS_SUCCESS(status))) {
- sms_log(pMac, LOGE, FL("Cannot parse IEs"));
- csr_free_scan_result_entry(pMac, pScanResult);
- qdf_mem_free(parsed_frm);
- return QDF_STATUS_E_RESOURCES;
+ if (NULL == local_ie) {
+ status = csr_get_parsed_bss_description_ies(pMac,
+ &pScanResult->Result.BssDescriptor, &local_ie);
+
+ if (!(local_ie || QDF_IS_STATUS_SUCCESS(status))) {
+ sms_log(pMac, LOGE, FL("Cannot parse IEs"));
+ csr_free_scan_result_entry(pMac, pScanResult);
+ qdf_mem_free(parsed_frm);
+ return QDF_STATUS_E_RESOURCES;
+ }
}
fDupBss = csr_remove_dup_bss_description(pMac,