diff --git a/components/fw_offload/core/inc/wlan_fw_offload_main.h b/components/fw_offload/core/inc/wlan_fw_offload_main.h index 7c54b4846f..bae1305d09 100644 --- a/components/fw_offload/core/inc/wlan_fw_offload_main.h +++ b/components/fw_offload/core/inc/wlan_fw_offload_main.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 - 2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012 - 2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -162,6 +162,7 @@ struct wlan_fwol_neighbor_report_cfg { * @enable_secondary_rate: Enable secondary retry rate config * @enable_dhcp_server_offload: DHCP Offload is enabled or not * @dhcp_max_num_clients: Max number of DHCP client supported + * @dwelltime_params: adaptive dwell time parameters */ struct wlan_fwol_cfg { /* Add CFG and INI items here */ @@ -204,6 +205,7 @@ struct wlan_fwol_cfg { bool enable_dhcp_server_offload; uint32_t dhcp_max_num_clients; #endif + struct adaptive_dwelltime_params dwelltime_params; }; /** @@ -252,4 +254,29 @@ QDF_STATUS fwol_cfg_on_psoc_disable(struct wlan_objmgr_psoc *psoc); QDF_STATUS fwol_init_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc, struct wlan_fwol_neighbor_report_cfg *fwol_neighbor_report_cfg); + +/** + * wlan_fwol_init_adapt_dwelltime_in_cfg - initialize adaptive dwell time params + * @psoc: Pointer to struct wlan_objmgr_psoc context + * @dwelltime_params: Pointer to dwell time params + * + * This function parses initialize the adaptive dwell params from ini. + * + * Return: QDF_STATUS + */ +QDF_STATUS +fwol_init_adapt_dwelltime_in_cfg( + struct wlan_objmgr_psoc *psoc, + struct adaptive_dwelltime_params *dwelltime_params); + +/** + * fwol_set_adaptive_dwelltime_config - API to set adaptive dwell params config + * + * @adaptive_dwelltime_params: adaptive_dwelltime_params structure + * + * Return: QDF Status + */ +QDF_STATUS +fwol_set_adaptive_dwelltime_config( + struct adaptive_dwelltime_params *dwelltime_params); #endif diff --git a/components/fw_offload/core/src/wlan_fw_offload_main.c b/components/fw_offload/core/src/wlan_fw_offload_main.c index 24dba1bf9e..d11891989f 100644 --- a/components/fw_offload/core/src/wlan_fw_offload_main.c +++ b/components/fw_offload/core/src/wlan_fw_offload_main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -20,6 +20,8 @@ */ #include "wlan_fw_offload_main.h" +#include "cds_api.h" +#include "wma.h" struct wlan_fwol_psoc_obj *fwol_get_psoc_obj(struct wlan_objmgr_psoc *psoc) { @@ -116,6 +118,45 @@ QDF_STATUS fwol_init_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_SUCCESS; } +QDF_STATUS +fwol_init_adapt_dwelltime_in_cfg( + struct wlan_objmgr_psoc *psoc, + struct adaptive_dwelltime_params *dwelltime_params) +{ + if (!dwelltime_params) { + fwol_err("dwelltime params config pointer null"); + return QDF_STATUS_E_FAILURE; + } + dwelltime_params->is_enabled = + cfg_get(psoc, CFG_ADAPTIVE_DWELL_MODE_ENABLED); + dwelltime_params->dwelltime_mode = + cfg_get(psoc, CFG_GLOBAL_ADAPTIVE_DWELL_MODE); + dwelltime_params->lpf_weight = + cfg_get(psoc, CFG_ADAPT_DWELL_LPF_WEIGHT); + dwelltime_params->passive_mon_intval = + cfg_get(psoc, CFG_ADAPT_DWELL_PASMON_INTVAL); + dwelltime_params->wifi_act_threshold = + cfg_get(psoc, CFG_ADAPT_DWELL_WIFI_THRESH); + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +fwol_set_adaptive_dwelltime_config( + struct adaptive_dwelltime_params *dwelltime_params) +{ + tp_wma_handle wma_handle; + QDF_STATUS status; + + wma_handle = cds_get_context(QDF_MODULE_ID_WMA); + if (!wma_handle) { + fwol_err("wma handle is null"); + return QDF_STATUS_E_FAILURE; + } + status = wma_send_adapt_dwelltime_params(wma_handle, + dwelltime_params); + return status; +} /** * fwol_parse_probe_req_ouis - form ouis from ini gProbeReqOUIs * @psoc: Pointer to struct wlan_objmgr_psoc context @@ -380,6 +421,7 @@ QDF_STATUS fwol_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) fwol_cfg->enable_tx_sch_delay = cfg_get(psoc, CFG_TX_SCH_DELAY); fwol_cfg->enable_secondary_rate = cfg_get(psoc, CFG_ENABLE_SECONDARY_RATE); + fwol_init_adapt_dwelltime_in_cfg(psoc, &fwol_cfg->dwelltime_params); ucfg_fwol_fetch_ra_filter(psoc, fwol_cfg); ucfg_fwol_fetch_tsf_gpio_pin(psoc, fwol_cfg); ucfg_fwol_fetch_dhcp_server_settings(psoc, fwol_cfg); diff --git a/components/fw_offload/dispatcher/inc/cfg_adaptive_dwelltime.h b/components/fw_offload/dispatcher/inc/cfg_adaptive_dwelltime.h new file mode 100644 index 0000000000..9943b1fdb8 --- /dev/null +++ b/components/fw_offload/dispatcher/inc/cfg_adaptive_dwelltime.h @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/** + * DOC: This file contains adaptive dwell components. + */ + +#ifndef __CFG_ADAPTIVE_DWELLTIME_H +#define __CFG_ADAPTIVE_DWELLTIME_H + +/* + * + * adaptive_dwell_mode_enabled - enable/disable the adaptive dwell config. + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * + * This ini will globally disable/enable the adaptive dwell config. + * Following parameters will set different values of attributes for dwell + * time optimization thus reducing total scan time. + * Acceptable values for this: + * 0: Config is disabled + * 1: Config is enabled + * + * Related: None. + * + * Supported Feature: Scan + * + * Usage: External + * + * + */ +#define CFG_ADAPTIVE_DWELL_MODE_ENABLED CFG_INI_BOOL(\ + "adaptive_dwell_mode_enabled",\ + 1, \ + "enable the adaptive dwell config") + +/* + * + * global_adapt_dwelltime_mode - set default adaptive mode. + * @Min: 0 + * @Max: 4 + * @Default: 0 + * + * This ini will set default adaptive mode, will be used if any of the + * scan dwell mode is set to default. + * For uses : see enum scan_dwelltime_adaptive_mode + * + * Related: None. + * + * Supported Feature: Scan + * + * Usage: External + * + * + */ +#define CFG_GLOBAL_ADAPTIVE_DWELL_MODE CFG_INI_UINT(\ + "global_adapt_dwelltime_mode",\ + 0, 4, 0,\ + CFG_VALUE_OR_DEFAULT, \ + "set default adaptive mode") + +/* + * + * adapt_dwell_lpf_weight - weight to caclulate avg low pass filter. + * @Min: 0 + * @Max: 100 + * @Default: 80 + * + * This ini is used to set the weight to calculate + * the average low pass filter for channel congestion. + * Acceptable values for this: 0-100 (In %) + * + * Related: None. + * + * Supported Feature: Scan + * + * Usage: External + * + * + */ +#define CFG_ADAPT_DWELL_LPF_WEIGHT CFG_INI_UINT(\ + "adapt_dwell_lpf_weight",\ + 0, 100, 80,\ + CFG_VALUE_OR_DEFAULT, \ + "weight to calc avg low pass filter") + +/* + * + * adapt_dwell_passive_mon_intval - Interval to monitor passive scan in msec. + * @Min: 0 + * @Max: 25 + * @Default: 10 + * + * This ini is used to set interval to monitor wifi + * activity in passive scan in milliseconds. + * + * Related: None. + * + * Supported Feature: Scan + * + * Usage: External + * + * + */ +#define CFG_ADAPT_DWELL_PASMON_INTVAL CFG_INI_UINT(\ + "adapt_dwell_passive_mon_intval",\ + 0, 25, 10,\ + CFG_VALUE_OR_DEFAULT, \ + "interval to monitor passive scan") + +/* + * + * adapt_dwell_wifi_act_threshold - % of wifi activity used in passive scan + * @Min: 0 + * @Max: 100 + * @Default: 10 + * + * This ini is used to set % of wifi activity used in passive scan + * Acceptable values for this: 0-100 (in %) + * + * Related: None. + * + * Supported Feature: Scan + * + * Usage: External + * + * + */ +#define CFG_ADAPT_DWELL_WIFI_THRESH CFG_INI_UINT(\ + "adapt_dwell_wifi_act_threshold",\ + 0, 100, 10,\ + CFG_VALUE_OR_DEFAULT, \ + "percent of wifi activity in pas scan") + +#define CFG_ADAPTIVE_DWELLTIME_ALL \ + CFG(CFG_ADAPTIVE_DWELL_MODE_ENABLED) \ + CFG(CFG_GLOBAL_ADAPTIVE_DWELL_MODE) \ + CFG(CFG_ADAPT_DWELL_LPF_WEIGHT) \ + CFG(CFG_ADAPT_DWELL_PASMON_INTVAL) \ + CFG(CFG_ADAPT_DWELL_WIFI_THRESH) + +#endif + diff --git a/components/fw_offload/dispatcher/inc/cfg_fwol.h b/components/fw_offload/dispatcher/inc/cfg_fwol.h index e1632b8c59..3e39ac484d 100644 --- a/components/fw_offload/dispatcher/inc/cfg_fwol.h +++ b/components/fw_offload/dispatcher/inc/cfg_fwol.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 - 2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012 - 2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -27,8 +27,10 @@ #include "cfg_ie_whitelist.h" #include "cfg_fwol_generic.h" #include "cfg_neighbor_roam.h" +#include "cfg_adaptive_dwelltime.h" #define CFG_FWOL_ALL \ + CFG_ADAPTIVE_DWELLTIME_ALL \ CFG_11K_ALL \ CFG_COEX_ALL \ CFG_FWOL_GENERIC_ALL \ diff --git a/components/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h b/components/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h index b1cb52a942..a3ab0cb6a6 100644 --- a/components/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h +++ b/components/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -383,4 +383,112 @@ QDF_STATUS ucfg_fwol_get_enable_tx_sch_delay(struct wlan_objmgr_psoc *psoc, */ QDF_STATUS ucfg_fwol_get_enable_secondary_rate(struct wlan_objmgr_psoc *psoc, uint32_t *enable_secondary_rate); +/** + * ucfg_fwol_get_all_adaptive_dwelltime_params() - Get all adaptive + dwelltime_params + * @psoc: Pointer to psoc object + * @dwelltime_params: Pointer to struct adaptive_dwelltime_params + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_fwol_get_all_adaptive_dwelltime_params( + struct wlan_objmgr_psoc *psoc, + struct adaptive_dwelltime_params *dwelltime_params); +/** + * ucfg_fwol_get_adaptive_dwell_mode_enabled() - API to globally disable/enable + * the adaptive dwell config. + * Acceptable values for this: + * 0: Config is disabled + * 1: Config is enabled + * + * @psoc: pointer to psoc object + * @adaptive_dwell_mode_enabled: adaptive dwell mode enable/disable + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_fwol_get_adaptive_dwell_mode_enabled(struct wlan_objmgr_psoc *psoc, + bool *adaptive_dwell_mode_enabled); + +/** + * ucfg_fwol_get_global_adapt_dwelltime_mode() - API to set default + * adaptive mode. + * It will be used if any of the scan dwell mode is set to default. + * For uses : see enum scan_dwelltime_adaptive_mode + * + * @psoc: pointer to psoc object + * global_adapt_dwelltime_mode@: global adaptive dwell mode value + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_fwol_get_global_adapt_dwelltime_mode(struct wlan_objmgr_psoc *psoc, + uint8_t *global_adapt_dwelltime_mode); +/** + * ucfg_fwol_get_adapt_dwell_lpf_weight() - API to get weight to calculate + * the average low pass filter for channel congestion + * @psoc: pointer to psoc object + * @adapt_dwell_lpf_weight: adaptive low pass filter weight + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_fwol_get_adapt_dwell_lpf_weight(struct wlan_objmgr_psoc *psoc, + uint8_t *adapt_dwell_lpf_weight); + +/** + * ucfg_fwol_get_adapt_dwell_passive_mon_intval() - API to get interval value + * for montitoring wifi activity in passive scan in msec. + * @psoc: pointer to psoc object + * @adapt_dwell_passive_mon_intval: adaptive monitor interval in passive scan + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_fwol_get_adapt_dwell_passive_mon_intval( + struct wlan_objmgr_psoc *psoc, + uint8_t *adapt_dwell_passive_mon_intval); + +/** + * ucfg_fwol_get_adapt_dwell_wifi_act_threshold - API to get % of wifi activity + * used in passive scan + * @psoc: pointer to psoc object + * @adapt_dwell_wifi_act_threshold: percent of wifi activity in passive scan + * + * Return: QDF Status + */ +QDF_STATUS ucfg_fwol_get_adapt_dwell_wifi_act_threshold( + struct wlan_objmgr_psoc *psoc, + uint8_t *adapt_dwell_wifi_act_threshold); + +/** + * ucfg_fwol_init_adapt_dwelltime_in_cfg - API to initialize adaptive + * dwell params + * @psoc: pointer to psoc object + * @adaptive_dwelltime_params: pointer to adaptive_dwelltime_params structure + * + * Return: QDF Status + */ +static inline QDF_STATUS +ucfg_fwol_init_adapt_dwelltime_in_cfg( + struct wlan_objmgr_psoc *psoc, + struct adaptive_dwelltime_params *dwelltime_params) +{ + return fwol_init_adapt_dwelltime_in_cfg(psoc, dwelltime_params); +} + +/** + * ucfg_fwol_set_adaptive_dwelltime_config - API to set adaptive + * dwell params config + * @adaptive_dwelltime_params: adaptive_dwelltime_params structure + * + * Return: QDF Status + */ +static inline QDF_STATUS +ucfg_fwol_set_adaptive_dwelltime_config( + struct adaptive_dwelltime_params *dwelltime_params) +{ + return fwol_set_adaptive_dwelltime_config(dwelltime_params); +} #endif /* _WLAN_FWOL_UCFG_API_H_ */ diff --git a/components/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c b/components/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c index 8ebfcf7a84..b461e9ad5e 100644 --- a/components/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c +++ b/components/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c @@ -692,5 +692,107 @@ QDF_STATUS ucfg_fwol_get_dhcp_max_num_clients(struct wlan_objmgr_psoc *psoc, *dhcp_max_num_clients = fwol_obj->cfg.dhcp_max_num_clients; return QDF_STATUS_SUCCESS; } + #endif +QDF_STATUS +ucfg_fwol_get_all_adaptive_dwelltime_params( + struct wlan_objmgr_psoc *psoc, + struct adaptive_dwelltime_params *dwelltime_params) +{ + 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; + } + + *dwelltime_params = fwol_obj->cfg.dwelltime_params; + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +ucfg_fwol_get_adaptive_dwell_mode_enabled( + struct wlan_objmgr_psoc *psoc, + bool *adaptive_dwell_mode_enabled) +{ + 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; + } + + *adaptive_dwell_mode_enabled = + fwol_obj->cfg.dwelltime_params.is_enabled; + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +ucfg_fwol_get_global_adapt_dwelltime_mode(struct wlan_objmgr_psoc *psoc, + uint8_t *global_adapt_dwelltime_mode) +{ + 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; + } + + *global_adapt_dwelltime_mode = + fwol_obj->cfg.dwelltime_params.dwelltime_mode; + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +ucfg_fwol_get_adapt_dwell_lpf_weight(struct wlan_objmgr_psoc *psoc, + uint8_t *adapt_dwell_lpf_weight) +{ + 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; + } + + *adapt_dwell_lpf_weight = fwol_obj->cfg.dwelltime_params.lpf_weight; + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS ucfg_fwol_get_adapt_dwell_passive_mon_intval( + struct wlan_objmgr_psoc *psoc, + uint8_t *adapt_dwell_passive_mon_intval) +{ + 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; + } + + *adapt_dwell_passive_mon_intval = + fwol_obj->cfg.dwelltime_params.passive_mon_intval; + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS ucfg_fwol_get_adapt_dwell_wifi_act_threshold( + struct wlan_objmgr_psoc *psoc, + uint8_t *adapt_dwell_wifi_act_threshold) +{ + 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; + } + + *adapt_dwell_wifi_act_threshold = + fwol_obj->cfg.dwelltime_params.wifi_act_threshold; + return QDF_STATUS_SUCCESS; +} diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index ea6e1899c1..f0088ec19d 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -400,57 +400,6 @@ enum hdd_dot11_mode { #define CFG_ADAPTIVE_PNOSCAN_DWELL_MODE_MAX (4) #define CFG_ADAPTIVE_PNOSCAN_DWELL_MODE_DEFAULT (1) -/* - * - * adaptive_dwell_mode_enabled - Enable adaptive dwell mode - * @Min: 0 - * @Max: 1 - * @Default: 1 - * - * This parameter will globally disable/enable the adaptive dwell config. - * Following parameters will set different values of attributes for dwell - * time optimization thus reducing total scan time. - * Acceptable values for this: - * 0: Config is disabled - * 1: Config is enabled - * - * Related: None - * - * Supported Feature: Scan - * - * Usage: External - * - * - */ -#define CFG_ADAPTIVE_DWELL_MODE_ENABLED_NAME "adaptive_dwell_mode_enabled" -#define CFG_ADAPTIVE_DWELL_MODE_ENABLED_MIN (0) -#define CFG_ADAPTIVE_DWELL_MODE_ENABLED_MAX (1) -#define CFG_ADAPTIVE_DWELL_MODE_ENABLED_DEFAULT (1) - -/* - * - * global_adapt_dwelltime_mode - Set default adaptive mode - * @Min: 0 - * @Max: 4 - * @Default: 0 - * - * This parameter will set default adaptive mode, will be used if any of the - * scan dwell mode is set to default. - * For uses : see enum scan_dwelltime_adaptive_mode - * - * Related: None - * - * Supported Feature: Scan - * - * Usage: External - * - * - */ -#define CFG_GLOBAL_ADAPTIVE_DWELL_MODE_NAME "global_adapt_dwelltime_mode" -#define CFG_GLOBAL_ADAPTIVE_DWELL_MODE_MIN (0) -#define CFG_GLOBAL_ADAPTIVE_DWELL_MODE_MAX (4) -#define CFG_GLOBAL_ADAPTIVE_DWELL_MODE_DEFAULT (0) - #ifdef FEATURE_LFR_SUBNET_DETECTION /* * @@ -713,35 +662,6 @@ enum hdd_dot11_mode { #endif -/* - * This parameter will set the weight to calculate the average low pass - * filter for channel congestion. - * Acceptable values for this: 0-100 (In %) - */ -#define CFG_ADAPT_DWELL_LPF_WEIGHT_NAME "adapt_dwell_lpf_weight" -#define CFG_ADAPT_DWELL_LPF_WEIGHT_MIN (0) -#define CFG_ADAPT_DWELL_LPF_WEIGHT_MAX (100) -#define CFG_ADAPT_DWELL_LPF_WEIGHT_DEFAULT (80) - -/* - * This parameter will set interval to monitor wifi activity - * in passive scan in msec. - * Acceptable values for this: 0-25 - */ -#define CFG_ADAPT_DWELL_PASMON_INTVAL_NAME "adapt_dwell_passive_mon_intval" -#define CFG_ADAPT_DWELL_PASMON_INTVAL_MIN (0) -#define CFG_ADAPT_DWELL_PASMON_INTVAL_MAX (25) -#define CFG_ADAPT_DWELL_PASMON_INTVAL_DEFAULT (10) - -/* - * This parameter will set % of wifi activity used in passive scan 0-100. - * Acceptable values for this: 0-100 (in %) - */ -#define CFG_ADAPT_DWELL_WIFI_THRESH_NAME "adapt_dwell_wifi_act_threshold" -#define CFG_ADAPT_DWELL_WIFI_THRESH_MIN (0) -#define CFG_ADAPT_DWELL_WIFI_THRESH_MAX (100) -#define CFG_ADAPT_DWELL_WIFI_THRESH_DEFAULT (10) - /* * * gScanBackoffMultiplier - For NLO/PNO, multiply fast scan period by this every @@ -975,13 +895,8 @@ struct hdd_config { bool enable_lfr_subnet_detection; #endif bool apf_enabled; - bool adaptive_dwell_mode_enabled; enum scan_dwelltime_adaptive_mode extscan_adaptive_dwell_mode; enum scan_dwelltime_adaptive_mode pnoscan_adaptive_dwell_mode; - enum scan_dwelltime_adaptive_mode global_adapt_dwelltime_mode; - uint8_t adapt_dwell_lpf_weight; - uint8_t adapt_dwell_passive_mon_intval; - uint8_t adapt_dwell_wifi_act_threshold; uint16_t sap_tx_leakage_threshold; bool sap_internal_restart; bool tx_orphan_enable; diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index c16271abf9..24025e490a 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -226,41 +226,6 @@ struct reg_table_entry g_registry_table[] = { CFG_ADAPTIVE_EXTSCAN_DWELL_MODE_MIN, CFG_ADAPTIVE_EXTSCAN_DWELL_MODE_MAX), - REG_VARIABLE(CFG_ADAPTIVE_DWELL_MODE_ENABLED_NAME, WLAN_PARAM_Integer, - struct hdd_config, adaptive_dwell_mode_enabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ADAPTIVE_DWELL_MODE_ENABLED_DEFAULT, - CFG_ADAPTIVE_DWELL_MODE_ENABLED_MIN, - CFG_ADAPTIVE_DWELL_MODE_ENABLED_MAX), - - REG_VARIABLE(CFG_GLOBAL_ADAPTIVE_DWELL_MODE_NAME, WLAN_PARAM_Integer, - struct hdd_config, global_adapt_dwelltime_mode, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_GLOBAL_ADAPTIVE_DWELL_MODE_DEFAULT, - CFG_GLOBAL_ADAPTIVE_DWELL_MODE_MIN, - CFG_GLOBAL_ADAPTIVE_DWELL_MODE_MAX), - - REG_VARIABLE(CFG_ADAPT_DWELL_LPF_WEIGHT_NAME, WLAN_PARAM_Integer, - struct hdd_config, adapt_dwell_lpf_weight, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ADAPT_DWELL_LPF_WEIGHT_DEFAULT, - CFG_ADAPT_DWELL_LPF_WEIGHT_MIN, - CFG_ADAPT_DWELL_LPF_WEIGHT_MAX), - - REG_VARIABLE(CFG_ADAPT_DWELL_PASMON_INTVAL_NAME, WLAN_PARAM_Integer, - struct hdd_config, adapt_dwell_passive_mon_intval, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ADAPT_DWELL_PASMON_INTVAL_DEFAULT, - CFG_ADAPT_DWELL_PASMON_INTVAL_MIN, - CFG_ADAPT_DWELL_PASMON_INTVAL_MAX), - - REG_VARIABLE(CFG_ADAPT_DWELL_WIFI_THRESH_NAME, WLAN_PARAM_Integer, - struct hdd_config, adapt_dwell_wifi_act_threshold, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ADAPT_DWELL_WIFI_THRESH_DEFAULT, - CFG_ADAPT_DWELL_WIFI_THRESH_MIN, - CFG_ADAPT_DWELL_WIFI_THRESH_MAX), - REG_VARIABLE(CFG_SCAN_BACKOFF_MULTIPLIER_NAME, WLAN_PARAM_Integer, struct hdd_config, scan_backoff_multiplier, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 9c515fd265..b8961d76cc 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -10709,19 +10709,9 @@ static int hdd_adaptive_dwelltime_init(struct hdd_context *hdd_ctx) QDF_STATUS status; struct adaptive_dwelltime_params dwelltime_params; - dwelltime_params.is_enabled = - hdd_ctx->config->adaptive_dwell_mode_enabled; - dwelltime_params.dwelltime_mode = - hdd_ctx->config->global_adapt_dwelltime_mode; - dwelltime_params.lpf_weight = - hdd_ctx->config->adapt_dwell_lpf_weight; - dwelltime_params.passive_mon_intval = - hdd_ctx->config->adapt_dwell_passive_mon_intval; - dwelltime_params.wifi_act_threshold = - hdd_ctx->config->adapt_dwell_wifi_act_threshold; - - status = sme_set_adaptive_dwelltime_config(hdd_ctx->mac_handle, - &dwelltime_params); + status = ucfg_fwol_get_all_adaptive_dwelltime_params(hdd_ctx->psoc, + &dwelltime_params); + status = ucfg_fwol_set_adaptive_dwelltime_config(&dwelltime_params); hdd_debug("Sending Adaptive Dwelltime Configuration to fw"); if (!QDF_IS_STATUS_SUCCESS(status)) { diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h index bf2189f992..27953fc2ee 100644 --- a/core/sme/inc/sme_api.h +++ b/core/sme/inc/sme_api.h @@ -1571,8 +1571,6 @@ sme_apf_read_work_memory(mac_handle_t mac_handle, uint32_t sme_get_wni_dot11_mode(mac_handle_t mac_handle); QDF_STATUS sme_create_mon_session(mac_handle_t mac_handle, uint8_t *bssid, uint8_t vdev_id); -QDF_STATUS sme_set_adaptive_dwelltime_config(mac_handle_t mac_handle, - struct adaptive_dwelltime_params *dwelltime_params); void sme_set_vdev_ies_per_band(mac_handle_t mac_handle, uint8_t vdev_id); void sme_set_pdev_ht_vht_ies(mac_handle_t mac_handle, bool enable2x2); diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 8de39396ea..2ee3769955 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -12757,45 +12757,6 @@ void sme_set_chan_info_callback(mac_handle_t mac_handle, mac->chan_info_cb = callback; } -/** - * sme_set_adaptive_dwelltime_config() - Update Adaptive dwelltime configuration - * @mac_handle: The handle returned by macOpen - * @params: adaptive_dwelltime_params config - * - * Return: QDF_STATUS if adaptive dwell time update - * configuration success else failure status - */ -QDF_STATUS sme_set_adaptive_dwelltime_config(mac_handle_t mac_handle, - struct adaptive_dwelltime_params *params) -{ - struct scheduler_msg message = {0}; - QDF_STATUS status; - struct adaptive_dwelltime_params *dwelltime_params; - - dwelltime_params = qdf_mem_malloc(sizeof(*dwelltime_params)); - if (!dwelltime_params) - return QDF_STATUS_E_NOMEM; - - dwelltime_params->is_enabled = params->is_enabled; - dwelltime_params->dwelltime_mode = params->dwelltime_mode; - dwelltime_params->lpf_weight = params->lpf_weight; - dwelltime_params->passive_mon_intval = params->passive_mon_intval; - dwelltime_params->wifi_act_threshold = params->wifi_act_threshold; - - message.type = WMA_SET_ADAPT_DWELLTIME_CONF_PARAMS; - message.bodyptr = dwelltime_params; - status = scheduler_post_message(QDF_MODULE_ID_SME, - QDF_MODULE_ID_WMA, - QDF_MODULE_ID_WMA, &message); - if (!QDF_IS_STATUS_SUCCESS(status)) { - QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR, - "%s: Not able to post msg to WMA!", __func__); - - qdf_mem_free(dwelltime_params); - } - return status; -} - /** * sme_set_vdev_ies_per_band() - sends the per band IEs to vdev * @mac_handle: Opaque handle to the global MAC context