cfg80211_ready_on_channel(9)
π cfg80211_ready_on_channel(9) π
okay so this is from the Kernel API Manual bestie, and it's literally the cfg80211_ready_on_channel page β the function that's all about telling everyone "hey, the remain_on_channel thing just started" β¨
πΈ NAME πΈ
cfg80211_ready_on_channel β the notification that remain_on_channel has started, no cap π«Ά
π SYNOPSIS π
void cfg80211_ready_on_channel (struct wireless_dev *wdev , u64 cookie ,
struct ieee80211_channel *chan , unsigned int duration , gfp_t gfp );
look at her. she takes five whole arguments. main character energy fr fr π
β¨ ARGUMENTS β¨
wdevβ the wireless device π like, the actual device doing the thing, that's hercookieβ the request cookie πͺ ngl this is the little identifier that ties this notification back to theremain_on_channelrequest it belongs to, iykykchanβ The current channel (from theremain_on_channelrequest) π₯ so it's the channel you're sitting on right now, straight out of thatremain_on_channelrequestdurationβ Duration in milliseconds that the driver intends to remain on the channel β milliseconds, bestie, milliseconds β that's how long the driver is planning on staying parked on this channelgfpβ allocation flags π the flags that get used for allocation, periodt
okay that's part 1, more coming and I am not done talking about this function π
π SEE ALSO π
okay bestie, this is the part where the page flexes its whole friend group π like genuinely, if you ever wondered how much stuff is cosplaying as "related" β it's a lot. Every single one of these is a real manual page, no cap, so here's the whole roster fr fr β¨
- The source-of-truth file and the big-picture intros π«Ά
- Kernel file
./include/net/cfg80211.h Introduction(9)Device registration(9)
- Kernel file
- Channels, rates, and the fundamental BSS enums πΈ (these are the little building blocks everything else sits on)
enum ieee80211_channel_flagsstruct ieee80211_channelenum ieee80211_rate_flagsenum ieee80211_bss_typeenum ieee80211_privacystruct ieee80211_ratestruct ieee80211_he_obss_pdstruct cfg80211_he_bss_color
- Capability central β¨ HT / VHT / HE / EHT / UHR and the whole sband-adjacent situation β this is giving "I contain multitudes", and honestly? iconic π
struct ieee80211_sta_ht_capstruct ieee80211_sta_vht_capstruct ieee80211_sta_he_capstruct ieee80211_eht_mcs_nss_suppstruct ieee80211_sta_eht_capstruct ieee80211_sta_uhr_capstruct ieee80211_sband_iftype_dataenum ieee80211_edmg_bw_configstruct ieee80211_edmgstruct ieee80211_sta_s1g_capstruct ieee80211_supported_band_ieee80211_set_sband_iftype_dataieee80211_set_sband_iftype_datafor_each_sband_iftype_dataieee80211_get_sband_iftype_dataieee80211_get_he_iftype_capieee80211_get_he_6ghz_capaieee80211_get_eht_iftype_capieee80211_get_uhr_iftype_capwiphy_read_of_freq_limits
- Actions and configuration π β the "actually do the thing" section, and yes it brought every last struct with it
Actions and configuration(9)struct vif_paramsstruct key_paramsstruct cfg80211_chan_defstruct cfg80211_tid_cfgstruct cfg80211_tid_configstruct cfg80211_fils_aadstruct cfg80211_set_hw_timestampcfg80211_get_chandef_typecfg80211_chandef_createcfg80211_chandef_identicalcfg80211_chandef_is_edmgcfg80211_chandef_is_s1gcfg80211_chandef_compatiblenl80211_chan_width_to_mhzcfg80211_chandef_get_widthcfg80211_chandef_validcfg80211_chandef_usablecfg80211_chandef_dfs_requiredcfg80211_chandef_dfs_usablecfg80211_chandef_dfs_cac_timecfg80211_chandef_primarycfg80211_chandef_npca_validcfg80211_chandef_add_npcacfg80211_chandef_add_dbenl80211_send_chandefieee80211_chandef_max_powercfg80211_chandef_s1g_pri_widthcfg80211_any_usable_channelsenum survey_info_flagsstruct survey_infostruct cfg80211_crypto_settingsstruct cfg80211_mbssid_configstruct cfg80211_mbssid_elemsstruct cfg80211_rnr_elemsstruct cfg80211_beacon_datastruct cfg80211_acl_datastruct cfg80211_fils_discoverystruct cfg80211_unsol_bcast_probe_respstruct cfg80211_s1g_short_beaconstruct cfg80211_ap_settingsstruct cfg80211_ap_updatestruct cfg80211_csa_settingsstruct cfg80211_color_change_settingsstruct iface_combination_paramsenum station_parameters_apply_maskstruct sta_txpwrstruct link_station_parametersstruct link_station_del_parametersstruct cfg80211_ttlm_paramsstruct station_parametersstruct station_del_parametersenum cfg80211_station_typecfg80211_check_station_changeenum rate_info_flagsenum rate_info_bwstruct rate_infoenum bss_param_flagsstruct sta_bss_parametersstruct cfg80211_txq_statsstruct cfg80211_tid_statsstruct link_station_infostruct station_infostruct cfg80211_sar_sub_specsstruct cfg80211_sar_specsstruct cfg80211_sar_freq_rangesstruct cfg80211_sar_capacfg80211_get_stationenum monitor_flagsenum mpath_info_flagsstruct mpath_infoenum wiphy_bss_param_flagsstruct bss_parametersstruct mesh_configstruct mesh_setupstruct ocb_setupstruct ieee80211_txq_params
- Scanning and BSS list handling π β the "who's out there" section, lowkey the most relatable one
Scanning and BSS list handling(9)struct cfg80211_ssidstruct cfg80211_scan_infostruct cfg80211_scan_6ghz_paramsstruct cfg80211_scan_requeststruct cfg80211_match_setstruct cfg80211_sched_scan_planstruct cfg80211_bss_select_adjuststruct cfg80211_sched_scan_requestenum cfg80211_signal_typestruct cfg80211_inform_bssstruct cfg80211_bss_iesstruct cfg80211_bssieee80211_bss_get_elemieee80211_bss_get_iestruct cfg80211_auth_requeststruct cfg80211_assoc_linkstruct cfg80211_ml_reconf_reqenum cfg80211_assoc_req_flagsstruct cfg80211_assoc_requeststruct cfg80211_deauth_requeststruct cfg80211_disassoc_requeststruct cfg80211_ibss_paramsstruct cfg80211_bss_selectionstruct cfg80211_connect_paramsenum cfg80211_connect_params_changedenum wiphy_params_flagsstruct cfg80211_pmksastruct cfg80211_pkt_patternstruct cfg80211_wowlan_tcpstruct cfg80211_wowlanstruct cfg80211_coalesce_rulesstruct cfg80211_coalescestruct cfg80211_wowlan_nd_matchstruct cfg80211_wowlan_nd_infostruct cfg80211_wowlan_wakeupstruct cfg80211_gtk_rekey_datastruct cfg80211_update_ft_ies_paramsstruct cfg80211_mgmt_tx_paramsstruct cfg80211_dscp_exceptionstruct cfg80211_dscp_rangestruct cfg80211_qos_map
- Neighbor Awareness Networking (NAN) π¦ β NAN has its own friend group and honestly they're all so cute
Neighbor Awareness Networking (NAN)(9)struct cfg80211_nan_band_configstruct cfg80211_nan_confstruct cfg80211_nan_channelstruct cfg80211_nan_local_schedstruct cfg80211_nan_peer_mapstruct cfg80211_nan_peer_schedenum cfg80211_nan_conf_changesstruct cfg80211_nan_func_filterstruct cfg80211_nan_funcstruct cfg80211_pmk_confstruct cfg80211_external_auth_paramsstruct cfg80211_ftm_responder_statsstruct cfg80211_pmsr_ftm_resultstruct cfg80211_pmsr_resultstruct cfg80211_pmsr_ftm_request_peerstruct cfg80211_pmsr_request_peerstruct cfg80211_pmsr_requeststruct cfg80211_update_owe_infostruct mgmt_frame_regs
- The wiphy / wireless_dev era π β main character energy, obviously
struct cfg80211_opsenum wiphy_flagsstruct ieee80211_iface_limitstruct ieee80211_iface_combinationenum wiphy_wowlan_support_flagsstruct wiphy_wowlan_supportstruct wiphy_coalesce_supportenum wiphy_vendor_command_flagsenum wiphy_opmode_flagstruct sta_opmode_infostruct wiphy_vendor_commandstruct wiphy_iftype_ext_capabcfg80211_get_iftype_ext_capastruct cfg80211_pmsr_capabilitiesstruct wiphy_iftype_akm_suitesstruct wiphy_radio_cfgstruct wiphy_radio_freq_rangestruct wiphy_radioenum wiphy_nan_flagsstruct wiphy_nan_capastruct wiphywiphy_privpriv_to_wiphyset_wiphy_devwiphy_devwiphy_namewiphy_new_nmwiphy_newwiphy_registerrcu_dereference_wiphywiphy_dereferenceget_wiphy_regdomwiphy_unregisterwiphy_freewiphy_lockwiphy_unlockwiphy_work_queuewiphy_work_cancelwiphy_work_flushwiphy_delayed_work_queuewiphy_delayed_work_cancelwiphy_delayed_work_flushwiphy_delayed_work_pendingwiphy_hrtimer_work_queuewiphy_hrtimer_work_cancelwiphy_hrtimer_work_flushwiphy_hrtimer_work_pendingenum ieee80211_ap_reg_powerstruct wireless_devwdev_privwdev_chandef
- Utility functions π§° β the little helpers that carry the whole operation ngl
Utility functions(9)ieee80211_channel_equalieee80211_channel_to_khzieee80211_channel_to_freq_khzieee80211_channel_to_frequencyieee80211_freq_khz_to_channelieee80211_frequency_to_channelieee80211_get_channel_khzieee80211_get_channelcfg80211_channel_is_pscieee80211_radio_freq_range_validcfg80211_radio_chandef_validcfg80211_wdev_channel_allowedieee80211_get_response_rateieee80211_mandatory_ratesstruct ieee80211_radiotap_iteratorieee80211_get_hdrlen_from_skbieee80211_hdrlenieee80211_get_mesh_hdrlen
- Data path helpers π β packets go in, packets go out, you literally cannot explain that
Data path helpers(9)ieee80211_data_to_8023_exthdrieee80211_data_to_8023ieee80211_is_valid_amsduieee80211_amsdu_to_8023sieee80211_get_8023_tunnel_protoieee80211_strip_8023_mesh_hdrcfg80211_classify8021dcfg80211_find_elem_matchcfg80211_find_ie_matchcfg80211_find_elemcfg80211_find_iecfg80211_find_ext_elemcfg80211_find_ext_iecfg80211_find_vendor_elemcfg80211_find_vendor_ieenum cfg80211_rnr_iter_retcfg80211_iter_rnrcfg80211_defragment_elementcfg80211_send_layer2_update
- Regulatory enforcement infrastructure π β the vibes are "rules are rules", and yes it's a whole squad
Regulatory enforcement infrastructure(9)regulatory_hintregulatory_set_wiphy_regdregulatory_set_wiphy_regd_syncwiphy_apply_custom_regulatoryfreq_reg_inforeg_initiator_nameregulatory_pre_cac_allowed
- Internal regulatory db functions πΈ β yes, "internal", so bestie pls don't go poking around in there π
Internal regulatory db functions(9)reg_query_regdb_wmmcfg80211_scan_donecfg80211_sched_scan_resultscfg80211_sched_scan_stoppedcfg80211_sched_scan_stopped_lockedcfg80211_inform_bss_frame_datacfg80211_gen_new_bssidcfg80211_is_element_inheritedcfg80211_merge_profileenum cfg80211_bss_frame_typecfg80211_get_ies_channel_numbercfg80211_ssid_eqcfg80211_inform_bss_data__cfg80211_get_bsscfg80211_get_bsscfg80211_ref_bsscfg80211_put_bsscfg80211_unlink_bsscfg80211_bss_itercfg80211_rx_mlme_mgmtcfg80211_auth_timeoutstruct cfg80211_rx_assoc_resp_datacfg80211_rx_assoc_respstruct cfg80211_assoc_failurecfg80211_assoc_failurecfg80211_tx_mlme_mgmtcfg80211_rx_unprot_mlme_mgmtcfg80211_michael_mic_failurecfg80211_ibss_joinedcfg80211_notify_new_peer_candidate
- RFkill integration π β the off switch, respectfully
RFkill integration(9)wiphy_rfkill_set_hw_state_reasonwiphy_rfkill_start_pollingwiphy_rfkill_stop_polling
- Vendor commands π₯ β driver-specific era, go off
Vendor commands(9)cfg80211_vendor_cmd_alloc_reply_skbcfg80211_vendor_cmd_replycfg80211_vendor_cmd_get_sendercfg80211_vendor_event_alloccfg80211_vendor_event_alloc_ucastcfg80211_vendor_event
- Test mode β β for the testing girlies
Test mode(9)cfg80211_testmode_alloc_reply_skbcfg80211_testmode_replycfg80211_testmode_alloc_event_skbcfg80211_testmode_event
- Connection / roaming / notification goodies π β the "tell everyone what just happened" gang, and they are dramatic
struct cfg80211_fils_resp_paramsstruct cfg80211_connect_resp_paramscfg80211_connect_donecfg80211_connect_bsscfg80211_connect_resultcfg80211_connect_timeoutstruct cfg80211_roam_infocfg80211_roamedcfg80211_port_authorizedcfg80211_disconnectedcfg80211_remain_on_channel_expiredcfg80211_tx_mgmt_expiredcfg80211_sinfo_alloc_tid_statscfg80211_link_sinfo_alloc_tid_statscfg80211_sinfo_release_contentcfg80211_new_stacfg80211_del_sta_sinfocfg80211_del_stacfg80211_conn_failedstruct cfg80211_rx_infocfg80211_rx_mgmt_extcfg80211_rx_mgmt_khzcfg80211_rx_mgmtstruct cfg80211_tx_statuscfg80211_mgmt_tx_status_extcfg80211_mgmt_tx_statuscfg80211_control_port_tx_statuscfg80211_rx_control_portcfg80211_cqm_rssi_notifycfg80211_cqm_pktloss_notifycfg80211_cqm_txe_notifycfg80211_cqm_beacon_loss_notify__cfg80211_radar_eventcfg80211_sta_opmode_change_notifycfg80211_cac_eventcfg80211_background_cac_abortcfg80211_gtk_rekey_notifycfg80211_pmksa_candidate_notifycfg80211_rx_spurious_framecfg80211_rx_unexpected_4addr_framecfg80211_probe_statuscfg80211_report_obss_beacon_khzcfg80211_report_obss_beaconstruct cfg80211_beaconing_check_config
and that's genuinely the entire list, π not one single page left out, periodt. more coming in the next part bestie π«Ά
okay so the SEE ALSO list keeps going and honestly it's giving "the entire group chat got added to the call" energy π β here's the rest of the crew, every single one of them, no cap:
cfg80211_reg_check_beaconing(9)cfg80211_reg_can_beacon(9)cfg80211_reg_can_beacon_relax(9)cfg80211_ch_switch_notify(9)cfg80211_ch_switch_started_notify(9)
then the whole operating-class-to-chandef pipeline, which is lowkey iconic:
ieee80211_operating_class_to_band(9)ieee80211_operating_class_to_chandef(9)ieee80211_chandef_to_operating_class(9)ieee80211_chandef_to_khz(9)
the TDLS / bitrate / device-registration girlies β¨:
cfg80211_tdls_oper_request(9)cfg80211_calculate_bitrate(9)cfg80211_unregister_wdev(9)cfg80211_register_netdevice(9)cfg80211_unregister_netdevice(9)
fast-transition + P2P + IE-parsing squad π«Ά:
struct cfg80211_ft_event_params(9)cfg80211_ft_event(9)cfg80211_get_p2p_attr(9)ieee80211_ie_split_ric(9)ieee80211_ie_split(9)ieee80211_fragment_element(9)
power-save wakeups, critical protocol, and channel bookkeeping (main character energy fr):
cfg80211_report_wowlan_wakeup(9)cfg80211_crit_proto_stopped(9)ieee80211_get_num_supported_channels(9)cfg80211_check_combinations(9)cfg80211_iter_combinations(9)cfg80211_get_radio_idx_by_chan(9)cfg80211_stop_link(9)cfg80211_stop_iface(9)cfg80211_shutdown_all_interfaces(9)
ext features, because we love a feature flag π:
NAN hive, a whole little friend group:
cfg80211_free_nan_func(9)struct cfg80211_nan_match_params(9)cfg80211_nan_match(9)cfg80211_nan_func_terminated(9)cfg80211_nan_sched_update_done(9)
external auth, PMSR, iftype rules, and OWE updates πΈ:
cfg80211_external_auth_request(9)cfg80211_pmsr_report(9)cfg80211_pmsr_complete(9)cfg80211_iftype_allowed(9)cfg80211_assoc_comeback(9)cfg80211_update_owe_info_event(9)
BSS flush + the entire colour-change cinematic universe π:
cfg80211_bss_flush(9)cfg80211_bss_color_notify(9)cfg80211_obss_color_collision_notify(9)cfg80211_color_change_started_notify(9)cfg80211_color_change_aborted_notify(9)cfg80211_color_change_notify(9)
6 GHz power types, MLO link drama, and scheduling the channel checks π :
cfg80211_6ghz_power_type(9)cfg80211_links_removed(9)struct cfg80211_mlo_reconf_done_data(9)cfg80211_mlo_reconf_add_done(9)cfg80211_schedule_channels_check(9)cfg80211_epcs_changed(9)
more NAN, we're literally never leaving the NAN section:
cfg80211_next_nan_dw_notif(9)cfg80211_nan_cluster_joined(9)cfg80211_nan_ulw_update(9)cfg80211_nan_channel_evac(9)
debugfs (locked, bestie), S1G frequency math, and the incumbent signal heads-up β:
wiphy_locked_debugfs_read(9)wiphy_locked_debugfs_write(9)cfg80211_s1g_get_start_freq_khz(9)cfg80211_s1g_get_end_freq_khz(9)cfg80211_s1g_get_primary_sibling(9)cfg80211_incumbent_signal_notify(9)
and that's the whole page, bestie, you ate that π no skimming, no skipping, every last reference accounted for, periodt.
so this little beauty lives out of ./include/net, it's stamped October 2026, and the whole thing is filed under cfg80211_ready_on_channel(9) β go forth and slay your channel-ready notifications π¦π
π¦ 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