prima: release v3.2.3.11
git://codeaurora.org/external/wlan/prima.git
97b38c1 Revert "wlan: Change regulatory followed customer request"
8b40611 wlan: Change wlan driver version 3.2.3.10 to 3.2.3.11
905ce09 wlan: Do not check for mcbc flag to resume.
41687f0 wlan: Fix race conditions while configuring mc/bc filter
Signed-off-by: Iliyan Malchev <malchev@google.com>
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 8ed3332..33fb44e 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 @@
* */
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 c68522e..d3bf1a0 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 @@
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 aa95980..4e05b04 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 @@
(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 0a974d0..b3e798e 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 @@
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 @@
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 @@
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 @@
hddLog(VOS_TRACE_LEVEL_INFO,
"%s: send wlan resume indication", __func__);
- if (pHddCtx->hdd_mcastbcast_filter_set == TRUE)
+ wlanResumeParam = vos_mem_malloc(sizeof(tSirWlanResumeParam));
+
+ if (NULL == wlanResumeParam)
{
- wlanResumeParam = vos_mem_malloc(sizeof(tSirWlanResumeParam));
-
- if(NULL == wlanResumeParam)
- {
- hddLog(VOS_TRACE_LEVEL_FATAL,
- "%s: vos_mem_alloc failed ", __func__);
- return;
- }
-
- //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;
+ hddLog(VOS_TRACE_LEVEL_FATAL,
+ "%s: memory allocation failed for wlanResumeParam ", __func__);
+ return;
}
+ //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;
+
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 @@
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 707407a..6f1be21 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 @@
#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 */