STRUCT CFG80211_WOWLAN_WAKEUP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

okay so bestie, welcome to the Kernel API Manual, section 9 β€” this one is literally struct cfg80211_wowlan_wakeup, and it's the wakeup report struct. no cap, that's the whole name. 🫢

πŸ¦‹ SYNOPSIS πŸ¦‹

here's the exact struct, copied character-for-character because we do not play about code:

       struct cfg80211_wowlan_wakeup {
           bool disconnect, magic_pkt, gtk_rekey_failure, eap_identity_req,
       four_way_handshake, rfkill_release, packet_80211, tcp_match,
       tcp_connlost, tcp_nomoretokens, unprot_deauth_disassoc;
           s32 pattern_idx;
           u32 packet_present_len, packet_len;
           const void *packet;
           struct cfg80211_wowlan_nd_info *net_detect;
        };

πŸ’… Members πŸ’…

okay so each member is giving main character energy, let's go:

  • disconnect β€” woke up by getting disconnected. literally the β€œwe lost the link” wakeup. 😭
  • magic_pkt β€” woke up by receiving a magic packet. iconic. ✨
  • gtk_rekey_failure β€” woke up by GTK rekey failure. not the vibe, but okay. πŸ’€
  • eap_identity_req β€” woke up by an EAP identity request packet. slay. πŸŽ€
  • four_way_handshake β€” woke up by 4-way handshake. the handshake said β€œbestie, wake up.” 🫱
  • rfkill_release β€” woke up by rfkill being released. πŸ”₯
  • packet_80211 β€” okay so for pattern match, magic packet and other data frame triggers, an 802.3 frame should be reported; for disconnect due to deauth it's an 802.11 frame. this field tells you which one it is. iykyk. 🌈
  • tcp_match β€” TCP wakeup packet received. πŸ“
  • tcp_connlost β€” TCP connection lost or failed to establish. sad girl hours. 😭
  • tcp_nomoretokens β€” TCP data ran out of tokens. no more tokens, bestie. πŸ’€
  • unprot_deauth_disassoc β€” woke up due to unprotected deauth or disassoc frame (in MFP). periodt. πŸ›‘οΈ
  • pattern_idx β€” pattern that caused wakeup, -1 if not due to pattern. so if it's -1, it wasn't a pattern thing. πŸ‘‘
  • packet_present_len β€” copied wakeup packet data. (that's the whole description, bestie, don't come for me.) πŸ™ˆ
  • packet_len β€” original wakeup packet length. πŸ“
  • packet β€” The packet causing the wakeup, if any. like, if there's a culprit packet, here it is. πŸ”
  • net_detect β€” if not NULL, woke up because of net detect. so NULL means net detect didn't do it. πŸ¦‹

✨ SEE ALSO ✨

okay bestie, this is the part where the manpage just. goes. off. it's a giant group chat with every other function and struct in cfg80211, and the way it lists them all with zero breathing room is honestly iconic πŸ’€ i grouped them so your eyes don't fall out, but fr fr β€” every single reference is here, in the exact original order, no cap πŸ”₯


πŸŽ€ the starting point

  • Kernel file ./include/net/cfg80211.h Introduction(9)
  • Device registration(9)
bestie start here. the header file intro and the registration doc are the mothership β€” skip them and you WILL be lost 😭

πŸ¦‹ channels, bands, rates & caps

ht β†’ vht β†’ he β†’ eht β†’ uhr, the whole glow-up timeline is in there πŸ’… and yes, _ieee80211_set_sband_iftype_data(9) with the leading underscore is a different entry from ieee80211_set_sband_iftype_data(9). both listed. i don't make the rules 🫢

πŸŽ€ Actions and configuration

that's the whole chandef saga in one place β€” _valid, _usable, _compatible, _identical, three whole DFS ones, plus the npca/dbe additions. the way these functions are absolutely obsessed with channel definitions 😭

πŸ¦‹ Scanning and BSS list handling

  • Scanning and BSS list handling(9)
  • struct cfg80211_ssid(9)
  • struct cfg80211_scan_info(9)
  • struct cfg80211_scan_6ghz_params(9)
  • struct cfg80211_scan_request(9)
  • struct cfg80211_match_set(9)
  • struct cfg80211_sched_scan_plan(9)
  • struct cfg80211_bss_select_adjust(9)
  • struct cfg80211_sched_scan_request(9)
  • enum cfg80211_signal_type(9)
  • struct cfg80211_inform_bss(9)
  • struct cfg80211_bss_ies(9)
  • struct cfg80211_bss(9)
  • ieee80211_bss_get_elem(9)
  • ieee80211_bss_get_ie(9)
  • struct cfg80211_auth_request(9)
  • struct cfg80211_assoc_link(9)
  • struct cfg80211_ml_reconf_req(9)
  • enum cfg80211_assoc_req_flags(9)
  • struct cfg80211_assoc_request(9)
  • struct cfg80211_deauth_request(9)
  • struct cfg80211_disassoc_request(9)
  • struct cfg80211_ibss_params(9)
  • struct cfg80211_bss_selection(9)
  • struct cfg80211_connect_params(9)
  • enum cfg80211_connect_params_changed(9)
  • enum wiphy_params_flags(9)
  • struct cfg80211_pmksa(9)
  • struct cfg80211_pkt_pattern(9)
  • struct cfg80211_wowlan_tcp(9)
  • struct cfg80211_wowlan(9)
  • struct cfg80211_coalesce_rules(9)
  • struct cfg80211_coalesce(9)
  • struct cfg80211_wowlan_nd_match(9)
  • struct cfg80211_wowlan_nd_info(9)
  • struct cfg80211_gtk_rekey_data(9)
  • struct cfg80211_update_ft_ies_params(9)
  • struct cfg80211_mgmt_tx_params(9)
  • struct cfg80211_dscp_exception(9)
  • struct cfg80211_dscp_range(9)
  • struct cfg80211_qos_map(9)
