mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 21:59:12 -04:00
qcacld-3.0: hdd: Add EGAP interface and ini configuration
qcacld-2.0 to qcacld-3.0 propagation
This change introduces 4 ini parameters to configure to firmware
- gEenableEGAP: forcely overwrite firmware feature capb
- gEGAPInactTime: inactivity timeout value
- gEGAPWaitTime: wait timeout value before enter EGAP mode
- gEGAPFeatures: the feature flag firmware would support
WMI_AP_PS_EGAP_F_ENABLE_PHYERR_DETECTION 0x1
WMI_AP_PS_EGAP_F_ENABLE_PWRSAVE_BY_PS_STATE 0x2
WMI_AP_PS_EGAP_F_ENABLE_PWRSAVE_BY_INACTIVITY 0x4
Integrate the hdd_wlan_kick_green_ap to execute the Green AP
and EGAP features, depending on the ini and also the tgt_cfg
capability flag,
Change-Id: Ic5db3990aa0a028ed700f6e2f60a11e75c0f1ed1
CRs-fixed: 929063
This commit is contained in:
parent
3c8f79f22c
commit
cb118cf9df
3 changed files with 89 additions and 0 deletions
|
|
@ -1259,6 +1259,29 @@ typedef enum {
|
|||
#define CFG_ENABLE_GREEN_AP_FEATURE_MIN (0)
|
||||
#define CFG_ENABLE_GREEN_AP_FEATURE_MAX (1)
|
||||
#define CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT (1)
|
||||
|
||||
/* Enhanced Green AP (EGAP) flags/params */
|
||||
#define CFG_ENABLE_EGAP_ENABLE_FEATURE "gEnableEGAP"
|
||||
#define CFG_ENABLE_EGAP_ENABLE_FEATURE_MIN (0)
|
||||
#define CFG_ENABLE_EGAP_ENABLE_FEATURE_MAX (1)
|
||||
#define CFG_ENABLE_EGAP_ENABLE_FEATURE_DEFAULT (0)
|
||||
|
||||
#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE "gEGAPInactTime"
|
||||
#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MIN (0)
|
||||
#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MAX (5000)
|
||||
#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_DEFAULT (1000)
|
||||
|
||||
#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE "gEGAPWaitTime"
|
||||
#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MIN (0)
|
||||
#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MAX (5000)
|
||||
#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_DEFAULT (100)
|
||||
|
||||
#define CFG_ENABLE_EGAP_FLAGS_FEATURE "gEGAPFeatures"
|
||||
#define CFG_ENABLE_EGAP_FLAGS_FEATURE_MIN (0)
|
||||
#define CFG_ENABLE_EGAP_FLAGS_FEATURE_MAX (15)
|
||||
#define CFG_ENABLE_EGAP_FLAGS_FEATURE_DEFAULT (7)
|
||||
/* end Enhanced Green AP flags/params */
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_WLAN_FORCE_SAP_SCC
|
||||
|
|
@ -3302,6 +3325,10 @@ struct hdd_config {
|
|||
|
||||
#ifdef FEATURE_GREEN_AP
|
||||
bool enableGreenAP;
|
||||
bool enable_egap;
|
||||
uint32_t egap_feature_flag;
|
||||
uint32_t egap_inact_time;
|
||||
uint32_t egap_wait_time;
|
||||
#endif
|
||||
uint8_t force_sap_acs;
|
||||
uint8_t force_sap_acs_st_ch;
|
||||
|
|
|
|||
|
|
@ -3109,6 +3109,30 @@ REG_TABLE_ENTRY g_registry_table[] = {
|
|||
CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT,
|
||||
CFG_ENABLE_GREEN_AP_FEATURE_MIN,
|
||||
CFG_ENABLE_GREEN_AP_FEATURE_MAX),
|
||||
REG_VARIABLE(CFG_ENABLE_EGAP_ENABLE_FEATURE, WLAN_PARAM_Integer,
|
||||
struct hdd_config, enable_egap,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_ENABLE_EGAP_ENABLE_FEATURE_DEFAULT,
|
||||
CFG_ENABLE_EGAP_ENABLE_FEATURE_MIN,
|
||||
CFG_ENABLE_EGAP_ENABLE_FEATURE_MAX),
|
||||
REG_VARIABLE(CFG_ENABLE_EGAP_INACT_TIME_FEATURE, WLAN_PARAM_Integer,
|
||||
struct hdd_config, egap_inact_time,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_ENABLE_EGAP_INACT_TIME_FEATURE_DEFAULT,
|
||||
CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MIN,
|
||||
CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MAX),
|
||||
REG_VARIABLE(CFG_ENABLE_EGAP_WAIT_TIME_FEATURE, WLAN_PARAM_Integer,
|
||||
struct hdd_config, egap_wait_time,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_DEFAULT,
|
||||
CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MIN,
|
||||
CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MAX),
|
||||
REG_VARIABLE(CFG_ENABLE_EGAP_FLAGS_FEATURE, WLAN_PARAM_Integer,
|
||||
struct hdd_config, egap_feature_flag,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_ENABLE_EGAP_FLAGS_FEATURE_DEFAULT,
|
||||
CFG_ENABLE_EGAP_FLAGS_FEATURE_MIN,
|
||||
CFG_ENABLE_EGAP_FLAGS_FEATURE_MAX),
|
||||
#endif
|
||||
|
||||
REG_VARIABLE(CFG_IGNORE_CAC_NAME, WLAN_PARAM_Integer,
|
||||
|
|
@ -5032,6 +5056,18 @@ void hdd_cfg_print(hdd_context_t *pHddCtx)
|
|||
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"Name = [gEnableGreenAp] Value = [%u] ",
|
||||
pHddCtx->config->enableGreenAP);
|
||||
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"Name = [gEenableEGAP] Value = [%u] ",
|
||||
pHddCtx->config->enable_egap);
|
||||
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"Name = [gEGAPInactTime] Value = [%u] ",
|
||||
pHddCtx->config->egap_inact_time);
|
||||
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"Name = [gEGAPWaitTime] Value = [%u] ",
|
||||
pHddCtx->config->egap_wait_time);
|
||||
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"Name = [gEGAPFeatures] Value = [%u] ",
|
||||
pHddCtx->config->egap_feature_flag);
|
||||
#endif
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
|
||||
|
|
|
|||
|
|
@ -409,6 +409,30 @@ void hdd_wlan_green_ap_start_bss(struct hdd_context_s *hdd_ctx)
|
|||
{
|
||||
struct hdd_config *cfg = hdd_ctx->config;
|
||||
|
||||
/* check if the firmware and ini are both enabled the egap,
|
||||
* and also the feature_flag enable, then we enable the egap
|
||||
*/
|
||||
if (hdd_ctx->green_ap_ctx->egap_support && cfg->enable_egap &&
|
||||
cfg->egap_feature_flag) {
|
||||
hddLog(LOG1,
|
||||
FL("Set EGAP - enabled: %d, flag: %x, inact_time: %d, wait_time: %d"),
|
||||
cfg->enable_egap,
|
||||
cfg->egap_feature_flag,
|
||||
cfg->egap_inact_time,
|
||||
cfg->egap_wait_time);
|
||||
if (!sme_send_egap_conf_params(cfg->enable_egap,
|
||||
cfg->egap_inact_time,
|
||||
cfg->egap_wait_time,
|
||||
cfg->egap_feature_flag)) {
|
||||
/* EGAP is enabled, disable host GAP */
|
||||
hdd_wlan_green_ap_mc(hdd_ctx, GREEN_AP_PS_STOP_EVENT);
|
||||
goto exit;
|
||||
}
|
||||
/* fall through, if send_egap_conf_params() failed,
|
||||
* then check host GAP and enable it accordingly
|
||||
*/
|
||||
}
|
||||
|
||||
if (!(CDF_STA_MASK & hdd_ctx->concurrency_mode) &&
|
||||
cfg->enable2x2 && cfg->enableGreenAP) {
|
||||
hdd_wlan_green_ap_mc(hdd_ctx, GREEN_AP_PS_START_EVENT);
|
||||
|
|
@ -418,6 +442,8 @@ void hdd_wlan_green_ap_start_bss(struct hdd_context_s *hdd_ctx)
|
|||
CDF_STA_MASK & hdd_ctx->concurrency_mode,
|
||||
cfg->enable2x2, cfg->enableGreenAP);
|
||||
}
|
||||
exit:
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue