qcacld-3.0: FISA ini movement
Move the non-converged FISA related INIs to the DP component. Change-Id: Ifaea7a6652d556168b3f232ecfe9b3579c31ed4f CRs-Fixed: 3512043
这个提交包含在:
@@ -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);
|
||||||
|
在新工单中引用
屏蔽一个用户