Commit 81f23b13 authored by Veaceslav Falico's avatar Veaceslav Falico Committed by David S. Miller

bonding: remove bond_for_each_slave_continue_reverse()

We only use it in rollback scenarios and can easily use the standart
bond_for_each_dev() instead.

CC: Jay Vosburgh <fubar@us.ibm.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: default avatarVeaceslav Falico <vfalico@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 31088a11
...@@ -1246,9 +1246,9 @@ static int alb_handle_addr_collision_on_attach(struct bonding *bond, struct slav ...@@ -1246,9 +1246,9 @@ static int alb_handle_addr_collision_on_attach(struct bonding *bond, struct slav
*/ */
static int alb_set_mac_address(struct bonding *bond, void *addr) static int alb_set_mac_address(struct bonding *bond, void *addr)
{ {
char tmp_addr[ETH_ALEN]; struct slave *slave, *rollback_slave;
struct slave *slave;
struct sockaddr sa; struct sockaddr sa;
char tmp_addr[ETH_ALEN];
int res; int res;
if (bond->alb_info.rlb_enabled) if (bond->alb_info.rlb_enabled)
...@@ -1274,10 +1274,12 @@ static int alb_set_mac_address(struct bonding *bond, void *addr) ...@@ -1274,10 +1274,12 @@ static int alb_set_mac_address(struct bonding *bond, void *addr)
sa.sa_family = bond->dev->type; sa.sa_family = bond->dev->type;
/* unwind from head to the slave that failed */ /* unwind from head to the slave that failed */
bond_for_each_slave_continue_reverse(bond, slave) { bond_for_each_slave(bond, rollback_slave) {
memcpy(tmp_addr, slave->dev->dev_addr, ETH_ALEN); if (rollback_slave == slave)
dev_set_mac_address(slave->dev, &sa); break;
memcpy(slave->dev->dev_addr, tmp_addr, ETH_ALEN); memcpy(tmp_addr, rollback_slave->dev->dev_addr, ETH_ALEN);
dev_set_mac_address(rollback_slave->dev, &sa);
memcpy(rollback_slave->dev->dev_addr, tmp_addr, ETH_ALEN);
} }
return res; return res;
......
...@@ -332,7 +332,7 @@ static int bond_vlan_rx_add_vid(struct net_device *bond_dev, ...@@ -332,7 +332,7 @@ static int bond_vlan_rx_add_vid(struct net_device *bond_dev,
__be16 proto, u16 vid) __be16 proto, u16 vid)
{ {
struct bonding *bond = netdev_priv(bond_dev); struct bonding *bond = netdev_priv(bond_dev);
struct slave *slave; struct slave *slave, *rollback_slave;
int res; int res;
bond_for_each_slave(bond, slave) { bond_for_each_slave(bond, slave) {
...@@ -344,9 +344,13 @@ static int bond_vlan_rx_add_vid(struct net_device *bond_dev, ...@@ -344,9 +344,13 @@ static int bond_vlan_rx_add_vid(struct net_device *bond_dev,
return 0; return 0;
unwind: unwind:
/* unwind from the slave that failed */ /* unwind to the slave that failed */
bond_for_each_slave_continue_reverse(bond, slave) bond_for_each_slave(bond, rollback_slave) {
vlan_vid_del(slave->dev, proto, vid); if (rollback_slave == slave)
break;
vlan_vid_del(rollback_slave->dev, proto, vid);
}
return res; return res;
} }
...@@ -3468,7 +3472,7 @@ static int bond_neigh_setup(struct net_device *dev, ...@@ -3468,7 +3472,7 @@ static int bond_neigh_setup(struct net_device *dev,
static int bond_change_mtu(struct net_device *bond_dev, int new_mtu) static int bond_change_mtu(struct net_device *bond_dev, int new_mtu)
{ {
struct bonding *bond = netdev_priv(bond_dev); struct bonding *bond = netdev_priv(bond_dev);
struct slave *slave; struct slave *slave, *rollback_slave;
int res = 0; int res = 0;
pr_debug("bond=%p, name=%s, new_mtu=%d\n", bond, pr_debug("bond=%p, name=%s, new_mtu=%d\n", bond,
...@@ -3517,13 +3521,16 @@ static int bond_change_mtu(struct net_device *bond_dev, int new_mtu) ...@@ -3517,13 +3521,16 @@ static int bond_change_mtu(struct net_device *bond_dev, int new_mtu)
unwind: unwind:
/* unwind from head to the slave that failed */ /* unwind from head to the slave that failed */
bond_for_each_slave_continue_reverse(bond, slave) { bond_for_each_slave(bond, rollback_slave) {
int tmp_res; int tmp_res;
tmp_res = dev_set_mtu(slave->dev, bond_dev->mtu); if (rollback_slave == slave)
break;
tmp_res = dev_set_mtu(rollback_slave->dev, bond_dev->mtu);
if (tmp_res) { if (tmp_res) {
pr_debug("unwind err %d dev %s\n", pr_debug("unwind err %d dev %s\n",
tmp_res, slave->dev->name); tmp_res, rollback_slave->dev->name);
} }
} }
...@@ -3540,8 +3547,8 @@ static int bond_change_mtu(struct net_device *bond_dev, int new_mtu) ...@@ -3540,8 +3547,8 @@ static int bond_change_mtu(struct net_device *bond_dev, int new_mtu)
static int bond_set_mac_address(struct net_device *bond_dev, void *addr) static int bond_set_mac_address(struct net_device *bond_dev, void *addr)
{ {
struct bonding *bond = netdev_priv(bond_dev); struct bonding *bond = netdev_priv(bond_dev);
struct slave *slave, *rollback_slave;
struct sockaddr *sa = addr, tmp_sa; struct sockaddr *sa = addr, tmp_sa;
struct slave *slave;
int res = 0; int res = 0;
if (bond->params.mode == BOND_MODE_ALB) if (bond->params.mode == BOND_MODE_ALB)
...@@ -3607,13 +3614,16 @@ static int bond_set_mac_address(struct net_device *bond_dev, void *addr) ...@@ -3607,13 +3614,16 @@ static int bond_set_mac_address(struct net_device *bond_dev, void *addr)
tmp_sa.sa_family = bond_dev->type; tmp_sa.sa_family = bond_dev->type;
/* unwind from head to the slave that failed */ /* unwind from head to the slave that failed */
bond_for_each_slave_continue_reverse(bond, slave) { bond_for_each_slave(bond, rollback_slave) {
int tmp_res; int tmp_res;
tmp_res = dev_set_mac_address(slave->dev, &tmp_sa); if (rollback_slave == slave)
break;
tmp_res = dev_set_mac_address(rollback_slave->dev, &tmp_sa);
if (tmp_res) { if (tmp_res) {
pr_debug("unwind err %d dev %s\n", pr_debug("unwind err %d dev %s\n",
tmp_res, slave->dev->name); tmp_res, rollback_slave->dev->name);
} }
} }
......
...@@ -120,16 +120,6 @@ ...@@ -120,16 +120,6 @@
#define bond_for_each_slave_rcu(bond, pos) \ #define bond_for_each_slave_rcu(bond, pos) \
list_for_each_entry_rcu(pos, &(bond)->slave_list, list) list_for_each_entry_rcu(pos, &(bond)->slave_list, list)
/**
* bond_for_each_slave_reverse - iterate in reverse from a given position
* @bond: the bond holding this list
* @pos: slave to continue from
*
* Caller must hold bond->lock
*/
#define bond_for_each_slave_continue_reverse(bond, pos) \
list_for_each_entry_continue_reverse(pos, &(bond)->slave_list, list)
#ifdef CONFIG_NET_POLL_CONTROLLER #ifdef CONFIG_NET_POLL_CONTROLLER
extern atomic_t netpoll_block_tx; extern atomic_t netpoll_block_tx;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment