From 67d69ebbfd22cc35434e887f649d35b0b333f52c Mon Sep 17 00:00:00 2001 From: Dustin Brown Date: Fri, 2 Mar 2018 11:11:34 -0800 Subject: [PATCH] qcacld-3.0: Update firmware filter config (part 2) In order to conserve firmware memory when various filtering features are not in use, update the target configuration provided to firmware based on the intersection of various filtering features and host configuration. Part 1 num_wow_filters = ARP/NS offload enabled ? 2 : 5 bpf_instruction_size - BPF enabled ? 0 (auto) : 0xffffffff Part 2 num_packet_filter = Packet Filter enabled ? 12 : 0xffffffff Change-Id: Ie8cb4ae44c83b115b249e22ebd7146278ed70612 CRs-Fixed: 2199297 --- components/pmo/core/inc/wlan_pmo_pkt_filter.h | 2 +- components/pmo/core/src/wlan_pmo_pkt_filter.c | 4 ++-- components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h | 2 +- components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c | 2 +- core/wma/src/wma_main.c | 1 + 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/components/pmo/core/inc/wlan_pmo_pkt_filter.h b/components/pmo/core/inc/wlan_pmo_pkt_filter.h index 72245c3775..fe6b376fc5 100644 --- a/components/pmo/core/inc/wlan_pmo_pkt_filter.h +++ b/components/pmo/core/inc/wlan_pmo_pkt_filter.h @@ -32,7 +32,7 @@ struct wlan_objmgr_psoc; * * Return: number of packet filters */ -uint8_t pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc); +uint32_t pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc); /** * pmo_set_pkt_fltr_req() - Set packet filter diff --git a/components/pmo/core/src/wlan_pmo_pkt_filter.c b/components/pmo/core/src/wlan_pmo_pkt_filter.c index 62268104a8..2003ad67e6 100644 --- a/components/pmo/core/src/wlan_pmo_pkt_filter.c +++ b/components/pmo/core/src/wlan_pmo_pkt_filter.c @@ -25,9 +25,9 @@ #include "wlan_pmo_obj_mgmt_public_struct.h" #define PMO_PKT_FILTERS_DEFAULT 12 -#define PMO_PKT_FILTERS_DISABLED 0 +#define PMO_PKT_FILTERS_DISABLED 0xffffffff -uint8_t pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc) +uint32_t pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc) { struct pmo_psoc_priv_obj *psoc_ctx; bool pkt_filter = false; diff --git a/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h b/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h index 99db95f9d9..25bc9efb0a 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h @@ -47,7 +47,7 @@ uint32_t ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc); * * Return: number of packet filters */ -uint8_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc); +uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc); /** * ucfg_pmo_get_num_wow_filters() - get the supported number of WoW filters diff --git a/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c b/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c index afb4aa7877..dc8a99dffb 100644 --- a/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c +++ b/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c @@ -41,7 +41,7 @@ uint32_t ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc) return pmo_get_apf_instruction_size(psoc); } -uint8_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc) +uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc) { QDF_BUG(psoc); if (!psoc) diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index c5b18482c9..00109d10c2 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -4566,6 +4566,7 @@ static void wma_update_fw_config(struct wlan_objmgr_psoc *psoc, cfg->num_wow_filters = ucfg_pmo_get_num_wow_filters(psoc); cfg->bpf_instruction_size = ucfg_pmo_get_apf_instruction_size(psoc); + cfg->num_packet_filters = ucfg_pmo_get_num_packet_filters(psoc); } /**