qcacld-3.0: FISA ini movement

Move the non-converged FISA related INIs to the
DP component.

Change-Id: Ifaea7a6652d556168b3f232ecfe9b3579c31ed4f
CRs-Fixed: 3512043
这个提交包含在:
Rakesh Pillai
2023-05-18 07:17:15 -07:00
提交者 Rahul Choudhary
父节点 7dde156e8d
当前提交 87a3b842c6
修改 9 个文件,包含 175 行新增22 行删除

查看文件

@@ -849,4 +849,24 @@ QDF_STATUS wlan_dp_select_profile_cfg(struct wlan_objmgr_psoc *psoc)
return QDF_STATUS_E_NOSUPPORT; return QDF_STATUS_E_NOSUPPORT;
} }
#endif #endif
/* DP CFG APIs - START */
/**
* wlan_dp_cfg_is_rx_fisa_enabled() - Get Rx FISA enabled flag
* @dp_cfg: soc configuration context
*
* Return: true if enabled, false otherwise.
*/
bool wlan_dp_cfg_is_rx_fisa_enabled(struct wlan_dp_psoc_cfg *dp_cfg);
/**
* wlan_dp_cfg_is_rx_fisa_lru_del_enabled() - Get Rx FISA LRU del enabled flag
* @dp_cfg: soc configuration context
*
* Return: true if enabled, false otherwise.
*/
bool wlan_dp_cfg_is_rx_fisa_lru_del_enabled(struct wlan_dp_psoc_cfg *dp_cfg);
/* DP CFG APIs - END */
#endif #endif

查看文件

