diff --git a/Kbuild b/Kbuild index 49154935eb..34159594e1 100755 --- a/Kbuild +++ b/Kbuild @@ -768,7 +768,6 @@ PMO_OBJS := $(PMO_DIR)/core/src/wlan_pmo_main.o \ $(PMO_DIR)/core/src/wlan_pmo_lphb.o \ $(PMO_DIR)/core/src/wlan_pmo_suspend_resume.o \ $(PMO_DIR)/core/src/wlan_pmo_hw_filter.o \ - $(PMO_DIR)/core/src/wlan_pmo_pkt_filter.o \ $(PMO_DIR)/dispatcher/src/wlan_pmo_obj_mgmt_api.o \ $(PMO_DIR)/dispatcher/src/wlan_pmo_ucfg_api.o \ $(PMO_DIR)/dispatcher/src/wlan_pmo_tgt_arp.o \ @@ -779,8 +778,12 @@ PMO_OBJS := $(PMO_DIR)/core/src/wlan_pmo_main.o \ $(PMO_DIR)/dispatcher/src/wlan_pmo_tgt_lphb.o \ $(PMO_DIR)/dispatcher/src/wlan_pmo_tgt_suspend_resume.o \ $(PMO_DIR)/dispatcher/src/wlan_pmo_tgt_hw_filter.o \ + +ifeq ($(CONFIG_WLAN_FEATURE_PACKET_FILTERING), y) +PMO_OBJS += $(PMO_DIR)/core/src/wlan_pmo_pkt_filter.o \ $(PMO_DIR)/dispatcher/src/wlan_pmo_tgt_pkt_filter.o endif +endif ifeq ($(CONFIG_WLAN_NS_OFFLOAD), y) PMO_OBJS += $(PMO_DIR)/core/src/wlan_pmo_ns.o \ @@ -861,13 +864,15 @@ CLD_TARGET_IF_OBJ := $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_arp.o \ $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_lphb.o \ $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_main.o \ $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_mc_addr_filtering.o \ - $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_pkt_filter.o \ $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_static_config.o \ $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_suspend_resume.o \ $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_wow.o ifeq ($(CONFIG_WLAN_NS_OFFLOAD), y) CLD_TARGET_IF_OBJ += $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_ns.o endif +ifeq ($(CONFIG_WLAN_FEATURE_PACKET_FILTERING), y) +CLD_TARGET_IF_OBJ += $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_pkt_filter.o +endif endif ifeq ($(CONFIG_WLAN_FEATURE_DSRC), y) diff --git a/components/pmo/dispatcher/inc/wlan_pmo_obj_mgmt_public_struct.h b/components/pmo/dispatcher/inc/wlan_pmo_obj_mgmt_public_struct.h index 3461a64390..38e63468bf 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_obj_mgmt_public_struct.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_obj_mgmt_public_struct.h @@ -132,11 +132,13 @@ struct wlan_pmo_tx_ops { QDF_STATUS (*send_ns_offload_req)(struct wlan_objmgr_vdev *vdev, struct pmo_arp_offload_params *arp_offload_req, struct pmo_ns_offload_params *ns_offload_req); +#ifdef WLAN_FEATURE_PACKET_FILTERING QDF_STATUS(*send_set_pkt_filter)(struct wlan_objmgr_vdev *vdev, struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req); QDF_STATUS(*send_clear_pkt_filter)(struct wlan_objmgr_vdev *vdev, struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param); +#endif QDF_STATUS (*send_enable_wow_wakeup_event_req)( struct wlan_objmgr_vdev *vdev, uint32_t *bitmap); diff --git a/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h b/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h index 8d5ed65b89..581740ef7c 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h @@ -42,14 +42,6 @@ */ uint32_t ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc); -/** - * ucfg_pmo_get_num_packet_filters() - get the number of packet filters - * @psoc: the psoc to query - * - * Return: number of packet filters - */ -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 * @psoc: the psoc to query @@ -356,6 +348,16 @@ QDF_STATUS pmo_ucfg_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev); */ QDF_STATUS pmo_ucfg_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev); +#ifdef WLAN_FEATURE_PACKET_FILTERING + +/** + * ucfg_pmo_get_num_packet_filters() - get the number of packet filters + * @psoc: the psoc to query + * + * Return: number of packet filters + */ +uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc); + /** * pmo_ucfg_set_pkt_filter() - Set packet filter * @psoc: objmgr psoc handle @@ -379,6 +381,31 @@ QDF_STATUS pmo_ucfg_set_pkt_filter(struct wlan_objmgr_psoc *psoc, QDF_STATUS pmo_ucfg_clear_pkt_filter(struct wlan_objmgr_psoc *psoc, struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param, uint8_t vdev_id); +#else +static inline uint32_t +ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc) +{ + return 0; +} + +static inline QDF_STATUS +pmo_ucfg_set_pkt_filter( + struct wlan_objmgr_psoc *psoc, + struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req, + uint8_t vdev_id) +{ + return QDF_STATUS_SUCCESS; +} + +static inline QDF_STATUS +pmo_ucfg_clear_pkt_filter( + struct wlan_objmgr_psoc *psoc, + struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param, + uint8_t vdev_id) +{ + return QDF_STATUS_SUCCESS; +} +#endif /** * pmo_ucfg_get_gtk_rsp(): API to send gtk response request to fwr @@ -633,7 +660,7 @@ QDF_STATUS pmo_ucfg_config_listen_interval(struct wlan_objmgr_vdev *vdev, */ QDF_STATUS pmo_ucfg_config_modulated_dtim(struct wlan_objmgr_vdev *vdev, uint32_t mod_dtim); -#else +#else /* WLAN_POWER_MANAGEMENT_OFFLOAD */ static inline uint32_t ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc) { diff --git a/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c b/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c index 243c216ae0..c750655385 100644 --- a/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c +++ b/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c @@ -41,15 +41,6 @@ uint32_t ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc) return pmo_get_apf_instruction_size(psoc); } -uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc) -{ - QDF_BUG(psoc); - if (!psoc) - return 0; - - return pmo_get_num_packet_filters(psoc); -} - uint8_t ucfg_pmo_get_num_wow_filters(struct wlan_objmgr_psoc *psoc) { QDF_BUG(psoc); @@ -217,6 +208,16 @@ QDF_STATUS pmo_ucfg_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev) return pmo_core_disable_gtk_offload_in_fwr(vdev); } +#ifdef WLAN_FEATURE_PACKET_FILTERING +uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc) +{ + QDF_BUG(psoc); + if (!psoc) + return 0; + + return pmo_get_num_packet_filters(psoc); +} + QDF_STATUS pmo_ucfg_set_pkt_filter(struct wlan_objmgr_psoc *psoc, struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req, uint8_t vdev_id) @@ -231,6 +232,7 @@ QDF_STATUS pmo_ucfg_clear_pkt_filter(struct wlan_objmgr_psoc *psoc, return pmo_core_clear_pkt_filter(psoc, pmo_clr_pkt_fltr_param, vdev_id); } +#endif QDF_STATUS pmo_ucfg_get_gtk_rsp(struct wlan_objmgr_vdev *vdev, struct pmo_gtk_rsp_req *gtk_rsp_req) diff --git a/components/target_if/pmo/inc/target_if_pmo.h b/components/target_if/pmo/inc/target_if_pmo.h index 690b5df86d..dbb4236638 100644 --- a/components/target_if/pmo/inc/target_if_pmo.h +++ b/components/target_if/pmo/inc/target_if_pmo.h @@ -172,6 +172,7 @@ QDF_STATUS target_if_pmo_send_action_frame_patterns( QDF_STATUS target_if_pmo_conf_hw_filter(struct wlan_objmgr_psoc *psoc, struct pmo_hw_filter_params *req); +#ifdef WLAN_FEATURE_PACKET_FILTERING /** * target_if_pmo_send_pkt_filter_req() - enable packet filter * @vdev: objmgr vdev @@ -195,6 +196,7 @@ QDF_STATUS target_if_pmo_send_pkt_filter_req(struct wlan_objmgr_vdev *vdev, */ QDF_STATUS target_if_pmo_clear_pkt_filter_req(struct wlan_objmgr_vdev *vdev, struct pmo_rcv_pkt_fltr_clear_param *rcv_clear_param); +#endif /** * target_if_pmo_send_arp_offload_req() - sends arp request to fwr diff --git a/components/target_if/pmo/src/target_if_pmo_main.c b/components/target_if/pmo/src/target_if_pmo_main.c index 834f88f688..d7a274cca8 100644 --- a/components/target_if/pmo/src/target_if_pmo_main.c +++ b/components/target_if/pmo/src/target_if_pmo_main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -24,6 +24,22 @@ #include "target_if_pmo.h" #include "wlan_pmo_common_public_struct.h" +#ifdef WLAN_FEATURE_PACKET_FILTERING +static inline +void tgt_if_pmo_reg_pkt_filter_ops(struct wlan_pmo_tx_ops *pmo_tx_ops) +{ + pmo_tx_ops->send_set_pkt_filter = + target_if_pmo_send_pkt_filter_req; + pmo_tx_ops->send_clear_pkt_filter = + target_if_pmo_clear_pkt_filter_req; +} +#else +static inline +void tgt_if_pmo_reg_pkt_filter_ops(struct wlan_pmo_tx_ops *pmo_tx_ops) +{ +} +#endif + void target_if_pmo_register_tx_ops(struct wlan_pmo_tx_ops *pmo_tx_ops) { if (!pmo_tx_ops) { @@ -103,10 +119,6 @@ void target_if_pmo_register_tx_ops(struct wlan_pmo_tx_ops *pmo_tx_ops) target_if_pmo_psoc_send_d0wow_enable_req; pmo_tx_ops->psoc_send_d0wow_disable_req = target_if_pmo_psoc_send_d0wow_disable_req; - pmo_tx_ops->send_set_pkt_filter = - target_if_pmo_send_pkt_filter_req; - pmo_tx_ops->send_clear_pkt_filter = - target_if_pmo_clear_pkt_filter_req; - + tgt_if_pmo_reg_pkt_filter_ops(pmo_tx_ops); }