regulatory_hint(9)
πΈ regulatory_hint(9) β or, "how to tell the wireless core where you think you are" πΈ
okay bestie, welcome to the regulatory_hint(9) page from the Kernel API Manual π
this is part 1 of a whole multi-part saga, so hydrate and let's go π«Ά
β¨ NAME β¨
regulatory_hint β a driver's little hint to the wireless core about what it thinks the regulatory domain is π¦
β¨ SYNOPSIS β¨
int regulatory_hint (struct wiphy *wiphy , const char *alpha2 );
β¨ ARGUMENTS β¨
wiphyβ the wireless device that's doing the hinting π ngl this one is only used for reporting conflicts, that's literally its whole job here.alpha2β the ISO/IEC 3166 alpha2 code that the driver claims its regulatory domain should be in π ifrdis set, this should beNULL. and hear me out: even if you set this toNULL, you still have to setrd->alpha2to some accepted alpha2. no cap, don't skip that part π
β¨ DESCRIPTION β¨
so the way this works π wireless drivers can call this function to drop a hint to the wireless core about what it believes should be the current regulatory domain. you do that one of two ways, and honestly both are iconic:
- hand over an ISO/IEC 3166 alpha2 country code that it knows its regulatory domain should be in π
- or provide a completely build regulatory domain π
and if the driver provides an ISO/IEC 3166 alpha2, then userspace gets queried for a regulatory domain structure for that respective country. yes, userspace gets a say, that's the vibe π«
β οΈ important, don't sleep on this: thewiphymust have been registered tocfg80211prior to this call. so forcfg80211drivers that means you must first usewiphy_register, and formac80211drivers you must first useieee80211_register_hw. order matters bestie, it's giving prerequisites π₯
drivers should check the return value β it's possible you can get a -ENOMEM π so like, actually look at what it returns, okay?
β¨ RETURN β¨
0 on success. -ENOMEM if the memory vibes are not immaculate π
okay that's part 1 wrapped, don't go anywhere β more parts are coming π
π SEE ALSO π
okay bestie, this is the part where the page points you at literally every other page in the neighborhood, and there are so many π«Ά and yes every single one is listed below, no skips, no "etc." shortcuts, we don't do that here π
- Kernel file
./include/net/cfg80211.hβ the actual header everything on this page lives inside, go read it if you want the source-of-truth vibe
π«Ά start here
Introduction(9)β if you're brand new to this whole subsystem, start with this one, it's the vibe check πDevice registration(9)β all about getting a device registered and known
π¦ the caps & bands era
enum ieee80211_channel_flags(9)β the channel flags enumstruct ieee80211_channel(9)β the channel struct itself, main character energyenum ieee80211_rate_flags(9)β flags for ratesenum ieee80211_bss_type(9)β BSS type enumenum ieee80211_privacy(9)β the privacy enumstruct ieee80211_rate(9)β a rate, as a structstruct ieee80211_he_obss_pd(9)β the HE OBSS PD structstruct cfg80211_he_bss_color(9)β BSS color, HE flavoredstruct ieee80211_sta_ht_cap(9)β HT capabilities for a stationstruct ieee80211_sta_vht_cap(9)β VHT capabilities, the next gen upgradestruct ieee80211_sta_he_cap(9)β HE caps, we're so backstruct ieee80211_eht_mcs_nss_supp(9)β EHT MCS/NSS support, the detailed one β¨struct ieee80211_sta_eht_cap(9)β EHT capabilities, newest-gen energystruct ieee80211_sta_uhr_cap(9)β UHR capabilities, yes there's another onestruct ieee80211_sband_iftype_data(9)β per-band, per-iftype data, lowkey importantenum ieee80211_edmg_bw_config(9)β EDMG bandwidth config enumstruct ieee80211_edmg(9)β the EDMG structstruct ieee80211_sta_s1g_cap(9)β S1G capsstruct ieee80211_supported_band(9)β a supported band, iconic_ieee80211_set_sband_iftype_data(9)β the one with the leading underscore πieee80211_set_sband_iftype_data(9)β the setter, no underscorefor_each_sband_iftype_data(9)β the loop macro, ilysmieee80211_get_sband_iftype_data(9)β the getter to matchieee80211_get_he_iftype_cap(9)β grab the HE cap for an iftypeieee80211_get_he_6ghz_capa(9)β HE 6 GHz capability getterieee80211_get_eht_iftype_cap(9)β EHT version of the same thingieee80211_get_uhr_iftype_cap(9)β and the UHR one, they really did all three π«wiphy_read_of_freq_limits(9)β reads frequency limits out ofof
π actions and configuration
Actions and configuration(9)β this is the big one, everything about doing stuff lives herestruct vif_params(9)β virtual interface paramsstruct key_params(9)β key params, for your keysstruct cfg80211_chan_def(9)β the channel definition struct, you'll see it a lotstruct cfg80211_tid_cfg(9)β TID config structstruct cfg80211_tid_config(9)β the full TID config, not to be confused with the one above πstruct cfg80211_fils_aad(9)β FILS AAD structstruct cfg80211_set_hw_timestamp(9)β hardware timestamp setting struct
chandef girlies rise π
cfg80211_get_chandef_type(9)β get the type of a chandefcfg80211_chandef_create(9)β make onecfg80211_chandef_identical(9)β are two chandefs the same, a classiccfg80211_chandef_is_edmg(9)β is it EDMGcfg80211_chandef_is_s1g(9)β is it S1Gcfg80211_chandef_compatible(9)β are they compatiblenl80211_chan_width_to_mhz(9)β turn a channel width into MHzcfg80211_chandef_get_width(9)β get the widthcfg80211_chandef_valid(9)β is it valid, please check this one frcfg80211_chandef_usable(9)β is it usablecfg80211_chandef_dfs_required(9)β does it need DFScfg80211_chandef_dfs_usable(9)β is it DFS-usablecfg80211_chandef_dfs_cac_time(9)β the DFS CAC timecfg80211_chandef_primary(9)β the primary channel of a chandefcfg80211_chandef_npca_valid(9)β NPCA validity checkcfg80211_chandef_add_npca(9)β add NPCAcfg80211_chandef_add_dbe(9)β add DBEnl80211_send_chandef(9)β send a chandef out over nl80211ieee80211_chandef_max_power(9)β max power for a chandefcfg80211_chandef_s1g_pri_width(9)β S1G primary widthcfg80211_any_usable_channels(9)β are there any usable channels at all
survey + crypto + AP setup πΈ
enum survey_info_flags(9)β survey info flags enumstruct survey_info(9)β the survey info structstruct cfg80211_crypto_settings(9)β crypto settings, handle with carestruct cfg80211_mbssid_config(9)β MBSSID configstruct cfg80211_mbssid_elems(9)β MBSSID elementsstruct cfg80211_rnr_elems(9)β RNR elementsstruct cfg80211_beacon_data(9)β beacon data, the whole point of beacons tbhstruct cfg80211_acl_data(9)β ACL datastruct cfg80211_fils_discovery(9)β FILS discovery structstruct cfg80211_unsol_bcast_probe_resp(9)β unsolicited broadcast probe responsestruct cfg80211_s1g_short_beacon(9)β S1G short beaconstruct cfg80211_ap_settings(9)β AP settings, big onestruct cfg80211_ap_update(9)β AP updatestruct cfg80211_csa_settings(9)β channel switch announcement settingsstruct cfg80211_color_change_settings(9)β color change settingsstruct iface_combination_params(9)β interface combination params
stations, rates, stats β¨
enum station_parameters_apply_mask(9)β the apply mask enum for station parametersstruct sta_txpwr(9)β station tx powerstruct link_station_parameters(9)β link station paramsstruct link_station_del_parameters(9)β params for deleting a link stationstruct cfg80211_ttlm_params(9)β TTLM paramsstruct station_parameters(9)β station params, the classicstruct station_del_parameters(9)β params for deleting a stationenum cfg80211_station_type(9)β station type enumcfg80211_check_station_change(9)β checks a station changeenum rate_info_flags(9)β rate info flagsenum rate_info_bw(9)β rate info bandwidth enumstruct rate_info(9)β rate info structenum bss_param_flags(9)β BSS parameter flagsstruct sta_bss_parameters(9)β station BSS parametersstruct cfg80211_txq_stats(9)β txq statsstruct cfg80211_tid_stats(9)β TID statsstruct link_station_info(9)β link station infostruct station_info(9)β station info, huge and iconicstruct cfg80211_sar_sub_specs(9)β SAR sub-specsstruct cfg80211_sar_specs(9)β SAR specsstruct cfg80211_sar_freq_ranges(9)β SAR frequency rangesstruct cfg80211_sar_capa(9)β SAR capabilitiescfg80211_get_station(9)β get a stationenum monitor_flags(9)β monitor flags enumenum mpath_info_flags(9)β mpath info flagsstruct mpath_info(9)β mpath infoenum wiphy_bss_param_flags(9)β wiphy BSS param flagsstruct bss_parameters(9)β BSS parametersstruct mesh_config(9)β mesh configstruct mesh_setup(9)β mesh setupstruct ocb_setup(9)β OCB setupstruct ieee80211_txq_params(9)β txq params
πΈ scanning and BSS list handling
Scanning and BSS list handling(9)β the section that covers the whole scan-and-keep-track-of-BSS situationstruct cfg80211_ssid(9)β an SSID, as a structstruct cfg80211_scan_info(9)β scan infostruct cfg80211_scan_6ghz_params(9)β 6 GHz scan paramsstruct cfg80211_scan_request(9)β a scan requeststruct cfg80211_match_set(9)β match setstruct cfg80211_sched_scan_plan(9)β scheduled scan planstruct cfg80211_bss_select_adjust(9)β BSS select adjuststruct cfg80211_sched_scan_request(9)β a scheduled scan requestenum cfg80211_signal_type(9)β signal type enumstruct cfg80211_inform_bss(9)β the inform-BSS structstruct cfg80211_bss_ies(9)β BSS IEsstruct cfg80211_bss(9)β a BSS, the whole pointieee80211_bss_get_elem(9)β grab an element out of a BSSieee80211_bss_get_ie(9)β the IE version of the samestruct cfg80211_auth_request(9)β auth requeststruct cfg80211_assoc_link(9)β assoc linkstruct cfg80211_ml_reconf_req(9)β ML reconfig requestenum cfg80211_assoc_req_flags(9)β assoc request flagsstruct cfg80211_assoc_request(9)β assoc requeststruct cfg80211_deauth_request(9)β deauth request, sad times πstruct cfg80211_disassoc_request(9)β disassoc requeststruct cfg80211_ibss_params(9)β IBSS paramsstruct cfg80211_bss_selection(9)β BSS selectionstruct cfg80211_connect_params(9)β connect params, you'll be here a whileenum cfg80211_connect_params_changed(9)β which connect params changedenum wiphy_params_flags(9)β wiphy params flagsstruct cfg80211_pmksa(9)β PMKSA structstruct cfg80211_pkt_pattern(9)β packet patternstruct cfg80211_wowlan_tcp(9)β WoWLAN TCPstruct cfg80211_wowlan(9)β WoWLAN, wake on wireless, genuinely obsessedstruct cfg80211_coalesce_rules(9)β coalesce rulesstruct cfg80211_coalesce(9)β coalescestruct cfg80211_wowlan_nd_match(9)β WoWLAN net-detect matchstruct cfg80211_wowlan_nd_info(9)β WoWLAN net-detect infostruct cfg80211_wowlan_wakeup(9)β WoWLAN wakeupstruct cfg80211_gtk_rekey_data(9)β GTK rekey datastruct cfg80211_update_ft_ies_params(9)β params for updating FT IEsstruct cfg80211_mgmt_tx_params(9)β mgmt tx paramsstruct cfg80211_dscp_exception(9)β DSCP exceptionstruct cfg80211_dscp_range(9)β DSCP rangestruct cfg80211_qos_map(9)β QoS map
π§ Neighbor Awareness Networking (NAN)
Neighbor Awareness Networking (NAN)(9)β the NAN section itself, say hi πstruct cfg80211_nan_band_config(9)β NAN band configstruct cfg80211_nan_conf(9)β NAN configstruct cfg80211_nan_channel(9)β NAN channelstruct cfg80211_nan_local_sched(9)β NAN local schedulestruct cfg80211_nan_peer_map(9)β NAN peer mapstruct cfg80211_nan_peer_sched(9)β NAN peer scheduleenum cfg80211_nan_conf_changes(9)β which NAN config bits changedstruct cfg80211_nan_func_filter(9)β NAN function filterstruct cfg80211_nan_func(9)β a NAN function
π the wiphy files
struct cfg80211_pmk_conf(9)β PMK configstruct cfg80211_external_auth_params(9)β external auth paramsstruct cfg80211_ftm_responder_stats(9)β FTM responder statsstruct cfg80211_pmsr_ftm_result(9)β PMSR FTM resultstruct cfg80211_pmsr_result(9)β PMSR resultstruct cfg80211_pmsr_ftm_request_peer(9)β PMSR FTM request peerstruct cfg80211_pmsr_request_peer(9)β PMSR request peerstruct cfg80211_pmsr_request(9)β PMSR requeststruct cfg80211_update_owe_info(9)β update OWE infostruct mgmt_frame_regs(9)β management frame registrationsstruct cfg80211_ops(9)β the ops struct, the backbone of your driver tbhenum wiphy_flags(9)β wiphy flagsstruct ieee80211_iface_limit(9)β interface limitsstruct ieee80211_iface_combination(9)β interface combinationsenum wiphy_wowlan_support_flags(9)β WoWLAN support flagsstruct wiphy_wowlan_support(9)β WoWLAN supportstruct wiphy_coalesce_support(9)β coalesce supportenum wiphy_vendor_command_flags(9)β vendor command flagsenum wiphy_opmode_flag(9)β opmode flag enumstruct sta_opmode_info(9)β station opmode infostruct wiphy_vendor_command(9)β a vendor commandstruct wiphy_iftype_ext_capab(9)β iftype extended capabilitiescfg80211_get_iftype_ext_capa(9)β get those extended capabilitiesstruct cfg80211_pmsr_capabilities(9)β PMSR capabilitiesstruct wiphy_iftype_akm_suites(9)β iftype AKM suitesstruct wiphy_radio_cfg(9)β wiphy radio configstruct wiphy_radio_freq_range(9)β wiphy radio freq rangestruct wiphy_radio(9)β a wiphy radioenum wiphy_nan_flags(9)β wiphy NAN flagsstruct wiphy_nan_capa(9)β wiphy NAN capabilitiesstruct wiphy(9)β the wiphy struct itself, absolute icon πwiphy_priv(9)β grab the driver-private part of a wiphypriv_to_wiphy(9)β go the other way, private back to wiphyset_wiphy_dev(9)β set the device on a wiphywiphy_dev(9)β get the devicewiphy_name(9)β the wiphy's namewiphy_new_nm(9)β make a new wiphy with a namewiphy_new(9)β make a new wiphywiphy_register(9)β register itrcu_dereference_wiphy(9)β RCU deref a wiphywiphy_dereference(9)β the wiphy deref helperget_wiphy_regdom(9)β get the wiphy's regulatory domainwiphy_unregister(9)β unregister itwiphy_free(9)β free it, and don't forget this one πwiphy_lock(9)β lock itwiphy_unlock(9)β unlock it, pleasewiphy_work_queue(9)β queue wiphy workwiphy_work_cancel(9)β cancel wiphy workwiphy_work_flush(9)β flush wiphy workwiphy_delayed_work_queue(9)β queue delayed wiphy workwiphy_delayed_work_cancel(9)β cancel delayed wiphy workwiphy_delayed_work_flush(9)β flush delayed wiphy workwiphy_delayed_work_pending(9)β is delayed work pendingwiphy_hrtimer_work_queue(9)β queue hrtimer workwiphy_hrtimer_work_cancel(9)β cancel hrtimer workwiphy_hrtimer_work_flush(9)β flush hrtimer workwiphy_hrtimer_work_pending(9)β is hrtimer work pendingenum ieee80211_ap_reg_power(9)β AP regulatory power enumstruct wireless_dev(9)β the wireless dev struct, another iconwdev_priv(9)β the private part of a wireless devwdev_chandef(9)β the chandef of a wireless dev
β¨ Utility functions
Utility functions(9)β the grab-bag section, all the little helpersieee80211_channel_equal(9)β are two channels equalieee80211_channel_to_khz(9)β channel β kHzieee80211_channel_to_freq_khz(9)β channel β frequency in kHzieee80211_channel_to_frequency(9)β channel β frequency, the classicieee80211_freq_khz_to_channel(9)β kHz frequency β channelieee80211_frequency_to_channel(9)β frequency β channelieee80211_get_channel_khz(9)β get a channel from a kHz valueieee80211_get_channel(9)β get a channelcfg80211_channel_is_psc(9)β is this channel a PSCieee80211_radio_freq_range_valid(9)β is the radio freq range validcfg80211_radio_chandef_valid(9)β is the radio chandef validcfg80211_wdev_channel_allowed(9)β is this channel allowed for this wdevieee80211_get_response_rate(9)β get the response rateieee80211_mandatory_rates(9)β the mandatory ratesstruct ieee80211_radiotap_iterator(9)β the radiotap iteratorieee80211_get_hdrlen_from_skb(9)β header length from an skbieee80211_hdrlen(9)β the 802.11 header lengthieee80211_get_mesh_hdrlen(9)β the mesh header length
π Data path helpers
Data path helpers(9)β everything that touches actual packets, buckle up πieee80211_data_to_8023_exthdr(9)β 802.11 β 802.3 with the extended headerieee80211_data_to_8023(9)β the plain versionieee80211_is_valid_amsdu(9)β is this a valid A-MSDUieee80211_amsdu_to_8023s(9)β A-MSDU β multiple 802.3 framesieee80211_get_8023_tunnel_proto(9)β get the 802.3 tunnel protocolieee80211_strip_8023_mesh_hdr(9)β strip the 802.3 mesh headercfg80211_classify8021d(9)β classify into 802.1Dcfg80211_find_elem_match(9)β find a matching elementcfg80211_find_ie_match(9)β find a matching IEcfg80211_find_elem(9)β find an elementcfg80211_find_ie(9)β find an IEcfg80211_find_ext_elem(9)β find an extended elementcfg80211_find_ext_ie(9)β find an extended IEcfg80211_find_vendor_elem(9)β find a vendor elementcfg80211_find_vendor_ie(9)β find a vendor IEenum cfg80211_rnr_iter_ret(9)β the RNR iterator return enumcfg80211_iter_rnr(9)β iterate over RNRcfg80211_defragment_element(9)β defragment an elementcfg80211_send_layer2_update(9)β send a layer 2 update
π₯ regulatory enforcement infrastructure
Regulatory enforcement infrastructure(9)β the section on keeping everything legal-ish, very much a whole thing π₯regulatory_set_wiphy_regd(9)β set the wiphy's regulatory domainregulatory_set_wiphy_regd_sync(9)β the synchronous versionwiphy_apply_custom_regulatory(9)β apply a custom regulatory setupfreq_reg_info(9)β regulatory info for a frequencyreg_initiator_name(9)β the name of whoever initiated the reg requestregulatory_pre_cac_allowed(9)β is pre-CAC allowed
π Internal regulatory db functions
Internal regulatory db functions(9)β internal, so, yk, be careful πreg_query_regdb_wmm(9)β query the regulatory db for WMM info
π more scanning / BSS / management
cfg80211_scan_done(9)β tell everyone the scan is donecfg80211_sched_scan_results(9)β scheduled scan results are incfg80211_sched_scan_stopped(9)β scheduled scan stoppedcfg80211_sched_scan_stopped_locked(9)β the locked versioncfg80211_inform_bss_frame_data(9)β inform about a BSS from a framecfg80211_gen_new_bssid(9)β generate a new BSSIDcfg80211_is_element_inherited(9)β is this element inheritedcfg80211_merge_profile(9)β merge a profileenum cfg80211_bss_frame_type(9)β BSS frame type enumcfg80211_get_ies_channel_number(9)β get the channel number out of the IEscfg80211_ssid_eq(9)β compare two SSIDscfg80211_inform_bss_data(9)β inform about a BSS from data__cfg80211_get_bss(9)β the underscored get-BSS one πcfg80211_get_bss(9)β get a BSS, the regular onecfg80211_ref_bss(9)β take a referencecfg80211_put_bss(9)β drop a referencecfg80211_unlink_bss(9)β unlink a BSScfg80211_bss_iter(9)β iterate over BSSescfg80211_rx_mlme_mgmt(9)β receive an MLME management framecfg80211_auth_timeout(9)β auth timed out πstruct cfg80211_rx_assoc_resp_data(9)β data for a received assoc responsecfg80211_rx_assoc_resp(9)β receive an assoc responsestruct cfg80211_assoc_failure(9)β assoc failure structcfg80211_assoc_failure(9)β report an assoc failurecfg80211_tx_mlme_mgmt(9)β send an MLME management framecfg80211_rx_unprot_mlme_mgmt(9)β receive an unprotected MLME management framecfg80211_michael_mic_failure(9)β MIC failure, never a fun notificationcfg80211_ibss_joined(9)β joined an IBSScfg80211_notify_new_peer_candidate(9)β a new peer candidate showed up π
π RFkill integration
RFkill integration(9)β the rfkill sectionwiphy_rfkill_set_hw_state_reason(9)β set the hardware rfkill state with a reasonwiphy_rfkill_start_polling(9)β start pollingwiphy_rfkill_stop_polling(9)β stop polling
π Vendor commands
Vendor commands(9)β the vendor command sectioncfg80211_vendor_cmd_alloc_reply_skb(9)β allocate a reply skb for a vendor cmdcfg80211_vendor_cmd_reply(9)β send that replycfg80211_vendor_cmd_get_sender(9)β who sent itcfg80211_vendor_event_alloc(9)β allocate a vendor eventcfg80211_vendor_event_alloc_ucast(9)β allocate a unicast vendor eventcfg80211_vendor_event(9)β send a vendor event
β Test mode
Test mode(9)β test mode section, for testing obviously βcfg80211_testmode_alloc_reply_skb(9)β allocate a testmode reply skbcfg80211_testmode_reply(9)β send the testmode replycfg80211_testmode_alloc_event_skb(9)β allocate a testmode event skbcfg80211_testmode_event(9)β send a testmode event
π«Ά connection / roam / mgmt notifications
struct cfg80211_fils_resp_params(9)β FILS response paramsstruct cfg80211_connect_resp_params(9)β connect response paramscfg80211_connect_done(9)β connect finishedcfg80211_connect_bss(9)β connect to a BSScfg80211_connect_result(9)β the connect resultcfg80211_connect_timeout(9)β connect timed out, we've all been there πstruct cfg80211_roam_info(9)β roam infocfg80211_roamed(9)β you roamedcfg80211_port_authorized(9)β the port got authorizedcfg80211_disconnected(9)β disconnected, tragiccfg80211_ready_on_channel(9)β ready on channelcfg80211_remain_on_channel_expired(9)β remain-on-channel expiredcfg80211_tx_mgmt_expired(9)β mgmt tx expiredcfg80211_sinfo_alloc_tid_stats(9)β allocate TID stats in the station infocfg80211_link_sinfo_alloc_tid_stats(9)β the per-link versioncfg80211_sinfo_release_content(9)β release the station info contents, don't forget or leak π«cfg80211_new_sta(9)β a new station appearedcfg80211_del_sta_sinfo(9)β a station left, with infocfg80211_del_sta(9)β a station left, plaincfg80211_conn_failed(9)β connection failedstruct cfg80211_rx_info(9)β rx info structcfg80211_rx_mgmt_ext(9)β receive a mgmt frame, extendedcfg80211_rx_mgmt_khz(9)β receive a mgmt frame, in kHzcfg80211_rx_mgmt(9)β receive a mgmt framestruct cfg80211_tx_status(9)β tx status structcfg80211_mgmt_tx_status_ext(9)β mgmt tx status, extendedcfg80211_mgmt_tx_status(9)β mgmt tx statuscfg80211_control_port_tx_status(9)β control port tx statuscfg80211_rx_control_port(9)β receive on the control portcfg80211_cqm_rssi_notify(9)β RSSI crossed a thresholdcfg80211_cqm_pktloss_notify(9)β packet loss notificationcfg80211_cqm_txe_notify(9)β tx error notificationcfg80211_cqm_beacon_loss_notify(9)β beacon loss notification__cfg80211_radar_event(9)β radar event, the underscored one πcfg80211_sta_opmode_change_notify(9)β station opmode changedcfg80211_cac_event(9)β CAC eventcfg80211_background_cac_abort(9)β background CAC abortedcfg80211_gtk_rekey_notify(9)β GTK rekey notificationcfg80211_pmksa_candidate_notify(9)β PMKSA candidate notificationcfg80211_rx_spurious_frame(9)β a spurious frame arrived, rudecfg80211_rx_unexpected_4addr_frame(9)β unexpected 4-address framecfg80211_probe_status(9)β probe statuscfg80211_report_obss_beacon_khz(9)β report an OBSS beacon, in kHzcfg80211_report_obss_beacon(9)β report an OBSS beaconstruct cfg80211_beaconing_check_config(9)β beaconing check config, last one on the list bestie π
Okay so this list is long long, bestie β 64 whole entries β so we're breaking it into little clusters so your brain doesn't just log off π every name is exactly as it appears, promise, no cap.
π¦ the beaconing & channel crew
the "can I even beacon here" trio, iconic honestly π
πΈ channel switches & operating classes
cfg80211_ch_switch_notify(9)cfg80211_ch_switch_started_notify(9)ieee80211_operating_class_to_band(9)ieee80211_operating_class_to_chandef(9)ieee80211_chandef_to_operating_class(9)ieee80211_chandef_to_khz(9)
look at all these lil conversions going both ways, it's giving very "i know a guy" energy β¨
π«Ά interfaces, devices & features
cfg80211_tdls_oper_request(9)cfg80211_calculate_bitrate(9)cfg80211_unregister_wdev(9)cfg80211_register_netdevice(9)cfg80211_unregister_netdevice(9)struct cfg80211_ft_event_params(9)cfg80211_ft_event(9)wiphy_ext_feature_set(9)wiphy_ext_feature_isset(9)cfg80211_iftype_allowed(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)
the register/unregister twins are lowkey main characters here π and yes, cfg80211_shutdown_all_interfaces(9) really said "all of them" π
π§ p2p, IEs & fragmenting
cfg80211_get_p2p_attr(9)ieee80211_ie_split_ric(9)ieee80211_ie_split(9)ieee80211_fragment_element(9)
splitting and fragmenting, the way that these just carve things up, obsessed π
π wakeups, crit protos & supported channels
cfg80211_report_wowlan_wakeup(9)cfg80211_crit_proto_stopped(9)ieee80211_get_num_supported_channels(9)
three little besties doing completely different jobs, and honestly? valid π
π NAN gang (they get their own section fr)
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)cfg80211_next_nan_dw_notif(9)cfg80211_nan_cluster_joined(9)cfg80211_nan_ulw_update(9)cfg80211_nan_channel_evac(9)
nine nan entries, they're literally a friend group π
π₯ auth, pmsr & assoc
cfg80211_external_auth_request(9)cfg80211_pmsr_report(9)cfg80211_pmsr_complete(9)cfg80211_assoc_comeback(9)cfg80211_update_owe_info_event(9)
the assoc comeback is such a vibe name honestly, whoever named it ate π
π BSS, colour & 6GHz
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)cfg80211_6ghz_power_type(9)
a whole colour-change saga with a start, an abort and a notify β it's giving trilogy π¬
π MLO & channel checks
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)
reconfig add done is such a "finally finished, anyway" moment π
β debugfs & S1G & incumbent signals
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)
start freq, end freq, primary sibling β the S1G trio said "we come as a set" π«Ά
aaaand that's the whole list, all 64 of them, nobody left behind π go read them, they're literally right there, iykyk. if you got all the way down here you're a real one fr fr ππ«Ά
sign-off time π§β¨ this little masterpiece lives in ./include/net, dated October 2026, and it's all about regulatory_hint(9) β go forth and look up every single one of those cross-refs, bestie, you've got this π
π
π¦ 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