cfg80211_inc...ignal_notify(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– cfg80211_incumbent_signal_notify πŸ’–

okay so bestie, welcome to the Kernel API Manual ✨ β€” today's main character is cfg80211_incumbent_signal_notify, and she is literally the one who tells userspace "hey girl, we detected an incumbent signal πŸ‘€". no cap, she's important. let's get into it 🫢


✨ NAME ✨

cfg80211_incumbent_signal_notify β€” Notify userspace of incumbent signal detection πŸ’…


🌸 SYNOPSIS 🌸

void cfg80211_incumbent_signal_notify(struct wiphy *wiphy,
                                      const struct cfg80211_chan_def *chandef,
                                      u32 signal_interference_bitmap,
                                      gfp_t gfp);

πŸŽ€ ARGUMENTS πŸŽ€

  • wiphy β€” the wiphy to use 🌈 (yes, THE wiphy, the whole vibe)
  • chandef β€” channel definition in which the interference was detected πŸ‘‘
  • signal_interference_bitmap β€” bitmap indicating interference across 20 MHz segments πŸ¦‹
  • gfp β€” allocation context for message creation and multicast πŸ”₯. pass GFP_ATOMIC if called from atomic context (e.g. firmware event handler), otherwise GFP_KERNEL. choose wisely bestie, this one matters πŸ’€

🧚 DESCRIPTION 🧚

Use this function to notify userspace when an incumbent signal is detected on the operating channel in the 6 GHz band ✨. fr fr, that's her whole job.

The notification includes the current channel definition and a bitmap representing interference across the operating bandwidth πŸ“Ά. Each bit in the bitmap corresponds to a 20 MHz segment, with the lowest bit representing the lowest frequency segment πŸ’œ.

And listen β€” punctured sub-channels are included in the bitmap structure but are always set to zero πŸ™ˆ, since interference detection is not performed on them. so they're invited to the party but they're not doing anything, iykyk πŸ’…



✨ SEE ALSO ✨

okay so the SEE ALSO section is lowkey the whole extended universe, bestie. it's giving extended cinematic universe πŸ’…. every single cross-reference is here, fr fr β€” no skips, no summaries, no "you'll figure it out."

then we slide into actions + config, aka the "i can fix her" zone:

scanning + BSS list handling next, because of course she has a whole scanning arc:

  • 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_wowlan_wakeup(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).
  • 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).
  • 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).

then the wiphy / ops / lifecycle besties β€” highkey the main characters:

utility functions + data path helpers, aka the "little helpers that could":

regulatory + notification + rfkill + vendor + test mode + connect/disconnect + mgmt + CQM + radar + everything else β€” literally the rest of the group chat:

okay so here's the entire cross-reference squad β€” and bestie, it is LONG 😭 so I grouped them into little clusters so your brain doesn't fully melt. Every single one is a real page you can go read, fr fr, no cap πŸ’–

🌸 regulatory + beacon girlies

  • cfg80211_reg_check_beaconing β€” the beaconing check one.
  • cfg80211_reg_can_beacon β€” can we beacon? asking for a friend.
  • cfg80211_reg_can_beacon_relax β€” same question, but relaxed πŸ’…

