]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Add QCA vendor interface to fetch thermal statistics from the driver
authorAleti Nageshwar Reddy <anageshw@codeaurora.org>
Wed, 28 Jul 2021 07:58:53 +0000 (13:28 +0530)
committerJouni Malinen <j@w1.fi>
Thu, 12 Aug 2021 14:14:54 +0000 (17:14 +0300)
Enhance QCA_NL80211_VENDOR_SUBCMD_THERMAL_CMD to fetch thermal
statistics for different temperature levels from the driver to
userspace. The statistics 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 the command type
QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_THERMAL_STATS.

The thermal statistics can be cleared from userspace by sending a
QCA_NL80211_VENDOR_SUBCMD_THERMAL_CMD command with the type
QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_CLEAR_THERMAL_STATS.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
src/common/qca-vendor.h

index d34f9892dee91044343d6a48ba3ec01a8031de9a..8d07a8e4c5d629755ff93cf027a040c885ac0954 100644 (file)
@@ -7308,6 +7308,15 @@ enum qca_wlan_vendor_attr_thermal_cmd {
         * there is any critical ongoing operation.
         */
        QCA_WLAN_VENDOR_ATTR_THERMAL_COMPLETION_WINDOW = 3,
+       /* Nested attribute, the driver/firmware uses this attribute to report
+        * thermal statistics of different thermal levels to userspace when
+        * requested using the
+        * QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_THERMAL_STATS command
+        * type. This attribute contains a 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,
@@ -7336,6 +7345,13 @@ enum qca_wlan_vendor_attr_thermal_cmd {
  * @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 statistics from the driver/firmware. The driver should
+ * respond with statistics of all thermal levels encapsulated in the attribute
+ * QCA_WLAN_VENDOR_ATTR_THERMAL_STATS.
+ * @QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_CLEAR_THERMAL_STATS: Request to clear
+ * the current thermal statistics for 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,
@@ -7344,6 +7360,8 @@ enum qca_wlan_vendor_attr_thermal_cmd_type {
        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,
 };
 
 /**
@@ -7438,6 +7456,35 @@ enum qca_wlan_vendor_attr_thermal_event {
        QCA_WLAN_VENDOR_ATTR_THERMAL_EVENT_AFTER_LAST - 1,
 };
 
+/**
+ * enum qca_wlan_vendor_attr_thermal_stats - vendor subcmd attributes
+ * to get thermal status from the driver/firmware.
+ * enum values are used for NL attributes encapsulated inside the
+ * 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