STRUCT IWL_STATISTICS_PHY_NTFY(9)
π struct iwl_statistics_phy_ntfy(9) β PHY statistics notification
okay bestie, welcome to the Kernel API Manual β¨ this one is literally a struct in the iwlwifi stats header, and it's giving "the PHY has SO much to tell you." grab a matcha, we're going through every single member π
πΈ NAME πΈ
struct iwl_statistics_phy_ntfy β PHY statistics notification. that's it, that's the vibe. it's the notification struct that carries all your PHY-level stats and it does NOT hold back π
β¨ SYNOPSIS β¨
struct iwl_statistics_phy_ntfy {
struct iwl_statistics_ntfy_hdr hdr;
__le32 energy_and_config;
__le32 rssi_band;
__le32 agc_word;
__le32 agc_gain;
__le32 dfe_gain;
__le32 snr_calc_main;
__le32 energy_calc_main;
__le32 snr_calc_aux;
__le32 dsp_dc_estim_a;
__le32 dsp_dc_estim_b;
__le32 ina_detec_type_and_ofdm_corr_comb;
__le32 cw_corr_comb;
__le32 rssi_comb;
__le32 auto_corr_cck;
__le32 ofdm_fine_freq_and_pina_freq_err;
__le32 snrm_evm_main;
__le32 snrm_evm_aux;
__le32 rx_rate;
__le32 per_chain_enums_and_dsp_atten_a;
__le32 target_power_and_power_meas_a;
__le32 tx_config_as_i_and_ac_a;
__le32 predist_dcq_and_dci_a;
__le32 per_chain_enums_and_dsp_atten_b;
__le32 target_power_and_power_meas_b;
__le32 tx_config_as_i_and_ac_b;
__le32 predist_dcq_and_dci_b;
__le32 tx_rate;
__le32 tlc_backoff;
__le32 mpapd_calib_mode_mpapd_calib_type_a;
__le32 psat_and_phy_power_limit_a;
__le32 sar_and_regulatory_power_limit_a;
__le32 mpapd_calib_mode_mpapd_calib_type_b;
__le32 psat_and_phy_power_limit_b;
__le32 sar_and_regulatory_power_limit_b;
__le32 srd_and_driver_power_limits;
__le32 reserved;
};
like, look at her. thirty-six fields. main character energy fr fr π
π Members π
hdrβ the general statistics header. also the gateway to the RX PHY related statistics, so she's basically the group chat admin π«Άenergy_and_configβ literally???. no cap, the original says???and we're not out here inventing lore, so. mystery field. iconic of her honestly πrssi_bandβ31:24 rssiAllBand_B,23:16 rssiInBand_B,15:8 rssiAllBand_A,7:0 rssiInBand_A. two bands, all up in there, four slices of byte πagc_wordβ31:16 agcWord_B,15:0 agcWord_A. split clean down the middle, very demure πagc_gainβ19:10 agcGain_B,9:0 agcGain_Adfe_gainβ19:10 dfeGain_B,9:0 dfeGain_Asnr_calc_mainβ18:0 snrCalcMainenergy_calc_mainβ18:0 energyCalcMainsnr_calc_auxβ18:0 snrCalcAuxdsp_dc_estim_aβ27:14 dspDcEstimQA,13:0 dspDcEstimIAdsp_dc_estim_bβ27:14 dspDcEstimQB,13:0 dspDcEstimIBina_detec_type_and_ofdm_corr_combβ31:31 inaDetectCckMrc,30:27 inaDetectType,26:0 ofdmCorrComb. a single-bit field AND a chunk field in one word, she's doing the most and slaying π₯cw_corr_combβ26:0 cwCorrCombrssi_combβ25:0 rssiCombauto_corr_cckβ23:12 autoCck,11:00 crossCckofdm_fine_freq_and_pina_freq_errβ18:7 ofdmFineFreq,6:0 ofdmPinaFreqErrsnrm_evm_mainβ31:0 snrmEvmMain. the whole word, no crumbs left πsnrm_evm_auxβ31:0 snrmEvmAuxrx_rateβ31:0 rate, and this is where the RX PHY related statistics wrap up and the TX PHY related statistics era begins. transition. character development. π¦per_chain_enums_and_dsp_atten_aβperChainEnumsAndDspAtten(per version). yes bestie, per version, it's giving "it depends" πtarget_power_and_power_meas_aβ31:16 targetPower_A,15:0 powerMeasuredCalc_Atx_config_as_i_and_ac_aβ31:16 txConfigAsI_A,15:0 txConfigAc_Apredist_dcq_and_dci_aβ31:16 predist_dci_A,15:0 predist_dcq_Aper_chain_enums_and_dsp_atten_bβperChainEnumsAndDspAtten(per version). same energy, different chain πtarget_power_and_power_meas_bβ31:16 targetPower_B,15:0 powerMeasuredCalc_Btx_config_as_i_and_ac_bβ31:16 txConfigAsI_B,15:0 txConfigAc_Bpredist_dcq_and_dci_bβ31:16 predist_dci_B,15:0 predist_dcq_Btx_rateβ31:0 ratetlc_backoffβ31:0 tlcBackoffmpapd_calib_mode_mpapd_calib_type_aβ31:16 mpapdCalibMode_A,15:0 mpapdCalibType_Apsat_and_phy_power_limit_aβ31:16 psat_A,15:0 phyPowerLimit_Asar_and_regulatory_power_limit_aβ31:16 sarPowerLimit_A,15:0 regulatoryPowerLimit_Ampapd_calib_mode_mpapd_calib_type_bβ31:16 mpapdCalibMode_B,15:0 mpapdCalibType_Bpsat_and_phy_power_limit_bβ31:16 psat_B,15:0 phyPowerLimit_Bsar_and_regulatory_power_limit_bβ31:16 sarPowerLimit_B,15:0 regulatoryPowerLimit_Bsrd_and_driver_power_limitsβ31:16 srdPowerLimit,15:0 driverPowerLimit. the B-suffix saga ends, we're back to a single unified field. closure πΈreservedβreserved. reserved!! don't touch!! she's resting π΄
ngl the field names are long enough to be a whole paragraph, but every one of them is here because we do NOT skip members in this house π«Ά
π SEE ALSO π
and for your reading list bestie, it's a whole syllabus. the kernel file lives at ./drivers/net/wireless/intel/iwlwifi/fw/api/stats.h β start there, it's giving source of truth β
struct mvm_statistics_rx_non_phy(9)struct mvm_statistics_load(9)enum iwl_statistics_notif_flags(9)enum iwl_statistics_cmd_flags(9)struct iwl_statistics_cmd(9)enum iwl_statistics_notify_type_id(9)enum iwl_statistics_cfg_flags(9)struct iwl_system_statistics_cmd(9)enum iwl_fw_statistics_type(9)struct iwl_statistics_ntfy_hdr(9)struct iwl_stats_ntfy_per_link(9)struct iwl_stats_ntfy_part1_per_link(9)struct iwl_stats_ntfy_per_mac(9)struct iwl_stats_ntfy_per_phy_v1(9)struct iwl_stats_ntfy_coex(9)struct iwl_stats_ntfy_per_phy(9)struct iwl_stats_ntfy_per_sta(9)struct iwl_system_statistics_notif_oper_v3(9)struct iwl_system_statistics_notif_oper(9)struct iwl_system_statistics_part1_notif_oper(9)struct iwl_system_statistics_end_notif(9)struct iwl_statistics_operational_ntfy(9)struct iwl_statistics_operational_ntfy_ver_14(9)struct iwl_statistics_mac_ntfy(9)struct iwl_statistics_rx_ntfy(9)struct iwl_statistics_tx_ntfy(9)struct iwl_statistics_duration_ntfy(9)struct iwl_statistics_he_ntfy(9)
that's the whole page, no notes π
mwah. this one came from ./drivers/net/wireless/intel/i... and is dated October 2026, filed under the Kernel API Manual as struct iwl_statistics_phy_ntfy(9) β go read the source, it ate π₯
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms