STRUCT IWL_MLD_WOWLAN_STATUS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

struct iwl_mld_wowlan_status β€” bestie, this is the struct that holds all the wowlan status data from every single wowlan notification πŸ’– it's giving "one struct to rule them all" and honestly? iconic.


πŸ¦‹ SYNOPSIS πŸ¦‹

struct iwl_mld_wowlan_status {
    u32 wakeup_reasons;
    u64 replay_ctr;
    u16 pattern_number;
    u16 last_qos_seq;
    u32 num_of_gtk_rekeys;
    u8 tid_offloaded_tx;
    u8 *wake_packet;
    u32 wake_packet_length;
    u32 wake_packet_bufsize;
    struct iwl_mld_mcast_key_data gtk[WOWLAN_GTK_KEYS_NUM];
    struct iwl_mld_mcast_key_data igtk;
    struct iwl_mld_mcast_key_data bigtk[WOWLAN_BIGTK_KEYS_NUM];
    struct {
      struct ieee80211_key_seq aes_seq[IWL_MAX_TID_COUNT];
      struct ieee80211_key_seq tkip_seq[IWL_MAX_TID_COUNT];
    } ptk;
    int num_mlo_keys;
    struct iwl_mld_wowlan_mlo_key mlo_keys[WOWLAN_MAX_MLO_KEYS];
 };

look at that nesting in ptk, we love a struct-in-a-struct moment 🫢


πŸ’… MEMBERS πŸ’…

okay so let's go field by field, no skipping, we do not leave anyone out in this house πŸ‘‘

  • wakeup_reasons β€” the wakeup reasons themselves, see enum iwl_wowlan_wakeup_reason for the actual list πŸ”₯
  • replay_ctr β€” the GTK rekey replay counter, a u64 because we're fancy like that
  • pattern_number β€” how many patterns matched on packets
  • last_qos_seq β€” the QoS sequence counter of the offloaded tid
  • num_of_gtk_rekeys β€” how many GTK rekeys happened during D3
  • tid_offloaded_tx β€” the tid the firmware uses to transmit data packets while in wowlan
  • wake_packet β€” the wakeup packet we received πŸ“¦ (it's a u8 *, so yeah, pointer to the goods)
  • wake_packet_length β€” the wake packet length
  • wake_packet_bufsize β€” the wake packet bufsize
  • gtk β€” data of the last two used gtk's by the FW upon resume (WOWLAN_GTK_KEYS_NUM of them, it's an array)
  • igtk β€” data of the last used igtk by the FW upon resume
  • bigtk β€” data of the last two used gtk's by the FW upon resume (WOWLAN_BIGTK_KEYS_NUM array, and yes they wrote "gtk's" here too, we keep it πŸ’€)
  • ptk β€” the last seq numbers per tid passed by the FW, and it holds them in both tkip and aes formats β€” hence the aes_seq[IWL_MAX_TID_COUNT] and tkip_seq[IWL_MAX_TID_COUNT] inside πŸŽ€
  • num_mlo_keys β€” number of struct iwl_mld_wowlan_mlo_key structs
  • mlo_keys β€” array of MLO keys, sized WOWLAN_MAX_MLO_KEYS
ngl, if you're touching ptk, remember it's dual-format: aes and tkip, IWL_MAX_TID_COUNT of each. don't forget half of it, bestie 😭

🌈 SEE ALSO 🌈

  • the kernel file ./drivers/net/wireless/intel/iwlwifi/mld/d3.c
  • enum iwl_mld_d3_notif(9)
  • struct iwl_mld_netdetect_res(9)
  • struct iwl_mld_resume_data(9)

iykyk, go read d3.c, it's the whole vibe πŸ’œ


okay that's the page!! πŸŽ€ this one came straight out of ./drivers/net/wireless/intel/i... (yes, the truncated path, we love a cliffhanger) and it's dated October 2026 β€” so like, future vibes, periodt βœ¨πŸ’…πŸ¦‹

πŸ“¦ where this page comes from