prima: extscan: Support for SSID hotlist
Code changes to support SSID hotlist.
Change-Id: Iec3ecd109a454e606f41e12cd2cdffaae9e91b12
CRs-Fixed: 834122
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 97cea29..a8fafc0 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -12308,6 +12308,117 @@
return(status);
}
+/**
+ * sme_set_ssid_hotlist() - Set the SSID hotlist
+ * @hal: SME handle
+ * @request: set ssid hotlist request
+ *
+ * Return: eHalStatus
+ */
+eHalStatus
+sme_set_ssid_hotlist(tHalHandle hal,
+ tSirEXTScanSetSsidHotListReqParams *request)
+{
+ eHalStatus status;
+ VOS_STATUS vstatus;
+ tpAniSirGlobal mac = PMAC_STRUCT(hal);
+ vos_msg_t vos_message;
+ tSirEXTScanSetSsidHotListReqParams *set_req;
+ int i;
+
+ set_req = vos_mem_malloc(sizeof(*set_req));
+ if (!set_req) {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "%s: Not able to allocate memory for WDA_EXTSCAN_SET_SSID_HOTLIST_REQ",
+ __func__);
+ return eHAL_STATUS_FAILURE;
+ }
+
+ *set_req = *request;
+
+
+
+ for( i = 0; i < set_req->ssid_count; i++){
+
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "%s: SSID %s \n length: %d",
+ __func__, set_req->ssid[i].ssid.ssId, set_req->ssid[i].ssid.length);
+ }
+
+ MTRACE(vos_trace(VOS_MODULE_ID_SME,
+ TRACE_CODE_SME_RX_HDD_EXTSCAN_SET_SSID_HOTLIST, NO_SESSION, 0));
+
+ status = sme_AcquireGlobalLock(&mac->sme);
+ if (eHAL_STATUS_SUCCESS == status) {
+ /* Serialize the req through MC thread */
+ vos_message.bodyptr = set_req;
+ vos_message.type = WDA_EXTSCAN_SET_SSID_HOTLIST_REQ;
+ vstatus = vos_mq_post_message(VOS_MQ_ID_WDA, &vos_message);
+ sme_ReleaseGlobalLock(&mac->sme);
+ if (!VOS_IS_STATUS_SUCCESS(vstatus)) {
+ vos_mem_free(set_req);
+ status = eHAL_STATUS_FAILURE;
+ }
+ } else {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "%s: sme_AcquireGlobalLock error", __func__);
+ vos_mem_free(set_req);
+ status = eHAL_STATUS_FAILURE;
+ }
+ return status;
+}
+
+/**
+ * sme_reset_ssid_hotlist() - Set the SSID hotlist
+ * @hal: SME handle
+ * @request: reset ssid hotlist request
+ *
+ * Return: eHalStatus
+ */
+eHalStatus
+sme_reset_ssid_hotlist(tHalHandle hal,
+ tSirEXTScanResetSsidHotlistReqParams *request)
+{
+ eHalStatus status;
+ VOS_STATUS vstatus;
+ tpAniSirGlobal mac = PMAC_STRUCT(hal);
+ vos_msg_t vos_message;
+ tSirEXTScanResetSsidHotlistReqParams *set_req;
+
+ set_req = vos_mem_malloc(sizeof(*set_req));
+ if (!set_req) {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "%s: Not able to allocate memory for WDA_EXTSCAN_SET_SSID_HOTLIST_REQ",
+ __func__);
+ return eHAL_STATUS_FAILURE;
+ }
+
+ *set_req = *request;
+
+ MTRACE(vos_trace(VOS_MODULE_ID_SME,
+ TRACE_CODE_SME_RX_HDD_EXTSCAN_RESET_SSID_HOTLIST, NO_SESSION, 0));
+
+ status = sme_AcquireGlobalLock(&mac->sme);
+ if (eHAL_STATUS_SUCCESS == status) {
+ /* Serialize the req through MC thread */
+ vos_message.bodyptr = set_req;
+ vos_message.type = WDA_EXTSCAN_RESET_SSID_HOTLIST_REQ;
+ vstatus = vos_mq_post_message(VOS_MQ_ID_WDA, &vos_message);
+ sme_ReleaseGlobalLock(&mac->sme);
+ if (!VOS_IS_STATUS_SUCCESS(vstatus)) {
+ vos_mem_free(set_req);
+ status = eHAL_STATUS_FAILURE;
+ }
+ } else {
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,
+ "%s: sme_AcquireGlobalLock error", __func__);
+ vos_mem_free(set_req);
+ status = eHAL_STATUS_FAILURE;
+ }
+ return status;
+}
+
+
/* ---------------------------------------------------------------------------
\fn sme_getCachedResults
\brief SME API to get cached results