cfg80211_st...hange_notify(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’– cfg80211_sta_opmode_change_notify โ€” Kernel API Manual ๐Ÿ’–

Okay bestie, so this one's a kernel API page โ€” the manpage name is cfg80211_sta_opmode_change_notify(9) and it's literally all about telling the world that a station's HT/VHT operation mode changed. Sounds nerdy? It is. Is it iconic? Also yes. Let's get into it ๐ŸŽ€


โœจ NAME โœจ

cfg80211_sta_opmode_change_notify โ€” the "hey everyone, this STA's ht/vht operation mode just changed" event. Like a little announcement bell for the kernel, no cap ๐Ÿ””


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

void cfg80211_sta_opmode_change_notify(struct net_device *dev,
                                       const u8 *mac,
                                       struct sta_opmode_info *sta_opmode,
                                       gfp_t gfp);

๐ŸŒธ ARGUMENTS ๐ŸŒธ

  • dev โ€” the network device. Your main character network device, specifically ๐Ÿ’…
  • mac โ€” MAC address of the station whose opmode got modified. Yep, that station. The one that changed ๐Ÿซถ
  • sta_opmode โ€” the station's current opmode value. Fresh, current, up to date โœจ
  • gfp โ€” context flags. The usual gfp_t situation, you know how it is ๐ŸŒˆ

๐Ÿ‘‘ DESCRIPTION ๐Ÿ‘‘

Okay so listen โ€” the driver should call this function when the station's opmode gets modified via an action frame. That's the whole assignment. Driver sees the opmode change happen through an action frame, driver calls this, everybody knows. Periodt ๐Ÿ’€โœจ


part 1 done, more coming bestie, don't go anywhere ๐Ÿ’œ

โœจ SEE ALSO โœจ

okay bestie, this is the part where the kernel doc just dumps every single sibling it has โ€” and honestly? iconic behavior. it's giving "let me introduce you to my entire extended family at the function." so let's meet them ๐Ÿ’…

if you're the kind of girl who likes receipts, literally everything below lives in <pink>./include/net/cfg80211.h</pink> (the file itself is a cross-reference too, bestie, don't skip it):

  • the origin story โ€” ./include/net/cfg80211.h ๐Ÿ“„
  • the big picture โ€” Introduction(9), Device registration(9)

๐Ÿฆ‹ the channel & rate girlies

these are the ones you meet before you even transmit anything, the fundamentals:

  • channels & rates core โ€” enum ieee80211_channel_flags(9), struct ieee80211_channel(9), enum ieee80211_rate_flags(9)
  • BSS flavor + privacy vibes โ€” enum ieee80211_bss_type(9), enum ieee80211_privacy(9), struct ieee80211_rate(9)

๐Ÿ”ฅ the "my speed is faster than yours" cluster

ht, vht, he, eht, uhr โ€” she's collected every single generation like pokรฉmon:

  • the cap stack โ€” 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)

๐ŸŒธ band data & iftype data (iykyk)


๐Ÿ’œ actions & configuration (the whole section)

yup, there's a whole section for this and it brought the structs:

  • the section itself โ€” Actions and configuration(9)
  • params & keys โ€” struct vif_params(9), struct key_params(9)
  • channel def + tid cfg + friends โ€” 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)

๐ŸŽ€ chandef helpers โ€” she's got a LOT

like, an unreasonable number. and every one of them slays:

๐Ÿซถ survey, crypto & beacon-era structs

  • survey โ€” enum survey_info_flags(9), struct survey_info(9)
  • crypto & MBSSID & RNR โ€” struct cfg80211_crypto_settings(9), struct cfg80211_mbssid_config(9), struct cfg80211_mbssid_elems(9), struct cfg80211_rnr_elems(9)
  • beacon & AP side โ€” 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)

๐Ÿ˜ญ station stuff (a whole neighborhood)

  • iface combos & masks & txpwr โ€” struct iface_combination_params(9), enum station_parameters_apply_mask(9), struct sta_txpwr(9)
  • link station params โ€” struct link_station_parameters(9), struct link_station_del_parameters(9), struct cfg80211_ttlm_params(9)
  • station params & type โ€” struct station_parameters(9), struct station_del_parameters(9), enum cfg80211_station_type(9), cfg80211_check_station_change(9)
  • rate info everything โ€” enum rate_info_flags(9), enum rate_info_bw(9), struct rate_info(9)
  • bss params & stats โ€” 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)
  • SAR (specific absorption rate, not the vibe) โ€” struct cfg80211_sar_sub_specs(9), struct cfg80211_sar_specs(9), struct cfg80211_sar_freq_ranges(9), struct cfg80211_sar_capa(9)
  • get_station + monitor + mpath โ€” cfg80211_get_station(9), enum monitor_flags(9), enum mpath_info_flags(9), struct mpath_info(9)
  • bss params + mesh + ocb + txq โ€” 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 & BSS list handling (whole section, again)

  • the section โ€” Scanning and BSS list handling(9)
  • ssid / scan info / 6ghz โ€” struct cfg80211_ssid(9), struct cfg80211_scan_info(9), struct cfg80211_scan_6ghz_params(9)
  • scan request + match + sched scan โ€” 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)
  • signal type + inform + BSS + IEs โ€” enum cfg80211_signal_type(9), struct cfg80211_inform_bss(9), struct cfg80211_bss_ies(9), struct cfg80211_bss(9)
  • grab an IE, bestie โ€” ieee80211_bss_get_elem(9), ieee80211_bss_get_ie(9)

