ad_port_selection_logic(9)
β¨ ad_port_selection_logic(9) β¨
okay so welcome to the Kernel API Manual, bestie π this page is all about ad_port_selection_logic and honestly it's giving "the friend who does the group project seating chart" energy β it literally picks the aggregation groups π«Ά
π NAME
ad_port_selection_logic β select aggregation groups π
π¦ SYNOPSIS
void ad_port_selection_logic (struct port *port , bool *update_slave_arr );
bestie it returns nothing (void), it just does the thing and mutates stuff in place, periodt β¨
πΈ ARGUMENTS
portβ the port we're looking at π like, this one, the one in front of you.update_slave_arrβ abool *that answers the question: "Does slave array need update?" π so yes, it's the little flag that tells everyone whether the slave array needs updating.
π DESCRIPTION
So here's the vibe: this function selects aggregation groups, and then assigns each port to its aggregator π that's the whole job, no cap.
When does the selection logic get called? Two moments, ikyk:
- during initialization β specifically after all the handshakes π€ (yes, all of them, don't skip them)
- after every
lacpdureceive β but only ifselectedis off π₯
that's it, that's the function, iconic behavior honestly π
π SEE ALSO
Kernel file ./drivers/net/bonding/bond_3ad.c β and like, the entire extended universe of related functions, buckle up bestie π
__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_agg_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)
ngl the wholebondingcrew lives under./drivers/net/bondingand they're all main characters π§
and that's the page, babes π this came out of ./drivers/net/bonding, dated October 2026 β slay, go read some kernel source, ily, bye ππ¦π
π¦ 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