|
@@ -938,93 +938,6 @@ QDF_STATUS hdd_conf_arp_offload(hdd_adapter_t *pAdapter, bool fenable)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * hdd_mcbc_filter_modification() - MCBC Filter Modifier
|
|
|
- * @pHddCtx: Global Hdd Context
|
|
|
- * @pMcBcFilter: Multicast/Broadcast filter to be modified
|
|
|
- *
|
|
|
- * This function is called before setting mcbc filters
|
|
|
- * to modify filter value considering different offloads
|
|
|
- *
|
|
|
- * Return: None.
|
|
|
- */
|
|
|
-static void hdd_mcbc_filter_modification(hdd_context_t *pHddCtx,
|
|
|
- uint8_t *pMcBcFilter)
|
|
|
-{
|
|
|
- if (NULL == pHddCtx) {
|
|
|
- hdd_err("NULL HDD context passed");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- *pMcBcFilter = pHddCtx->configuredMcastBcastFilter;
|
|
|
- if (pHddCtx->config->fhostArpOffload) {
|
|
|
- /* ARP offload is enabled, do not block bcast packets at RXP
|
|
|
- * Will be using Bitmasking to reset the filter. As we have
|
|
|
- * disable Broadcast filtering, Anding with the negation
|
|
|
- * of Broadcast BIT
|
|
|
- */
|
|
|
- *pMcBcFilter &= ~(HDD_MCASTBCASTFILTER_FILTER_ALL_BROADCAST);
|
|
|
- hdd_info("ARP offload is enabled");
|
|
|
- }
|
|
|
-#ifdef WLAN_NS_OFFLOAD
|
|
|
- if (pHddCtx->config->fhostNSOffload) {
|
|
|
- /* NS offload is enabled, do not block mcast packets at RXP
|
|
|
- * Will be using Bitmasking to reset the filter. As we have
|
|
|
- * disable Multicast filtering, Anding with the negation
|
|
|
- * of Multicast BIT
|
|
|
- */
|
|
|
- hdd_info("NS offload is enabled");
|
|
|
- *pMcBcFilter &= ~(HDD_MCASTBCASTFILTER_FILTER_ALL_MULTICAST);
|
|
|
- }
|
|
|
-#endif
|
|
|
-
|
|
|
- pHddCtx->configuredMcastBcastFilter = *pMcBcFilter;
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * hdd_conf_mcastbcast_filter() - Configure multicast/broadcast filter
|
|
|
- * @pHddCtx: Global HDD context
|
|
|
- * @setfilter: true if filter is being set, false if filter is being cleared
|
|
|
- *
|
|
|
- * Return: None.
|
|
|
- */
|
|
|
-void hdd_conf_mcastbcast_filter(hdd_context_t *pHddCtx, bool setfilter)
|
|
|
-{
|
|
|
- QDF_STATUS qdf_ret_status = QDF_STATUS_E_FAILURE;
|
|
|
- tpSirWlanSetRxpFilters wlanRxpFilterParam =
|
|
|
- qdf_mem_malloc(sizeof(tSirWlanSetRxpFilters));
|
|
|
- if (NULL == wlanRxpFilterParam) {
|
|
|
- hdd_alert("qdf_mem_malloc failed ");
|
|
|
- return;
|
|
|
- }
|
|
|
- hdd_notice("Configuring Mcast/Bcast Filter Setting. setfilter %d", setfilter);
|
|
|
- if (true == setfilter) {
|
|
|
- hdd_mcbc_filter_modification(pHddCtx,
|
|
|
- &wlanRxpFilterParam->
|
|
|
- configuredMcstBcstFilterSetting);
|
|
|
- } else {
|
|
|
- /*Use the current configured value to clear */
|
|
|
- wlanRxpFilterParam->configuredMcstBcstFilterSetting =
|
|
|
- pHddCtx->configuredMcastBcastFilter;
|
|
|
- }
|
|
|
-
|
|
|
- wlanRxpFilterParam->setMcstBcstFilter = setfilter;
|
|
|
- qdf_ret_status =
|
|
|
- sme_configure_rxp_filter(pHddCtx->hHal, wlanRxpFilterParam);
|
|
|
-
|
|
|
- if (setfilter && (QDF_STATUS_SUCCESS == qdf_ret_status))
|
|
|
- pHddCtx->hdd_mcastbcast_filter_set = true;
|
|
|
-
|
|
|
- hdd_notice("%s to post set/reset filter to lower mac with status %d configuredMcstBcstFilterSetting = %d setMcstBcstFilter = %d",
|
|
|
- (QDF_STATUS_SUCCESS != qdf_ret_status) ? "Failed" : "Success",
|
|
|
- qdf_ret_status,
|
|
|
- wlanRxpFilterParam->configuredMcstBcstFilterSetting,
|
|
|
- wlanRxpFilterParam->setMcstBcstFilter);
|
|
|
-
|
|
|
- if (QDF_STATUS_SUCCESS != qdf_ret_status)
|
|
|
- qdf_mem_free(wlanRxpFilterParam);
|
|
|
-}
|
|
|
-
|
|
|
#ifdef WLAN_FEATURE_PACKET_FILTERING
|
|
|
/**
|
|
|
* wlan_hdd_set_mc_addr_list() - set MC address list in FW
|