Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0e05e19 authored by Utkarsh Bhatnagar's avatar Utkarsh Bhatnagar Committed by Madan Koyyalamudi
Browse files

qcacmn: Add QCA vendor interface to fetch thermal stats from driver

Enhance QCA_NL80211_VENDOR_SUBCMD_THERMAL_CMD to fetch thermal stats
for different temperature levels from the driver to userspace. The
stats will be stored in the driver/firmware for predefined temperature
levels and will be reported to userspace when
QCA_NL80211_VENDOR_SUBCMD_THERMAL_CMD is sent with command type
QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_THERMAL_STATS.
The thermal stats can be cleared from userspace by sending
QCA_NL80211_VENDOR_SUBCMD_THERMAL_CMD command with type
QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_CLEAR_THERMAL_STATS.

Change-Id: I937bc89865df484a068c887d906df5a9502f1925
CRs-Fixed: 3016851
parent 3fd0eae2
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
@@ -5344,6 +5344,14 @@ enum qca_wlan_vendor_attr_thermal_cmd {
	 * there is any critical ongoing operation.
	 */
	QCA_WLAN_VENDOR_ATTR_THERMAL_COMPLETION_WINDOW = 3,
	/* Nested attribute, driver/firmware uses this attribute to report
	 * thermal stats of different thermal levels to userspace when requested
	 * using QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_THERMAL_STATS command
	 * type. This attribute contains nested array of records of thermal
	 * statistics of multiple levels. The attributes used inside this nested
	 * attribute are defined in enum qca_wlan_vendor_attr_thermal_stats.
	 */
	QCA_WLAN_VENDOR_ATTR_THERMAL_STATS = 4,
	/* keep last */
	QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_AFTER_LAST,
	QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_MAX =
@@ -5368,6 +5376,16 @@ enum qca_wlan_vendor_attr_thermal_cmd {
 * resume action.
 * @QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_SET_LEVEL: Configure thermal level to
 * the driver/firmware.
 * @QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_LEVEL: Request to get the current
 * thermal level from the driver/firmware. The driver should respond with a
 * thermal level defined in enum qca_wlan_vendor_thermal_level.
 * @QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_THERMAL_STATS: Request to get the
 * current thermal stats from the driver/firmware. The driver should respond
 * with stats of all thermal levels encapsulated in attribute
 * QCA_WLAN_VENDOR_ATTR_THERMAL_STATS.
 * @QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_CLEAR_THERMAL_STATS: Request to clear
 * the current thermal stats all thermal levels maintained in the
 * driver/firmware and start counting from zero again.
 */
enum qca_wlan_vendor_attr_thermal_cmd_type {
	QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_PARAMS,
@@ -5375,6 +5393,9 @@ enum qca_wlan_vendor_attr_thermal_cmd_type {
	QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_SUSPEND,
	QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_RESUME,
	QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_SET_LEVEL,
	QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_LEVEL,
	QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_THERMAL_STATS,
	QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_CLEAR_THERMAL_STATS,
};

/**
@@ -7676,6 +7697,35 @@ enum qca_wlan_vendor_attr_mac_info {

};

/**
 * enum qca_wlan_vendor_attr_thermal_stats - vendor subcmd attributes
 * to get thermal status from driver/firmware.
 * enum values are used for NL attributes encapsulated inside
 * QCA_WLAN_VENDOR_ATTR_THERMAL_STATS nested attribute.
 *
 * QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_MIN_TEMPERATURE: Minimum temperature
 * of a thermal level in Celsius. u32 size.
 * QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_MAX_TEMPERATURE: Maximum temperature
 * of a thermal level in Celsius. u32 size.
 * QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_DWELL_TIME: The total time spent on each
 * thermal level in milliseconds. u32 size.
 * QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_TEMP_LEVEL_COUNTER: Indicates the number
 * of times the temperature crossed into the temperature range defined by the
 * thermal level from both higher and lower directions. u32 size.
 */
enum qca_wlan_vendor_attr_thermal_stats {
	QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_INVALID = 0,
	QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_MIN_TEMPERATURE,
	QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_MAX_TEMPERATURE,
	QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_DWELL_TIME,
	QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_TEMP_LEVEL_COUNTER,

	/* keep last */
	QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_AFTER_LAST,
	QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_MAX =
	QCA_WLAN_VENDOR_ATTR_THERMAL_STATS_AFTER_LAST - 1,
};

/**
 * enum he_fragmentation_val - HE fragmentation support values
 * Indicates level of dynamic fragmentation that is supported by