wlan: Update SME scan cache with PNO candidate information.
Update SME scan cache with candidate information passed in
network found indication from firmware.
CRs-Fixed: 484419
Change-Id: I32bf3cd9e0a7cf2c94a62b8427ede8387a97a4f6
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 72ba8a0..c2b03b4 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -5985,6 +5985,8 @@
tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
eHalStatus status = eHAL_STATUS_SUCCESS;
tSirPrefNetworkFoundInd *pPrefNetworkFoundInd = (tSirPrefNetworkFoundInd *)pMsg;
+ v_U8_t dumpSsId[SIR_MAC_MAX_SSID_LENGTH + 1];
+ tANI_U8 ssIdLength = 0;
if (NULL == pMsg)
{
@@ -5995,16 +5997,37 @@
{
if (pPrefNetworkFoundInd->ssId.length > 0)
{
- smsLog(pMac, LOG1, "Preferred Network Found Indication in %s(), SSID=%s",
- __func__, pPrefNetworkFoundInd->ssId.ssId);
+ ssIdLength = CSR_MIN(SIR_MAC_MAX_SSID_LENGTH,
+ pPrefNetworkFoundInd->ssId.length);
+ vos_mem_copy(dumpSsId, pPrefNetworkFoundInd->ssId.ssId, ssIdLength);
+ dumpSsId[ssIdLength] = 0;
+ smsLog(pMac, LOG2, "%s:SSID=%s frame length %d",
+ __func__, dumpSsId, pPrefNetworkFoundInd->frameLength);
-
- /* Call Preferred Netowrk Found Indication callback routine. */
- if (pMac->pmc.prefNetwFoundCB != NULL)
- {
- pMac->pmc.prefNetwFoundCB(pMac->pmc.preferredNetworkFoundIndCallbackContext, pPrefNetworkFoundInd);
+ //Save the frame to scan result
+ if (pPrefNetworkFoundInd->mesgLen > sizeof(tSirPrefNetworkFoundInd))
+ {
+ //we may have a frame
+ status = csrScanSavePreferredNetworkFound(pMac,
+ pPrefNetworkFoundInd);
+ if (!HAL_STATUS_SUCCESS(status))
+ {
+ smsLog(pMac, LOGE, FL(" fail to save preferred network"));
+ }
+ }
+ else
+ {
+ smsLog(pMac, LOGE, FL(" not enough data length %d needed %d"),
+ pPrefNetworkFoundInd->mesgLen, sizeof(tSirPrefNetworkFoundInd));
}
+ /* Call Preferred Netowrk Found Indication callback routine. */
+ if (HAL_STATUS_SUCCESS(status) && (pMac->pmc.prefNetwFoundCB != NULL))
+ {
+ pMac->pmc.prefNetwFoundCB(
+ pMac->pmc.preferredNetworkFoundIndCallbackContext,
+ pPrefNetworkFoundInd);
+ }
}
else
{