ieee80211_get_response_rate(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… ieee80211_get_response_rate β€” a Kernel API Manual moment (section 9, bestie)

okay so this is ieee80211_get_response_rate(9), from the Kernel API Manual, and honestly? it's giving "small function, big feelings." let's get into it πŸŽ€


✨ NAME ✨

ieee80211_get_response_rate β€” literally just get the basic rate for a given rate. that's the whole vibe. no cap. 🌸


✨ SYNOPSIS ✨

const struct ieee80211_rate * ieee80211_get_response_rate (struct
ieee80211_supported_band *sband , u32 basic_rates , int bitrate );

look at her. three args, one pointer back out. she's efficient, she's iconic, she's not here to waste your time πŸ¦‹


✨ ARGUMENTS ✨

  • sband β€” the band you wanna look for rates in. this is the neighborhood you're rate-hunting in, bestie 🏘️
  • basic_rates β€” a bitmap of basic rates. yes, a bitmap. yes, you have to think in bits. you got this πŸ’ͺ
  • bitrate β€” the bitrate you're trying to find the basic rate for. the rate in question, the main character of this whole operation πŸ‘‘

✨ RETURN ✨

so what do you get back? the basic rate corresponding to a given bitrate β€” and to be precise about it (because we don't do vague here), it's the next lower bitrate contained in the basic rate map. 🫢

and heads up on what that map actually is, because this is the part people trip on: for this function, it's given as a bitmap of indices of rates in the band's bitrate table. so like β€” indices. into the table. bitmap. iykyk. 🧚


ngl, the "next lower bitrate" bit is the whole personality of this function. it doesn't give you the rate you asked for, it gives you the one below it that's actually in the basic rate map. read that twice before you file a bug, bestie 😭

more coming in part 2, don't go anywhere ✨

πŸ’« SEE ALSO πŸ’«

Okay bestie, so this is the part where the page stops being a function doc and just goes feral with cross-references πŸ’… Everything below lives in the kernel file ./include/net/cfg80211.h, and this is basically the whole friend group. Tap any of them and you get the full lore ✨

That's the entire guest list, bestie. Not a single name dropped. Periodt πŸ’–

...and like, the see-also rabbit hole does not stop there, bestie. Buckle up, because this is the rest of the guest list and we are naming every single one 🫢

First up, the beacon-and-channel-switch girlies plus the operating-class translators, who are all lowkey doing the lord's work:

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), ieee80211_operating_class_to_band(9), ieee80211_operating_class_to_chandef(9), ieee80211_chandef_to_operating_class(9), ieee80211_chandef_to_khz(9) β€” that last one is giving conversion-girlie main character energy, honestly ✨

Then the registry-and-events squad, aka the ones who handle the paperwork so you don't have to:

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), cfg80211_get_p2p_attr(9), ieee80211_ie_split_ric(9), ieee80211_ie_split(9), ieee80211_fragment_element(9), cfg80211_report_wowlan_wakeup(9), cfg80211_crit_proto_stopped(9) β€” yes there's a struct in the middle of the list, no we're not skipping it, we don't do that here πŸ’…

The combos / stop / shutdown / feature-flag crew, aka the vibe-check department:

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), wiphy_ext_feature_set(9), wiphy_ext_feature_isset(9) 😭 (_isset is literally the "is it though?" of function names)

Then the NAN squad arriving first, followed by auth / PMSR / iftype / OWE / BSS-flush besties:

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_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), cfg80211_bss_flush(9) β€” the comeback one, we love a comeback, obsessed πŸ¦‹

Colour-change notification nation (they have a whole arc, no cap) plus the 6GHz / links / MLO / channel-check entries:

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), 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) 🌈

And the grand finale lineup β€” more NAN, the debugfs twins, the S1G trio, and the incumbent signal notifier, all walking in slow-mo:

cfg80211_next_nan_dw_notif(9), cfg80211_nan_cluster_joined(9), cfg80211_nan_ulw_update(9), cfg80211_nan_channel_evac(9), 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) πŸ”₯


Okay so real talk: that's the entire cross-reference list, and every single name above is exactly as written β€” not one dropped, not one "cleaned up". If you're grepping for one of these, it's here. iykyk 🧚

And that's a wrap on ieee80211_get_response_rate(9)! πŸ’– This page came to you from the source tree at ./include/net, dated October 2026 β€” so go forth, cite your sources, and remember: reading the manual is self-care, bestie. Periodt. πŸ‘‘πŸŽ€

πŸ“¦ where this page comes from