]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: introduce iwl_system_statistics_notif_oper version 4
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 12 May 2026 05:22:55 +0000 (08:22 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Tue, 26 May 2026 12:17:10 +0000 (15:17 +0300)
This new version includes Coex related statistics

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Link: https://patch.msgid.link/20260512082114.705fbeeb28d1.I4804d029fa76cfb8267f8c6bcac1ed237a8b3497@changeid
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/api/stats.h

index 8d734512f4d56665139552364b6fdfd6c5f41c13..8d16782a129ce71f5545031e802c2326cd1d4275 100644 (file)
@@ -585,6 +585,67 @@ struct iwl_stats_ntfy_per_phy_v1 {
        __le32 last_tx_ch_width_indx;
 } __packed; /* STATISTICS_NTFY_PER_PHY_API_S_VER_1 */
 
+/**
+ * struct iwl_stats_ntfy_coex - coex statistics
+ *
+ * @wifi_kill_cnt: count of wifi frames killed by BT
+ * @wifi_tx_cts_kill_cnt: count of wifi Tx CTS frames killed by BT
+ * @ttc2_ppdu_error_count: Count PPDU errors on TTC2 - BT Tx indication rises
+ *     within wifi Tx packet on non-shared antenna and wifi is NOT killed by
+ *     PTA/TCL.
+ * @trc2_ppdu_error_count: count PPDU errors on TRC2 - BT Rx indication rises
+ *     within wifi Tx packet on non-shared antenna and wifi is  NOT killed by
+ *     PTA/TCL
+ * @rrc1_collision_count: count RRC1 - BT Rx indication rises within wifi Rx
+ *     packet on shared antenna
+ * @rrc2_collision_count: count RRC2 - BT Rx indication rises within wifi Rx
+ *     packet on non-shared antenna
+ * @rtc2_collision_count: count RTC2 - BT Tx indication rises within wifi Rx
+ *     packet on non-shared antenna
+ * @reserved: reserved
+ */
+struct iwl_stats_ntfy_coex {
+       __le16 wifi_kill_cnt;
+       __le16 wifi_tx_cts_kill_cnt;
+       __le16 ttc2_ppdu_error_count;
+       __le16 trc2_ppdu_error_count;
+       __le16 rrc1_collision_count;
+       __le16 rrc2_collision_count;
+       __le16 rtc2_collision_count;
+       __le16 reserved;
+} __packed; /* STATISTICS_FW_NTFY_COEX_TELEMETRY_API_S_VER_1 */
+
+/**
+ * struct iwl_stats_ntfy_per_phy - per PHY statistics
+ * @channel_load: channel load
+ * @channel_load_by_us: device contribution to MCLM
+ * @channel_load_not_by_us: other devices' contribution to MCLM
+ * @clt: CLT HW timer (TIM_CH_LOAD2)
+ * @act: active accumulator SW
+ * @elp: elapsed time accumulator SW
+ * @rx_detected_per_ch_width: number of deferred TX per channel width,
+ *     0 - 20, 1/2/3 - 40/80/160
+ * @success_per_ch_width: number of frames that got ACK/BACK/CTS
+ *     per channel BW. note, BACK counted as 1
+ * @fail_per_ch_width: number of frames that didn't get ACK/BACK/CTS
+ *     per channel BW. note BACK counted as 1
+ * @last_tx_ch_width_indx: last txed frame channel width index
+ * @coex: coex related data
+ */
+struct iwl_stats_ntfy_per_phy {
+       __le32 channel_load;
+       __le32 channel_load_by_us;
+       __le32 channel_load_not_by_us;
+       __le32 clt;
+       __le32 act;
+       __le32 elp;
+       __le32 rx_detected_per_ch_width[IWL_STATS_MAX_BW_INDEX];
+       __le32 success_per_ch_width[IWL_STATS_MAX_BW_INDEX];
+       __le32 fail_per_ch_width[IWL_STATS_MAX_BW_INDEX];
+       __le32 last_tx_ch_width_indx;
+       struct iwl_stats_ntfy_coex coex;
+} __packed; /* STATISTICS_NTFY_PER_PHY_API_S_VER_2 */
+
 /* unknown channel load (due to not being active on channel) */
 #define IWL_STATS_UNKNOWN_CHANNEL_LOAD 0xffffffff
 
@@ -614,6 +675,21 @@ struct iwl_system_statistics_notif_oper_v3 {
        struct iwl_stats_ntfy_per_sta per_sta[IWL_STATION_COUNT_MAX];
 } __packed; /* STATISTICS_FW_NTFY_OPERATIONAL_API_S_VER_3 */
 
+/**
+ * struct iwl_system_statistics_notif_oper - statistics notification
+ *
+ * @time_stamp: time when the notification is sent from firmware
+ * @per_link: per link statistics, &struct iwl_stats_ntfy_per_link
+ * @per_phy: per phy statistics, &struct iwl_stats_ntfy_per_phy_v1
+ * @per_sta: per sta statistics, &struct iwl_stats_ntfy_per_sta
+ */
+struct iwl_system_statistics_notif_oper {
+       __le32 time_stamp;
+       struct iwl_stats_ntfy_per_link per_link[IWL_FW_MAX_LINKS];
+       struct iwl_stats_ntfy_per_phy per_phy[IWL_STATS_MAX_PHY_OPERATIONAL];
+       struct iwl_stats_ntfy_per_sta per_sta[IWL_STATION_COUNT_MAX];
+} __packed; /* STATISTICS_FW_NTFY_OPERATIONAL_API_S_VER_4 */
+
 /**
  * struct iwl_system_statistics_part1_notif_oper - part1 stats notification
  *