__choose_matched(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

okay so bestie, we're in the Kernel API Manual and the function on the menu is __choose_matched β€” it updates a port's matched variable from a received lacpdu. no cap, that's the whole vibe. πŸ’…


✨ SYNOPSIS ✨

here's the signature, exactly as it appears β€” do not come for me about the spaces:

void __choose_matched (struct lacpdu *lacpdu , struct port *port );

πŸŽ€ ARGUMENTS πŸŽ€

  • lacpdu β€” the lacpdu we've received. the incoming PDU bestie.
  • port β€” the port we're looking at. the port in question.

πŸ¦‹ DESCRIPTION πŸ¦‹

so the move here is: update the value of the matched variable, using parameter values from a newly received lacpdu. The parameter values for the partner carried in the received PDU get compared with the corresponding operational parameter values for the actor. matched is set to TRUE if all of these parameters match and the PDU parameter partner_state.aggregation has the same value as actor_oper_port_state.aggregation and lacp will actively maintain the link in the aggregation. slay condition stack ✨

matched is also set to TRUE if the value of actor_state.aggregation in the received PDU is set to FALSE β€” i.e., it indicates an individual link β€” and lacp will actively maintain the link. Otherwise, matched is set to FALSE. simple as that, periodt.

LACP is considered to be actively maintaining the link if either the PDU's actor_state.lacp_activity variable is TRUE or both the actor's actor_oper_port_state.lacp_activity and the PDU's partner_state.lacp_activity variables are TRUE. iykyk 🫢


πŸ‘‘ NOTE πŸ‘‘

not me learning that the AD_PORT_MATCHED "variable" is not specified by 802.3ad 😭; it is used here to implement the language from 802.3ad 43.4.9 that requires recordPDU to "match" the LACPDU parameters to the stored values. the lore is real.

🌈 SEE ALSO 🌈

Kernel file ./drivers/net/bonding/bond_3ad.c is the home base, and the whole (9) squad is: __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), __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_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).


mwah πŸ’‹ source/version: ./drivers/net/bonding; date: October 2026; page: __choose_matched(9). bye bestie, go match some PDUs πŸ’–βœ¨

πŸ“¦ where this page comes from