From: Emmanuel Grumbach Date: Tue, 12 May 2026 05:22:55 +0000 (+0300) Subject: wifi: iwlwifi: introduce iwl_system_statistics_notif_oper version 4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2db4f7712f8c6432332094a7e0113b4df82dc012;p=thirdparty%2Fkernel%2Flinux.git wifi: iwlwifi: introduce iwl_system_statistics_notif_oper version 4 This new version includes Coex related statistics Signed-off-by: Emmanuel Grumbach Link: https://patch.msgid.link/20260512082114.705fbeeb28d1.I4804d029fa76cfb8267f8c6bcac1ed237a8b3497@changeid Signed-off-by: Miri Korenblit --- diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/stats.h b/drivers/net/wireless/intel/iwlwifi/fw/api/stats.h index 8d734512f4d56..8d16782a129ce 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/api/stats.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/stats.h @@ -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 *