πŸ¦‹ channel switch + chandef math

  • cfg80211_ch_switch_notify β€” channel switch, but make it a notification.
  • cfg80211_ch_switch_started_notify β€” and this is the "we started" version of it.
  • ieee80211_operating_class_to_band β€” operating class ➑️ band.
  • ieee80211_operating_class_to_chandef β€” operating class ➑️ chandef.
  • ieee80211_chandef_to_operating_class β€” chandef ➑️ operating class (the reverse, she's versatile).
  • ieee80211_chandef_to_khz β€” chandef ➑️ kHz, numbers era.
  • cfg80211_tdls_oper_request β€” the TDLS oper request one.
  • cfg80211_calculate_bitrate β€” math time, bitrate edition.
  • cfg80211_unregister_wdev β€” unregistering a wdev.
  • cfg80211_register_netdevice β€” registering a netdevice ✨
  • cfg80211_unregister_netdevice β€” and taking it back out again.
  • cfg80211_stop_link β€” stop that link.
  • cfg80211_stop_iface β€” stop that interface.
  • cfg80211_shutdown_all_interfaces β€” all of them. every last one. πŸ’€
  • cfg80211_iftype_allowed β€” is this iftype allowed or not.
  • cfg80211_links_removed β€” links got removed, noting it.

🧚 fast transition, P2P + IE parsing

  • struct cfg80211_ft_event_params β€” the struct, not the function, keep up bestie.
  • cfg80211_ft_event β€” the FT event itself.
  • cfg80211_get_p2p_attr β€” grabbing a P2P attribute.
  • ieee80211_ie_split_ric β€” IE splitting, RIC flavour.
  • ieee80211_ie_split β€” IE splitting, classic flavour.
  • ieee80211_fragment_element β€” fragmenting an element 🫢

🌈 power save, wowlan + crit proto

  • cfg80211_report_wowlan_wakeup β€” reporting a WoWLAN wakeup, sleepy girl behaviour.
  • cfg80211_crit_proto_stopped β€” the critical protocol stopped, noted.
  • ieee80211_get_num_supported_channels β€” how many channels are supported, count 'em.

⭐ combinations + channel bookkeeping

  • cfg80211_check_combinations β€” checking combinations.
  • cfg80211_iter_combinations β€” iterating combinations (she loops, she slays).
  • cfg80211_get_radio_idx_by_chan β€” radio index, by channel.
  • cfg80211_schedule_channels_check β€” schedule that channels check πŸ“…

πŸ’œ wiphy features + debugfs

  • wiphy_ext_feature_set β€” set an extended feature flag.
  • wiphy_ext_feature_isset β€” is it set? asking.
  • wiphy_locked_debugfs_read β€” debugfs read, locked edition.
  • wiphy_locked_debugfs_write β€” debugfs write, locked edition.

πŸ“ NAN crew (there are SO many of them)

  • cfg80211_free_nan_func β€” free the NAN function.
  • struct cfg80211_nan_match_params β€” a struct this time, iconic.
  • cfg80211_nan_match β€” NAN match.
  • cfg80211_nan_func_terminated β€” the NAN function terminated.
  • cfg80211_nan_sched_update_done β€” NAN schedule update, done.
  • cfg80211_next_nan_dw_notif β€” next NAN DW notification.
  • cfg80211_nan_cluster_joined β€” joined a NAN cluster 🫢
  • cfg80211_nan_ulw_update β€” NAN ULW update.
  • cfg80211_nan_channel_evac β€” NAN channel evac, everybody out.

πŸ”₯ auth, PMSR + assoc

  • cfg80211_external_auth_request β€” external auth request.
  • cfg80211_pmsr_report β€” PMSR report.
  • cfg80211_pmsr_complete β€” PMSR complete, we're done here.
  • cfg80211_assoc_comeback β€” the assoc comeback, she returned.
  • cfg80211_update_owe_info_event β€” updating the OWE info event.

πŸ‘‘ BSS + colour change saga

  • cfg80211_bss_flush β€” flush the BSS.
  • cfg80211_bss_color_notify β€” BSS color notification.
  • cfg80211_obss_color_collision_notify β€” OBSS color collision notification 🚨
  • cfg80211_color_change_started_notify β€” colour change started.
  • cfg80211_color_change_aborted_notify β€” colour change aborted 😭
  • cfg80211_color_change_notify β€” colour change, the notification.

πŸ¦‹ 6 GHz, EPCOS + MLO reconfig

  • cfg80211_6ghz_power_type β€” 6 GHz power type.
  • cfg80211_epcs_changed β€” EPCOS changed.
  • struct cfg80211_mlo_reconf_done_data β€” struct, MLO reconfig done data.
  • cfg80211_mlo_reconf_add_done β€” MLO reconfig add, done.

🌸 S1G odds and ends

  • cfg80211_s1g_get_start_freq_khz β€” S1G start frequency, in kHz.
  • cfg80211_s1g_get_end_freq_khz β€” S1G end frequency, in kHz.
  • cfg80211_s1g_get_primary_sibling β€” S1G primary sibling, the sibling in question πŸ’…

and that's genuinely the whole squad β€” sixty-three of them, and yes I counted, and yes I need a nap 🫢 the source lives in ./include/net, dated October 2026, so go read the rest of the pages and hydrate while you're at it bestie πŸ’–βœ¨πŸ‘‘

πŸ“¦ where this page comes from