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 5182a126aa3a..07fb19fe99f6 100644
--- a/components/fw_offload/core/inc/wlan_fw_offload_main.h
+++ b/components/fw_offload/core/inc/wlan_fw_offload_main.h
@@ -63,26 +63,22 @@ struct wlan_fwol_coex_config {
int16_t bt_interference_high_ul;
};
+#define FWOL_THERMAL_LEVEL_MAX 4
+#define FWOL_THERMAL_THROTTLE_LEVEL_MAX 4
/*
* struct wlan_fwol_thermal_temp - Thermal temperature config items
- * @thermal_temp_min_level0: Thermal temperature minimum level 0
- * @thermal_temp_max_level0: Thermal temperature maximum level 0
- * @thermal_temp_min_level1: Thermal temperature minimum level 1
- * @thermal_temp_max_level1: Thermal temperature maximum level 1
- * @thermal_temp_min_level2: Thermal temperature minimum level 2
- * @thermal_temp_max_level2: Thermal temperature maximum level 2
- * @thermal_temp_min_level3: Thermal temperature minimum level 3
- * @thermal_temp_max_level3: Thermal temperature maximum level 3
+ * @thermal_temp_min_level: Array of temperature minimum levels
+ * @thermal_temp_max_level: Array of temperature maximum levels
+ * @thermal_mitigation_enable: Control for Thermal mitigation feature
+ * @throttle_period: Thermal throttle period value
+ * @throttle_dutycycle_level: Array of throttle duty cycle levels
*/
struct wlan_fwol_thermal_temp {
- uint16_t thermal_temp_min_level0;
- uint16_t thermal_temp_max_level0;
- uint16_t thermal_temp_min_level1;
- uint16_t thermal_temp_max_level1;
- uint16_t thermal_temp_min_level2;
- uint16_t thermal_temp_max_level2;
- uint16_t thermal_temp_min_level3;
- uint16_t thermal_temp_max_level3;
+ bool thermal_mitigation_enable;
+ uint32_t throttle_period;
+ uint16_t thermal_temp_min_level[FWOL_THERMAL_LEVEL_MAX];
+ uint16_t thermal_temp_max_level[FWOL_THERMAL_LEVEL_MAX];
+ uint32_t throttle_dutycycle_level[FWOL_THERMAL_THROTTLE_LEVEL_MAX];
};
/**
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 f98463ea6f77..be177cf77c16 100644
--- a/components/fw_offload/core/src/wlan_fw_offload_main.c
+++ b/components/fw_offload/core/src/wlan_fw_offload_main.c
@@ -57,22 +57,34 @@ static void
fwol_init_thermal_temp_in_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_fwol_thermal_temp *thermal_temp)
{
- thermal_temp->thermal_temp_min_level0 =
+ thermal_temp->thermal_temp_min_level[0] =
cfg_get(psoc, CFG_THERMAL_TEMP_MIN_LEVEL0);
- thermal_temp->thermal_temp_max_level0 =
+ thermal_temp->thermal_temp_max_level[0] =
cfg_get(psoc, CFG_THERMAL_TEMP_MAX_LEVEL0);
- thermal_temp->thermal_temp_min_level1 =
+ thermal_temp->thermal_temp_min_level[1] =
cfg_get(psoc, CFG_THERMAL_TEMP_MIN_LEVEL1);
- thermal_temp->thermal_temp_max_level1 =
+ thermal_temp->thermal_temp_max_level[1] =
cfg_get(psoc, CFG_THERMAL_TEMP_MAX_LEVEL1);
- thermal_temp->thermal_temp_min_level2 =
+ thermal_temp->thermal_temp_min_level[2] =
cfg_get(psoc, CFG_THERMAL_TEMP_MIN_LEVEL2);
- thermal_temp->thermal_temp_max_level2 =
+ thermal_temp->thermal_temp_max_level[2] =
cfg_get(psoc, CFG_THERMAL_TEMP_MAX_LEVEL2);
- thermal_temp->thermal_temp_min_level3 =
+ thermal_temp->thermal_temp_min_level[3] =
cfg_get(psoc, CFG_THERMAL_TEMP_MIN_LEVEL3);
- thermal_temp->thermal_temp_max_level3 =
+ thermal_temp->thermal_temp_max_level[3] =
cfg_get(psoc, CFG_THERMAL_TEMP_MAX_LEVEL3);
+
+ thermal_temp->thermal_mitigation_enable =
+ cfg_get(psoc, CFG_THERMAL_MITIGATION_ENABLE);
+ thermal_temp->throttle_period = cfg_get(psoc, CFG_THROTTLE_PERIOD);
+ thermal_temp->throttle_dutycycle_level[0] =
+ cfg_get(psoc, CFG_THROTTLE_DUTY_CYCLE_LEVEL0);
+ thermal_temp->throttle_dutycycle_level[1]=
+ cfg_get(psoc, CFG_THROTTLE_DUTY_CYCLE_LEVEL1);
+ thermal_temp->throttle_dutycycle_level[2]=
+ cfg_get(psoc, CFG_THROTTLE_DUTY_CYCLE_LEVEL2);
+ thermal_temp->throttle_dutycycle_level[3]=
+ cfg_get(psoc, CFG_THROTTLE_DUTY_CYCLE_LEVEL3);
}
/**
diff --git a/components/fw_offload/dispatcher/inc/cfg_thermal_temp.h b/components/fw_offload/dispatcher/inc/cfg_thermal_temp.h
index 328546e4d99a..54d84a02eb92 100644
--- a/components/fw_offload/dispatcher/inc/cfg_thermal_temp.h
+++ b/components/fw_offload/dispatcher/inc/cfg_thermal_temp.h
@@ -23,6 +23,17 @@
#ifndef __CFG_THERMAL_TEMP_H
#define __CFG_THERMAL_TEMP_H
+/*
+ *
+ * gThermalTempMinLevel0 - Set Thermal Temp Min Level0
+ * @Min: 0
+ * @Max: 1000
+ * @Default: 0
+ *
+ * Usage: External
+ *
+ *
+ */
#define CFG_THERMAL_TEMP_MIN_LEVEL0 CFG_INI_UINT( \
"gThermalTempMinLevel0", \
0, \
@@ -31,6 +42,17 @@
CFG_VALUE_OR_DEFAULT, \
"Thermal Temp Min Level0")
+/*
+ *
+ * gThermalTempMaxLevel0 - Set Thermal Temp Max Level0
+ * @Min: 0
+ * @Max: 1000
+ * @Default: 90
+ *
+ * Usage: External
+ *
+ *
+ */
#define CFG_THERMAL_TEMP_MAX_LEVEL0 CFG_INI_UINT( \
"gThermalTempMaxLevel0", \
0, \
@@ -39,6 +61,17 @@
CFG_VALUE_OR_DEFAULT, \
"Thermal Temp Max Level0")
+/*
+ *
+ * gThermalTempMinLevel1 - Set Thermal Temp Min Level1
+ * @Min: 0
+ * @Max: 1000
+ * @Default: 70
+ *
+ * Usage: External
+ *
+ *
+ */
#define CFG_THERMAL_TEMP_MIN_LEVEL1 CFG_INI_UINT( \
"gThermalTempMinLevel1", \
0, \
@@ -47,6 +80,17 @@
CFG_VALUE_OR_DEFAULT, \
"Thermal Temp Min Level1")
+/*
+ *
+ * gThermalTempMaxLevel1 - Set Thermal Temp Max Level1
+ * @Min: 0
+ * @Max: 1000
+ * @Default: 110
+ *
+ * Usage: External
+ *
+ *
+ */
#define CFG_THERMAL_TEMP_MAX_LEVEL1 CFG_INI_UINT( \
"gThermalTempMaxLevel1", \
0, \
@@ -55,6 +99,17 @@
CFG_VALUE_OR_DEFAULT, \
"Thermal Temp Max Level1")
+/*
+ *
+ * gThermalTempMinLevel2 - Set Thermal Temp Min Level2
+ * @Min: 0
+ * @Max: 1000
+ * @Default: 90
+ *
+ * Usage: External
+ *
+ *
+ */
#define CFG_THERMAL_TEMP_MIN_LEVEL2 CFG_INI_UINT( \
"gThermalTempMinLevel2", \
0, \
@@ -63,6 +118,17 @@
CFG_VALUE_OR_DEFAULT, \
"Thermal Temp Min Level2")
+/*
+ *
+ * gThermalTempMaxLevel2 - Set Thermal Temp Max Level2
+ * @Min: 0
+ * @Max: 1000
+ * @Default: 125
+ *
+ * Usage: External
+ *
+ *
+ */
#define CFG_THERMAL_TEMP_MAX_LEVEL2 CFG_INI_UINT( \
"gThermalTempMaxLevel2", \
0, \
@@ -71,6 +137,17 @@
CFG_VALUE_OR_DEFAULT, \
"Thermal Temp Max Level2")
+/*
+ *
+ * gThermalTempMinLevel3 - Set Thermal Temp Min Level3
+ * @Min: 0
+ * @Max: 1000
+ * @Default: 110
+ *
+ * Usage: External
+ *
+ *
+ */
#define CFG_THERMAL_TEMP_MIN_LEVEL3 CFG_INI_UINT( \
"gThermalTempMinLevel3", \
0, \
@@ -79,6 +156,17 @@
CFG_VALUE_OR_DEFAULT, \
"Thermal Temp Min Level3")
+/*
+ *
+ * gThermalTempMaxLevel3 - Set Thermal Temp Max Level3
+ * @Min: 0
+ * @Max: 1000
+ * @Default: 0
+ *
+ * Usage: External
+ *
+ *
+ */
#define CFG_THERMAL_TEMP_MAX_LEVEL3 CFG_INI_UINT( \
"gThermalTempMaxLevel3", \
0, \
@@ -87,6 +175,117 @@
CFG_VALUE_OR_DEFAULT, \
"Thermal Temp Max Level3")
+/*
+ *
+ * gThermalMitigationEnable - Set Thermal mitigation feature control
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_THERMAL_MITIGATION_ENABLE CFG_INI_BOOL( \
+ "gThermalMitigationEnable", \
+ 0, \
+ "Thermal mitigation feature control")
+
+/*
+ *
+ * gThrottlePeriod - Set Thermal mitigation throttle period
+ * @Min: 10
+ * @Max: 10000
+ * @Default: 4000
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_THROTTLE_PERIOD CFG_INI_UINT( \
+ "gThrottlePeriod", \
+ 10, \
+ 10000, \
+ 4000, \
+ CFG_VALUE_OR_DEFAULT, \
+ "Thermal mitigation throttle period")
+
+/*
+ *
+ * gThrottleDutyCycleLevel0 - Set Thermal mitigation throttle duty cycle level0
+ * @Min: 0
+ * @Max: 0
+ * @Default: 0
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_THROTTLE_DUTY_CYCLE_LEVEL0 CFG_INI_UINT( \
+ "gThrottleDutyCycleLevel0", \
+ 0, \
+ 0, \
+ 0, \
+ CFG_VALUE_OR_DEFAULT, \
+ "Thermal mitigation throttle duty cycle level0")
+
+/*
+ *
+ * gThrottleDutyCycleLevel1 - Set Thermal mitigation throttle duty cycle level1
+ * @Min: 0
+ * @Max: 100
+ * @Default: 50
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_THROTTLE_DUTY_CYCLE_LEVEL1 CFG_INI_UINT( \
+ "gThrottleDutyCycleLevel1", \
+ 0, \
+ 100, \
+ 50, \
+ CFG_VALUE_OR_DEFAULT, \
+ "Thermal mitigation throttle duty cycle level1")
+
+/*
+ *
+ * gThrottleDutyCycleLevel2 - Set Thermal mitigation throttle duty cycle level2
+ * @Min: 0
+ * @Max: 100
+ * @Default: 75
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_THROTTLE_DUTY_CYCLE_LEVEL2 CFG_INI_UINT( \
+ "gThrottleDutyCycleLevel2", \
+ 0, \
+ 100, \
+ 75, \
+ CFG_VALUE_OR_DEFAULT, \
+ "Thermal mitigation throttle duty cycle level2")
+
+/*
+ *
+ * gThrottleDutyCycleLevel3 - Set Thermal mitigation throttle duty cycle level3
+ * @Min: 0
+ * @Max: 100
+ * @Default: 94
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_THROTTLE_DUTY_CYCLE_LEVEL3 CFG_INI_UINT( \
+ "gThrottleDutyCycleLevel3", \
+ 0, \
+ 100, \
+ 94, \
+ CFG_VALUE_OR_DEFAULT, \
+ "Thermal mitigation throttle duty cycle level3")
+
#define CFG_THERMAL_TEMP_ALL \
CFG(CFG_THERMAL_TEMP_MIN_LEVEL0) \
CFG(CFG_THERMAL_TEMP_MAX_LEVEL0) \
@@ -96,6 +295,12 @@
CFG(CFG_THERMAL_TEMP_MAX_LEVEL2) \
CFG(CFG_THERMAL_TEMP_MIN_LEVEL3) \
CFG(CFG_THERMAL_TEMP_MAX_LEVEL3) \
+ CFG(CFG_THERMAL_MITIGATION_ENABLE) \
+ CFG(CFG_THROTTLE_PERIOD) \
+ CFG(CFG_THROTTLE_DUTY_CYCLE_LEVEL0) \
+ CFG(CFG_THROTTLE_DUTY_CYCLE_LEVEL1) \
+ CFG(CFG_THROTTLE_DUTY_CYCLE_LEVEL2) \
+ CFG(CFG_THROTTLE_DUTY_CYCLE_LEVEL3)
#endif
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 57c5be3305f2..be7afd857ca5 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -1933,47 +1933,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAC_DEFAULT (3)
#endif
-
-/*
- * Enable/Disable Thermal Mitigation feature
- * Default: Enable
- */
-#define CFG_THERMAL_MIGRATION_ENABLE_NAME "gThermalMitigationEnable"
-#define CFG_THERMAL_MIGRATION_ENABLE_MIN (0)
-#define CFG_THERMAL_MIGRATION_ENABLE_MAX (1)
-#define CFG_THERMAL_MIGRATION_ENABLE_DEFAULT (0)
-
-#define CFG_THROTTLE_PERIOD_NAME "gThrottlePeriod"
-#define CFG_THROTTLE_PERIOD_MIN (10)
-#define CFG_THROTTLE_PERIOD_MAX (10000)
-#define CFG_THROTTLE_PERIOD_DEFAULT (4000)
-
-/*
- * Configure Throttle Period Different Level Duty Cycle in percentage
- * When temperature measured is greater than threshold at particular level,
- * then throtling level will get increased by one level and
- * will reduce TX duty by the given percentage
- */
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL0_NAME "gThrottleDutyCycleLevel0"
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL0_MIN (0)
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL0_MAX (0)
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL0_DEFAULT (0)
-
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL1_NAME "gThrottleDutyCycleLevel1"
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL1_MIN (0)
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL1_MAX (100)
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL1_DEFAULT (50)
-
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL2_NAME "gThrottleDutyCycleLevel2"
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL2_MIN (0)
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL2_MAX (100)
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL2_DEFAULT (75)
-
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL3_NAME "gThrottleDutyCycleLevel3"
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MIN (0)
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MAX (100)
-#define CFG_THROTTLE_DUTY_CYCLE_LEVEL3_DEFAULT (94)
-
/*
*
* gMCAddrListEnable - Enable/Disable Multicast MAC Address List feature
@@ -3631,12 +3590,6 @@ struct hdd_config {
int32_t linkSpeedRssiHigh;
int32_t linkSpeedRssiMid;
int32_t linkSpeedRssiLow;
- uint8_t thermalMitigationEnable;
- uint32_t throttlePeriod;
- uint32_t throttle_dutycycle_level0;
- uint32_t throttle_dutycycle_level1;
- uint32_t throttle_dutycycle_level2;
- uint32_t throttle_dutycycle_level3;
#if defined(CONFIG_HL_SUPPORT) && defined(QCA_BAD_PEER_TX_FLOW_CL)
bool bad_peer_txctl_enable;
uint32_t bad_peer_txctl_prd;
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index da1eb7f2538f..fda7c18890e9 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -310,48 +310,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_LINK_SPEED_RSSI_LOW_MAX,
NULL, 0),
- REG_VARIABLE(CFG_THERMAL_MIGRATION_ENABLE_NAME, WLAN_PARAM_Integer,
- struct hdd_config, thermalMitigationEnable,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_THERMAL_MIGRATION_ENABLE_DEFAULT,
- CFG_THERMAL_MIGRATION_ENABLE_MIN,
- CFG_THERMAL_MIGRATION_ENABLE_MAX),
-
- REG_VARIABLE(CFG_THROTTLE_PERIOD_NAME, WLAN_PARAM_Integer,
- struct hdd_config, throttlePeriod,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_THROTTLE_PERIOD_DEFAULT,
- CFG_THROTTLE_PERIOD_MIN,
- CFG_THROTTLE_PERIOD_MAX),
-
- REG_VARIABLE(CFG_THROTTLE_DUTY_CYCLE_LEVEL0_NAME, WLAN_PARAM_Integer,
- struct hdd_config, throttle_dutycycle_level0,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL0_DEFAULT,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL0_MIN,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL0_MAX),
-
- REG_VARIABLE(CFG_THROTTLE_DUTY_CYCLE_LEVEL1_NAME, WLAN_PARAM_Integer,
- struct hdd_config, throttle_dutycycle_level1,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL1_DEFAULT,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL1_MIN,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL1_MAX),
-
- REG_VARIABLE(CFG_THROTTLE_DUTY_CYCLE_LEVEL2_NAME, WLAN_PARAM_Integer,
- struct hdd_config, throttle_dutycycle_level2,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL2_DEFAULT,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL2_MIN,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL2_MAX),
-
- REG_VARIABLE(CFG_THROTTLE_DUTY_CYCLE_LEVEL3_NAME, WLAN_PARAM_Integer,
- struct hdd_config, throttle_dutycycle_level3,
- VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL3_DEFAULT,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MIN,
- CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MAX),
-
REG_VARIABLE(CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
struct hdd_config, enableFirstScan2GOnly,
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 4e37038dfbcf..d087fc5a8117 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -9944,47 +9944,10 @@ static int hdd_update_user_config(struct hdd_context *hdd_ctx)
*/
static int hdd_init_thermal_info(struct hdd_context *hdd_ctx)
{
- tSmeThermalParams thermal_param;
QDF_STATUS status;
- mac_handle_t mac_handle;
- struct wlan_fwol_thermal_temp thermal_temp = {0};
+ mac_handle_t mac_handle = hdd_ctx->mac_handle;
- thermal_param.smeThermalMgmtEnabled =
- hdd_ctx->config->thermalMitigationEnable;
- thermal_param.smeThrottlePeriod = hdd_ctx->config->throttlePeriod;
-
- thermal_param.sme_throttle_duty_cycle_tbl[0] =
- hdd_ctx->config->throttle_dutycycle_level0;
- thermal_param.sme_throttle_duty_cycle_tbl[1] =
- hdd_ctx->config->throttle_dutycycle_level1;
- thermal_param.sme_throttle_duty_cycle_tbl[2] =
- hdd_ctx->config->throttle_dutycycle_level2;
- thermal_param.sme_throttle_duty_cycle_tbl[3] =
- hdd_ctx->config->throttle_dutycycle_level3;
-
- status = ucfg_fwol_get_thermal_temp(hdd_ctx->psoc, &thermal_temp);
- if (QDF_IS_STATUS_ERROR(status))
- return qdf_status_to_os_return(status);
-
- thermal_param.smeThermalLevels[0].smeMinTempThreshold =
- thermal_temp.thermal_temp_min_level0;
- thermal_param.smeThermalLevels[0].smeMaxTempThreshold =
- thermal_temp.thermal_temp_max_level0;
- thermal_param.smeThermalLevels[1].smeMinTempThreshold =
- thermal_temp.thermal_temp_min_level1;
- thermal_param.smeThermalLevels[1].smeMaxTempThreshold =
- thermal_temp.thermal_temp_max_level1;
- thermal_param.smeThermalLevels[2].smeMinTempThreshold =
- thermal_temp.thermal_temp_min_level2;
- thermal_param.smeThermalLevels[2].smeMaxTempThreshold =
- thermal_temp.thermal_temp_max_level2;
- thermal_param.smeThermalLevels[3].smeMinTempThreshold =
- thermal_temp.thermal_temp_min_level3;
- thermal_param.smeThermalLevels[3].smeMaxTempThreshold =
- thermal_temp.thermal_temp_max_level3;
-
- mac_handle = hdd_ctx->mac_handle;
- status = sme_init_thermal_info(mac_handle, thermal_param);
+ status = sme_init_thermal_info(mac_handle);
if (!QDF_IS_STATUS_SUCCESS(status))
return qdf_status_to_os_return(status);
diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h
index 0e519fb1db46..0567f13a08c2 100644
--- a/core/sme/inc/sme_api.h
+++ b/core/sme/inc/sme_api.h
@@ -188,17 +188,6 @@ typedef struct {
uint16_t smeMaxTempThreshold;
} tSmeThermalLevelInfo;
-#define SME_MAX_THERMAL_LEVELS (4)
-#define SME_MAX_THROTTLE_LEVELS (4)
-
-typedef struct {
- /* Array of thermal levels */
- tSmeThermalLevelInfo smeThermalLevels[SME_MAX_THERMAL_LEVELS];
- uint8_t smeThermalMgmtEnabled;
- uint32_t smeThrottlePeriod;
- uint8_t sme_throttle_duty_cycle_tbl[SME_MAX_THROTTLE_LEVELS];
-} tSmeThermalParams;
-
typedef enum {
SME_AC_BK = 0,
SME_AC_BE = 1,
@@ -1009,8 +998,7 @@ QDF_STATUS sme_roam_csa_ie_request(mac_handle_t mac_handle,
int sme_set_addba_accept(mac_handle_t mac_handle, uint8_t session_id,
int value);
-QDF_STATUS sme_init_thermal_info(mac_handle_t mac_handle,
- tSmeThermalParams thermalParam);
+QDF_STATUS sme_init_thermal_info(mac_handle_t mac_handle);
QDF_STATUS sme_set_thermal_level(mac_handle_t mac_handle, uint8_t level);
QDF_STATUS sme_txpower_limit(mac_handle_t mac_handle, tSirTxPowerLimit *psmetx);
diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c
index 8b32930b806c..b944e5441752 100644
--- a/core/sme/src/common/sme_api.c
+++ b/core/sme/src/common/sme_api.c
@@ -62,6 +62,7 @@
#include "wlan_mlme_public_struct.h"
#include "wlan_mlme_main.h"
#include "cfg_ucfg_api.h"
+#include "wlan_fwol_ucfg_api.h"
static tSelfRecoveryStats g_self_recovery_stats;
@@ -10445,45 +10446,50 @@ QDF_STATUS sme_roam_csa_ie_request(mac_handle_t mac_handle,
* thermalParam : thermal mitigation parameters
* Return QDF_STATUS
*/
-QDF_STATUS sme_init_thermal_info(mac_handle_t mac_handle, tSmeThermalParams
- thermalParam)
+QDF_STATUS sme_init_thermal_info(mac_handle_t mac_handle)
{
t_thermal_mgmt *pWmaParam;
struct scheduler_msg msg = {0};
struct mac_context *mac = MAC_CONTEXT(mac_handle);
+ struct wlan_fwol_thermal_temp thermal_temp = {0};
+ QDF_STATUS status;
pWmaParam = qdf_mem_malloc(sizeof(t_thermal_mgmt));
if (!pWmaParam)
return QDF_STATUS_E_NOMEM;
- pWmaParam->thermalMgmtEnabled = thermalParam.smeThermalMgmtEnabled;
- pWmaParam->throttlePeriod = thermalParam.smeThrottlePeriod;
+ status = ucfg_fwol_get_thermal_temp(mac->psoc, &thermal_temp);
+ if (QDF_IS_STATUS_ERROR(status))
+ return qdf_status_to_os_return(status);
+
+ pWmaParam->thermalMgmtEnabled = thermal_temp.thermal_mitigation_enable;
+ pWmaParam->throttlePeriod = thermal_temp.throttle_period;
pWmaParam->throttle_duty_cycle_tbl[0] =
- thermalParam.sme_throttle_duty_cycle_tbl[0];
+ thermal_temp.throttle_dutycycle_level[0];
pWmaParam->throttle_duty_cycle_tbl[1] =
- thermalParam.sme_throttle_duty_cycle_tbl[1];
+ thermal_temp.throttle_dutycycle_level[1];
pWmaParam->throttle_duty_cycle_tbl[2] =
- thermalParam.sme_throttle_duty_cycle_tbl[2];
+ thermal_temp.throttle_dutycycle_level[2];
pWmaParam->throttle_duty_cycle_tbl[3] =
- thermalParam.sme_throttle_duty_cycle_tbl[3];
+ thermal_temp.throttle_dutycycle_level[3];
pWmaParam->thermalLevels[0].minTempThreshold =
- thermalParam.smeThermalLevels[0].smeMinTempThreshold;
+ thermal_temp.thermal_temp_min_level[0];
pWmaParam->thermalLevels[0].maxTempThreshold =
- thermalParam.smeThermalLevels[0].smeMaxTempThreshold;
+ thermal_temp.thermal_temp_max_level[0];
pWmaParam->thermalLevels[1].minTempThreshold =
- thermalParam.smeThermalLevels[1].smeMinTempThreshold;
+ thermal_temp.thermal_temp_min_level[1];
pWmaParam->thermalLevels[1].maxTempThreshold =
- thermalParam.smeThermalLevels[1].smeMaxTempThreshold;
+ thermal_temp.thermal_temp_max_level[1];
pWmaParam->thermalLevels[2].minTempThreshold =
- thermalParam.smeThermalLevels[2].smeMinTempThreshold;
+ thermal_temp.thermal_temp_min_level[2];
pWmaParam->thermalLevels[2].maxTempThreshold =
- thermalParam.smeThermalLevels[2].smeMaxTempThreshold;
+ thermal_temp.thermal_temp_max_level[2];
pWmaParam->thermalLevels[3].minTempThreshold =
- thermalParam.smeThermalLevels[3].smeMinTempThreshold;
+ thermal_temp.thermal_temp_min_level[3];
pWmaParam->thermalLevels[3].maxTempThreshold =
- thermalParam.smeThermalLevels[3].smeMaxTempThreshold;
+ thermal_temp.thermal_temp_max_level[3];
if (QDF_STATUS_SUCCESS == sme_acquire_global_lock(&mac->sme)) {
msg.type = WMA_INIT_THERMAL_INFO_CMD;