real ones know ieee80211_bss_get_elem(9) vs ieee80211_bss_get_ie(9) both made the list. we love an inclusive king πŸ‘‘

πŸ’œ Neighbor Awareness Networking (NAN)

  • Neighbor Awareness Networking (NAN)(9)
  • struct cfg80211_nan_band_config(9)
  • struct cfg80211_nan_conf(9)
  • struct cfg80211_nan_channel(9)
  • struct cfg80211_nan_local_sched(9)
  • struct cfg80211_nan_peer_map(9)
  • struct cfg80211_nan_peer_sched(9)
  • enum cfg80211_nan_conf_changes(9)
  • struct cfg80211_nan_func_filter(9)
  • struct cfg80211_nan_func(9)

🧚 pairing, ranging & friends

  • struct cfg80211_pmk_conf(9)
  • struct cfg80211_external_auth_params(9)
  • struct cfg80211_ftm_responder_stats(9)
  • struct cfg80211_pmsr_ftm_result(9)
  • struct cfg80211_pmsr_result(9)
  • struct cfg80211_pmsr_ftm_request_peer(9)
  • struct cfg80211_pmsr_request_peer(9)
  • struct cfg80211_pmsr_request(9)
  • struct cfg80211_update_owe_info(9)
  • struct mgmt_frame_regs(9)

🌈 ops, flags & the iface-combo corner

  • struct cfg80211_ops(9)
  • enum wiphy_flags(9)
  • struct ieee80211_iface_limit(9)
  • struct ieee80211_iface_combination(9)
  • enum wiphy_wowlan_support_flags(9)
  • struct wiphy_wowlan_support(9)
  • struct wiphy_coalesce_support(9)
  • enum wiphy_vendor_command_flags(9)
  • enum wiphy_opmode_flag(9)
  • struct sta_opmode_info(9)
  • struct wiphy_vendor_command(9)
  • struct wiphy_iftype_ext_capab(9)
  • cfg80211_get_iftype_ext_capa(9)
  • struct cfg80211_pmsr_capabilities(9)
  • struct wiphy_iftype_akm_suites(9)
  • struct wiphy_radio_cfg(9)
  • struct wiphy_radio_freq_range(9)
  • struct wiphy_radio(9)
  • enum wiphy_nan_flags(9)
  • struct wiphy_nan_capa(9)
  • struct wiphy(9)

πŸŽ€ wiphy life cycle, locking & the work queue girlies

queue / cancel / flush for plain work, delayed work, AND hrtimer work β€” all three sets, all four flavours. the symmetry is genuinely slay ✨

πŸ¦‹ Utility functions

channel β†’ khz β†’ frequency β†’ channel, round and round forever. it's giving "i support every unit conversion known to woman" 😭 and yes, elem and ie variants are BOTH listed for match, plain, ext, and vendor. four pairs. iconic.

🌸 Regulatory enforcement infrastructure

πŸŽ€ scanning done, BSS handling & mlme

note __cfg80211_get_bss(9) (double underscore, the internal one) sits right next to the normal cfg80211_get_bss(9). don't mix them up bestie, iykyk πŸ™ˆ

πŸ’… RFkill integration

⭐ Vendor commands

πŸ“ Test mode


πŸ”₯ connect, roam, station & notification central

the _khz and _ext twins are both here β€” cfg80211_rx_mgmt_khz(9) alongside cfg80211_rx_mgmt_ext(9) alongside plain cfg80211_rx_mgmt(9), and cfg80211_report_obss_beacon_khz(9) next to cfg80211_report_obss_beacon(9). pick your fighter 🫢

that's the whole list, bestie β€” nothing dropped, nothing merged, nothing invented. go click through them and slay your driver development era πŸ‘‘πŸ’–

...and bestie, the guest list is long, so buckle up β€” here's everyone this page wants you to go hang out with next πŸ’…


okay that's the whole entourage, bestie β€” 64 references, zero skips, we don't gatekeep here πŸ’œ

ngl this list is so long it's basically a group chat with 64 unread messages, but every single one of them is in the SEE ALSO section for a reason, so go click through them when you're ready πŸ¦‹

Sign-off time πŸŽ€ β€” this page lives in the source tree at ./include/net, and the version/date stamp on the bottom reads October 2026. So yes, bestie, the manual page is timestamped in the future, and honestly? That's iconic. Periodt βœ¨πŸ‘‘

πŸ“¦ where this page comes from