bonding: remove bond_ioctl_change_active()
no longer needed since bond_option_active_slave_set() can be used instead. Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d9e32b21cb
commit
080a06e1a9
|
@ -1910,61 +1910,6 @@ static int bond_release_and_destroy(struct net_device *bond_dev,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function changes the active slave to slave <slave_dev>.
|
||||
* It returns -EINVAL in the following cases.
|
||||
* - <slave_dev> is not found in the list.
|
||||
* - There is not active slave now.
|
||||
* - <slave_dev> is already active.
|
||||
* - The link state of <slave_dev> is not BOND_LINK_UP.
|
||||
* - <slave_dev> is not running.
|
||||
* In these cases, this function does nothing.
|
||||
* In the other cases, current_slave pointer is changed and 0 is returned.
|
||||
*/
|
||||
static int bond_ioctl_change_active(struct net_device *bond_dev, struct net_device *slave_dev)
|
||||
{
|
||||
struct bonding *bond = netdev_priv(bond_dev);
|
||||
struct slave *old_active = NULL;
|
||||
struct slave *new_active = NULL;
|
||||
int res = 0;
|
||||
|
||||
if (!USES_PRIMARY(bond->params.mode))
|
||||
return -EINVAL;
|
||||
|
||||
/* Verify that bond_dev is indeed the master of slave_dev */
|
||||
if (!(slave_dev->flags & IFF_SLAVE) ||
|
||||
!netdev_has_upper_dev(slave_dev, bond_dev))
|
||||
return -EINVAL;
|
||||
|
||||
read_lock(&bond->lock);
|
||||
|
||||
old_active = bond->curr_active_slave;
|
||||
new_active = bond_get_slave_by_dev(bond, slave_dev);
|
||||
/*
|
||||
* Changing to the current active: do nothing; return success.
|
||||
*/
|
||||
if (new_active && new_active == old_active) {
|
||||
read_unlock(&bond->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (new_active &&
|
||||
old_active &&
|
||||
new_active->link == BOND_LINK_UP &&
|
||||
IS_UP(new_active->dev)) {
|
||||
block_netpoll_tx();
|
||||
write_lock_bh(&bond->curr_slave_lock);
|
||||
bond_change_active_slave(bond, new_active);
|
||||
write_unlock_bh(&bond->curr_slave_lock);
|
||||
unblock_netpoll_tx();
|
||||
} else
|
||||
res = -EINVAL;
|
||||
|
||||
read_unlock(&bond->lock);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int bond_info_query(struct net_device *bond_dev, struct ifbond *info)
|
||||
{
|
||||
struct bonding *bond = netdev_priv(bond_dev);
|
||||
|
@ -3257,6 +3202,7 @@ static struct rtnl_link_stats64 *bond_get_stats(struct net_device *bond_dev,
|
|||
|
||||
static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
struct bonding *bond = netdev_priv(bond_dev);
|
||||
struct net_device *slave_dev = NULL;
|
||||
struct ifbond k_binfo;
|
||||
struct ifbond __user *u_binfo = NULL;
|
||||
|
@ -3287,7 +3233,6 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
|
|||
|
||||
|
||||
if (mii->reg_num == 1) {
|
||||
struct bonding *bond = netdev_priv(bond_dev);
|
||||
mii->val_out = 0;
|
||||
read_lock(&bond->lock);
|
||||
read_lock(&bond->curr_slave_lock);
|
||||
|
@ -3359,7 +3304,7 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
|
|||
break;
|
||||
case BOND_CHANGE_ACTIVE_OLD:
|
||||
case SIOCBONDCHANGEACTIVE:
|
||||
res = bond_ioctl_change_active(bond_dev, slave_dev);
|
||||
res = bond_option_active_slave_set(bond, slave_dev);
|
||||
break;
|
||||
default:
|
||||
res = -EOPNOTSUPP;
|
||||
|
|
Loading…
Reference in New Issue