๐Ÿงš connecting, associating, and all the drama in between

  • auth & assoc โ€” 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)
  • leaving โ€” struct cfg80211_deauth_request(9), struct cfg80211_disassoc_request(9)
  • ibss & bss selection โ€” struct cfg80211_ibss_params(9), struct cfg80211_bss_selection(9)
  • connect params + changed flags โ€” struct cfg80211_connect_params(9), enum cfg80211_connect_params_changed(9)
  • wiphy params + pmksa โ€” enum wiphy_params_flags(9), struct cfg80211_pmksa(9)

๐Ÿ’€ wowlan & co. (yes she naps and yes she wakes up)

  • patterns & tcp โ€” struct cfg80211_pkt_pattern(9), struct cfg80211_wowlan_tcp(9), struct cfg80211_wowlan(9)
  • coalesce rules โ€” struct cfg80211_coalesce_rules(9), struct cfg80211_coalesce(9)
  • net-detect & wakeup โ€” struct cfg80211_wowlan_nd_match(9), struct cfg80211_wowlan_nd_info(9), struct cfg80211_wowlan_wakeup(9)
  • gtk rekey + ft ies + mgmt tx โ€” struct cfg80211_gtk_rekey_data(9), struct cfg80211_update_ft_ies_params(9), struct cfg80211_mgmt_tx_params(9)
  • dscp & qos map โ€” struct cfg80211_dscp_exception(9), struct cfg80211_dscp_range(9), struct cfg80211_qos_map(9)

๐Ÿ‘‘ NAN โ€” Neighbor Awareness Networking

she's aware. she's networking. she's your neighbor:

  • the section โ€” Neighbor Awareness Networking (NAN)(9)
  • band / conf / channel โ€” struct cfg80211_nan_band_config(9), struct cfg80211_nan_conf(9), struct cfg80211_nan_channel(9)
  • schedules & peer maps โ€” struct cfg80211_nan_local_sched(9), struct cfg80211_nan_peer_map(9), struct cfg80211_nan_peer_sched(9)
  • conf changes + func filters โ€” enum cfg80211_nan_conf_changes(9), struct cfg80211_nan_func_filter(9), struct cfg80211_nan_func(9)

โญ pmk, external auth, FTM & PMSR (the measurement girlies)

  • pmk & external auth โ€” struct cfg80211_pmk_conf(9), struct cfg80211_external_auth_params(9)
  • ftm responder stats โ€” struct cfg80211_ftm_responder_stats(9)
  • pmsr results & peers โ€” 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)
  • owe & mgmt frame regs โ€” struct cfg80211_update_owe_info(9), struct mgmt_frame_regs(9)

๐Ÿ“ cfg80211_ops & everything wiphy

  • the ops struct itself โ€” struct cfg80211_ops(9)
  • wiphy flags & iface combos โ€” enum wiphy_flags(9), struct ieee80211_iface_limit(9), struct ieee80211_iface_combination(9)
  • wowlan/coalesce support flags & structs โ€” enum wiphy_wowlan_support_flags(9), struct wiphy_wowlan_support(9), struct wiphy_coalesce_support(9)
  • vendor cmd flags & opmode โ€” enum wiphy_vendor_command_flags(9), enum wiphy_opmode_flag(9), struct sta_opmode_info(9), struct wiphy_vendor_command(9)
  • iftype ext capab & akm suites โ€” struct wiphy_iftype_ext_capab(9), cfg80211_get_iftype_ext_capa(9), struct cfg80211_pmsr_capabilities(9), struct wiphy_iftype_akm_suites(9)
  • radio cfg / freq range / radio โ€” struct wiphy_radio_cfg(9), struct wiphy_radio_freq_range(9), struct wiphy_radio(9)
  • nan flags & capa โ€” enum wiphy_nan_flags(9), struct wiphy_nan_capa(9)
  • the big one โ€” struct wiphy(9)

๐Ÿ’… wiphy lifecycle & locking & work queues

๐Ÿฆ‹ wireless_dev girlies

  • ap reg power + the wdev struct โ€” enum ieee80211_ap_reg_power(9), struct wireless_dev(9)
  • priv & chandef accessors โ€” wdev_priv(9), wdev_chandef(9)

โœจ Utility functions (whole section, she's helpful)

๐Ÿ”ฅ Data path helpers

๐ŸŒˆ Regulatory enforcement infrastructure


๐Ÿงš scan done & BSS informing

๐Ÿ’œ MLME girls

๐ŸŽ€ RFkill integration

๐Ÿ’€ Vendor commands

๐Ÿ™ˆ Test mode


๐Ÿ’– connect done, roam, disconnect

๐Ÿซถ station notifications & mgmt rx/tx

โญ CQM, radar/CAC, and the rest of the notifiers


and that's the whole guest list ๐Ÿ˜ญ๐Ÿ’– every single one of them a real one. drink some water, bestie โ€” there's more coming ๐ŸŒธ

...and the guest list keeps going, bestie. Same section, same energy, no repeats of the heading โ€” just the rest of the crew that shows up in the same docs folder. ๐Ÿ‘‘


And that's a wrap on the whole page, bestie โ€” you made it to the end, which is genuinely iconic of you. ๐ŸŒˆโญ

Little credits moment: this page lives with the source under ./include/net, and it's dated October 2026. Tell the group chat you read the whole thing. ๐Ÿ’œ
๐Ÿ“ฆ where this page comes from