소스 검색

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
Dustin Brown 7 년 전
부모
커밋
67d69ebbfd

+ 1 - 1
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

+ 2 - 2
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;

+ 1 - 1
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

+ 1 - 1
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)

+ 1 - 0
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);
 }
 
 /**