qcacld-3.0: Add INI param to enable/disable ILP HW block

ILP is a new hardware block which is used for PCIe powersave but
this can effect the throughput.

So to isolate the throughput issues, add ini param to
enable/disable this ILP hardware block using the ini configuration.

Change-Id: I19825af8598bbc2623542256e873367c2f3d29bd
CRs-Fixed: 2756587
This commit is contained in:
Abdul Muqtadeer Ahmed
2020-08-10 22:26:25 +05:30
committed by snandini
parent f996a7c696
commit ca927cfcd7
4 changed files with 79 additions and 2 deletions

View File

@@ -205,6 +205,7 @@ struct wlan_fwol_neighbor_report_cfg {
* @dhcp_max_num_clients: Max number of DHCP client supported
* @dwelltime_params: adaptive dwell time parameters
* @ocl_cfg: OCL mode configuration
* @enable_ilp: ILP HW block configuration
*/
struct wlan_fwol_cfg {
/* Add CFG and INI items here */
@@ -256,6 +257,7 @@ struct wlan_fwol_cfg {
#endif
struct adaptive_dwelltime_params dwelltime_params;
uint32_t ocl_cfg;
bool enable_ilp;
};
/**
@@ -367,4 +369,14 @@ fwol_init_adapt_dwelltime_in_cfg(
QDF_STATUS
fwol_set_adaptive_dwelltime_config(
struct adaptive_dwelltime_params *dwelltime_params);
/**
* fwol_set_ilp_config() - API to set ILP HW block config
* @pdev: pointer to the pdev object
* @enable_ilp: enable/disable config for ILP
*
* Return: QDF_STATUS
*/
QDF_STATUS fwol_set_ilp_config(struct wlan_objmgr_pdev *pdev,
bool enable_ilp);
#endif

View File

@@ -22,6 +22,7 @@
#include "wlan_fw_offload_main.h"
#include "cds_api.h"
#include "wma.h"
#include "wlan_fwol_tgt_api.h"
struct wlan_fwol_psoc_obj *fwol_get_psoc_obj(struct wlan_objmgr_psoc *psoc)
{
@@ -541,6 +542,7 @@ QDF_STATUS fwol_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
ucfg_fwol_fetch_dhcp_server_settings(psoc, fwol_cfg);
fwol_cfg->sap_xlna_bypass = cfg_get(psoc, CFG_SET_SAP_XLNA_BYPASS);
fwol_cfg->ocl_cfg = cfg_get(psoc, CFG_SET_OCL_CFG);
fwol_cfg->enable_ilp = cfg_get(psoc, CFG_SET_ENABLE_ILP);
return status;
}
@@ -644,3 +646,18 @@ void fwol_release_rx_event(struct wlan_fwol_rx_event *event)
wlan_objmgr_psoc_release_ref(event->psoc, WLAN_FWOL_SB_ID);
qdf_mem_free(event);
}
QDF_STATUS fwol_set_ilp_config(struct wlan_objmgr_pdev *pdev, bool enable_ilp)
{
QDF_STATUS status;
struct pdev_params pdev_param;
pdev_param.param_id = WMI_PDEV_PARAM_PCIE_HW_ILP;
pdev_param.param_value = enable_ilp;
status = tgt_fwol_pdev_param_send(pdev, pdev_param);
if (QDF_IS_STATUS_ERROR(status))
fwol_err("WMI_PDEV_PARAM_PCIE_HW_ILP failed %d", status);
return status;
}

View File

@@ -758,6 +758,27 @@
CFG_VALUE_OR_DEFAULT, \
"OCL configuration")
/*
* <ini>
* g_enable_ilp - Enable/Disable ILP HW Block
* @Default: 1
*
* This ini is used to enable/disable the ILP HW block
*
* Related: none
*
* Supported Feature: STA/SAP
*
* Usage: Internal
*
* <ini>
*/
#define CFG_SET_ENABLE_ILP CFG_INI_BOOL( \
"g_enable_ilp", \
1, \
"ILP configuration")
#define CFG_FWOL_GENERIC_ALL \
CFG_FWOL_DHCP \
CFG(CFG_ENABLE_ANI) \
@@ -785,6 +806,7 @@
CFG(CFG_TX_SCH_DELAY) \
CFG(CFG_ENABLE_SECONDARY_RATE) \
CFG(CFG_SET_SAP_XLNA_BYPASS) \
CFG(CFG_SET_OCL_CFG)
CFG(CFG_SET_OCL_CFG) \
CFG(CFG_SET_ENABLE_ILP)
#endif

View File

@@ -287,6 +287,21 @@ QDF_STATUS ucfg_fwol_get_ani_enabled(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
static QDF_STATUS ucfg_fwol_get_ilp_config(struct wlan_objmgr_psoc *psoc,
bool *enable_ilp)
{
struct wlan_fwol_psoc_obj *fwol_obj;
fwol_obj = fwol_get_psoc_obj(psoc);
if (!fwol_obj) {
fwol_err("Failed to get FWOL obj");
return QDF_STATUS_E_FAILURE;
}
*enable_ilp = fwol_obj->cfg.enable_ilp;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS ucfg_get_enable_rts_sifsbursting(struct wlan_objmgr_psoc *psoc,
bool *enable_rts_sifsbursting)
{
@@ -962,7 +977,18 @@ QDF_STATUS ucfg_fwol_send_dscp_up_map_to_fw(struct wlan_objmgr_vdev *vdev,
QDF_STATUS ucfg_fwol_configure_global_params(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_pdev *pdev)
{
return QDF_STATUS_SUCCESS;
QDF_STATUS status;
bool value;
status = ucfg_fwol_get_ilp_config(psoc, &value);
if (QDF_IS_STATUS_ERROR(status))
return status;
status = fwol_set_ilp_config(pdev, value);
if (QDF_IS_STATUS_ERROR(status))
return status;
return status;
}
QDF_STATUS ucfg_fwol_configure_vdev_params(struct wlan_objmgr_psoc *psoc,