diff options
| author | Komal Seelam <kseelam@qti.qualcomm.com> | 2014-06-18 11:39:06 +0530 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-06-19 20:51:26 -0700 |
| commit | 006d2cf45b3fc507f6044906e4606d856beb9adc (patch) | |
| tree | 04314cf06de0d8927efc16eb3b5ee795fe454a6c | |
| parent | fd70057559dcdf7b6f7478241793d77b9f800a22 (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.c | 16 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 11 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 2 |
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; } |