@@ -134,6 +134,8 @@ struct dp_rtpm_tput_policy_context {
* be sent to FW. * be sent to FW.
* @lro_enable: Enable/Disable lro * @lro_enable: Enable/Disable lro
* @gro_enable: Enable/Disable gro * @gro_enable: Enable/Disable gro
* @is_rx_fisa_enabled: flag to enable/disable FISA Rx
* @is_rx_fisa_lru_del_enabled: flag to enable/disable FST entry delete
*/ */
struct wlan_dp_psoc_cfg { struct wlan_dp_psoc_cfg {
bool tx_orphan_enable; bool tx_orphan_enable;
@@ -201,6 +203,10 @@ struct wlan_dp_psoc_cfg {
bool lro_enable; bool lro_enable;
bool gro_enable; bool gro_enable;
#ifdef WLAN_SUPPORT_RX_FISA
bool is_rx_fisa_enabled;
bool is_rx_fisa_lru_del_enabled;
#endif
}; };
/** /**

查看文件

@@ -16,6 +16,7 @@
*/ */
#include <dp_types.h> #include <dp_types.h>
#include <wlan_dp_main.h>
#include <wlan_dp_fisa_rx.h> #include <wlan_dp_fisa_rx.h>
#include "hal_rx_flow.h" #include "hal_rx_flow.h"
#include "dp_htt.h" #include "dp_htt.h"
@@ -809,7 +810,9 @@ static void dp_fisa_rx_fst_update(struct dp_rx_fst *fisa_hdl,
struct cdp_rx_flow_tuple_info *rx_flow_tuple_info; struct cdp_rx_flow_tuple_info *rx_flow_tuple_info;
uint32_t skid_count = 0, max_skid_length; uint32_t skid_count = 0, max_skid_length;
struct dp_fisa_rx_sw_ft *sw_ft_entry; struct dp_fisa_rx_sw_ft *sw_ft_entry;
struct wlan_cfg_dp_soc_ctxt *cfg_ctx = fisa_hdl->soc_hdl->wlan_cfg_ctx; /* TODO - Make this better */
struct wlan_dp_psoc_context *dp_ctx = dp_get_context();
struct wlan_dp_psoc_cfg *dp_cfg = &dp_ctx->dp_cfg;
bool is_fst_updated = false; bool is_fst_updated = false;
uint32_t hashed_flow_idx; uint32_t hashed_flow_idx;
uint32_t flow_hash; uint32_t flow_hash;
@@ -887,7 +890,7 @@ static void dp_fisa_rx_fst_update(struct dp_rx_fst *fisa_hdl,
* Remove LRU flow from SW FT * Remove LRU flow from SW FT
*/ */
if ((skid_count > max_skid_length) && if ((skid_count > max_skid_length) &&
wlan_cfg_is_rx_fisa_lru_del_enabled(cfg_ctx)) { wlan_dp_cfg_is_rx_fisa_lru_del_enabled(dp_cfg)) {
dp_fisa_debug("Max skid length reached flow cannot be added, evict exiting flow"); dp_fisa_debug("Max skid length reached flow cannot be added, evict exiting flow");
dp_fisa_rx_delete_flow(fisa_hdl, elem, lru_ft_entry_idx); dp_fisa_rx_delete_flow(fisa_hdl, elem, lru_ft_entry_idx);
is_fst_updated = true; is_fst_updated = true;

查看文件

@@ -15,6 +15,9 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
#ifndef __WLAN_DP_FISA_RX_H__
#define __WLAN_DP_FISA_RX_H__
#ifdef WLAN_SUPPORT_RX_FISA #ifdef WLAN_SUPPORT_RX_FISA
#include <dp_types.h> #include <dp_types.h>
#endif #endif
@@ -218,6 +221,16 @@ void dp_rx_fst_update_pm_suspend_status(struct wlan_dp_psoc_context *dp_ctx,
* Return: None * Return: None
*/ */
void dp_rx_fst_requeue_wq(struct wlan_dp_psoc_context *dp_ctx); void dp_rx_fst_requeue_wq(struct wlan_dp_psoc_context *dp_ctx);
/**
* dp_fisa_cfg_init() - FISA INI items init
* @config: SoC CFG config
* @psoc: Objmgr PSoC handle
*
* Return: None
*/
void dp_fisa_cfg_init(struct wlan_dp_psoc_cfg *config,
struct wlan_objmgr_psoc *psoc);
#else #else
static inline void static inline void
dp_rx_fst_update_pm_suspend_status(struct wlan_dp_psoc_context *dp_ctx, dp_rx_fst_update_pm_suspend_status(struct wlan_dp_psoc_context *dp_ctx,
@@ -233,4 +246,10 @@ static QDF_STATUS dp_rx_dump_fisa_stats(struct dp_soc *soc)
void dp_rx_dump_fisa_table(struct dp_soc *soc) void dp_rx_dump_fisa_table(struct dp_soc *soc)
{ {
} }
static inline void dp_fisa_cfg_init(struct wlan_dp_psoc_cfg *config,
struct wlan_objmgr_psoc *psoc)
{
}
#endif
#endif #endif

查看文件

@@ -623,6 +623,28 @@ static void dp_set_rx_mode_value(struct wlan_dp_psoc_context *dp_ctx)
dp_ctx->rps, dp_ctx->dynamic_rps); dp_ctx->rps, dp_ctx->dynamic_rps);
} }
#ifdef WLAN_SUPPORT_RX_FISA
bool wlan_dp_cfg_is_rx_fisa_enabled(struct wlan_dp_psoc_cfg *dp_cfg)
{
return dp_cfg->is_rx_fisa_enabled;
}
bool wlan_dp_cfg_is_rx_fisa_lru_del_enabled(struct wlan_dp_psoc_cfg *dp_cfg)
{
return dp_cfg->is_rx_fisa_lru_del_enabled;
}
#else
bool wlan_dp_cfg_is_rx_fisa_enabled(struct wlan_dp_psoc_cfg *dp_cfg)
{
return false;
}
bool wlan_dp_cfg_is_rx_fisa_lru_del_enabled(struct wlan_dp_psoc_cfg *dp_cfg)
{
return false;
}
#endif
/** /**
* dp_cfg_init() - initialize target specific configuration * dp_cfg_init() - initialize target specific configuration
* @ctx: dp context handle * @ctx: dp context handle
@@ -646,7 +668,6 @@ static void dp_cfg_init(struct wlan_dp_psoc_context *ctx)
cfg_get(psoc, CFG_DP_RX_THREAD_UL_CPU_MASK); cfg_get(psoc, CFG_DP_RX_THREAD_UL_CPU_MASK);
config->rx_thread_affinity_mask = config->rx_thread_affinity_mask =
cfg_get(psoc, CFG_DP_RX_THREAD_CPU_MASK); cfg_get(psoc, CFG_DP_RX_THREAD_CPU_MASK);
config->fisa_enable = cfg_get(psoc, CFG_DP_RX_FISA_ENABLE);
if (cfg_len < CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST_LEN) { if (cfg_len < CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST_LEN) {
qdf_str_lcopy(config->cpu_map_list, qdf_str_lcopy(config->cpu_map_list,
cfg_get(psoc, CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST), cfg_get(psoc, CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST),
@@ -677,6 +698,7 @@ static void dp_cfg_init(struct wlan_dp_psoc_context *ctx)
dp_trace_cfg_update(config, psoc); dp_trace_cfg_update(config, psoc);
dp_nud_tracking_cfg_update(config, psoc); dp_nud_tracking_cfg_update(config, psoc);
dp_trace_cfg_update(config, psoc); dp_trace_cfg_update(config, psoc);
dp_fisa_cfg_init(config, psoc);
} }
/** /**
@@ -1638,6 +1660,12 @@ wlan_dp_fisa_resume(struct wlan_dp_psoc_context *dp_ctx)
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
#else #else
static inline QDF_STATUS
wlan_dp_rx_fisa_attach_target(struct wlan_dp_psoc_context *dp_ctx)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS static inline QDF_STATUS
wlan_dp_rx_fisa_attach(struct wlan_dp_psoc_context *dp_ctx) wlan_dp_rx_fisa_attach(struct wlan_dp_psoc_context *dp_ctx)
{ {

查看文件

@@ -26,6 +26,7 @@
#include "dp_internal.h" #include "dp_internal.h"
#include "hif.h" #include "hif.h"
#include "wlan_dp_rx_thread.h" #include "wlan_dp_rx_thread.h"
#include <wlan_dp_main.h>
#include <wlan_dp_fisa_rx.h> #include <wlan_dp_fisa_rx.h>
/* Timeout in milliseconds to wait for CMEM FST HTT response */ /* Timeout in milliseconds to wait for CMEM FST HTT response */
@@ -38,14 +39,16 @@ void dp_fisa_rx_fst_update_work(void *arg);
void dp_rx_dump_fisa_table(struct dp_soc *soc) void dp_rx_dump_fisa_table(struct dp_soc *soc)
{ {
struct wlan_cfg_dp_soc_ctxt *cfg = soc->wlan_cfg_ctx;
hal_soc_handle_t hal_soc_hdl = soc->hal_soc; hal_soc_handle_t hal_soc_hdl = soc->hal_soc;
/* TODO - Make this better */
struct wlan_dp_psoc_context *dp_ctx = dp_get_context();
struct wlan_dp_psoc_cfg *dp_cfg = &dp_ctx->dp_cfg;
struct dp_rx_fst *fst = soc->rx_fst; struct dp_rx_fst *fst = soc->rx_fst;
struct dp_fisa_rx_sw_ft *sw_ft_entry; struct dp_fisa_rx_sw_ft *sw_ft_entry;
int i; int i;
/* Check if it is enabled in the INI */ /* Check if it is enabled in the INI */
if (!wlan_cfg_is_rx_fisa_enabled(cfg)) { if (!wlan_dp_cfg_is_rx_fisa_enabled(dp_cfg)) {
dp_err("RX FISA feature is disabled"); dp_err("RX FISA feature is disabled");
return; return;
} }
@@ -74,11 +77,13 @@ void dp_rx_dump_fisa_table(struct dp_soc *soc)
void dp_print_fisa_stats(struct dp_soc *soc) void dp_print_fisa_stats(struct dp_soc *soc)
{ {
struct wlan_cfg_dp_soc_ctxt *cfg = soc->wlan_cfg_ctx;
struct dp_rx_fst *fst = soc->rx_fst; struct dp_rx_fst *fst = soc->rx_fst;
/* TODO - Make this better */
struct wlan_dp_psoc_context *dp_ctx = dp_get_context();
struct wlan_dp_psoc_cfg *dp_cfg = &dp_ctx->dp_cfg;
/* Check if it is enabled in the INI */ /* Check if it is enabled in the INI */
if (!wlan_cfg_is_rx_fisa_enabled(cfg)) if (!wlan_dp_cfg_is_rx_fisa_enabled(dp_cfg))
return; return;
dp_info("invalid flow index: %u", fst->stats.invalid_flow_index); dp_info("invalid flow index: %u", fst->stats.invalid_flow_index);
@@ -278,15 +283,15 @@ static void dp_rx_sw_ft_hist_deinit(struct dp_fisa_rx_sw_ft *sw_ft,
QDF_STATUS dp_rx_fst_attach(struct wlan_dp_psoc_context *dp_ctx) QDF_STATUS dp_rx_fst_attach(struct wlan_dp_psoc_context *dp_ctx)
{ {
struct dp_soc *soc = (struct dp_soc *)dp_ctx->cdp_soc; struct dp_soc *soc = (struct dp_soc *)dp_ctx->cdp_soc;
struct wlan_cfg_dp_soc_ctxt *cfg = soc->wlan_cfg_ctx; struct wlan_dp_psoc_cfg *dp_cfg = &dp_ctx->dp_cfg;
struct dp_rx_fst *fst; struct dp_rx_fst *fst;
struct dp_fisa_rx_sw_ft *ft_entry; struct dp_fisa_rx_sw_ft *ft_entry;
uint8_t *hash_key; cdp_config_param_type soc_param;
int i = 0; int i = 0;
QDF_STATUS status; QDF_STATUS status;
/* Check if it is enabled in the INI */ /* Check if it is enabled in the INI */
if (!wlan_cfg_is_rx_fisa_enabled(cfg)) { if (!wlan_dp_cfg_is_rx_fisa_enabled(dp_cfg)) {
dp_err("RX FISA feature is disabled"); dp_err("RX FISA feature is disabled");
return QDF_STATUS_E_NOSUPPORT; return QDF_STATUS_E_NOSUPPORT;
} }
@@ -311,9 +316,18 @@ QDF_STATUS dp_rx_fst_attach(struct wlan_dp_psoc_context *dp_ctx)
if (!fst) if (!fst)
return QDF_STATUS_E_NOMEM; return QDF_STATUS_E_NOMEM;
fst->max_skid_length = wlan_cfg_rx_fst_get_max_search(cfg); /* This will clear entire FISA params */
fst->max_entries = wlan_cfg_get_rx_flow_search_table_size(cfg); soc_param.fisa_params.rx_toeplitz_hash_key = NULL;
hash_key = wlan_cfg_rx_fst_get_hash_key(cfg); status = cdp_txrx_get_psoc_param(dp_ctx->cdp_soc, CDP_CFG_FISA_PARAMS,
&soc_param);
if (QDF_IS_STATUS_ERROR(status)) {
dp_err("Unable to fetch fisa params");
return status;
}
fst->max_skid_length = soc_param.fisa_params.rx_flow_max_search;
fst->max_entries = soc_param.fisa_params.fisa_fst_size;
fst->rx_toeplitz_hash_key = soc_param.fisa_params.rx_toeplitz_hash_key;
fst->hash_mask = fst->max_entries - 1; fst->hash_mask = fst->max_entries - 1;
fst->num_entries = 0; fst->num_entries = 0;
@@ -341,7 +355,8 @@ QDF_STATUS dp_rx_fst_attach(struct wlan_dp_psoc_context *dp_ctx)
soc->osdev, soc->osdev,
&fst->hal_rx_fst_base_paddr, &fst->hal_rx_fst_base_paddr,
fst->max_entries, fst->max_entries,
fst->max_skid_length, hash_key, fst->max_skid_length,
fst->rx_toeplitz_hash_key,
soc->fst_cmem_base); soc->fst_cmem_base);
if (qdf_unlikely(!fst->hal_rx_fst)) { if (qdf_unlikely(!fst->hal_rx_fst)) {
@@ -369,7 +384,8 @@ QDF_STATUS dp_rx_fst_attach(struct wlan_dp_psoc_context *dp_ctx)
fst->soc_hdl = soc; fst->soc_hdl = soc;
soc->rx_fst = fst; soc->rx_fst = fst;
soc->fisa_enable = true; soc->fisa_enable = true;
soc->fisa_lru_del_enable = wlan_cfg_is_rx_fisa_lru_del_enabled(cfg); soc->fisa_lru_del_enable =
wlan_dp_cfg_is_rx_fisa_lru_del_enabled(dp_cfg);
qdf_atomic_init(&soc->skip_fisa_param.skip_fisa); qdf_atomic_init(&soc->skip_fisa_param.skip_fisa);
qdf_atomic_init(&fst->pm_suspended); qdf_atomic_init(&fst->pm_suspended);
@@ -429,7 +445,8 @@ QDF_STATUS dp_rx_flow_send_fst_fw_setup(struct dp_soc *soc,
{ {
struct dp_htt_rx_flow_fst_setup fisa_hw_fst_setup_cmd = {0}; struct dp_htt_rx_flow_fst_setup fisa_hw_fst_setup_cmd = {0};
struct dp_rx_fst *fst = soc->rx_fst; struct dp_rx_fst *fst = soc->rx_fst;
struct wlan_cfg_dp_soc_ctxt *cfg = soc->wlan_cfg_ctx; /* TODO - Make this better */
struct wlan_dp_psoc_context *dp_ctx = dp_get_context();
QDF_STATUS status; QDF_STATUS status;
/* check if FW has support to place FST in CMEM */ /* check if FW has support to place FST in CMEM */
@@ -455,7 +472,7 @@ QDF_STATUS dp_rx_flow_send_fst_fw_setup(struct dp_soc *soc,
fisa_hw_fst_setup_cmd.ip_da_sa_prefix = HTT_RX_IPV4_COMPATIBLE_IPV6; fisa_hw_fst_setup_cmd.ip_da_sa_prefix = HTT_RX_IPV4_COMPATIBLE_IPV6;
fisa_hw_fst_setup_cmd.hash_key_len = HAL_FST_HASH_KEY_SIZE_BYTES; fisa_hw_fst_setup_cmd.hash_key_len = HAL_FST_HASH_KEY_SIZE_BYTES;
fisa_hw_fst_setup_cmd.hash_key = wlan_cfg_rx_fst_get_hash_key(cfg); fisa_hw_fst_setup_cmd.hash_key = fst->rx_toeplitz_hash_key;
status = dp_htt_rx_flow_fst_setup(pdev, &fisa_hw_fst_setup_cmd); status = dp_htt_rx_flow_fst_setup(pdev, &fisa_hw_fst_setup_cmd);
@@ -596,6 +613,14 @@ QDF_STATUS dp_rx_fisa_config(struct wlan_dp_psoc_context *dp_ctx)
return dp_htt_rx_fisa_config(soc->pdev_list[0], &fisa_config); return dp_htt_rx_fisa_config(soc->pdev_list[0], &fisa_config);
} }
void dp_fisa_cfg_init(struct wlan_dp_psoc_cfg *config,
struct wlan_objmgr_psoc *psoc)
{
config->fisa_enable = cfg_get(psoc, CFG_DP_RX_FISA_ENABLE);
config->is_rx_fisa_enabled = cfg_get(psoc, CFG_DP_RX_FISA_ENABLE);
config->is_rx_fisa_lru_del_enabled =
cfg_get(psoc, CFG_DP_RX_FISA_LRU_DEL_ENABLE);
}
#else /* WLAN_SUPPORT_RX_FISA */ #else /* WLAN_SUPPORT_RX_FISA */
#endif /* !WLAN_SUPPORT_RX_FISA */ #endif /* !WLAN_SUPPORT_RX_FISA */

查看文件

@@ -1581,7 +1581,7 @@ QDF_STATUS dp_rx_flush_packet_cbk(void *dp_intf_context, uint8_t intf_id)
qdf_atomic_inc(&dp_intf->num_active_task); qdf_atomic_inc(&dp_intf->num_active_task);
/* do fisa flush for this vdev */ /* do fisa flush for this vdev */
if (dp_ctx->dp_cfg.fisa_enable) if (wlan_dp_cfg_is_rx_fisa_enabled(&dp_ctx->dp_cfg))
wlan_dp_rx_fisa_flush_by_vdev_id((struct dp_soc *)soc, intf_id); wlan_dp_rx_fisa_flush_by_vdev_id((struct dp_soc *)soc, intf_id);
if (dp_ctx->enable_dp_rx_threads) if (dp_ctx->enable_dp_rx_threads)

查看文件

@@ -1236,6 +1236,56 @@
CFG_INI_BOOL("dp_apply_mem_profile", false, \ CFG_INI_BOOL("dp_apply_mem_profile", false, \
"enable/disable dp mem profile") "enable/disable dp mem profile")
#ifdef WLAN_SUPPORT_RX_FISA
/*
* <ini>
* dp_rx_fisa_enable - Control Rx datapath FISA
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable DP Rx FISA feature
*
* Related: dp_rx_flow_search_table_size
*
* Supported Feature: STA,P2P and SAP IPA disabled terminating
*
* Usage: Internal
*
* </ini>
*/
#define CFG_DP_RX_FISA_ENABLE \
CFG_INI_BOOL("dp_rx_fisa_enable", true, \
"Enable/Disable DP Rx FISA")
/*
* <ini>
* dp_rx_fisa_lru_del_enable - Control Rx datapath FISA
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable DP Rx FISA lru deletion feature
*
* Related: dp_rx_fisa_enable
*
* Supported Feature: STA,P2P and SAP IPA disabled terminating
*
* Usage: Internal
*
* </ini>
*/
#define CFG_DP_RX_FISA_LRU_DEL_ENABLE \
CFG_INI_BOOL("dp_rx_fisa_lru_del_enable", true, \
"Enable/Disable DP Rx FISA LRU deletion")
#define CFG_DP_FISA \
CFG(CFG_DP_RX_FISA_ENABLE) \
CFG(CFG_DP_RX_FISA_LRU_DEL_ENABLE)
#else
#define CFG_DP_FISA
#endif
/*TODO Flow control part to be moved to DP later*/ /*TODO Flow control part to be moved to DP later*/
#ifdef WLAN_FEATURE_DP_BUS_BANDWIDTH #ifdef WLAN_FEATURE_DP_BUS_BANDWIDTH
@@ -1308,6 +1358,7 @@
CFG_DP_DRIVER_TCP_DELACK \ CFG_DP_DRIVER_TCP_DELACK \
CFG_DP_ENABLE_NUD_TRACKING_ALL \ CFG_DP_ENABLE_NUD_TRACKING_ALL \
CFG_DP_CONFIG_DP_TRACE_ALL \ CFG_DP_CONFIG_DP_TRACE_ALL \
CFG_DP_HL_BUNDLE CFG_DP_HL_BUNDLE \
CFG_DP_FISA
#endif /* WLAN_DP_CFG_H__ */ #endif /* WLAN_DP_CFG_H__ */

查看文件

@@ -1029,8 +1029,8 @@ QDF_STATUS ucfg_dp_sta_register_txrx_ops(struct wlan_objmgr_vdev *vdev)
txrx_ops.rx.rx_flush = NULL; txrx_ops.rx.rx_flush = NULL;
} }
if (dp_intf->dp_ctx->dp_cfg.fisa_enable && if (wlan_dp_cfg_is_rx_fisa_enabled(&dp_intf->dp_ctx->dp_cfg) &&
(dp_intf->device_mode != QDF_MONITOR_MODE)) { dp_intf->device_mode != QDF_MONITOR_MODE) {
dp_debug("FISA feature enabled"); dp_debug("FISA feature enabled");
dp_rx_register_fisa_ops(&txrx_ops); dp_rx_register_fisa_ops(&txrx_ops);
} }
@@ -1077,7 +1077,8 @@ QDF_STATUS ucfg_dp_tdlsta_register_txrx_ops(struct wlan_objmgr_vdev *vdev)
txrx_ops.rx.rx_stack = NULL; txrx_ops.rx.rx_stack = NULL;
txrx_ops.rx.rx_flush = NULL; txrx_ops.rx.rx_flush = NULL;
} }
if (dp_intf->dp_ctx->dp_cfg.fisa_enable &&
if (wlan_dp_cfg_is_rx_fisa_enabled(&dp_intf->dp_ctx->dp_cfg) &&
dp_intf->device_mode != QDF_MONITOR_MODE) { dp_intf->device_mode != QDF_MONITOR_MODE) {
dp_debug("FISA feature enabled"); dp_debug("FISA feature enabled");
dp_rx_register_fisa_ops(&txrx_ops); dp_rx_register_fisa_ops(&txrx_ops);