Loading drivers/net/bonding/bond_alb.c +11 −42 Original line number Diff line number Diff line Loading @@ -1129,6 +1129,7 @@ static void alb_change_hw_addr_on_detach(struct bonding *bond, struct slave *sla { int perm_curr_diff; int perm_bond_diff; struct slave *found_slave; perm_curr_diff = !ether_addr_equal_64bits(slave->perm_hwaddr, slave->dev->dev_addr); Loading @@ -1136,21 +1137,12 @@ static void alb_change_hw_addr_on_detach(struct bonding *bond, struct slave *sla bond->dev->dev_addr); if (perm_curr_diff && perm_bond_diff) { struct slave *tmp_slave; int i, found = 0; found_slave = bond_slave_has_mac(bond, slave->perm_hwaddr); bond_for_each_slave(bond, tmp_slave, i) { if (ether_addr_equal_64bits(slave->perm_hwaddr, tmp_slave->dev->dev_addr)) { found = 1; break; } } if (found) { if (found_slave) { /* locking: needs RTNL and nothing else */ alb_swap_mac_addr(slave, tmp_slave); alb_fasten_mac_swap(bond, slave, tmp_slave); alb_swap_mac_addr(slave, found_slave); alb_fasten_mac_swap(bond, slave, found_slave); } } } Loading Loading @@ -1668,7 +1660,6 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave __acquires(&bond->curr_slave_lock) { struct slave *swap_slave; int i; if (bond->curr_active_slave == new_slave) { return; Loading @@ -1690,17 +1681,8 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave /* set the new curr_active_slave to the bonds mac address * i.e. swap mac addresses of old curr_active_slave and new curr_active_slave */ if (!swap_slave) { struct slave *tmp_slave; /* find slave that is holding the bond's mac address */ bond_for_each_slave(bond, tmp_slave, i) { if (ether_addr_equal_64bits(tmp_slave->dev->dev_addr, bond->dev->dev_addr)) { swap_slave = tmp_slave; break; } } } if (!swap_slave) swap_slave = bond_slave_has_mac(bond, bond->dev->dev_addr); /* * Arrange for swap_slave and new_slave to temporarily be Loading @@ -1721,15 +1703,11 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave if (swap_slave) { /* swap mac address */ alb_swap_mac_addr(swap_slave, new_slave); } else { /* set the new_slave to the bond mac address */ alb_set_slave_mac_addr(new_slave, bond->dev->dev_addr); } if (swap_slave) { alb_fasten_mac_swap(bond, swap_slave, new_slave); read_lock(&bond->lock); } else { /* set the new_slave to the bond mac address */ alb_set_slave_mac_addr(new_slave, bond->dev->dev_addr); read_lock(&bond->lock); alb_send_learning_packets(new_slave, bond->dev->dev_addr); } Loading @@ -1746,9 +1724,8 @@ int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr) { struct bonding *bond = netdev_priv(bond_dev); struct sockaddr *sa = addr; struct slave *slave, *swap_slave; struct slave *swap_slave; int res; int i; if (!is_valid_ether_addr(sa->sa_data)) { return -EADDRNOTAVAIL; Loading @@ -1769,15 +1746,7 @@ int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr) return 0; } swap_slave = NULL; bond_for_each_slave(bond, slave, i) { if (ether_addr_equal_64bits(slave->dev->dev_addr, bond_dev->dev_addr)) { swap_slave = slave; break; } } swap_slave = bond_slave_has_mac(bond, bond_dev->dev_addr); if (swap_slave) { alb_swap_mac_addr(swap_slave, bond->curr_active_slave); Loading Loading
drivers/net/bonding/bond_alb.c +11 −42 Original line number Diff line number Diff line Loading @@ -1129,6 +1129,7 @@ static void alb_change_hw_addr_on_detach(struct bonding *bond, struct slave *sla { int perm_curr_diff; int perm_bond_diff; struct slave *found_slave; perm_curr_diff = !ether_addr_equal_64bits(slave->perm_hwaddr, slave->dev->dev_addr); Loading @@ -1136,21 +1137,12 @@ static void alb_change_hw_addr_on_detach(struct bonding *bond, struct slave *sla bond->dev->dev_addr); if (perm_curr_diff && perm_bond_diff) { struct slave *tmp_slave; int i, found = 0; found_slave = bond_slave_has_mac(bond, slave->perm_hwaddr); bond_for_each_slave(bond, tmp_slave, i) { if (ether_addr_equal_64bits(slave->perm_hwaddr, tmp_slave->dev->dev_addr)) { found = 1; break; } } if (found) { if (found_slave) { /* locking: needs RTNL and nothing else */ alb_swap_mac_addr(slave, tmp_slave); alb_fasten_mac_swap(bond, slave, tmp_slave); alb_swap_mac_addr(slave, found_slave); alb_fasten_mac_swap(bond, slave, found_slave); } } } Loading Loading @@ -1668,7 +1660,6 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave __acquires(&bond->curr_slave_lock) { struct slave *swap_slave; int i; if (bond->curr_active_slave == new_slave) { return; Loading @@ -1690,17 +1681,8 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave /* set the new curr_active_slave to the bonds mac address * i.e. swap mac addresses of old curr_active_slave and new curr_active_slave */ if (!swap_slave) { struct slave *tmp_slave; /* find slave that is holding the bond's mac address */ bond_for_each_slave(bond, tmp_slave, i) { if (ether_addr_equal_64bits(tmp_slave->dev->dev_addr, bond->dev->dev_addr)) { swap_slave = tmp_slave; break; } } } if (!swap_slave) swap_slave = bond_slave_has_mac(bond, bond->dev->dev_addr); /* * Arrange for swap_slave and new_slave to temporarily be Loading @@ -1721,15 +1703,11 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave if (swap_slave) { /* swap mac address */ alb_swap_mac_addr(swap_slave, new_slave); } else { /* set the new_slave to the bond mac address */ alb_set_slave_mac_addr(new_slave, bond->dev->dev_addr); } if (swap_slave) { alb_fasten_mac_swap(bond, swap_slave, new_slave); read_lock(&bond->lock); } else { /* set the new_slave to the bond mac address */ alb_set_slave_mac_addr(new_slave, bond->dev->dev_addr); read_lock(&bond->lock); alb_send_learning_packets(new_slave, bond->dev->dev_addr); } Loading @@ -1746,9 +1724,8 @@ int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr) { struct bonding *bond = netdev_priv(bond_dev); struct sockaddr *sa = addr; struct slave *slave, *swap_slave; struct slave *swap_slave; int res; int i; if (!is_valid_ether_addr(sa->sa_data)) { return -EADDRNOTAVAIL; Loading @@ -1769,15 +1746,7 @@ int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr) return 0; } swap_slave = NULL; bond_for_each_slave(bond, slave, i) { if (ether_addr_equal_64bits(slave->dev->dev_addr, bond_dev->dev_addr)) { swap_slave = slave; break; } } swap_slave = bond_slave_has_mac(bond, bond_dev->dev_addr); if (swap_slave) { alb_swap_mac_addr(swap_slave, bond->curr_active_slave); Loading