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:

committed by
snandini

parent
f996a7c696
commit
ca927cfcd7
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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,
|
||||
|
Reference in New Issue
Block a user