STRUCT IWL_RX_MPDU_DESC_V3(9)
β¨ struct iwl_rx_mpdu_desc_v3 β RX MPDU descriptor β¨
okay bestie, sit down, hydrate, and let's talk about struct iwl_rx_mpdu_desc_v3 π
this is straight out of the Kernel API Manual (section 9, iwlwifi country π¦) and it's the RX MPDU descriptor β it's giving "the little receipt the hardware hands you after a frame arrives" energy. no cap.
πΈ SYNOPSIS πΈ
struct iwl_rx_mpdu_desc_v3 {
union {
__le32 filter_match;
__le32 phy_data3;
};
union {
__le32 rss_hash;
__le32 phy_data2;
};
__le32 partial_hash;
__be16 raw_xsum;
__le16 reserved_xsum;
__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;
};
};
__le32 phy_data5;
__le32 reserved[1];
};
like, look at all those anonymous unions β someone was absolutely showing off and honestly? slay π
π Members π
π«Ά the unnamed union (filter side)
{unnamed_union}β anonymous, mysterious, doesn't need a name, main character energy honestly. it's anonymous.filter_matchβ filter match value β¨phy_data3β depends on info type (seephy_data1) β yes bestie it's pointing you at itself in advance, iykyk.
π¦ the unnamed union (hash side)
{unnamed_union}β also anonymous. two unnamed unions in one struct and not a single name between them, we love a lowkey icon.rss_hashβ RSS hash value π₯phy_data2β depends on info type (seephy_data1) β same deal.
π the middle bits
partial_hashβ31:0ip/tcp header hash w/o some fields (such as IP SRC addr). so it's a hash, but it ghosted a few fields, no big deal πraw_xsumβ raw xsum valuereserved_xsumβ reserved high bits in the raw checksum (don't touch, it's reserved, hands off π)rate_n_flagsβ RX rate/flags encoding βenergy_aβ energy chain A πenergy_bβ energy chain B πchannelβ channel numbermac_contextβ MAC context mask πgp2_on_air_riseβ GP2 timer value on air rise (INA)
π§ the on-air-rise union, part two electric boogaloo
{unnamed_union}β anonymous again. three for three, obsessed.tsf_on_air_riseβ TSF value on air rise (INA), and heads up: only valid ifIWL_RX_MPDU_PHY_TSF_OVERLOADisn't set β οΈ{unnamed_struct}β anonymous struct hanging out inside the union, living its best life.
π the nested struct squad
phy_data0β depends oninfo_type, seephy_data1phy_data1β valid only ifIWL_RX_MPDU_PHY_TSF_OVERLOADis set, see enumiwl_rx_phy_data1. read that twice bestie, the conditional is load-bearing π«Ά
π the stragglers
phy_data5β valid only ifIWL_RX_MPDU_PHY_TSF_OVERLOADis set, see enumiwl_rx_phy_data5.reservedβ reserved. it's reserved. that's the whole thing. periodt π
ngl there's a lot of "depends on info type" and "valid only if IWL_RX_MPDU_PHY_TSF_OVERLOAD is set" going on here β that's not me being vague, that's genuinely the contract. check the flag before you trust those fields, fr fr. π
π₯ SEE ALSO π₯
all the lore, all the siblings β go read these, they're literally in 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_v1(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)
like, that's a whole friend group π
π cute sign-off π
that's the whole page, bestie β this one came from ./drivers/net/wireless/intel/i... (the path, she's long), dated October 2026, sitting pretty in the Kernel API Manual. go forth, parse those descriptors, and remember: reserved means reserved π
β¨π¦
bye bestie, drink some water π«Ά
π¦ 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