STRUCT IEEE80211_TX_RATE(9)
π¦ struct ieee80211_tx_rate(9) π¦
okay so this is the struct ieee80211_tx_rate(9) page from the Kernel API Manual, and it's literally about rate selection/status. Stay with me bestie, it's actually iconic once it clicks π
πΈ NAME πΈ
struct ieee80211_tx_rate β rate selection/status. That's the whole name section, short and slay β¨
β¨ SYNOPSIS β¨
here's the struct in all its bitfield glory:
struct ieee80211_tx_rate {
s8 idx;
u16 count:5, flags:11;
};
π Members π
idxβ rate index to attempt to send with. yes, this is the "which rate are we trying" girly πcountβ number of tries in this rate before going to the next rate. it's giving "how many attempts before we move on" energy π«Άflagsβ rate control flags (enum mac80211_rate_control_flags). the little extra info attached to the rate πΈ
π Description π
So a value of -1 for idx indicates an invalid rate. And if it's used in an array of retry rates, it also means that no more rates should be tried. like, the rate list has left the chat, stop trying to send π
When used for transmit status reporting, the driver should always report the rate along with the flags it used. always, bestie β no skipping the receipts π
struct ieee80211_tx_info contains an array of these structs in the control information, and it will be filled by the rate control algorithm according to what should be sent. so the rate control algorithm is the main character here π
For example, if this array contains, in the format { <idx>, <count> }, the information:
{ 3, 2 }, { 2, 2 }, { 1, 4 }, { -1, 0 }, { -1, 0 }
then this means that the frame should be transmitted up to twice at rate 3, up to twice at rate 2, and up to four times at rate 1 if it doesn't get acknowledged. it's giving "try again" energy but scheduled π
Say it gets acknowledged by the peer after the fifth attempt, the status information should then contain:
{ 3, 2 }, { 2, 2 }, { 1, 1 }, { -1, 0 } ...
since it was transmitted twice at rate 3, twice at rate 2 and once at rate 1 after which we received an acknowledgement. math is mathing π
π SEE ALSO π
Kernel file ./include/net/mac80211.h β that's where the lore lives. and now the whole guest list, every single name, because we do not gatekeep π«Ά:
Introduction(9),Calling mac80211 from interrupts(9),Warning(9),Frame format(9),mac80211 workqueue(9),mac80211 software tx queueing(9),HW timestamping(9),enum ieee80211_max_queues(9),enum ieee80211_ac_numbers(9),struct ieee80211_tx_queue_params(9)πenum ieee80211_chanctx_change(9),struct ieee80211_chan_req(9),struct ieee80211_chanctx_conf(9),enum ieee80211_chanctx_switch_mode(9),struct ieee80211_vif_chanctx_switch(9),enum ieee80211_bss_change(9),enum ieee80211_event_type(9),enum ieee80211_rssi_event_data(9),struct ieee80211_rssi_event(9),enum ieee80211_mlme_event_data(9)β¨enum ieee80211_mlme_event_status(9),struct ieee80211_mlme_event(9),struct ieee80211_ba_event(9),struct ieee80211_event(9),struct ieee80211_mu_group_data(9),struct ieee80211_ftm_responder_params(9),struct ieee80211_fils_discovery(9),struct ieee80211_parsed_tpe(9),struct ieee80211_bss_npca_params(9),struct ieee80211_bss_conf(9)πstruct ieee80211_nan_channel(9),struct ieee80211_nan_peer_map(9),struct ieee80211_nan_peer_sched(9),enum mac80211_tx_info_flags(9),enum mac80211_tx_control_flags(9),enum mac80211_tx_status_flags(9),enum mac80211_rate_control_flags(9),struct ieee80211_tx_info(9),struct ieee80211_tx_status(9),struct ieee80211_scan_ies(9)π¦ieee80211_tx_info_clear_status(9),enum mac80211_rx_flags(9),enum mac80211_rx_encoding_flags(9),struct ieee80211_rx_status(9),enum ieee80211_conf_flags(9),enum ieee80211_conf_changed(9),enum ieee80211_smps_mode(9),struct ieee80211_conf(9),struct ieee80211_channel_switch(9),enum ieee80211_vif_flags(9)πΈenum ieee80211_offload_flags(9),struct ieee80211_eml_params(9),struct ieee80211_nan_sched_cfg(9),struct ieee80211_vif_cfg(9),struct ieee80211_neg_ttlm(9),enum ieee80211_neg_ttlm_res(9),struct ieee80211_vif(9),ieee80211_vif_usable_links(9),ieee80211_vif_is_mld(9),ieee80211_vif_link_active(9)π₯wdev_to_ieee80211_vif(9),ieee80211_vif_to_wdev(9),enum ieee80211_key_flags(9),struct ieee80211_key_conf(9),struct ieee80211_key_seq(9),enum set_key_cmd(9),enum ieee80211_sta_state(9),enum ieee80211_sta_rx_bandwidth(9),struct ieee80211_sta_rates(9),struct ieee80211_sta_txpwr(9)πstruct ieee80211_sta_aggregates(9),struct ieee80211_link_sta(9),struct ieee80211_sta(9),enum sta_notify_cmd(9),struct ieee80211_tx_control(9),struct ieee80211_txq(9),enum ieee80211_hw_flags(9),struct ieee80211_hw(9),struct ieee80211_scan_request(9),struct ieee80211_tdls_ch_sw_params(9)πwiphy_to_ieee80211_hw(9),SET_IEEE80211_DEV(9),SET_IEEE80211_PERM_ADDR(9),ieee80211_free_txskb(9),ieee80211_purge_tx_queue(9),Hardware crypto acceleration(9),Powersave support(9),Beacon filter support(9),Spatial multiplexing power save(9),Frame filtering(9)βAP support for powersaving clients(9),HW queue control(9),enum ieee80211_filter_flags(9),enum ieee80211_ampdu_mlme_action(9),struct ieee80211_ampdu_params(9),enum ieee80211_frame_release_type(9),enum ieee80211_rate_control_changed(9),enum ieee80211_roc_type(9),enum ieee80211_reconfig_type(9),struct ieee80211_prep_tx_info(9)πstruct ieee80211_ops(9),ieee80211_alloc_hw_nm(9),ieee80211_alloc_hw(9),ieee80211_register_hw(9),struct ieee80211_tpt_blink(9),enum ieee80211_tpt_led_trigger_flags(9),ieee80211_get_tx_led_name(9),ieee80211_get_rx_led_name(9),ieee80211_get_assoc_led_name(9),ieee80211_get_radio_led_name(9)πieee80211_create_tpt_led_trigger(9),ieee80211_unregister_hw(9),ieee80211_free_hw(9),ieee80211_restart_hw(9),ieee80211_rx_list(9),ieee80211_rx_napi(9),ieee80211_rx(9),ieee80211_rx_irqsafe(9),ieee80211_rx_ni(9),ieee80211_sta_ps_transition(9)πieee80211_sta_ps_transition_ni(9),ieee80211_sta_pspoll(9),ieee80211_sta_uapsd_trigger(9),ieee80211_sta_set_buffered(9),ieee80211_get_tx_rates(9),ieee80211_tx_rate_update(9),ieee80211_tx_status_skb(9),ieee80211_tx_status_ext(9),ieee80211_tx_status_noskb(9),ieee80211_tx_status_ni(9)π§ieee80211_tx_status_irqsafe(9),ieee80211_report_low_ack(9),struct ieee80211_mutable_offsets(9),ieee80211_beacon_get_template(9),ieee80211_beacon_get_template_ema_index(9),struct ieee80211_ema_beacons(9),ieee80211_beacon_get_template_ema_list(9),ieee80211_beacon_free_ema_list(9),ieee80211_beacon_get_tim(9),ieee80211_beacon_get(9)πieee80211_beacon_update_cntdwn(9),ieee80211_beacon_set_cntdwn(9),ieee80211_csa_finish(9),ieee80211_beacon_cntdwn_is_complete(9),ieee80211_color_change_finish(9),ieee80211_proberesp_get(9),ieee80211_pspoll_get(9),ieee80211_nullfunc_get(9),ieee80211_probereq_get(9),ieee80211_rts_get(9)πieee80211_rts_duration(9),ieee80211_ctstoself_get(9),ieee80211_ctstoself_duration(9),ieee80211_generic_frame_duration(9),ieee80211_get_buffered_bc(9),ieee80211_get_tkip_p1k_iv(9),ieee80211_get_tkip_p1k(9),ieee80211_get_tkip_rx_p1k(9),ieee80211_get_tkip_p2k(9),ieee80211_tkip_add_iv(9)β¨ieee80211_get_key_rx_seq(9),ieee80211_set_key_rx_seq(9),ieee80211_gtk_rekey_add(9),ieee80211_gtk_rekey_notify(9),ieee80211_key_mic_failure(9),ieee80211_key_replay(9),ieee80211_wake_queue(9),ieee80211_stop_queue(9),ieee80211_queue_stopped(9),ieee80211_stop_queues(9)πieee80211_wake_queues(9),ieee80211_scan_completed(9),ieee80211_sched_scan_results(9),ieee80211_sched_scan_stopped(9),enum ieee80211_interface_iteration_flags(9),ieee80211_iterate_interfaces(9),ieee80211_iterate_active_interfaces(9),ieee80211_iterate_active_interfaces_atomic(9),for_each_interface(9),for_each_active_interface(9)π¦ieee80211_iterate_active_interfaces_mtx(9),ieee80211_iterate_stations_atomic(9),for_each_station(9),ieee80211_iterate_stations_mtx(9),ieee80211_queue_work(9),ieee80211_queue_delayed_work(9),ieee80211_refresh_tx_agg_session_timer(9),ieee80211_start_tx_ba_session(9),ieee80211_start_tx_ba_cb_irqsafe(9),ieee80211_stop_tx_ba_session(9)πΈieee80211_stop_tx_ba_cb_irqsafe(9),ieee80211_find_sta(9),ieee80211_find_sta_by_ifaddr(9),ieee80211_find_sta_by_link_addrs(9),ieee80211_sta_block_awake(9),ieee80211_sta_eosp(9),ieee80211_send_eosp_nullfunc(9),ieee80211_sta_recalc_aggregates(9),ieee80211_sta_register_airtime(9),ieee80211_txq_airtime_check(9)π₯ieee80211_txq_aql_pending(9),ieee80211_iter_keys(9),ieee80211_iter_keys_rcu(9),ieee80211_iter_chan_contexts_atomic(9),ieee80211_iter_chan_contexts_mtx(9),ieee80211_ap_probereq_get(9),ieee80211_beacon_loss(9),ieee80211_connection_loss(9),ieee80211_disconnect(9),ieee80211_resume_disconnect(9)πieee80211_hw_restart_disconnect(9),ieee80211_cqm_rssi_notify(9),ieee80211_cqm_beacon_loss_notify(9),ieee80211_radar_detected(9),ieee80211_chswitch_done(9),ieee80211_channel_switch_disconnect(9),ieee80211_request_smps(9),ieee80211_ready_on_channel(9),ieee80211_remain_on_channel_expired(9),ieee80211_stop_rx_ba_session(9)πieee80211_mark_rx_ba_filtered_frames(9),ieee80211_send_bar(9),ieee80211_manage_rx_ba_offl(9),ieee80211_start_rx_ba_session_offl(9),ieee80211_stop_rx_ba_session_offl(9),ieee80211_rx_ba_timer_expired(9),struct ieee80211_tx_rate_control(9),enum rate_control_capabilities(9),rate_control_set_rates(9),ieee80211_get_he_iftype_cap_vif(9)βieee80211_get_he_6ghz_capa_vif(9),ieee80211_get_eht_iftype_cap_vif(9),ieee80211_get_uhr_iftype_cap_vif(9),ieee80211_update_mu_groups(9),ieee80211_ave_rssi(9),ieee80211_calculate_rx_timestamp(9),ieee80211_report_wowlan_wakeup(9),ieee80211_tx_prepare_skb(9),ieee80211_parse_tx_radiotap(9),struct ieee80211_noa_data(9)πieee80211_parse_p2p_noa(9),ieee80211_update_p2p_noa(9),ieee80211_tdls_oper_request(9),ieee80211_reserve_tid(9),ieee80211_unreserve_tid(9),ieee80211_tx_dequeue(9),ieee80211_tx_dequeue_ni(9),ieee80211_handle_wake_tx_queue(9),ieee80211_next_txq(9),ieee80211_txq_schedule_start(9)πieee80211_schedule_txq(9),ieee80211_return_txq(9),ieee80211_txq_may_transmit(9),ieee80211_txq_get_depth(9),ieee80211_nan_func_terminated(9),ieee80211_nan_func_match(9),ieee80211_nan_sched_update_done(9),ieee80211_nan_cluster_joined(9),ieee80211_nan_try_evacuate(9),ieee80211_calc_rx_airtime(9)πieee80211_calc_tx_airtime(9),ieee80211_get_fils_discovery_tmpl(9),ieee80211_get_unsol_bcast_probe_resp_tmpl(9),ieee80211_obss_color_collision_notify(9),ieee80211_is_tx_data(9),ieee80211_set_active_links(9),ieee80211_set_active_links_async(9),ieee80211_send_teardown_neg_ttlm(9),ieee80211_chan_width_to_rx_bw(9),ieee80211_prepare_rx_omi_bw(9)π§ieee80211_finalize_rx_omi_bw(9),ieee80211_vif_nan_started(9),ieee80211_encrypt_tx_skb(9)π
mwah π β source/version: ./include/net, date: October 2026, page: struct ieee80211_tx_rate(9). that's the footer folded into a cute sign-off, 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