diff --git a/drivers/staging/prima/CORE/HDD/inc/wlan_hdd_main.h b/drivers/staging/prima/CORE/HDD/inc/wlan_hdd_main.h index 8ed33322645a5bb7e65cad32d4306c0a5a1b98ce..33fb44e8cbf5df7a07bfd16494d523a0ba205c9f 100755 --- a/drivers/staging/prima/CORE/HDD/inc/wlan_hdd_main.h +++ b/drivers/staging/prima/CORE/HDD/inc/wlan_hdd_main.h @@ -997,24 +997,28 @@ struct hdd_context_s * */ v_U8_t configuredMcastBcastFilter; + v_U8_t sus_res_mcastbcast_filter; + + v_BOOL_t sus_res_mcastbcast_filter_valid; + /* Use below lock to protect access to isSchedScanUpdatePending * since it will be accessed in two different contexts. */ spinlock_t schedScan_lock; - v_U8_t sus_res_mcastbcast_filter; - // Flag keeps track of wiphy suspend/resume v_BOOL_t isWiphySuspended; // Indicates about pending sched_scan results v_BOOL_t isSchedScanUpdatePending; + /* * TX_rx_pkt_count_timer */ vos_timer_t tx_rx_trafficTmr; v_U8_t drvr_miracast; v_U8_t issplitscan_enabled; + }; diff --git a/drivers/staging/prima/CORE/HDD/src/wlan_hdd_assoc.c b/drivers/staging/prima/CORE/HDD/src/wlan_hdd_assoc.c index c68522e41132db253bd290a93f1bb2f1e7050ea1..d3bf1a024bb1500b167fc1a119e7baa20db7f6a4 100755 --- a/drivers/staging/prima/CORE/HDD/src/wlan_hdd_assoc.c +++ b/drivers/staging/prima/CORE/HDD/src/wlan_hdd_assoc.c @@ -2301,7 +2301,14 @@ eHalStatus hdd_smeRoamCallback( void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U3 hdd_conf_mcastbcast_filter(pHddCtx, FALSE); pHddCtx->configuredMcastBcastFilter = pHddCtx->sus_res_mcastbcast_filter; - + pHddCtx->sus_res_mcastbcast_filter_valid = VOS_FALSE; + + hddLog(VOS_TRACE_LEVEL_INFO, + "offload: disassociation happening, restoring configuredMcastBcastFilter"); + hddLog(VOS_TRACE_LEVEL_INFO,"McastBcastFilter = %d", + pHddCtx->configuredMcastBcastFilter); + hddLog(VOS_TRACE_LEVEL_INFO, + "offload: already called mcastbcast filter"); (WLAN_HDD_GET_CTX(pAdapter))->hdd_mcastbcast_filter_set = FALSE; } #ifdef WLAN_FEATURE_PACKET_FILTERING diff --git a/drivers/staging/prima/CORE/HDD/src/wlan_hdd_cfg80211.c b/drivers/staging/prima/CORE/HDD/src/wlan_hdd_cfg80211.c index aa9598061cecadce73606a0024326e90a93534dc..4e05b047d36086395b2004d564fb056407007a2d 100755 --- a/drivers/staging/prima/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/drivers/staging/prima/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -6734,6 +6734,9 @@ static int wlan_hdd_cfg80211_set_power_mgmt(struct wiphy *wiphy, (eConnectionState_Associated == (WLAN_HDD_GET_STATION_CTX_PTR(pAdapter))->conn_info.connState)) { + + hddLog(VOS_TRACE_LEVEL_INFO, + "offload: in cfg80211_set_power_mgmt, calling arp offload"); vos_status = hdd_conf_arp_offload(pAdapter, TRUE); if (!VOS_IS_STATUS_SUCCESS(vos_status)) { diff --git a/drivers/staging/prima/CORE/HDD/src/wlan_hdd_early_suspend.c b/drivers/staging/prima/CORE/HDD/src/wlan_hdd_early_suspend.c index 0a974d02126814f6594a55bbf5bff27440b38322..b3e798efe53c42ee65001009ab192e2bbd1ce2b2 100644 --- a/drivers/staging/prima/CORE/HDD/src/wlan_hdd_early_suspend.c +++ b/drivers/staging/prima/CORE/HDD/src/wlan_hdd_early_suspend.c @@ -647,10 +647,11 @@ void hdd_conf_ns_offload(hdd_adapter_t *pAdapter, v_BOOL_t fenable) hddLog (VOS_TRACE_LEVEL_INFO, "configuredMcastBcastFilter: %d",pHddCtx->configuredMcastBcastFilter); - if((HDD_MCASTBCASTFILTER_FILTER_ALL_MULTICAST == - pHddCtx->configuredMcastBcastFilter) || - (HDD_MCASTBCASTFILTER_FILTER_ALL_MULTICAST_BROADCAST == - pHddCtx->configuredMcastBcastFilter)) + if ((VOS_TRUE == pHddCtx->sus_res_mcastbcast_filter_valid) + && ((HDD_MCASTBCASTFILTER_FILTER_ALL_MULTICAST == + pHddCtx->sus_res_mcastbcast_filter) || + (HDD_MCASTBCASTFILTER_FILTER_ALL_MULTICAST_BROADCAST == + pHddCtx->sus_res_mcastbcast_filter))) { hddLog (VOS_TRACE_LEVEL_INFO, "Set offLoadRequest with SIR_OFFLOAD_NS_AND_MCAST_FILTER_ENABLE \n", __func__); @@ -736,15 +737,21 @@ VOS_STATUS hdd_conf_arp_offload(hdd_adapter_t *pAdapter, v_BOOL_t fenable) hddLog(VOS_TRACE_LEVEL_INFO, "%s: Enabled \n", __func__); - if((HDD_MCASTBCASTFILTER_FILTER_ALL_BROADCAST == - pHddCtx->configuredMcastBcastFilter) || - (HDD_MCASTBCASTFILTER_FILTER_ALL_MULTICAST_BROADCAST == - pHddCtx->configuredMcastBcastFilter)) + if (((HDD_MCASTBCASTFILTER_FILTER_ALL_BROADCAST == + pHddCtx->sus_res_mcastbcast_filter) || + (HDD_MCASTBCASTFILTER_FILTER_ALL_MULTICAST_BROADCAST == + pHddCtx->sus_res_mcastbcast_filter)) && + (VOS_TRUE == pHddCtx->sus_res_mcastbcast_filter_valid)) { offLoadRequest.enableOrDisable = - SIR_OFFLOAD_ARP_AND_BCAST_FILTER_ENABLE; + SIR_OFFLOAD_ARP_AND_BCAST_FILTER_ENABLE; + hddLog(VOS_TRACE_LEVEL_INFO, + "offload: inside arp offload conditional check"); } + hddLog(VOS_TRACE_LEVEL_INFO, "offload: arp filter programmed = %d", + offLoadRequest.enableOrDisable); + //converting u32 to IPV4 address for(i = 0 ; i < 4; i++) { @@ -870,8 +877,16 @@ static void hdd_conf_suspend_ind(hdd_context_t* pHddCtx, tpSirWlanSuspendParam wlanSuspendParam = vos_mem_malloc(sizeof(tSirWlanSuspendParam)); - pHddCtx->sus_res_mcastbcast_filter = - pHddCtx->configuredMcastBcastFilter; + if (VOS_FALSE == pHddCtx->sus_res_mcastbcast_filter_valid) { + pHddCtx->sus_res_mcastbcast_filter = + pHddCtx->configuredMcastBcastFilter; + pHddCtx->sus_res_mcastbcast_filter_valid = VOS_TRUE; + hddLog(VOS_TRACE_LEVEL_INFO, "offload: hdd_conf_suspend_ind"); + hddLog(VOS_TRACE_LEVEL_INFO, "configuredMCastBcastFilter saved = %d", + pHddCtx->configuredMcastBcastFilter); + + } + if(NULL == wlanSuspendParam) { @@ -924,30 +939,36 @@ static void hdd_conf_resume_ind(hdd_adapter_t *pAdapter) hddLog(VOS_TRACE_LEVEL_INFO, "%s: send wlan resume indication", __func__); - if (pHddCtx->hdd_mcastbcast_filter_set == TRUE) - { - wlanResumeParam = vos_mem_malloc(sizeof(tSirWlanResumeParam)); + wlanResumeParam = vos_mem_malloc(sizeof(tSirWlanResumeParam)); - if(NULL == wlanResumeParam) - { - hddLog(VOS_TRACE_LEVEL_FATAL, - "%s: vos_mem_alloc failed ", __func__); - return; - } + if (NULL == wlanResumeParam) + { + hddLog(VOS_TRACE_LEVEL_FATAL, + "%s: memory allocation failed for wlanResumeParam ", __func__); + return; + } - //Disable supported OffLoads - hdd_conf_hostoffload(pAdapter, FALSE); + //Disable supported OffLoads + hdd_conf_hostoffload(pAdapter, FALSE); - wlanResumeParam->configuredMcstBcstFilterSetting = - pHddCtx->configuredMcastBcastFilter; - halStatus = sme_ConfigureResumeReq(pHddCtx->hHal, wlanResumeParam); - if (eHAL_STATUS_SUCCESS != halStatus) - vos_mem_free(wlanResumeParam); - pHddCtx->hdd_mcastbcast_filter_set = FALSE; + wlanResumeParam->configuredMcstBcstFilterSetting = + pHddCtx->configuredMcastBcastFilter; + halStatus = sme_ConfigureResumeReq(pHddCtx->hHal, wlanResumeParam); + if (eHAL_STATUS_SUCCESS != halStatus) + { + vos_mem_free(wlanResumeParam); } + pHddCtx->hdd_mcastbcast_filter_set = FALSE; + pHddCtx->configuredMcastBcastFilter = pHddCtx->sus_res_mcastbcast_filter; + pHddCtx->sus_res_mcastbcast_filter_valid = VOS_FALSE; + + hddLog(VOS_TRACE_LEVEL_INFO, + "offload: in hdd_conf_resume_ind, restoring configuredMcastBcastFilter"); + hddLog(VOS_TRACE_LEVEL_INFO, "configuredMcastBcastFilter = %d", + pHddCtx->configuredMcastBcastFilter); #ifdef WLAN_FEATURE_PACKET_FILTERING @@ -1080,7 +1101,19 @@ static void hdd_PowerStateChangedCB spin_lock(&pHddCtx->filter_lock); if((newState == BMPS) && pHddCtx->hdd_wlan_suspended) { spin_unlock(&pHddCtx->filter_lock); - pHddCtx->sus_res_mcastbcast_filter = pHddCtx->configuredMcastBcastFilter; + if (VOS_FALSE == pHddCtx->sus_res_mcastbcast_filter_valid) { + pHddCtx->sus_res_mcastbcast_filter = + pHddCtx->configuredMcastBcastFilter; + pHddCtx->sus_res_mcastbcast_filter_valid = VOS_TRUE; + + hddLog(VOS_TRACE_LEVEL_INFO, "offload: callback to associated"); + hddLog(VOS_TRACE_LEVEL_INFO, "saving configuredMcastBcastFilter = %d", + pHddCtx->configuredMcastBcastFilter); + hddLog(VOS_TRACE_LEVEL_INFO, + "offload: calling hdd_conf_mcastbcast_filter"); + + } + 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__); diff --git a/drivers/staging/prima/CORE/MAC/inc/qwlan_version.h b/drivers/staging/prima/CORE/MAC/inc/qwlan_version.h index 707407aca66885b1e15595783675f3ca2cdc00df..6f1be21cafd7694342d50f89ec70d16a0379a435 100644 --- a/drivers/staging/prima/CORE/MAC/inc/qwlan_version.h +++ b/drivers/staging/prima/CORE/MAC/inc/qwlan_version.h @@ -60,9 +60,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 2 #define QWLAN_VERSION_PATCH 3 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 10 +#define QWLAN_VERSION_BUILD 11 -#define QWLAN_VERSIONSTR "3.2.3.10" +#define QWLAN_VERSIONSTR "3.2.3.11" #endif /* QWLAN_VERSION_H */