__update_selected(9)
π¦ __update_selected(9) π¦
okay so bestie, welcome to the Kernel API Manual β yes it's giving serious business, but honestly this one is kinda cute once you get it π
πΈ NAME πΈ
__update_selected β the little function that updates a port's Selected variable based on a lacpdu we just received π
β¨ SYNOPSIS β¨
void __update_selected (struct lacpdu *lacpdu , struct port *port );
π ARGUMENTS π
lacpduβ literally the lacpdu we've received, the whole reason we're here π«Άportβ the port we're looking at, main character energy tbh π
π DESCRIPTION π
So what this does is update the value of the selected variable, using parameter values from a newly received lacpdu. Like, fresh off the wire β¨
Here's the vibe: the parameter values for the Actor carried in the received PDU get compared with the corresponding operational parameter values for the port's partner. Very side-by-side, very comparison-core π
And if one or more of the comparisons shows that the value(s) received in the PDU differ from the current operational values? Then selected gets set to FALSE and actor_oper_port_state.synchronization gets set to out_of_sync. Not me breaking the news ππ
Otherwise β and this is the chill path β selected remains unchanged. Slay, nothing to do π
ngl, the whole thing hinges on those comparisons, so if the values match up, we just vibe and leave selected alone. No cap.
π SEE ALSO π
Kernel file ./drivers/net/bonding/bond_3ad.c β and like, the entire extended friend group:
__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_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_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)
and that's the whole page, bestie π§π
shoutout to ./drivers/net/bonding β the source/version vibe check β dated October 2026, so yes she's from the future and she's still iconic πβ¨
π¦ 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