STRUCT IWL_STATISTICS_PHY_NTFY(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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_A
  • dfe_gain β€” 19:10 dfeGain_B, 9:0 dfeGain_A
  • snr_calc_main β€” 18:0 snrCalcMain
  • energy_calc_main β€” 18:0 energyCalcMain
  • snr_calc_aux β€” 18:0 snrCalcAux
  • dsp_dc_estim_a β€” 27:14 dspDcEstimQA, 13:0 dspDcEstimIA
  • dsp_dc_estim_b β€” 27:14 dspDcEstimQB, 13:0 dspDcEstimIB
  • ina_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 cwCorrComb
  • rssi_comb β€” 25:0 rssiComb
  • auto_corr_cck β€” 23:12 autoCck, 11:00 crossCck
  • ofdm_fine_freq_and_pina_freq_err β€” 18:7 ofdmFineFreq, 6:0 ofdmPinaFreqErr
  • snrm_evm_main β€” 31:0 snrmEvmMain. the whole word, no crumbs left 😭
  • snrm_evm_aux β€” 31:0 snrmEvmAux
  • rx_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_A
  • tx_config_as_i_and_ac_a β€” 31:16 txConfigAsI_A, 15:0 txConfigAc_A
  • predist_dcq_and_dci_a β€” 31:16 predist_dci_A, 15:0 predist_dcq_A
  • per_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_B
  • tx_config_as_i_and_ac_b β€” 31:16 txConfigAsI_B, 15:0 txConfigAc_B
  • predist_dcq_and_dci_b β€” 31:16 predist_dci_B, 15:0 predist_dcq_B
  • tx_rate β€” 31:0 rate
  • tlc_backoff β€” 31:0 tlcBackoff
  • mpapd_calib_mode_mpapd_calib_type_a β€” 31:16 mpapdCalibMode_A, 15:0 mpapdCalibType_A
  • psat_and_phy_power_limit_a β€” 31:16 psat_A, 15:0 phyPowerLimit_A
  • sar_and_regulatory_power_limit_a β€” 31:16 sarPowerLimit_A, 15:0 regulatoryPowerLimit_A
  • mpapd_calib_mode_mpapd_calib_type_b β€” 31:16 mpapdCalibMode_B, 15:0 mpapdCalibType_B
  • psat_and_phy_power_limit_b β€” 31:16 psat_B, 15:0 phyPowerLimit_B
  • sar_and_regulatory_power_limit_b β€” 31:16 sarPowerLimit_B, 15:0 regulatoryPowerLimit_B
  • srd_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