wiphy_ext_feature_set(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ wiphy_ext_feature_set(9) πŸ¦‹

okay so bestie, welcome to the wiphy_ext_feature_set page β€” yes it's a kernel API manual page, yes we're doing this, and yes you're gonna understand it. it's giving "tiny function, big wireless energy" πŸ’…


✨ NAME ✨

wiphy_ext_feature_set β€” set the extended feature flag. that's the whole vibe. one job. iconic behavior honestly πŸŽ€


🌸 SYNOPSIS 🌸

void wiphy_ext_feature_set (struct wiphy *wiphy , enum
       nl80211_ext_feature_index ftidx );

literally just two things going in, nothing coming out β€” it's a void function so it doesn't hand you anything back, it just does the thing to the thing you gave it 🫢


πŸ’– ARGUMENTS πŸ’–

  • wiphy β€” the wiphy to modify. this is the lil guy you're poking at. you hand it over, the function messes with it, that's the deal ✨
  • ftidx β€” extended feature bit index. it's an enum nl80211_ext_feature_index, so like… it's not a random number, it's one of the named feature slots, and it tells the function which extended feature bit we're talking about πŸ”₯

πŸ‘‘ DESCRIPTION πŸ‘‘

so here's the tea β€” the extended features are flagged in multiple bytes (see struct wiphy.ext_features). multiple. bytes. not just one lil byte, a whole little squad of them 🌈

which is why this function takes a feature index rather than you trying to do bit math yourself β€” the index is what sorts out which byte and which bit inside struct wiphy.ext_features you're actually touching. iykyk πŸ’…

ngl, the source page keeps this part short and sweet, and it points you straight at struct wiphy.ext_features for the full picture β€” go look at that struct if you want the whole layout, bestie πŸ‘€

and that's part 1 of 3, so don't go anywhere β€” more incoming πŸ§šπŸ’œ

πŸ‘€ SEE ALSO πŸ‘€

Okay bestie, this is the part where the page just. lists everyone. It's giving family reunion group-chat, it's giving "mom made me invite the whole class" 😭 β€” but for real though, every single one of these is (9), aka a kernel API page, and they're all canon. Slay. Let's get into it πŸ’…


First up, the mothership herself:

  • ./include/net/cfg80211.h β€” the kernel file, i.e. where all this lore lives 🫢
  • Introduction(9)
  • Device registration(9)

✨ bands, caps & iftypes, oh my ✨

The hardware-ability girlies:


πŸŽ€ actions & configuration πŸŽ€

This is the big one, prepare yourself:


πŸ¦‹ scanning & BSS list handling πŸ¦‹

The "who's out there" section:

  • Scanning and BSS list handling(9) β€” yes the section ref itself
  • 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) β€” scan request central
  • struct cfg80211_inform_bss(9), struct cfg80211_bss_ies(9), struct cfg80211_bss(9), ieee80211_bss_get_elem(9), ieee80211_bss_get_ie(9) β€” the BSS object itself, the main character
  • 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) β€” auth/assoc/deauth/disassoc + connect vibes
  • 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) β€” WoWLAN + coalesce era
  • 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) β€” rekey + FT + mgmt tx + QoS, all accounted for

🧚 NAN & friends 🧚

  • Neighbor Awareness Networking (NAN)(9) β€” the whole NAN section
  • 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) β€” NAN everything, so many structs babe
  • 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)

πŸ’œ the wiphy core πŸ’œ

The struct wiphy(9) extended universe, and honestly? iconic.


🌸 utility functions 🌸


🌈 data path helpers 🌈


πŸ”₯ regulatory girlies πŸ”₯


πŸ“ BSS, MLME & notify πŸ“

Okay this is a long stretch, stay with me:


πŸ’€ RFkill integration πŸ’€


⭐ vendor commands ⭐


πŸŽ€ test mode πŸŽ€


🫢 connect, roam & the rest of the notifies 🫢

Deep breath bestie, almost through the list:


And that's the whole guest list πŸ’… every single name, exactly as written, no substitutions, no cap.

