ad_agg_selection_logic(9)
π
ad_agg_selection_logic β Kernel API Manual β¨
okay so bestie, welcome to the Kernel API Manual page for ad_agg_selection_logic(9) β the function that picks which aggregation group gets to be that girl for a team π. Let's get into it.
πΈ NAME
ad_agg_selection_logic β select an aggregation group for a team π«Ά
β¨ SYNOPSIS
void ad_agg_selection_logic (struct aggregator *agg , bool
*update_slave_arr );
π ARGUMENTS
aggβ the aggregator we're looking at π lowkey the main character of this whole operationupdate_slave_arrβ does the slave array need an update? bestie's just asking, answer honestly π
π DESCRIPTION
so the vibe here is: it is assumed that only one aggregator may be selected for a team. one. singular. no sharing, no polyamory, one agg per team periodt β
the logic of this function is to select the aggregator according to the ad_select policy, and here's the whole menu π:
BOND_AD_STABLEβ select the aggregator with the most ports attached to it, and reselect the active aggregator only if the previous aggregator has no more ports related to it. like, she keeps the crown until she literally has nobody left πBOND_AD_BANDWIDTHβ select the aggregator with the highest total bandwidth, and reselect whenever a link state change takes place or the set of slaves in the bond changes π₯BOND_AD_COUNTβ select the aggregator with the largest number of ports (slaves), and reselect whenever a link state change takes place or the set of slaves in the bond changes βBOND_AD_PRIOβ select the aggregator with the highest total priority of ports (slaves), and reselect whenever a link state change takes place or the set of slaves in the bond changes π
FIXME: this function MUST be called with the firstaggin the bond, or__get_active_aggwon't work correctly π no cap, it will just Not Work. This function should be better called with the bond itself, and retrieve the first agg from it. (yes that's a "would be better if" note straight from the source, not me guessing π)
π¦ SEE ALSO
the whole friend group, kernel file ./drivers/net/bonding/bond_3ad.c π:
__get_bond_by_port(9)__get_first_agg(9)__agg_has_partner(9)__disable_distributing_port(9)__enable_collecting_port(9)__disable_port(9)__enable_port(9)__port_move_to_attached_state(9)__port_is_collecting_distributing(9)__get_agg_selection_mode(9)__check_agg_selection_timer(9)__get_link_speed(9)__get_duplex(9)__ad_timer_to_ticks(9)__choose_matched(9)__record_pdu(9)__record_default(9)__update_selected(9)__update_default_selected(9)__update_ntt(9)__agg_ports_are_ready(9)__set_agg_ports_ready(9)__get_agg_bandwidth(9)__get_active_agg(9)__update_lacpdu_from_port(9)ad_lacpdu_send(9)ad_marker_send(9)ad_mux_machine(9)ad_rx_machine(9)ad_churn_machine(9)ad_tx_machine(9)ad_periodic_machine(9)ad_port_selection_logic(9)ad_clear_agg(9)ad_initialize_agg(9)ad_initialize_port(9)ad_enable_collecting(9)ad_disable_distributing(9)ad_enable_collecting_distributing(9)ad_disable_collecting_distributing(9)ad_marker_info_received(9)ad_marker_response_received(9)bond_3ad_initiate_agg_selection(9)bond_3ad_initialize(9)bond_3ad_bind_slave(9)bond_3ad_unbind_slave(9)bond_3ad_update_ad_actor_settings(9)bond_agg_timer_advance(9)bond_3ad_state_machine_handler(9)bond_3ad_rx_indication(9)ad_update_actor_keys(9)bond_3ad_adapter_speed_duplex_changed(9)bond_3ad_handle_link_change(9)bond_3ad_set_carrier(9)__bond_3ad_get_active_agg_info(9)bond_3ad_update_lacp_rate(9)bond_3ad_update_lacp_active(9)
and that's the page, bestie π§ββοΈ this one lives in ./drivers/net/bonding, dated October 2026, and it's filed under ad_agg_selection_logic(9) β go pick your aggregator wisely π
β¨
π¦ 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