Lines Matching refs:aggregator

117 static void ad_agg_selection_logic(struct aggregator *aggregator,
119 static void ad_clear_agg(struct aggregator *aggregator);
120 static void ad_initialize_agg(struct aggregator *aggregator);
157 static inline struct aggregator *__get_first_agg(struct port *port) in __get_first_agg()
161 struct aggregator *agg; in __get_first_agg()
169 agg = first_slave ? &(SLAVE_AD_INFO(first_slave)->aggregator) : NULL; in __get_first_agg()
182 static inline int __agg_has_partner(struct aggregator *agg) in __agg_has_partner()
605 static int __agg_ports_are_ready(struct aggregator *aggregator) in __agg_ports_are_ready() argument
610 if (aggregator) { in __agg_ports_are_ready()
614 for (port = aggregator->lag_ports; in __agg_ports_are_ready()
633 static void __set_agg_ports_ready(struct aggregator *aggregator, int val) in __set_agg_ports_ready() argument
637 for (port = aggregator->lag_ports; port; in __set_agg_ports_ready()
651 static u32 __get_agg_bandwidth(struct aggregator *aggregator) in __get_agg_bandwidth() argument
655 if (aggregator->num_of_ports) { in __get_agg_bandwidth()
656 switch (__get_link_speed(aggregator->lag_ports)) { in __get_agg_bandwidth()
658 bandwidth = aggregator->num_of_ports; in __get_agg_bandwidth()
661 bandwidth = aggregator->num_of_ports * 10; in __get_agg_bandwidth()
664 bandwidth = aggregator->num_of_ports * 100; in __get_agg_bandwidth()
667 bandwidth = aggregator->num_of_ports * 1000; in __get_agg_bandwidth()
670 bandwidth = aggregator->num_of_ports * 2500; in __get_agg_bandwidth()
673 bandwidth = aggregator->num_of_ports * 10000; in __get_agg_bandwidth()
676 bandwidth = aggregator->num_of_ports * 20000; in __get_agg_bandwidth()
679 bandwidth = aggregator->num_of_ports * 40000; in __get_agg_bandwidth()
682 bandwidth = aggregator->num_of_ports * 56000; in __get_agg_bandwidth()
697 static struct aggregator *__get_active_agg(struct aggregator *aggregator) in __get_active_agg() argument
699 struct bonding *bond = aggregator->slave->bond; in __get_active_agg()
704 if (SLAVE_AD_INFO(slave)->aggregator.is_active) in __get_active_agg()
705 return &(SLAVE_AD_INFO(slave)->aggregator); in __get_active_agg()
875 __set_agg_ports_ready(port->aggregator, __agg_ports_are_ready(port->aggregator)); in ad_mux_machine()
890 __set_agg_ports_ready(port->aggregator, __agg_ports_are_ready(port->aggregator)); in ad_mux_machine()
906 if (port->aggregator->is_active) in ad_mux_machine()
918 __set_agg_ports_ready(port->aggregator, __agg_ports_are_ready(port->aggregator)); in ad_mux_machine()
920 } else if (port->aggregator->is_active) { in ad_mux_machine()
936 if (port->aggregator && in ad_mux_machine()
937 port->aggregator->is_active && in ad_mux_machine()
969 if (port->aggregator->is_active) in ad_mux_machine()
1308 struct aggregator *aggregator, *free_aggregator = NULL, *temp_aggregator; in ad_port_selection_logic() local
1322 if (port->aggregator) { in ad_port_selection_logic()
1324 temp_aggregator = port->aggregator; in ad_port_selection_logic()
1347 port->aggregator = NULL; in ad_port_selection_logic()
1370 port->aggregator->aggregator_identifier); in ad_port_selection_logic()
1375 aggregator = &(SLAVE_AD_INFO(slave)->aggregator); in ad_port_selection_logic()
1378 if (!aggregator->lag_ports) { in ad_port_selection_logic()
1380 free_aggregator = aggregator; in ad_port_selection_logic()
1384 …if (((aggregator->actor_oper_aggregator_key == port->actor_oper_port_key) && /* if all parameters … in ad_port_selection_logic()
1385 MAC_ADDRESS_EQUAL(&(aggregator->partner_system), &(port->partner_oper.system)) && in ad_port_selection_logic()
1386 (aggregator->partner_system_priority == port->partner_oper.system_priority) && in ad_port_selection_logic()
1387 (aggregator->partner_oper_aggregator_key == port->partner_oper.key) in ad_port_selection_logic()
1390 !aggregator->is_individual) /* but is not individual OR */ in ad_port_selection_logic()
1394 port->aggregator = aggregator; in ad_port_selection_logic()
1396 port->aggregator->aggregator_identifier; in ad_port_selection_logic()
1397 port->next_port_in_aggregator = aggregator->lag_ports; in ad_port_selection_logic()
1398 port->aggregator->num_of_ports++; in ad_port_selection_logic()
1399 aggregator->lag_ports = port; in ad_port_selection_logic()
1402 port->aggregator->aggregator_identifier); in ad_port_selection_logic()
1417 port->aggregator = free_aggregator; in ad_port_selection_logic()
1419 port->aggregator->aggregator_identifier; in ad_port_selection_logic()
1426 port->aggregator->is_individual = false; in ad_port_selection_logic()
1428 port->aggregator->is_individual = true; in ad_port_selection_logic()
1430 port->aggregator->actor_admin_aggregator_key = in ad_port_selection_logic()
1432 port->aggregator->actor_oper_aggregator_key = in ad_port_selection_logic()
1434 port->aggregator->partner_system = in ad_port_selection_logic()
1436 port->aggregator->partner_system_priority = in ad_port_selection_logic()
1438 port->aggregator->partner_oper_aggregator_key = port->partner_oper.key; in ad_port_selection_logic()
1439 port->aggregator->receive_state = 1; in ad_port_selection_logic()
1440 port->aggregator->transmit_state = 1; in ad_port_selection_logic()
1441 port->aggregator->lag_ports = port; in ad_port_selection_logic()
1442 port->aggregator->num_of_ports++; in ad_port_selection_logic()
1449 port->aggregator->aggregator_identifier); in ad_port_selection_logic()
1459 __set_agg_ports_ready(port->aggregator, in ad_port_selection_logic()
1460 __agg_ports_are_ready(port->aggregator)); in ad_port_selection_logic()
1462 aggregator = __get_first_agg(port); in ad_port_selection_logic()
1463 ad_agg_selection_logic(aggregator, update_slave_arr); in ad_port_selection_logic()
1465 if (!port->aggregator->is_active) in ad_port_selection_logic()
1472 static struct aggregator *ad_agg_selection_test(struct aggregator *best, in ad_agg_selection_test()
1473 struct aggregator *curr) in ad_agg_selection_test()
1540 static int agg_device_up(const struct aggregator *agg) in agg_device_up()
1577 static void ad_agg_selection_logic(struct aggregator *agg, in ad_agg_selection_logic()
1580 struct aggregator *best, *active, *origin; in ad_agg_selection_logic()
1592 agg = &(SLAVE_AD_INFO(slave)->aggregator); in ad_agg_selection_logic()
1637 agg = &(SLAVE_AD_INFO(slave)->aggregator); in ad_agg_selection_logic()
1698 static void ad_clear_agg(struct aggregator *aggregator) in ad_clear_agg() argument
1700 if (aggregator) { in ad_clear_agg()
1701 aggregator->is_individual = false; in ad_clear_agg()
1702 aggregator->actor_admin_aggregator_key = 0; in ad_clear_agg()
1703 aggregator->actor_oper_aggregator_key = 0; in ad_clear_agg()
1704 aggregator->partner_system = null_mac_addr; in ad_clear_agg()
1705 aggregator->partner_system_priority = 0; in ad_clear_agg()
1706 aggregator->partner_oper_aggregator_key = 0; in ad_clear_agg()
1707 aggregator->receive_state = 0; in ad_clear_agg()
1708 aggregator->transmit_state = 0; in ad_clear_agg()
1709 aggregator->lag_ports = NULL; in ad_clear_agg()
1710 aggregator->is_active = 0; in ad_clear_agg()
1711 aggregator->num_of_ports = 0; in ad_clear_agg()
1713 aggregator->aggregator_identifier); in ad_clear_agg()
1721 static void ad_initialize_agg(struct aggregator *aggregator) in ad_initialize_agg() argument
1723 if (aggregator) { in ad_initialize_agg()
1724 ad_clear_agg(aggregator); in ad_initialize_agg()
1726 aggregator->aggregator_mac_address = null_mac_addr; in ad_initialize_agg()
1727 aggregator->aggregator_identifier = 0; in ad_initialize_agg()
1728 aggregator->slave = NULL; in ad_initialize_agg()
1783 port->aggregator = NULL; in ad_initialize_port()
1808 if (port->aggregator->is_active) { in ad_enable_collecting_distributing()
1811 port->aggregator->aggregator_identifier); in ad_enable_collecting_distributing()
1826 if (port->aggregator && in ad_disable_collecting_distributing()
1827 !MAC_ADDRESS_EQUAL(&(port->aggregator->partner_system), in ad_disable_collecting_distributing()
1831 port->aggregator->aggregator_identifier); in ad_disable_collecting_distributing()
1939 struct aggregator *aggregator; in bond_3ad_bind_slave() local
1968 aggregator = &(SLAVE_AD_INFO(slave)->aggregator); in bond_3ad_bind_slave()
1970 ad_initialize_agg(aggregator); in bond_3ad_bind_slave()
1972 aggregator->aggregator_mac_address = *((struct mac_addr *)bond->dev->dev_addr); in bond_3ad_bind_slave()
1973 aggregator->aggregator_identifier = ++BOND_AD_INFO(bond).aggregator_identifier; in bond_3ad_bind_slave()
1974 aggregator->slave = slave; in bond_3ad_bind_slave()
1975 aggregator->is_active = 0; in bond_3ad_bind_slave()
1976 aggregator->num_of_ports = 0; in bond_3ad_bind_slave()
1991 struct aggregator *aggregator, *new_aggregator, *temp_aggregator; in bond_3ad_unbind_slave() local
2000 aggregator = &(SLAVE_AD_INFO(slave)->aggregator); in bond_3ad_unbind_slave()
2011 aggregator->aggregator_identifier); in bond_3ad_unbind_slave()
2019 if (aggregator->lag_ports) { in bond_3ad_unbind_slave()
2025 if ((aggregator->lag_ports != port) || in bond_3ad_unbind_slave()
2026 (aggregator->lag_ports->next_port_in_aggregator)) { in bond_3ad_unbind_slave()
2029 new_aggregator = &(SLAVE_AD_INFO(slave_iter)->aggregator); in bond_3ad_unbind_slave()
2047 aggregator->aggregator_identifier, in bond_3ad_unbind_slave()
2056 new_aggregator->is_individual = aggregator->is_individual; in bond_3ad_unbind_slave()
2057 new_aggregator->actor_admin_aggregator_key = aggregator->actor_admin_aggregator_key; in bond_3ad_unbind_slave()
2058 new_aggregator->actor_oper_aggregator_key = aggregator->actor_oper_aggregator_key; in bond_3ad_unbind_slave()
2059 new_aggregator->partner_system = aggregator->partner_system; in bond_3ad_unbind_slave()
2060 new_aggregator->partner_system_priority = aggregator->partner_system_priority; in bond_3ad_unbind_slave()
2061 new_aggregator->partner_oper_aggregator_key = aggregator->partner_oper_aggregator_key; in bond_3ad_unbind_slave()
2062 new_aggregator->receive_state = aggregator->receive_state; in bond_3ad_unbind_slave()
2063 new_aggregator->transmit_state = aggregator->transmit_state; in bond_3ad_unbind_slave()
2064 new_aggregator->lag_ports = aggregator->lag_ports; in bond_3ad_unbind_slave()
2065 new_aggregator->is_active = aggregator->is_active; in bond_3ad_unbind_slave()
2066 new_aggregator->num_of_ports = aggregator->num_of_ports; in bond_3ad_unbind_slave()
2071 for (temp_port = aggregator->lag_ports; temp_port; in bond_3ad_unbind_slave()
2073 temp_port->aggregator = new_aggregator; in bond_3ad_unbind_slave()
2077 ad_clear_agg(aggregator); in bond_3ad_unbind_slave()
2089 select_new_active_agg = aggregator->is_active; in bond_3ad_unbind_slave()
2090 ad_clear_agg(aggregator); in bond_3ad_unbind_slave()
2106 temp_aggregator = &(SLAVE_AD_INFO(slave_iter)->aggregator); in bond_3ad_unbind_slave()
2158 struct aggregator *aggregator; in bond_3ad_state_machine_handler() local
2190 aggregator = __get_first_agg(port); in bond_3ad_state_machine_handler()
2191 ad_agg_selection_logic(aggregator, &update_slave_arr); in bond_3ad_state_machine_handler()
2442 struct aggregator *active; in bond_3ad_set_carrier()
2452 active = __get_active_agg(&(SLAVE_AD_INFO(first_slave)->aggregator)); in bond_3ad_set_carrier()
2483 struct aggregator *aggregator = NULL; in __bond_3ad_get_active_agg_info() local
2490 if (port->aggregator && port->aggregator->is_active) { in __bond_3ad_get_active_agg_info()
2491 aggregator = port->aggregator; in __bond_3ad_get_active_agg_info()
2496 if (!aggregator) in __bond_3ad_get_active_agg_info()
2499 ad_info->aggregator_id = aggregator->aggregator_identifier; in __bond_3ad_get_active_agg_info()
2500 ad_info->ports = aggregator->num_of_ports; in __bond_3ad_get_active_agg_info()
2501 ad_info->actor_key = aggregator->actor_oper_aggregator_key; in __bond_3ad_get_active_agg_info()
2502 ad_info->partner_key = aggregator->partner_oper_aggregator_key; in __bond_3ad_get_active_agg_info()
2504 aggregator->partner_system.mac_addr_value); in __bond_3ad_get_active_agg_info()