STRUCT IWL_RX_MPDU_DESC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

struct iwl_rx_mpdu_desc β€” the RX MPDU descriptor, bestie. That's it, that's the whole vibe. This is the 9th section kernel API manual page, and we're about to read it together like it's the group chat at 2am πŸ¦‹


✨ SYNOPSIS ✨

okay so here's literally the whole shape of it, no cap, character for character:

struct iwl_rx_mpdu_desc {
    __le16 mpdu_len;
    u8 mac_flags1;
    u8 mac_flags2;
    u8 amsdu_info;
    __le16 phy_info;
    u8 mac_phy_band;
    union {
      struct {
        __le16 raw_csum;
        union {
          __le16 l3l4_flags;
          __le16 phy_data4;
        };
      };
      __le32 phy_eht_data4;
    };
    __le32 status;
    __le32 reorder_data;
    union {
      struct iwl_rx_mpdu_desc_v1 v1;
      struct iwl_rx_mpdu_desc_v3 v3;
    };
 };

look at her. structure icon behavior. the nesting? the anonymous unions? she ate πŸ’…


πŸŽ€ Members πŸŽ€

breaking it down field by field, because every single one matters and we're not skipping a single one, fr fr:

  • mpdu_len β€” the MPDU length. the literal length bestie 🌸
  • mac_flags1 β€” typed as enum iwl_rx_mpdu_mac_flags1
  • mac_flags2 β€” typed as enum iwl_rx_mpdu_mac_flags2
  • amsdu_info β€” typed as enum iwl_rx_mpdu_amsdu_info
  • phy_info β€” typed as enum iwl_rx_mpdu_phy_info
  • mac_phy_band β€” MAC/link ID, PHY ID, band; see enum iwl_rx_mpdu_mac_phy_band. she's holding three whole identities at once, main character energy πŸ‘‘
  • {unnamed_union} β€” anonymous. no name, all mystery πŸ™ˆ
  • {unnamed_struct} β€” anonymous too. nesting dolls but make it kernel πŸ’€
  • raw_csum β€” raw checksum (alledgedly unreliable). alledgedly. that spelling is in the original and I'm not touching it, and also the unreliable part is not a joke, keep an eye on her 😭
  • {unnamed_union} β€” anonymous again. we stay unbothered 🫢
  • l3l4_flags β€” typed as enum iwl_rx_l3l4_flags
  • phy_data4 β€” depends on info type, see phy_data1
  • phy_eht_data4 β€” depends on info type, see phy_data1
  • status β€” typed as enum iwl_rx_mpdu_status
  • reorder_data β€” typed as enum iwl_rx_mpdu_reorder_data
  • {unnamed_union} β€” anonymous (yes, another one) ✨
  • v1 β€” version 1 of the remaining RX descriptor, see struct iwl_rx_mpdu_desc_v1
  • v3 β€” version 3 of the remaining RX descriptor, see struct iwl_rx_mpdu_desc_v3
note that the union at the end gives you either v1 or v3 β€” it's one or the other, not both. pick your fighter πŸ₯Š

🌈 SEE ALSO 🌈

the whole friend group, all of them, linked 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_v1(9)
  • struct iwl_rx_mpdu_desc_v3(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)

okay and that's the page!! mwah πŸ’‹ source path got truncated to ./drivers/net/wireless/intel/i... and the date on it is October 2026, and the whole thing lives under the manual name struct iwl_rx_mpdu_desc(9) β€” go read it again if you need to, i'm obsessed, bye bestie πŸ§šπŸ’œ

πŸ“¦ where this page comes from