STRUCT WIRELESS_DEV(9)
๐ธ NAME ๐ธ
okay so this page is struct wireless_dev(9) from the Kernel API Manual, and it's literally wireless device state โ that's the whole name, bestie ๐
โจ SYNOPSIS โจ
here's the entire struct, no cap. every field, every semicolon, exactly as it appears:
struct wireless_dev {
struct wiphy *wiphy;
enum nl80211_iftype iftype;
struct list_head list;
struct net_device *netdev;
u32 identifier;
struct list_head mgmt_registrations;
u8 mgmt_registrations_need_update:1;
bool use_4addr, is_running, registered, registering;
u8 address[ETH_ALEN];
struct cfg80211_conn *conn;
struct cfg80211_cached_keys *connect_keys;
enum ieee80211_bss_type conn_bss_type;
u32 conn_owner_nlportid;
struct wiphy_work disconnect_wk;
u8 disconnect_bssid[ETH_ALEN];
struct list_head event_list;
spinlock_t event_lock;
u8 connected:1;
bool ps;
int ps_timeout;
u32 unexpected_nlportid;
u32 owner_nlportid;
bool nl_owner_dead;
#ifdef CONFIG_CFG80211_WEXT;
struct {
struct cfg80211_ibss_params ibss;
struct cfg80211_connect_params connect;
struct cfg80211_cached_keys *keys;
const u8 *ie;
size_t ie_len;
u8 bssid[ETH_ALEN];
u8 prev_bssid[ETH_ALEN];
u8 ssid[IEEE80211_MAX_SSID_LEN];
s8 default_key, default_mgmt_key;
bool prev_bssid_valid;
} wext;
#endif;
struct wiphy_work cqm_rssi_work;
struct cfg80211_cqm_config *cqm_config;
struct list_head pmsr_list;
spinlock_t pmsr_lock;
struct wiphy_work pmsr_free_wk;
unsigned long unprot_beacon_reported;
union {
struct {
u8 connected_addr[ETH_ALEN];
u8 ssid[IEEE80211_MAX_SSID_LEN];
u8 ssid_len;
} client;
struct {
int beacon_interval;
struct cfg80211_chan_def preset_chandef;
struct cfg80211_chan_def chandef;
u8 id[IEEE80211_MAX_MESH_ID_LEN];
u8 id_len, id_up_len;
} mesh;
struct {
struct cfg80211_chan_def preset_chandef;
u8 ssid[IEEE80211_MAX_SSID_LEN];
u8 ssid_len;
} ap;
struct {
struct cfg80211_internal_bss *current_bss;
struct cfg80211_chan_def chandef;
int beacon_interval;
u8 ssid[IEEE80211_MAX_SSID_LEN];
u8 ssid_len;
} ibss;
struct {
struct cfg80211_chan_def chandef;
} ocb;
struct {
u8 cluster_id[ETH_ALEN];
u8 n_channels;
struct cfg80211_chan_def *chandefs;
bool sched_update_pending;
} nan;
} u;
struct {
u8 addr[ETH_ALEN];
union {
struct {
unsigned int beacon_interval;
struct cfg80211_chan_def chandef;
} ap;
struct {
struct cfg80211_internal_bss *current_bss;
} client;
};
bool cac_started;
unsigned long cac_start_time;
unsigned int cac_time_ms;
} links[IEEE80211_MLD_MAX_NUM_LINKS];
u16 valid_links;
u32 radio_mask;
};
๐งฉ Members ๐งฉ
okay bestie, here's the field-by-field tour โ yes there are a lot, so hydrate first ๐
wiphyโ pointer to hardware description.iftypeโ interface type.listโ (private) used to collect the interfaces.netdevโ (private) used to reference back to the netdev; it may beNULL.identifierโ (private) identifier used in nl80211 to identify this wireless device if it has no netdev.mgmt_registrationsโ list of registrations for management frames.mgmt_registrations_need_updateโ mgmt registrations were updated, and the update needs to be propagated to the driver.use_4addrโ indicates 4addr mode is used on this interface. It must be set by the driver (if supported) onadd_interfaceBEFORE registering the netdev, and may otherwise be used by the driver read-only; cfg80211 will update it onchange_interface.is_runningโ true if this is a non-netdev device that has been started, e.g. the P2P Device.registeredโ is this wdev already registered with cfg80211?registeringโ indicates we're doing registration under wiphy lock for the notifier.addressโ the address for this device, valid only ifnetdevisNULL.connโ (private) cfg80211 software SME connection state machine data.connect_keysโ (private) keys to set after connection is established.conn_bss_typeโ connecting/connected BSS type.conn_owner_nlportidโ (private) connection owner socket port ID.disconnect_wkโ (private) auto-disconnect work.disconnect_bssidโ (private) the BSSID to use for auto-disconnect.event_listโ (private) list for internal event processing.event_lockโ (private) lock for event list.connectedโ indicates if connected or not (STA mode).psโ powersave mode is enabled.ps_timeoutโ dynamic powersave timeout.unexpected_nlportidโ (private) netlink port ID of application registered for unexpected frames (AP mode or NAN_DATA mode).owner_nlportidโ (private) owner socket port ID.nl_owner_deadโ (private) owner socket went away.wextโ (private) used by the internal wireless extensions compat code.wext.ibssโ (private) IBSS data part of wext handling.wext.connectโ (private) connection handling data.wext.keysโ (private) (WEP) key data.wext.ieโ (private) extra elements for association.wext.ie_lenโ (private) length of extra elements.wext.bssidโ (private) selected network BSSID.wext.prev_bssidโ (private) previous BSSID for reassociation.wext.ssidโ (private) selected network SSID.wext.default_keyโ (private) selected default key index.wext.default_mgmt_keyโ (private) selected default management key index.wext.prev_bssid_validโ (private) previous BSSID validity.
cqm_rssi_workโ (private) CQM RSSI reporting work.cqm_configโ (private) nl80211 RSSI monitor state.pmsr_listโ (private) peer measurement requests.pmsr_lockโ (private) peer measurements requests/results lock.pmsr_free_wkโ (private) peer measurements cleanup work.unprot_beacon_reportedโ (private) timestamp of last unprotected beacon report.uโ union containing data specific to iftype.linksโ array ofIEEE80211_MLD_MAX_NUM_LINKSelements containingaddr,ap, andclientfor each link.{unnamed_union}โ anonymous.links.cac_startedโ true if DFS channel availability check has been started.links.cac_start_timeโ timestamp (jiffies) when the dfs state was entered.links.cac_time_msโ CAC time in ms.
valid_linksโ bitmap describing what elements oflinksare valid.radio_maskโ bitmask of radios that this interface is allowed to operate on.
๐ฌ Description ๐ฌ
for netdevs, this structure must be allocated by the driver that uses the ieee80211_ptr field in struct net_device. that's intentional, bestie โ it means the struct can be allocated along with the netdev ๐ซถ
it need not be registered then, because netdev registration will be intercepted by cfg80211 so it can see the new wireless device. HOWEVER โ drivers must lock the wiphy before registering or unregistering netdevs if they pre-create any netdevs. in ops called from cfg80211, the wiphy is already locked, so that part is handled.
โ ๏ธ the wiphy lock rule is not a vibe suggestion: drivers must lock the wiphy before registering or unregistering netdevs if they pre-create any netdevs.
for non-netdev uses, it must also be allocated by the driver in response to the cfg80211 callbacks that require it. since there's no netdev registration in that case, it may not be allocated outside of callback operations that return it. periodt ๐
๐ SEE ALSO ๐
okay bestie, this is the part where the page just flexes its entire social circle ๐ like genuinely, this SEE ALSO is not a list, it's a group chat with 359 members and everyone's talking at once. Buckle in. We're going one by one, in order, no skipping, no cap.
First up, the place you actually open before any of this makes sense โ the kernel file itself:
./include/net/cfg80211.h
and the two big-picture pages that set the whole scene:
Introduction(9)Device registration(9)
then we get into the channel / rate / capability era of the list, and honestly it's giving "collect the whole set" energy โจ
enum ieee80211_channel_flags(9)struct ieee80211_channel(9)enum ieee80211_rate_flags(9)enum ieee80211_bss_type(9)enum ieee80211_privacy(9)struct ieee80211_rate(9)struct ieee80211_he_obss_pd(9)struct cfg80211_he_bss_color(9)struct ieee80211_sta_ht_cap(9)struct ieee80211_sta_vht_cap(9)struct ieee80211_sta_he_cap(9)struct ieee80211_eht_mcs_nss_supp(9)struct ieee80211_sta_eht_cap(9)struct ieee80211_sta_uhr_cap(9)struct ieee80211_sband_iftype_data(9)enum ieee80211_edmg_bw_config(9)struct ieee80211_edmg(9)struct ieee80211_sta_s1g_cap(9)struct ieee80211_supported_band(9)_ieee80211_set_sband_iftype_data(9)ieee80211_set_sband_iftype_data(9)for_each_sband_iftype_data(9)ieee80211_get_sband_iftype_data(9)ieee80211_get_he_iftype_cap(9)ieee80211_get_he_6ghz_capa(9)ieee80211_get_eht_iftype_cap(9)ieee80211_get_uhr_iftype_cap(9)wiphy_read_of_freq_limits(9)
the "Actions and configuration" arc โ this is the main character section, fr fr, it goes on forever and every single one of these deserves its own moment ๐
Actions and configuration(9)struct vif_params(9)struct key_params(9)struct cfg80211_chan_def(9)struct cfg80211_tid_cfg(9)struct cfg80211_tid_config(9)struct cfg80211_fils_aad(9)struct cfg80211_set_hw_timestamp(9)cfg80211_get_chandef_type(9)cfg80211_chandef_create(9)cfg80211_chandef_identical(9)cfg80211_chandef_is_edmg(9)cfg80211_chandef_is_s1g(9)cfg80211_chandef_compatible(9)nl80211_chan_width_to_mhz(9)cfg80211_chandef_get_width(9)cfg80211_chandef_valid(9)cfg80211_chandef_usable(9)cfg80211_chandef_dfs_required(9)cfg80211_chandef_dfs_usable(9)cfg80211_chandef_dfs_cac_time(9)cfg80211_chandef_primary(9)cfg80211_chandef_npca_valid(9)cfg80211_chandef_add_npca(9)cfg80211_chandef_add_dbe(9)nl80211_send_chandef(9)ieee80211_chandef_max_power(9)cfg80211_chandef_s1g_pri_width(9)cfg80211_any_usable_channels(9)
then the survey + crypto + beacon/AP batch rolls in like a whole friend group arriving at the function ๐ฆ
enum survey_info_flags(9)struct survey_info(9)struct cfg80211_crypto_settings(9)struct cfg80211_mbssid_config(9)struct cfg80211_mbssid_elems(9)struct cfg80211_rnr_elems(9)struct cfg80211_beacon_data(9)struct cfg80211_acl_data(9)struct cfg80211_fils_discovery(9)struct cfg80211_unsol_bcast_probe_resp(9)struct cfg80211_s1g_short_beacon(9)struct cfg80211_ap_settings(9)struct cfg80211_ap_update(9)struct cfg80211_csa_settings(9)struct cfg80211_color_change_settings(9)struct iface_combination_params(9)
and now the station-adjacent era of the list, where the names get long and lowkey iconic for it:
enum station_parameters_apply_mask(9)struct sta_txpwr(9)struct link_station_parameters(9)struct link_station_del_parameters(9)struct cfg80211_ttlm_params(9)struct station_parameters(9)struct station_del_parameters(9)enum cfg80211_station_type(9)cfg80211_check_station_change(9)enum rate_info_flags(9)enum rate_info_bw(9)struct rate_info(9)enum bss_param_flags(9)struct sta_bss_parameters(9)struct cfg80211_txq_stats(9)struct cfg80211_tid_stats(9)struct link_station_info(9)struct station_info(9)struct cfg80211_sar_sub_specs(9)struct cfg80211_sar_specs(9)struct cfg80211_sar_freq_ranges(9)struct cfg80211_sar_capa(9)cfg80211_get_station(9)enum monitor_flags(9)enum mpath_info_flags(9)struct mpath_info(9)enum wiphy_bss_param_flags(9)struct bss_parameters(9)struct mesh_config(9)struct mesh_setup(9)struct ocb_setup(9)struct ieee80211_txq_params(9)
Scanning and BSS list handling โ okay this one ate, no notes ๐ฅ the entire scan/auth/assoc/connect drama lives here:
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) โ the section name is a whole mouthful and we respect it ๐
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)
and then back into the general struct parade, bestie there is no break, we go straight through:
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)
the wiphy era โ this is where it gets REAL. struct cfg80211_ops shows up and then it's just wiphy everything for the next hundred lines ๐ญ
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_priv(9)priv_to_wiphy(9)set_wiphy_dev(9)wiphy_dev(9)wiphy_name(9)wiphy_new_nm(9)wiphy_new(9)wiphy_register(9)rcu_dereference_wiphy(9)wiphy_dereference(9)get_wiphy_regdom(9)wiphy_unregister(9)wiphy_free(9)wiphy_lock(9)wiphy_unlock(9)wiphy_work_queue(9)wiphy_work_cancel(9)wiphy_work_flush(9)wiphy_delayed_work_queue(9)wiphy_delayed_work_cancel(9)wiphy_delayed_work_flush(9)wiphy_delayed_work_pending(9)wiphy_hrtimer_work_queue(9)wiphy_hrtimer_work_cancel(9)wiphy_hrtimer_work_flush(9)wiphy_hrtimer_work_pending(9)enum ieee80211_ap_reg_power(9)wdev_priv(9)wdev_chandef(9)
Utility functions โ the little helpers that make everything else possible, we stan ๐ธ
Utility functions(9)ieee80211_channel_equal(9)ieee80211_channel_to_khz(9)ieee80211_channel_to_freq_khz(9)ieee80211_channel_to_frequency(9)ieee80211_freq_khz_to_channel(9)ieee80211_frequency_to_channel(9)ieee80211_get_channel_khz(9)ieee80211_get_channel(9)cfg80211_channel_is_psc(9)ieee80211_radio_freq_range_valid(9)cfg80211_radio_chandef_valid(9)cfg80211_wdev_channel_allowed(9)ieee80211_get_response_rate(9)ieee80211_mandatory_rates(9)struct ieee80211_radiotap_iterator(9)ieee80211_get_hdrlen_from_skb(9)ieee80211_hdrlen(9)ieee80211_get_mesh_hdrlen(9)
Data path helpers</purl> โ okay so these are the ones dealing with the actual frame-shuffling, and the list is lowkey huge:
Data path helpers(9)ieee80211_data_to_8023_exthdr(9)ieee80211_data_to_8023(9)ieee80211_is_valid_amsdu(9)ieee80211_amsdu_to_8023s(9)ieee80211_get_8023_tunnel_proto(9)ieee80211_strip_8023_mesh_hdr(9)cfg80211_classify8021d(9)cfg80211_find_elem_match(9)cfg80211_find_ie_match(9)cfg80211_find_elem(9)cfg80211_find_ie(9)cfg80211_find_ext_elem(9)cfg80211_find_ext_ie(9)cfg80211_find_vendor_elem(9)cfg80211_find_vendor_ie(9)enum cfg80211_rnr_iter_ret(9)cfg80211_iter_rnr(9)cfg80211_defragment_element(9)cfg80211_send_layer2_update(9)
Regulatory enforcement infrastructure โ the "please don't transmit where you're not allowed" department, genuinely important, no games ๐
Regulatory enforcement infrastructure(9)regulatory_hint(9)regulatory_set_wiphy_regd(9)regulatory_set_wiphy_regd_sync(9)wiphy_apply_custom_regulatory(9)freq_reg_info(9)reg_initiator_name(9)regulatory_pre_cac_allowed(9)
and the Internal regulatory db functions flavor right after it:
Internal regulatory db functions(9)reg_query_regdb_wmm(9)
back to the cfg80211 function parade, and this stretch is long bestie, like genuinely buckle in ๐ซถ
cfg80211_scan_done(9)cfg80211_sched_scan_results(9)cfg80211_sched_scan_stopped(9)cfg80211_sched_scan_stopped_locked(9)cfg80211_inform_bss_frame_data(9)cfg80211_gen_new_bssid(9)cfg80211_is_element_inherited(9)cfg80211_merge_profile(9)enum cfg80211_bss_frame_type(9)cfg80211_get_ies_channel_number(9)cfg80211_ssid_eq(9)cfg80211_inform_bss_data(9)__cfg80211_get_bss(9)cfg80211_get_bss(9)cfg80211_ref_bss(9)cfg80211_put_bss(9)cfg80211_unlink_bss(9)cfg80211_bss_iter(9)cfg80211_rx_mlme_mgmt(9)cfg80211_auth_timeout(9)struct cfg80211_rx_assoc_resp_data(9)cfg80211_rx_assoc_resp(9)struct cfg80211_assoc_failure(9)cfg80211_assoc_failure(9)cfg80211_tx_mlme_mgmt(9)cfg80211_rx_unprot_mlme_mgmt(9)cfg80211_michael_mic_failure(9)cfg80211_ibss_joined(9)cfg80211_notify_new_peer_candidate(9)
RFkill integration โ only three entries and honestly? concise queen โญ
RFkill integration(9)wiphy_rfkill_set_hw_state_reason(9)wiphy_rfkill_start_polling(9)wiphy_rfkill_stop_polling(9)
Vendor commands โ the "your hardware vendor does its own thing" corner, iykyk:
Vendor commands(9)cfg80211_vendor_cmd_alloc_reply_skb(9)cfg80211_vendor_cmd_reply(9)cfg80211_vendor_cmd_get_sender(9)cfg80211_vendor_event_alloc(9)cfg80211_vendor_event_alloc_ucast(9)cfg80211_vendor_event(9)
Test mode โ four entries, tiny, cute, does exactly what it says ๐
Test mode(9)cfg80211_testmode_alloc_reply_skb(9)cfg80211_testmode_reply(9)cfg80211_testmode_alloc_event_skb(9)cfg80211_testmode_event(9)
and then the biggest run of the whole list starts, and it does NOT let up ๐ญ connection stuff, roaming, stations, mgmt frames, notifications, all of it:
struct cfg80211_fils_resp_params(9)struct cfg80211_connect_resp_params(9)cfg80211_connect_done(9)cfg80211_connect_bss(9)cfg80211_connect_result(9)cfg80211_connect_timeout(9)struct cfg80211_roam_info(9)cfg80211_roamed(9)cfg80211_port_authorized(9)cfg80211_disconnected(9)cfg80211_ready_on_channel(9)cfg80211_remain_on_channel_expired(9)cfg80211_tx_mgmt_expired(9)cfg80211_sinfo_alloc_tid_stats(9)cfg80211_link_sinfo_alloc_tid_stats(9)cfg80211_sinfo_release_content(9)cfg80211_new_sta(9)cfg80211_del_sta_sinfo(9)cfg80211_del_sta(9)cfg80211_conn_failed(9)struct cfg80211_rx_info(9)cfg80211_rx_mgmt_ext(9)cfg80211_rx_mgmt_khz(9)cfg80211_rx_mgmt(9)struct cfg80211_tx_status(9)cfg80211_mgmt_tx_status_ext(9)cfg80211_mgmt_tx_status(9)cfg80211_control_port_tx_status(9)cfg80211_rx_control_port(9)cfg80211_cqm_rssi_notify(9)cfg80211_cqm_pktloss_notify(9)cfg80211_cqm_txe_notify(9)cfg80211_cqm_beacon_loss_notify(9)__cfg80211_radar_event(9)cfg80211_sta_opmode_change_notify(9)cfg80211_cac_event(9)cfg80211_background_cac_abort(9)cfg80211_gtk_rekey_notify(9)cfg80211_pmksa_candidate_notify(9)cfg80211_rx_spurious_frame(9)cfg80211_rx_unexpected_4addr_frame(9)cfg80211_probe_status(9)cfg80211_report_obss_beacon_khz(9)cfg80211_report_obss_beacon(9)struct cfg80211_beaconing_check_config(9)
okay so the cross-reference section keeps going, and honestly? it's giving phone book but make it networking ๐ โ here's the whole rest of the list, no cap, nothing skipped:
cfg80211_reg_check_beaconing(9)โ the beaconing regulation check, yes it's its own whole thingcfg80211_reg_can_beacon(9)โ "can we beacon?" the question of the centurycfg80211_reg_can_beacon_relax(9)โ same question but โจrelaxedโจcfg80211_ch_switch_notify(9)โ channel switch notification dropping in the group chatcfg80211_ch_switch_started_notify(9)โ "guys it's happening" โ the switch-started announcementieee80211_operating_class_to_band(9)โ operating class โก๏ธ band, a glow-up in function formieee80211_operating_class_to_chandef(9)โ operating class โก๏ธ chandef, same energyieee80211_chandef_to_operating_class(9)โ and the reverse, she's versatile ๐ฆieee80211_chandef_to_khz(9)โ chandef but make it kHzcfg80211_tdls_oper_request(9)โ TDLS operation request, very niche, very iconiccfg80211_calculate_bitrate(9)โ math girlie ๐งฎ bitrate mathcfg80211_unregister_wdev(9)โ unregistering a wdev, the sad part of the movie ๐ญcfg80211_register_netdevice(9)โ register a netdevice, we love a beginningcfg80211_unregister_netdevice(9)โ unregister it. bye bestie ๐ซถstruct cfg80211_ft_event_params(9)โ ft event params, the structcfg80211_ft_event(9)โ the ft event itselfcfg80211_get_p2p_attr(9)โ p2p attribute retrieval, get you oneieee80211_ie_split_ric(9)โ IE splitting, the RIC editionieee80211_ie_split(9)โ IE splitting, the classicieee80211_fragment_element(9)โ fragmenting an element, breaking it down (affectionate)cfg80211_report_wowlan_wakeup(9)โ WoWLAN wakeup reporting, the "i'm awake" textcfg80211_crit_proto_stopped(9)โ critical protocol stopped, </3ieee80211_get_num_supported_channels(9)โ counting the supported channelscfg80211_check_combinations(9)โ checking combinations, very thorough of hercfg80211_iter_combinations(9)โ same but iterating, main character energycfg80211_get_radio_idx_by_chan(9)โ which radio by channel?? detective work ๐cfg80211_stop_link(9)โ stop a linkcfg80211_stop_iface(9)โ stop an ifacecfg80211_shutdown_all_interfaces(9)โ shutting down ALL the interfaces, dramatic much ๐wiphy_ext_feature_set(9)โ set a wiphy ext featurewiphy_ext_feature_isset(9)โ is it set though ๐cfg80211_free_nan_func(9)โ freeing a NAN functionstruct cfg80211_nan_match_params(9)โ NAN match params, the structcfg80211_nan_match(9)โ NAN matchcfg80211_nan_func_terminated(9)โ NAN function terminatedcfg80211_nan_sched_update_done(9)โ NAN schedule update done โcfg80211_external_auth_request(9)โ external auth requestcfg80211_pmsr_report(9)โ PMSR reportcfg80211_pmsr_complete(9)โ PMSR completecfg80211_iftype_allowed(9)โ is this iftype allowed? vibe check ๐cfg80211_assoc_comeback(9)โ assoc comeback, literally the comebackcfg80211_update_owe_info_event(9)โ OWE info update eventcfg80211_bss_flush(9)โ flush the BSScfg80211_bss_color_notify(9)โ BSS color notificationcfg80211_obss_color_collision_notify(9)โ OBSS color collision, oof ๐cfg80211_color_change_started_notify(9)โ color change startedcfg80211_color_change_aborted_notify(9)โ color change aborted ๐ญcfg80211_color_change_notify(9)โ color change, the finalecfg80211_6ghz_power_type(9)โ 6 GHz power type, she's specificcfg80211_links_removed(9)โ links removedstruct cfg80211_mlo_reconf_done_data(9)โ MLO reconfig done data, the structcfg80211_mlo_reconf_add_done(9)โ MLO reconfig add donecfg80211_schedule_channels_check(9)โ schedule a channels checkcfg80211_epcs_changed(9)โ EPCS changedcfg80211_next_nan_dw_notif(9)โ next NAN DW notificationcfg80211_nan_cluster_joined(9)โ NAN cluster joined ๐cfg80211_nan_ulw_update(9)โ NAN ULW updatecfg80211_nan_channel_evac(9)โ NAN channel evacwiphy_locked_debugfs_read(9)โ locked debugfs readwiphy_locked_debugfs_write(9)โ locked debugfs writecfg80211_s1g_get_start_freq_khz(9)โ S1G start frequency in kHzcfg80211_s1g_get_end_freq_khz(9)โ S1G end frequency in kHzcfg80211_s1g_get_primary_sibling(9)โ S1G primary sibling, that name is everything nglcfg80211_incumbent_signal_notify(9)โ incumbent signal notification
and that's the whole page, bestie, start to finish, not one reference left behind ๐ go read one of them, i'll wait. this one lives at ./include/net, it's the October 2026 edition, and it's all about struct wireless_dev(9) โ periodt. ๐ธ๐
๐ฆ 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