summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVarun Reddy Yeturu <varunreddy.yeturu@codeaurora.org>2017-01-20 15:16:37 -0800
committerqcabuildsw <qcabuildsw@localhost>2017-01-24 10:20:06 -0800
commitf5ca109f913ef46c6c799062c20cebc70e712736 (patch)
tree783cc1443e0a6549fb230420c14b80bd3ee43271
parente84921f15d50572c6851667ba93cbe20f8f8aa55 (diff)
qcacld-3.0: Update the scan result only upon finding an active session
Invalidate the scan entry if there is no active session and do not inform it to the user space. Change-Id: I134cceef0cfc54f68966d3287d92bdf6b35e33fc CRs-Fixed: 1114216
-rw-r--r--core/sme/src/csr/csr_api_scan.c36
1 files changed, 32 insertions, 4 deletions
diff --git a/core/sme/src/csr/csr_api_scan.c b/core/sme/src/csr/csr_api_scan.c
index 73745b5eeba2..3ebbf73a46df 100644
--- a/core/sme/src/csr/csr_api_scan.c
+++ b/core/sme/src/csr/csr_api_scan.c
@@ -54,6 +54,7 @@
#include "cds_concurrency.h"
#include "wlan_hdd_main.h"
#include "pld_common.h"
+#include "csr_internal.h"
#define MIN_CHN_TIME_TO_FIND_GO 100
#define MAX_CHN_TIME_TO_FIND_GO 100
@@ -4636,6 +4637,25 @@ static bool csr_scan_process_scan_results(tpAniSirGlobal pMac, tSmeCmd *pCommand
return fRet;
}
+/**
+ * csr_scan_get_session_id() - Get session id
+ * @mac_ctx: Pointer to global mac
+ *
+ * This function returns a valid session id
+ *
+ * Return: session id
+ */
+static uint8_t csr_scan_get_session_id(tpAniSirGlobal mac_ctx)
+{
+ uint8_t i;
+
+ for (i = 0; i < CSR_ROAM_SESSION_MAX; i++)
+ if (CSR_IS_SESSION_VALID(mac_ctx, i))
+ return i;
+
+ return CSR_SESSION_ID_INVALID;
+}
+
/* csr_scan_process_single_bssdescr() - Add a bssdescriptor to scan table
*
* @mac_ctx - MAC context
@@ -4663,6 +4683,7 @@ QDF_STATUS csr_scan_process_single_bssdescr(tpAniSirGlobal mac_ctx,
uint8_t cnt_channels = 0;
uint32_t len = sizeof(mac_ctx->roam.validChannelList);
tCsrRoamInfo *roam_info;
+ uint8_t session_id;
sms_log(mac_ctx, LOG4, "CSR: Processing single bssdescr");
if (QDF_IS_STATUS_SUCCESS(
@@ -4685,14 +4706,21 @@ QDF_STATUS csr_scan_process_single_bssdescr(tpAniSirGlobal mac_ctx,
qdf_mem_zero(roam_info, sizeof(*roam_info));
roam_info->pBssDesc = bssdescr;
- csr_roam_call_callback(mac_ctx, 0, roam_info, 0,
- eCSR_ROAM_UPDATE_SCAN_RESULT,
- eCSR_ROAM_RESULT_NONE);
+ session_id = csr_scan_get_session_id(mac_ctx);
+ if (session_id == CSR_SESSION_ID_INVALID) {
+ if (ies != NULL)
+ qdf_mem_free(ies);
+ qdf_mem_free(roam_info);
+ return QDF_STATUS_E_INVAL;
+
+ }
+ csr_roam_call_callback(mac_ctx, session_id, roam_info,
+ 0, eCSR_ROAM_UPDATE_SCAN_RESULT,
+ eCSR_ROAM_RESULT_NONE);
qdf_mem_free(roam_info);
} else {
sms_log(mac_ctx, LOG1, "qdf_mem_malloc failed");
}
-
csr_scan_remove_dup_bss_description_from_interim_list
(mac_ctx, bssdescr, ies);
csr_scan_save_bss_description_to_interim_list