That list keeps going, bestie β€” it's a whole friend group of functions, so let's meet all of them πŸ’…

  • cfg80211_reg_check_beaconing(9) β€” the "can u even beacon here" check πŸ‘€
  • cfg80211_reg_can_beacon(9) β€” same vibe, chill edition
  • cfg80211_reg_can_beacon_relax(9) β€” same vibe, but it loosens up a lil
  • cfg80211_ch_switch_notify(9) β€” "we switched channels, just so u know" πŸ“£
  • cfg80211_ch_switch_started_notify(9) β€” the pre switch announcement, main character energy
  • ieee80211_operating_class_to_band(9) β€” op class in, band out, iconic conversion
  • ieee80211_operating_class_to_chandef(9) β€” op class in, chandef out ✨
  • ieee80211_chandef_to_operating_class(9) β€” the reverse glow-up
  • ieee80211_chandef_to_khz(9) β€” chandef to numbers, in kHz fr
  • cfg80211_tdls_oper_request(9) β€” TDLS said "hey, can we talk" 🫢
  • cfg80211_calculate_bitrate(9) β€” the math girlie doing bitrate math
  • cfg80211_unregister_wdev(9) β€” bye-bye wireless device πŸ‘‹
  • cfg80211_register_netdevice(9) β€” netdev, meet the world
  • cfg80211_unregister_netdevice(9) β€” netdev, exit stage left
  • struct cfg80211_ft_event_params(9) β€” the struct holding FT event param realness
  • cfg80211_ft_event(9) β€” fast transition event, she's moving fast
  • cfg80211_get_p2p_attr(9) β€” grab that P2P attribute
  • ieee80211_ie_split_ric(9) β€” splitting IEs w/ RIC included, no skips
  • ieee80211_ie_split(9) β€” the classic IE split
  • ieee80211_fragment_element(9) β€” chop an element into fragments πŸ”ͺ
  • cfg80211_report_wowlan_wakeup(9) β€” "you woke me up" report 😭
  • cfg80211_crit_proto_stopped(9) β€” critical proto said peace out
  • ieee80211_get_num_supported_channels(9) β€” counting channels like counting blessings ⭐
  • cfg80211_check_combinations(9) β€” does this combo even work?? vibe check
  • cfg80211_iter_combinations(9) β€” loop those combos
  • cfg80211_get_radio_idx_by_chan(9) β€” radio index lookups via channel
  • cfg80211_stop_link(9) β€” link, ur done πŸ›‘
  • cfg80211_stop_iface(9) β€” iface, ur done too
  • cfg80211_shutdown_all_interfaces(9) β€” everyone gets shut down, no survivors πŸ’€
  • wiphy_ext_feature_isset(9) β€” the sibling of this page, checking if a feature is set
  • cfg80211_free_nan_func(9) β€” freeing NAN funcs, tidy queen 🧹
  • struct cfg80211_nan_match_params(9) β€” struct holding NAN match params
  • cfg80211_nan_match(9) β€” NAN match found πŸŽ€
  • cfg80211_nan_func_terminated(9) β€” the NAN func has left the chat
  • cfg80211_nan_sched_update_done(9) β€” sched update finished, slay
  • cfg80211_external_auth_request(9) β€” auth going external, fancy
  • cfg80211_pmsr_report(9) β€” PMS R report incoming
  • cfg80211_pmsr_complete(9) β€” PMS R, complete βœ…
  • cfg80211_iftype_allowed(9) β€” is this iftype allowed? ask her
  • cfg80211_assoc_comeback(9) β€” assoc comeback szn
  • cfg80211_update_owe_info_event(9) β€” OWE info event, updated
  • cfg80211_bss_flush(9) β€” flush those BSS entries 🚽✨
  • cfg80211_bss_color_notify(9) β€” BSS color notif, aesthetic
  • cfg80211_obss_color_collision_notify(9) β€” collision!! colors clashing, not cute
  • cfg80211_color_change_started_notify(9) β€” color change: started
  • cfg80211_color_change_aborted_notify(9) β€” color change: aborted πŸ™ˆ
  • cfg80211_color_change_notify(9) β€” color change: done
  • cfg80211_6ghz_power_type(9) β€” 6 GHz power type, she's specific
  • cfg80211_links_removed(9) β€” links got removed, rip
  • struct cfg80211_mlo_reconf_done_data(9) β€” struct for MLO reconf done data
  • cfg80211_mlo_reconf_add_done(9) β€” MLO reconf add, done
  • cfg80211_schedule_channels_check(9) β€” schedule that channel check πŸ“…
  • cfg80211_epcs_changed(9) β€” EPCS changed, moving on
  • cfg80211_next_nan_dw_notif(9) β€” next NAN DW notification
  • cfg80211_nan_cluster_joined(9) β€” joined a NAN cluster πŸ«‚
  • cfg80211_nan_ulw_update(9) β€” NAN ULW update
  • cfg80211_nan_channel_evac(9) β€” evacuate that NAN channel, hurry
  • wiphy_locked_debugfs_read(9) β€” debugfs read, but locked πŸ”’
  • wiphy_locked_debugfs_write(9) β€” debugfs write, also locked
  • cfg80211_s1g_get_start_freq_khz(9) β€” S1G start freq in kHz
  • cfg80211_s1g_get_end_freq_khz(9) β€” S1G end freq in kHz
  • cfg80211_s1g_get_primary_sibling(9) β€” find the primary sibling πŸ‘―
  • cfg80211_incumbent_signal_notify(9) β€” incumbent signal notif, pay attention

Like… that's the whole clique πŸ’– Go read them, they're all in ./include/net and they all slay in their own way.

Okay bestie, that's the page!! You made it to the end, I'm so proud 🫢 This lil gem lives in ./include/net, dated October 2026, and it's your girl wiphy_ext_feature_set(9) saying bye β€” go set some features, mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from