wlan: restore filter setting on resume
During suspend, the setting pHddCtx->configuredMcastBcastFilter is changed
to reflect the setting done by the sme_ConfigureSuspendInd call. If the
setting is not restored during resume, the next suspend won't configure the
right setting. Therfore restore the setting on resume.
Change-Id: Ie473ae53032a499600a8bf8d1d9ba66625a94cc0
CRs-fixed: 499812
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 050e711..2b72780 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -848,6 +848,9 @@
tpSirWlanSuspendParam wlanSuspendParam =
vos_mem_malloc(sizeof(tSirWlanSuspendParam));
+ pHddCtx->sus_res_mcastbcast_filter =
+ pHddCtx->configuredMcastBcastFilter;
+
if(NULL == wlanSuspendParam)
{
hddLog(VOS_TRACE_LEVEL_FATAL,
@@ -913,6 +916,9 @@
pHddCtx->hdd_mcastbcast_filter_set = FALSE;
}
+ pHddCtx->configuredMcastBcastFilter =
+ pHddCtx->sus_res_mcastbcast_filter;
+
#ifdef WLAN_FEATURE_PACKET_FILTERING
/* Filer was applied during suspend inditication
@@ -1065,7 +1071,6 @@
)
{
hdd_context_t *pHddCtx = callbackContext;
-
/* if the driver was not in BMPS during early suspend,
* the dynamic DTIM is now updated at Riva */
if ((newState == BMPS) && pHddCtx->hdd_wlan_suspended
@@ -1077,11 +1082,12 @@
spin_lock(&pHddCtx->filter_lock);
if((newState == BMPS) && pHddCtx->hdd_wlan_suspended) {
spin_unlock(&pHddCtx->filter_lock);
+ pHddCtx->sus_res_mcastbcast_filter = pHddCtx->configuredMcastBcastFilter;
hdd_conf_mcastbcast_filter(pHddCtx, TRUE);
if(pHddCtx->hdd_mcastbcast_filter_set != TRUE)
hddLog(VOS_TRACE_LEVEL_ERROR, "%s: Not able to set mcast/bcast filter ", __func__);
}
- else
+ else
spin_unlock(&pHddCtx->filter_lock);
}