STRUCT IWL_RX_MPDU_DESC_V1(9)
π struct iwl_rx_mpdu_desc_v1(9) β like, the RX MPDU descriptor, bestie π
okay so this is a page straight outta the Kernel API Manual (struct iwl_rx_mpdu_desc_v1(9)), and yes it's a C struct, and yes it's giving very much "wireless driver internals" energy. buckle up π¦
β¨ NAME β¨
struct iwl_rx_mpdu_desc_v1 β the RX MPDU descriptor. that's it, that's the name, no cap π
π₯ SYNOPSIS π₯
here's the whole shape of her, literally copy-paste sacred, do not touch:
struct iwl_rx_mpdu_desc_v1 {
union {
__le32 rss_hash;
__le32 phy_data2;
};
union {
__le32 filter_match;
__le32 phy_data3;
};
__le32 rate_n_flags;
u8 energy_a;
u8 energy_b;
u8 channel;
u8 mac_context;
__le32 gp2_on_air_rise;
union {
__le64 tsf_on_air_rise;
struct {
__le32 phy_data0;
__le32 phy_data1;
};
};
};
π§ Members π§
so there's a bunch of anonymous unions in here and honestly the manpage just labels them {unnamed_union} and says anonymous. iconic, unbothered, no notes π three of those bad boys, plus one {unnamed_struct} that's also justβ¦ anonymous. main character energy, refuses to be named π
πΈ first union β the little anonymous one
rss_hashβ the RSS hash value, slay πphy_data2β depends on info type (peepphy_data1for the deets) π
π second union β also anonymous, also mysterious
filter_matchβ the filter match value β¨phy_data3β again, depends on info type (seephy_data1) π«Ά
β the straightforward ones
rate_n_flagsβ the RX rate/flags encoding, this is where the rate info lives π₯energy_aβ energy, chain A β‘energy_bβ energy, chain B β‘β‘ (twins!)channelβ the channel number π‘mac_contextβ the MAC context mask πgp2_on_air_riseβ the GP2 timer value on air rise (INA) β±οΈ
π¦ third union β the one with the actual lore
tsf_on_air_riseβ the TSF value on air rise (INA). β οΈ but bestie listen: this one is only valid ifIWL_RX_MPDU_PHY_TSF_OVERLOADisn't set. if that flag IS set, this field is not your girl, okay? π
π and nested inside that union, a struct (also anonymous π)
phy_data0β depends oninfo_type, seephy_data1πphy_data1β valid only ifIWL_RX_MPDU_PHY_TSF_OVERLOADis set, and then you gotta check seeenum iwl_rx_phy_common_data1orenum iwl_rx_phy_he_data1orenum iwl_rx_phy_eht_data1. three whole enums, pick your fighter π
π vibe check: two fields in this struct are gated onIWL_RX_MPDU_PHY_TSF_OVERLOADand they're gated in opposite directions.tsf_on_air_risewants the flag OFF,phy_data1wants it ON. don't mix them up or it's giving undefined vibes π
π SEE ALSO π
the whole extended friend group, from the kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/rx.h:
struct iwl_rx_phy_info(9)struct iwl_rx_mpdu_res_start(9)enum iwl_rx_phy_flags(9)enum iwl_mvm_rx_status(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)
and that's the whole page, bestie!! no crumbs left, every flag and field accounted for π«Ά
kisses from the source file ./drivers/net/wireless/intel/i..., dated October 2026, brought to you by struct iwl_rx_mpdu_desc_v1(9) β she's the Kernel API Manual's finest, periodt πβ¨π
π¦ 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