qcacld-3.0: Featurize WLAN_FEATURE_PACKET_FILTERING
Featurize packet filter properly, as this feature was partially featurized.
Change-Id: Ib4b0e94ab2b9847f824220e2cd4efc2cee6fae8d
CRs-Fixed: 2304233
diff --git a/Kbuild b/Kbuild
index 4915493..3415959 100755
--- a/Kbuild
+++ b/Kbuild
@@ -768,7 +768,6 @@
$(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_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_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 3461a64..38e6346 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 @@
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 8d5ed65..581740e 100644
--- a/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h
+++ b/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h
@@ -43,14 +43,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_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_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_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 243c216..c750655 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 @@
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 @@
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 @@
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 690b5df..dbb4236 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_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_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 834f88f..d7a274c 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 @@
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);
}