Lines Matching refs:bond

55 static void rlb_purge_src_ip(struct bonding *bond, struct arp_pkt *arp);
56 static void rlb_src_unlink(struct bonding *bond, u32 index);
57 static void rlb_src_link(struct bonding *bond, u32 ip_src_hash,
92 static void __tlb_clear_slave(struct bonding *bond, struct slave *slave, in __tlb_clear_slave() argument
99 tx_hash_table = BOND_ALB_INFO(bond).tx_hashtbl; in __tlb_clear_slave()
115 static void tlb_clear_slave(struct bonding *bond, struct slave *slave, in tlb_clear_slave() argument
118 spin_lock_bh(&bond->mode_lock); in tlb_clear_slave()
119 __tlb_clear_slave(bond, slave, save_load); in tlb_clear_slave()
120 spin_unlock_bh(&bond->mode_lock); in tlb_clear_slave()
124 static int tlb_initialize(struct bonding *bond) in tlb_initialize() argument
126 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in tlb_initialize()
135 spin_lock_bh(&bond->mode_lock); in tlb_initialize()
142 spin_unlock_bh(&bond->mode_lock); in tlb_initialize()
148 static void tlb_deinitialize(struct bonding *bond) in tlb_deinitialize() argument
150 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in tlb_deinitialize()
152 spin_lock_bh(&bond->mode_lock); in tlb_deinitialize()
157 spin_unlock_bh(&bond->mode_lock); in tlb_deinitialize()
166 static struct slave *tlb_get_least_loaded_slave(struct bonding *bond) in tlb_get_least_loaded_slave() argument
176 bond_for_each_slave_rcu(bond, slave, iter) { in tlb_get_least_loaded_slave()
190 static struct slave *__tlb_choose_channel(struct bonding *bond, u32 hash_index, in __tlb_choose_channel() argument
193 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in __tlb_choose_channel()
200 assigned_slave = tlb_get_least_loaded_slave(bond); in __tlb_choose_channel()
226 static struct slave *tlb_choose_channel(struct bonding *bond, u32 hash_index, in tlb_choose_channel() argument
235 spin_lock(&bond->mode_lock); in tlb_choose_channel()
236 tx_slave = __tlb_choose_channel(bond, hash_index, skb_len); in tlb_choose_channel()
237 spin_unlock(&bond->mode_lock); in tlb_choose_channel()
247 static void rlb_update_entry_from_arp(struct bonding *bond, struct arp_pkt *arp) in rlb_update_entry_from_arp() argument
249 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_update_entry_from_arp()
253 spin_lock_bh(&bond->mode_lock); in rlb_update_entry_from_arp()
268 spin_unlock_bh(&bond->mode_lock); in rlb_update_entry_from_arp()
271 static int rlb_arp_recv(const struct sk_buff *skb, struct bonding *bond, in rlb_arp_recv() argument
293 rlb_purge_src_ip(bond, arp); in rlb_arp_recv()
297 rlb_update_entry_from_arp(bond, arp); in rlb_arp_recv()
298 slave_dbg(bond->dev, slave->dev, "Server received an ARP Reply from client\n"); in rlb_arp_recv()
305 static struct slave *__rlb_next_rx_slave(struct bonding *bond) in __rlb_next_rx_slave() argument
307 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in __rlb_next_rx_slave()
312 bond_for_each_slave_rcu(bond, slave, iter) { in __rlb_next_rx_slave()
338 static struct slave *rlb_next_rx_slave(struct bonding *bond) in rlb_next_rx_slave() argument
345 rx_slave = __rlb_next_rx_slave(bond); in rlb_next_rx_slave()
356 static void rlb_teach_disabled_mac_on_primary(struct bonding *bond, in rlb_teach_disabled_mac_on_primary() argument
359 struct slave *curr_active = rtnl_dereference(bond->curr_active_slave); in rlb_teach_disabled_mac_on_primary()
364 if (!bond->alb_info.primary_is_promisc) { in rlb_teach_disabled_mac_on_primary()
366 bond->alb_info.primary_is_promisc = 1; in rlb_teach_disabled_mac_on_primary()
368 bond->alb_info.primary_is_promisc = 0; in rlb_teach_disabled_mac_on_primary()
371 bond->alb_info.rlb_promisc_timeout_counter = 0; in rlb_teach_disabled_mac_on_primary()
380 static void rlb_clear_slave(struct bonding *bond, struct slave *slave) in rlb_clear_slave() argument
382 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_clear_slave()
387 spin_lock_bh(&bond->mode_lock); in rlb_clear_slave()
394 struct slave *assigned_slave = rlb_next_rx_slave(bond); in rlb_clear_slave()
417 spin_unlock_bh(&bond->mode_lock); in rlb_clear_slave()
419 if (slave != rtnl_dereference(bond->curr_active_slave)) in rlb_clear_slave()
420 rlb_teach_disabled_mac_on_primary(bond, slave->dev->dev_addr); in rlb_clear_slave()
441 slave_err(client_info->slave->bond->dev, in rlb_update_client()
459 static void rlb_update_rx_clients(struct bonding *bond) in rlb_update_rx_clients() argument
461 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_update_rx_clients()
465 spin_lock_bh(&bond->mode_lock); in rlb_update_rx_clients()
483 spin_unlock_bh(&bond->mode_lock); in rlb_update_rx_clients()
487 static void rlb_req_update_slave_clients(struct bonding *bond, struct slave *slave) in rlb_req_update_slave_clients() argument
489 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_req_update_slave_clients()
494 spin_lock_bh(&bond->mode_lock); in rlb_req_update_slave_clients()
515 spin_unlock_bh(&bond->mode_lock); in rlb_req_update_slave_clients()
519 static void rlb_req_update_subnet_clients(struct bonding *bond, __be32 src_ip) in rlb_req_update_subnet_clients() argument
521 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_req_update_subnet_clients()
525 spin_lock(&bond->mode_lock); in rlb_req_update_subnet_clients()
533 netdev_err(bond->dev, "found a client with no channel in the client's hash table\n"); in rlb_req_update_subnet_clients()
542 bond->dev->dev_addr) && in rlb_req_update_subnet_clients()
549 spin_unlock(&bond->mode_lock); in rlb_req_update_subnet_clients()
553 struct bonding *bond, in rlb_choose_channel() argument
556 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_choose_channel()
561 spin_lock(&bond->mode_lock); in rlb_choose_channel()
563 curr_active_slave = rcu_dereference(bond->curr_active_slave); in rlb_choose_channel()
580 spin_unlock(&bond->mode_lock); in rlb_choose_channel()
596 assigned_slave = __rlb_next_rx_slave(bond); in rlb_choose_channel()
606 rlb_src_unlink(bond, hash_index); in rlb_choose_channel()
607 rlb_src_link(bond, hash_src, hash_index); in rlb_choose_channel()
622 bond->alb_info.rx_ntt = 1; in rlb_choose_channel()
643 spin_unlock(&bond->mode_lock); in rlb_choose_channel()
652 static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond) in rlb_arp_xmit() argument
664 if (!bond_slave_has_mac_rx(bond, arp->mac_src)) in rlb_arp_xmit()
669 tx_slave = rlb_choose_channel(skb, bond, arp); in rlb_arp_xmit()
673 netdev_dbg(bond->dev, "(slave %s): Server sent ARP Reply packet\n", in rlb_arp_xmit()
681 tx_slave = rlb_choose_channel(skb, bond, arp); in rlb_arp_xmit()
686 bond->alb_info.rlb_update_delay_counter = RLB_UPDATE_DELAY; in rlb_arp_xmit()
693 rlb_req_update_subnet_clients(bond, arp->ip_src); in rlb_arp_xmit()
694 netdev_dbg(bond->dev, "(slave %s): Server sent ARP Request packet\n", in rlb_arp_xmit()
701 static void rlb_rebalance(struct bonding *bond) in rlb_rebalance() argument
703 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_rebalance()
709 spin_lock_bh(&bond->mode_lock); in rlb_rebalance()
716 assigned_slave = __rlb_next_rx_slave(bond); in rlb_rebalance()
729 spin_unlock_bh(&bond->mode_lock); in rlb_rebalance()
755 static void rlb_delete_table_entry_dst(struct bonding *bond, u32 index) in rlb_delete_table_entry_dst() argument
757 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_delete_table_entry_dst()
770 static void rlb_src_unlink(struct bonding *bond, u32 index) in rlb_src_unlink() argument
772 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_src_unlink()
793 static void rlb_delete_table_entry(struct bonding *bond, u32 index) in rlb_delete_table_entry() argument
795 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_delete_table_entry()
798 rlb_delete_table_entry_dst(bond, index); in rlb_delete_table_entry()
801 rlb_src_unlink(bond, index); in rlb_delete_table_entry()
807 static void rlb_src_link(struct bonding *bond, u32 ip_src_hash, u32 ip_dst_hash) in rlb_src_link() argument
809 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_src_link()
823 static void rlb_purge_src_ip(struct bonding *bond, struct arp_pkt *arp) in rlb_purge_src_ip() argument
825 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_purge_src_ip()
829 spin_lock_bh(&bond->mode_lock); in rlb_purge_src_ip()
838 rlb_delete_table_entry(bond, index); in rlb_purge_src_ip()
841 spin_unlock_bh(&bond->mode_lock); in rlb_purge_src_ip()
844 static int rlb_initialize(struct bonding *bond) in rlb_initialize() argument
846 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_initialize()
855 spin_lock_bh(&bond->mode_lock); in rlb_initialize()
864 spin_unlock_bh(&bond->mode_lock); in rlb_initialize()
867 bond->recv_probe = rlb_arp_recv; in rlb_initialize()
872 static void rlb_deinitialize(struct bonding *bond) in rlb_deinitialize() argument
874 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_deinitialize()
876 spin_lock_bh(&bond->mode_lock); in rlb_deinitialize()
882 spin_unlock_bh(&bond->mode_lock); in rlb_deinitialize()
885 static void rlb_clear_vlan(struct bonding *bond, unsigned short vlan_id) in rlb_clear_vlan() argument
887 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in rlb_clear_vlan()
890 spin_lock_bh(&bond->mode_lock); in rlb_clear_vlan()
898 rlb_delete_table_entry(bond, curr_index); in rlb_clear_vlan()
903 spin_unlock_bh(&bond->mode_lock); in rlb_clear_vlan()
932 slave_dbg(slave->bond->dev, slave->dev, in alb_send_lp_vid()
942 struct bonding *bond; member
954 struct bonding *bond = data->bond; in alb_upper_dev_walk() local
959 bond->dev->lower_level == upper->lower_level - 1) { in alb_upper_dev_walk()
975 tags = bond_verify_device_path(bond->dev, upper, 0); in alb_upper_dev_walk()
989 struct bonding *bond = bond_get_bond_by_slave(slave); in alb_send_learning_packets() local
995 .bond = bond, in alb_send_learning_packets()
1006 netdev_walk_all_upper_dev_rcu(bond->dev, alb_upper_dev_walk, &priv); in alb_send_learning_packets()
1016 if (BOND_MODE(slave->bond) == BOND_MODE_TLB) { in alb_set_slave_mac_addr()
1027 …slave_err(slave->bond->dev, dev, "dev_set_mac_address on slave failed! ALB mode requires that the … in alb_set_slave_mac_addr()
1054 static void alb_fasten_mac_swap(struct bonding *bond, struct slave *slave1, in alb_fasten_mac_swap() argument
1065 if (bond->alb_info.rlb_enabled) { in alb_fasten_mac_swap()
1069 rlb_req_update_slave_clients(bond, slave1); in alb_fasten_mac_swap()
1077 if (bond->alb_info.rlb_enabled) { in alb_fasten_mac_swap()
1081 rlb_req_update_slave_clients(bond, slave2); in alb_fasten_mac_swap()
1087 if (bond->alb_info.rlb_enabled && slaves_state_differ) { in alb_fasten_mac_swap()
1089 rlb_teach_disabled_mac_on_primary(bond, in alb_fasten_mac_swap()
1108 static void alb_change_hw_addr_on_detach(struct bonding *bond, struct slave *slave) in alb_change_hw_addr_on_detach() argument
1117 bond->dev->dev_addr); in alb_change_hw_addr_on_detach()
1120 found_slave = bond_slave_has_mac(bond, slave->perm_hwaddr); in alb_change_hw_addr_on_detach()
1124 alb_fasten_mac_swap(bond, slave, found_slave); in alb_change_hw_addr_on_detach()
1151 static int alb_handle_addr_collision_on_attach(struct bonding *bond, struct slave *slave) in alb_handle_addr_collision_on_attach() argument
1153 struct slave *has_bond_addr = rcu_access_pointer(bond->curr_active_slave); in alb_handle_addr_collision_on_attach()
1157 if (!bond_has_slaves(bond)) { in alb_handle_addr_collision_on_attach()
1166 if (!ether_addr_equal_64bits(slave->perm_hwaddr, bond->dev->dev_addr)) { in alb_handle_addr_collision_on_attach()
1167 if (!bond_slave_has_mac(bond, slave->dev->dev_addr)) in alb_handle_addr_collision_on_attach()
1173 alb_set_slave_mac_addr(slave, bond->dev->dev_addr, in alb_handle_addr_collision_on_attach()
1174 bond->dev->addr_len); in alb_handle_addr_collision_on_attach()
1180 bond_for_each_slave(bond, tmp_slave1, iter) { in alb_handle_addr_collision_on_attach()
1181 if (!bond_slave_has_mac(bond, tmp_slave1->perm_hwaddr)) { in alb_handle_addr_collision_on_attach()
1191 bond->dev->dev_addr)) { in alb_handle_addr_collision_on_attach()
1202 …slave_warn(bond->dev, slave->dev, "the slave hw address is in use by the bond; giving it the hw ad… in alb_handle_addr_collision_on_attach()
1206 …slave_err(bond->dev, slave->dev, "the slave hw address is in use by the bond; couldn't find a slav… in alb_handle_addr_collision_on_attach()
1227 static int alb_set_mac_address(struct bonding *bond, void *addr) in alb_set_mac_address() argument
1235 if (bond->alb_info.rlb_enabled) in alb_set_mac_address()
1238 bond_for_each_slave(bond, slave, iter) { in alb_set_mac_address()
1255 memcpy(ss.__data, bond->dev->dev_addr, bond->dev->addr_len); in alb_set_mac_address()
1256 ss.ss_family = bond->dev->type; in alb_set_mac_address()
1259 bond_for_each_slave(bond, rollback_slave, iter) { in alb_set_mac_address()
1274 int bond_alb_initialize(struct bonding *bond, int rlb_enabled) in bond_alb_initialize() argument
1278 res = tlb_initialize(bond); in bond_alb_initialize()
1283 bond->alb_info.rlb_enabled = 1; in bond_alb_initialize()
1284 res = rlb_initialize(bond); in bond_alb_initialize()
1286 tlb_deinitialize(bond); in bond_alb_initialize()
1290 bond->alb_info.rlb_enabled = 0; in bond_alb_initialize()
1296 void bond_alb_deinitialize(struct bonding *bond) in bond_alb_deinitialize() argument
1298 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in bond_alb_deinitialize()
1300 tlb_deinitialize(bond); in bond_alb_deinitialize()
1303 rlb_deinitialize(bond); in bond_alb_deinitialize()
1306 static netdev_tx_t bond_do_alb_xmit(struct sk_buff *skb, struct bonding *bond, in bond_do_alb_xmit() argument
1309 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in bond_do_alb_xmit()
1314 tx_slave = rcu_dereference(bond->curr_active_slave); in bond_do_alb_xmit()
1315 if (bond->params.tlb_dynamic_lb) in bond_do_alb_xmit()
1320 if (tx_slave != rcu_access_pointer(bond->curr_active_slave)) { in bond_do_alb_xmit()
1325 return bond_dev_queue_xmit(bond, skb, tx_slave->dev); in bond_do_alb_xmit()
1328 if (tx_slave && bond->params.tlb_dynamic_lb) { in bond_do_alb_xmit()
1329 spin_lock(&bond->mode_lock); in bond_do_alb_xmit()
1330 __tlb_clear_slave(bond, tx_slave, 0); in bond_do_alb_xmit()
1331 spin_unlock(&bond->mode_lock); in bond_do_alb_xmit()
1335 return bond_tx_drop(bond->dev, skb); in bond_do_alb_xmit()
1338 struct slave *bond_xmit_tlb_slave_get(struct bonding *bond, in bond_xmit_tlb_slave_get() argument
1353 hash_index = bond_xmit_hash(bond, skb); in bond_xmit_tlb_slave_get()
1354 if (bond->params.tlb_dynamic_lb) { in bond_xmit_tlb_slave_get()
1355 tx_slave = tlb_choose_channel(bond, in bond_xmit_tlb_slave_get()
1362 slaves = rcu_dereference(bond->usable_slaves); in bond_xmit_tlb_slave_get()
1376 struct bonding *bond = netdev_priv(bond_dev); in bond_tlb_xmit() local
1379 tx_slave = bond_xmit_tlb_slave_get(bond, skb); in bond_tlb_xmit()
1380 return bond_do_alb_xmit(skb, bond, tx_slave); in bond_tlb_xmit()
1383 struct slave *bond_xmit_alb_slave_get(struct bonding *bond, in bond_xmit_alb_slave_get() argument
1386 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in bond_xmit_alb_slave_get()
1456 tx_slave = rlb_arp_xmit(skb, bond); in bond_xmit_alb_slave_get()
1464 if (bond->params.tlb_dynamic_lb) { in bond_xmit_alb_slave_get()
1466 tx_slave = tlb_choose_channel(bond, hash_index, skb->len); in bond_xmit_alb_slave_get()
1476 slaves = rcu_dereference(bond->usable_slaves); in bond_xmit_alb_slave_get()
1479 tx_slave = slaves->arr[bond_xmit_hash(bond, skb) % in bond_xmit_alb_slave_get()
1488 struct bonding *bond = netdev_priv(bond_dev); in bond_alb_xmit() local
1491 tx_slave = bond_xmit_alb_slave_get(bond, skb); in bond_alb_xmit()
1492 return bond_do_alb_xmit(skb, bond, tx_slave); in bond_alb_xmit()
1497 struct bonding *bond = container_of(work, struct bonding, in bond_alb_monitor() local
1499 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in bond_alb_monitor()
1503 if (!bond_has_slaves(bond)) { in bond_alb_monitor()
1515 if (bond_info->lp_counter >= BOND_ALB_LP_TICKS(bond)) { in bond_alb_monitor()
1518 bond_for_each_slave_rcu(bond, slave, iter) { in bond_alb_monitor()
1524 strict_match = (slave != rcu_access_pointer(bond->curr_active_slave) || in bond_alb_monitor()
1534 bond_for_each_slave_rcu(bond, slave, iter) { in bond_alb_monitor()
1535 tlb_clear_slave(bond, slave, 1); in bond_alb_monitor()
1536 if (slave == rcu_access_pointer(bond->curr_active_slave)) { in bond_alb_monitor()
1563 dev_set_promiscuity(rtnl_dereference(bond->curr_active_slave)->dev, in bond_alb_monitor()
1573 rlb_rebalance(bond); in bond_alb_monitor()
1581 rlb_update_rx_clients(bond); in bond_alb_monitor()
1591 queue_delayed_work(bond->wq, &bond->alb_work, alb_delta_in_ticks); in bond_alb_monitor()
1597 int bond_alb_init_slave(struct bonding *bond, struct slave *slave) in bond_alb_init_slave() argument
1606 res = alb_handle_addr_collision_on_attach(bond, slave); in bond_alb_init_slave()
1613 atomic_set(&bond->alb_info.tx_rebalance_counter, in bond_alb_init_slave()
1616 if (bond->alb_info.rlb_enabled) in bond_alb_init_slave()
1617 bond->alb_info.rlb_rebalance = 1; in bond_alb_init_slave()
1627 void bond_alb_deinit_slave(struct bonding *bond, struct slave *slave) in bond_alb_deinit_slave() argument
1629 if (bond_has_slaves(bond)) in bond_alb_deinit_slave()
1630 alb_change_hw_addr_on_detach(bond, slave); in bond_alb_deinit_slave()
1632 tlb_clear_slave(bond, slave, 0); in bond_alb_deinit_slave()
1634 if (bond->alb_info.rlb_enabled) { in bond_alb_deinit_slave()
1635 bond->alb_info.rx_slave = NULL; in bond_alb_deinit_slave()
1636 rlb_clear_slave(bond, slave); in bond_alb_deinit_slave()
1641 void bond_alb_handle_link_change(struct bonding *bond, struct slave *slave, char link) in bond_alb_handle_link_change() argument
1643 struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); in bond_alb_handle_link_change()
1646 tlb_clear_slave(bond, slave, 0); in bond_alb_handle_link_change()
1647 if (bond->alb_info.rlb_enabled) in bond_alb_handle_link_change()
1648 rlb_clear_slave(bond, slave); in bond_alb_handle_link_change()
1653 if (bond->alb_info.rlb_enabled) { in bond_alb_handle_link_change()
1654 bond->alb_info.rlb_rebalance = 1; in bond_alb_handle_link_change()
1663 if (bond_is_nondyn_tlb(bond)) { in bond_alb_handle_link_change()
1664 if (bond_update_slave_arr(bond, NULL)) in bond_alb_handle_link_change()
1679 void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave) in bond_alb_handle_active_change() argument
1684 curr_active = rtnl_dereference(bond->curr_active_slave); in bond_alb_handle_active_change()
1688 if (curr_active && bond->alb_info.primary_is_promisc) { in bond_alb_handle_active_change()
1690 bond->alb_info.primary_is_promisc = 0; in bond_alb_handle_active_change()
1691 bond->alb_info.rlb_promisc_timeout_counter = 0; in bond_alb_handle_active_change()
1695 rcu_assign_pointer(bond->curr_active_slave, new_slave); in bond_alb_handle_active_change()
1697 if (!new_slave || !bond_has_slaves(bond)) in bond_alb_handle_active_change()
1704 swap_slave = bond_slave_has_mac(bond, bond->dev->dev_addr); in bond_alb_handle_active_change()
1711 tlb_clear_slave(bond, swap_slave, 1); in bond_alb_handle_active_change()
1712 tlb_clear_slave(bond, new_slave, 1); in bond_alb_handle_active_change()
1717 if (BOND_MODE(bond) == BOND_MODE_TLB) { in bond_alb_handle_active_change()
1724 bond_hw_addr_copy(ss.__data, bond->dev->dev_addr, in bond_alb_handle_active_change()
1725 bond->dev->addr_len); in bond_alb_handle_active_change()
1726 ss.ss_family = bond->dev->type; in bond_alb_handle_active_change()
1738 alb_fasten_mac_swap(bond, swap_slave, new_slave); in bond_alb_handle_active_change()
1741 alb_set_slave_mac_addr(new_slave, bond->dev->dev_addr, in bond_alb_handle_active_change()
1742 bond->dev->addr_len); in bond_alb_handle_active_change()
1743 alb_send_learning_packets(new_slave, bond->dev->dev_addr, in bond_alb_handle_active_change()
1751 struct bonding *bond = netdev_priv(bond_dev); in bond_alb_set_mac_address() local
1760 res = alb_set_mac_address(bond, addr); in bond_alb_set_mac_address()
1770 curr_active = rtnl_dereference(bond->curr_active_slave); in bond_alb_set_mac_address()
1774 swap_slave = bond_slave_has_mac(bond, bond_dev->dev_addr); in bond_alb_set_mac_address()
1778 alb_fasten_mac_swap(bond, swap_slave, curr_active); in bond_alb_set_mac_address()
1785 if (bond->alb_info.rlb_enabled) { in bond_alb_set_mac_address()
1787 rlb_req_update_slave_clients(bond, curr_active); in bond_alb_set_mac_address()
1794 void bond_alb_clear_vlan(struct bonding *bond, unsigned short vlan_id) in bond_alb_clear_vlan() argument
1796 if (bond->alb_info.rlb_enabled) in bond_alb_clear_vlan()
1797 rlb_clear_vlan(bond, vlan_id); in bond_alb_clear_vlan()