summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CORE/MAC/inc/sirApi.h2
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMessageQueue.c7
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c17
3 files changed, 23 insertions, 3 deletions
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 684cfe942016..6c4d8c1eab0f 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -5401,6 +5401,7 @@ struct extscan_cached_scan_results
* @moreData: 0 - for last fragment
* 1 - still more fragment(s) coming
* @ap: bssid info
+ * @bss_description: BSS description
*
* Reported when each probe response is received, if reportEvents
* enabled in tSirWifiScanCmdReqParams
@@ -5410,6 +5411,7 @@ typedef struct
uint32_t requestId;
bool moreData;
tSirWifiScanResult ap;
+ tSirBssDescription bss_description;
} tSirWifiFullScanResultEvent, *tpSirWifiFullScanResultEvent;
/**
diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
index 96607159c6db..34a869430cb4 100644
--- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
+++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
@@ -244,14 +244,14 @@ __limExtScanForwardBcnProbeRsp(tpAniSirGlobal pmac, uint8_t *rx_pkt_info,
tSirMsgQ mmh_msg;
tpSirMacMgmtHdr hdr;
- result = vos_mem_malloc(sizeof(*result) + ie_len);
+ result = vos_mem_malloc(sizeof(*result) + ie_len + ie_len);
if (NULL == result) {
limLog(pmac, LOGE, FL("Memory allocation failed"));
return;
}
hdr = WDA_GET_RX_MAC_HEADER(rx_pkt_info);
body = WDA_GET_RX_MPDU_DATA(rx_pkt_info);
- vos_mem_zero(result, sizeof(*result) + ie_len);
+ vos_mem_zero(result, sizeof(*result) + ie_len + ie_len);
/* Received frame does not have request id, hence set 0 */
result->requestId = 0;
@@ -275,6 +275,9 @@ __limExtScanForwardBcnProbeRsp(tpAniSirGlobal pmac, uint8_t *rx_pkt_info,
vos_mem_copy((uint8_t *) &result->ap.ieData,
body + SIR_MAC_B_PR_SSID_OFFSET, ie_len);
+ limCollectBssDescription(pmac, &result->bss_description,
+ frame, rx_pkt_info, eANI_BOOLEAN_FALSE);
+
mmh_msg.type = msg_type;
mmh_msg.bodyptr = result;
mmh_msg.bodyval = 0;
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 643d884b9700..a5d08da5796c 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -3269,7 +3269,21 @@ eHalStatus sme_ProcessMsg(tHalHandle hHal, vos_msg_t* pMsg)
#ifdef FEATURE_WLAN_EXTSCAN
case eWNI_SME_EXTSCAN_FULL_SCAN_RESULT_IND:
{
- if (pMac->sme.pExtScanIndCb) {
+ tCsrRoamInfo *roam_info;
+ tpSirWifiFullScanResultEvent result =
+ (tpSirWifiFullScanResultEvent) pMsg->bodyptr;
+
+ roam_info = vos_mem_malloc(sizeof(*roam_info));
+ if (roam_info) {
+ vos_mem_zero(roam_info, sizeof(*roam_info));
+ roam_info->pBssDesc = &result->bss_description;
+ csrRoamCallCallback(pMac, 0, roam_info, 0,
+ eCSR_ROAM_UPDATE_SCAN_RESULT, eCSR_ROAM_RESULT_NONE);
+ vos_mem_free(roam_info);
+ } else
+ smsLog( pMac, LOGE, FL("vos_mem_malloc failed:"));
+
+ if (pMac->sme.pExtScanIndCb) {
pMac->sme.pExtScanIndCb(pMac->hHdd,
eSIR_EXTSCAN_FULL_SCAN_RESULT_IND,
pMsg->bodyptr);
@@ -3277,6 +3291,7 @@ eHalStatus sme_ProcessMsg(tHalHandle hHal, vos_msg_t* pMsg)
smsLog(pMac, LOGE,
FL("callback not registered to process eWNI_SME_EXTSCAN_FULL_SCAN_RESULT_IND"));
}
+
vos_mem_free(pMsg->bodyptr);
break;
}