diff options
| -rw-r--r-- | drivers/net/bonding/bond_main.c | 6 | ||||
| -rw-r--r-- | drivers/net/bonding/bond_sysfs.c | 4 | ||||
| -rw-r--r-- | drivers/net/bonding/bonding.h | 14 | 
3 files changed, 14 insertions, 10 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index a3ea44997a2..04119b1e7cd 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -1461,7 +1461,7 @@ static bool bond_should_deliver_exact_match(struct sk_buff *skb,  					    struct slave *slave,  					    struct bonding *bond)  { -	if (slave->dev->priv_flags & IFF_SLAVE_INACTIVE) { +	if (bond_is_slave_inactive(slave)) {  		if (slave_do_arp_validate(bond, slave) &&  		    skb->protocol == __cpu_to_be16(ETH_P_ARP))  			return false; @@ -2122,7 +2122,7 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev)  	dev_set_mtu(slave_dev, slave->original_mtu); -	slave_dev->priv_flags &= ~(IFF_SLAVE_INACTIVE | IFF_BONDING); +	slave_dev->priv_flags &= ~IFF_BONDING;  	kfree(slave); @@ -2233,8 +2233,6 @@ static int bond_release_all(struct net_device *bond_dev)  			dev_set_mac_address(slave_dev, &addr);  		} -		slave_dev->priv_flags &= ~IFF_SLAVE_INACTIVE; -  		kfree(slave);  		/* re-acquire the lock before getting the next slave */ diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c index c81b97cffaa..de87aea6d01 100644 --- a/drivers/net/bonding/bond_sysfs.c +++ b/drivers/net/bonding/bond_sysfs.c @@ -1584,9 +1584,9 @@ static ssize_t bonding_store_slaves_active(struct device *d,  	bond_for_each_slave(bond, slave, i) {  		if (!bond_is_active_slave(slave)) {  			if (new_value) -				slave->dev->priv_flags &= ~IFF_SLAVE_INACTIVE; +				slave->inactive = 0;  			else -				slave->dev->priv_flags |= IFF_SLAVE_INACTIVE; +				slave->inactive = 1;  		}  	}  out: diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h index 63e9cf77938..6b26962fd0e 100644 --- a/drivers/net/bonding/bonding.h +++ b/drivers/net/bonding/bonding.h @@ -192,8 +192,9 @@ struct slave {  	unsigned long last_arp_rx;  	s8     link;    /* one of BOND_LINK_XXXX */  	s8     new_link; -	u8     backup;	/* indicates backup slave. Value corresponds with -			   BOND_STATE_ACTIVE and BOND_STATE_BACKUP */ +	u8     backup:1,   /* indicates backup slave. Value corresponds with +			      BOND_STATE_ACTIVE and BOND_STATE_BACKUP */ +	       inactive:1; /* indicates inactive slave */  	u32    original_mtu;  	u32    link_failure_count;  	u8     perm_hwaddr[ETH_ALEN]; @@ -376,13 +377,18 @@ static inline void bond_set_slave_inactive_flags(struct slave *slave)  	if (!bond_is_lb(bond))  		bond_set_backup_slave(slave);  	if (!bond->params.all_slaves_active) -		slave->dev->priv_flags |= IFF_SLAVE_INACTIVE; +		slave->inactive = 1;  }  static inline void bond_set_slave_active_flags(struct slave *slave)  {  	bond_set_active_slave(slave); -	slave->dev->priv_flags &= ~IFF_SLAVE_INACTIVE; +	slave->inactive = 0; +} + +static inline bool bond_is_slave_inactive(struct slave *slave) +{ +	return slave->inactive;  }  struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr);  |