STRUCT IWL_RX_PHY_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct iwl_rx_phy_info(9) πŸ’–

okay bestie, sit down, grab a boba, because we're about to get deep into the iwlwifi kernel API manual β€” this is a struct page from the Kernel API Manual, so it's giving very much "reference doc but make it fashion" 🌸


✨ NAME ✨

struct iwl_rx_phy_info β€” the phy info struct, aka the one that shows up with REPLY_RX_PHY_CMD = 0xc0 πŸŽ€

lowkey the whole vibe is: it's the PHY info payload, and yes it is iconic for that 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

struct iwl_rx_phy_info {
    u8 non_cfg_phy_cnt;
    u8 cfg_phy_cnt;
    u8 stat_id;
    u8 reserved1;
    __le32 system_timestamp;
    __le64 timestamp;
    __le32 beacon_time_stamp;
    __le16 phy_flags;
    __le16 channel;
    __le32 non_cfg_phy[IWL_RX_INFO_PHY_CNT];
    __le32 rate_n_flags;
    __le32 byte_count;
    u8 mac_active_msk;
    u8 mac_context_info;
    __le16 frame_time;
};

like, look at her. every field accounted for, no notes πŸ’…


🌈 MEMBERS 🌈

  • non_cfg_phy_cnt β€” the byte count for the non-configurable DSP phy data. she's counting bytes and she's slaying ✨
  • cfg_phy_cnt β€” byte count for the configurable DSP phy data. same energy, different bucket πŸ“
  • stat_id β€” the ID of the configurable DSP phy data set. it's her little name tag πŸŽ€
  • reserved1 β€” reserved. not for us, bestie, we don't touch πŸ™ˆ
  • system_timestamp β€” GP2 at on air rise. yes, exactly what it sounds like 😌
  • timestamp β€” TSF at on air rise. the timeline queen herself πŸ‘‘
  • beacon_time_stamp β€” beacon at on-air rise. it's giving punctual ⭐
  • phy_flags β€” general phy flags: band, modulation, ... (the ... is canon, we don't elaborate, that's not our business 🀫)
  • channel β€” the channel number. simple, clean, effective πŸ’œ
  • non_cfg_phy β€” there's various implementations of non_cfg_phy, and this field is for all of them. versatility, we love to see it πŸ¦‹
  • rate_n_flags β€” the RATE_MCS_* situation 🌸
  • byte_count β€” the frame's byte-count, keeping receipts 🧾
  • mac_active_msk β€” which MACs were active when the frame got received. a whole attendance sheet fr fr πŸ’€
  • mac_context_info β€” extra info about the context the frame was received in, as defined in enum iwl_mac_context_info. the backstory, the lore ✨
  • frame_time β€” the frame's time on the air, based on byte count and frame rate calculation. math girlies rise πŸ”₯

πŸ’« DESCRIPTION πŸ’«

so here's the tea: before each Rx, the device sends this data. that's just the rules. and it contains the PHY information about the reception of the packet 😭 like it literally arrives with the vibes pre-loaded, no cap.


🫢 SEE ALSO 🫢

Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/rx.h plus the whole friend group:

  • struct iwl_rx_mpdu_res_start(9)
  • enum iwl_rx_phy_flags(9)
  • enum iwl_mvm_rx_status(9)
  • struct iwl_rx_mpdu_desc_v1(9)
  • struct iwl_rx_mpdu_desc_v3(9)
  • struct iwl_rx_mpdu_desc(9)
  • struct iwl_rx_no_data(9)
  • struct iwl_rx_no_data_ver_3(9)
  • enum iwl_bar_frame_release_sta_tid(9)
  • enum iwl_bar_frame_release_ba_info(9)
  • struct iwl_bar_frame_release(9)
  • struct iwl_rss_config_cmd(9)
  • struct iwl_rxq_sync_cmd(9)
  • struct iwl_rxq_sync_notification(9)
  • enum iwl_mvm_pm_event(9)
  • struct iwl_mvm_pm_state_notification(9)
  • struct iwl_ba_window_status_notif(9)
  • struct iwl_rfh_queue_data(9)
  • struct iwl_rfh_queue_config(9)
  • struct iwl_beacon_filter_notif_v1(9)
  • struct iwl_beacon_filter_notif(9)
  • struct iwl_rx_phy_air_sniffer_ntfy(9)

that's the whole group chat, bestie. no one gets left on read πŸ’–

ngl, this page is straight-up kernel documentation β€” read it carefully before you go poking at rx.h, okay? the struct fields are literal and the (9) tags mean business πŸ’…

source: ./drivers/net/wireless/intel/i... 🌸 dated October 2026 β€” and that's the struct iwl_rx_phy_info(9) page, done and dusted, periodt πŸ’œβœ¨

πŸ“¦ where this page comes from