summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKomal Seelam <kseelam@qti.qualcomm.com>2014-06-18 11:39:06 +0530
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-06-19 20:51:26 -0700
commit006d2cf45b3fc507f6044906e4606d856beb9adc (patch)
tree04314cf06de0d8927efc16eb3b5ee795fe454a6c
parentfd70057559dcdf7b6f7478241793d77b9f800a22 (diff)
qcacld: Delete MCBC filters configured in resume.
Delete the MCBC filters in resume which are configured in suspend. CRs-Fixed: 681150 Change-Id: I17588134dfa5c6050c9ce9e6a5d36343130d2f5b
-rw-r--r--CORE/HDD/src/wlan_hdd_wext.c16
-rw-r--r--CORE/SERVICES/WMA/wma.c11
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c2
3 files changed, 27 insertions, 2 deletions
diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c
index 813ebeb853ab..d84e1d0583c5 100644
--- a/CORE/HDD/src/wlan_hdd_wext.c
+++ b/CORE/HDD/src/wlan_hdd_wext.c
@@ -8817,6 +8817,8 @@ void wlan_hdd_set_mc_addr_list(hdd_adapter_t *pAdapter, v_U8_t set)
hddLog(VOS_TRACE_LEVEL_ERROR, FL("Could not allocate Memory"));
return;
}
+ vos_mem_zero(pMulticastAddrs, sizeof(tSirRcvFltMcAddrList));
+ pMulticastAddrs->action = set;
if (set)
{
@@ -8853,12 +8855,26 @@ void wlan_hdd_set_mc_addr_list(hdd_adapter_t *pAdapter, v_U8_t set)
*/
if (pAdapter->mc_addr_list.isFilterApplied)
{
+#ifdef QCA_WIFI_2_0
+ pMulticastAddrs->ulMulticastAddrCnt =
+ pAdapter->mc_addr_list.mc_cnt;
+ for (i = 0; i < pAdapter->mc_addr_list.mc_cnt; i++) {
+ memcpy(pMulticastAddrs->multicastAddr[i],
+ pAdapter->mc_addr_list.addr[i],
+ sizeof(pAdapter->mc_addr_list.addr[i]));
+ }
+#else
pMulticastAddrs->ulMulticastAddrCnt = 0;
+#endif
sme_8023MulticastList(hHal, pAdapter->sessionId,
pMulticastAddrs);
}
}
+ /* MAddrCnt is MulticastAddrCnt */
+ hddLog(VOS_TRACE_LEVEL_INFO, "smeSessionId:%d; set:%d; MCAdddrCnt :%d",
+ pAdapter->sessionId, set, pMulticastAddrs->ulMulticastAddrCnt);
+
pAdapter->mc_addr_list.isFilterApplied = set ? TRUE : FALSE;
vos_mem_free(pMulticastAddrs);
}
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 7d709caaa933..a2936c46aacb 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -15579,6 +15579,11 @@ static int wma_add_clear_mcbc_filter(tp_wma_handle wma_handle, uint8_t vdev_id,
adf_os_mem_free(buf);
return -EIO;
}
+ WMA_LOGD("Action:%d; vdev_id:%d; clearList:%d\n",
+ cmd->action, vdev_id, clearList);
+ WMA_LOGD("MCBC MAC Addr: %0x:%0x:%0x:%0x:%0x:%0x\n",
+ multicastAddr[0], multicastAddr[1], multicastAddr[2],
+ multicastAddr[3], multicastAddr[4], multicastAddr[5]);
return 0;
}
@@ -15598,11 +15603,14 @@ static VOS_STATUS wma_process_mcbc_set_filter_req(tp_wma_handle wma_handle,
__func__, mcbc_param->bssId);
return VOS_STATUS_E_FAILURE;
}
+ /* set mcbc_param->action to clear MCList and reset
+ * to configure the MCList in FW
+ */
for (i = 0; i < mcbc_param->ulMulticastAddrCnt; i++) {
wma_add_clear_mcbc_filter(wma_handle, vdev_id,
mcbc_param->multicastAddr[i],
- (mcbc_param->action == 1));
+ (mcbc_param->action == 0));
}
return VOS_STATUS_SUCCESS;
}
@@ -17512,6 +17520,7 @@ VOS_STATUS wma_mc_process_msg(v_VOID_t *vos_context, vos_msg_t *msg)
case WDA_8023_MULTICAST_LIST_REQ:
wma_process_mcbc_set_filter_req(wma_handle,
(tpSirRcvFltMcAddrList)msg->bodyptr);
+ vos_mem_free(msg->bodyptr);
break;
#ifdef WLAN_FEATURE_GTK_OFFLOAD
case WDA_GTK_OFFLOAD_REQ:
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 5d2c70bdf879..96c3a0221e44 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -8258,7 +8258,7 @@ eHalStatus sme_8023MulticastList (tHalHandle hHal, tANI_U8 sessionId, tpSirRcvFl
if(pSession == NULL )
{
VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, "%s: Unable to find "
- "the right session", __func__);
+ "the session Id: %d", __func__, sessionId);
return eHAL_STATUS_FAILURE;
}