Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0bd80dad authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller
Browse files

net: get rid of multiple bond-related netdevice->priv_flags



Now when bond-related code is moved from net/core/dev.c into bonding
code, multiple priv_flags are not needed anymore. So let them rot.

Signed-off-by: default avatarJiri Pirko <jpirko@redhat.com>
Reviewed-by: default avatarNicolas de Pesloüan <nicolas.2p.debian@free.fr>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f1c1775a
Loading
Loading
Loading
Loading
+14 −19
Original line number Diff line number Diff line
@@ -1458,20 +1458,20 @@ static void bond_setup_by_slave(struct net_device *bond_dev,
 * ARP on active-backup slaves with arp_validate enabled.
 */
static bool bond_should_deliver_exact_match(struct sk_buff *skb,
					    struct net_device *slave_dev,
					    struct net_device *bond_dev)
					    struct slave *slave,
					    struct bonding *bond)
{
	if (slave_dev->priv_flags & IFF_SLAVE_INACTIVE) {
		if (slave_dev->priv_flags & IFF_SLAVE_NEEDARP &&
	if (slave->dev->priv_flags & IFF_SLAVE_INACTIVE) {
		if (slave_do_arp_validate(bond, slave) &&
		    skb->protocol == __cpu_to_be16(ETH_P_ARP))
			return false;

		if (bond_dev->priv_flags & IFF_MASTER_ALB &&
		if (bond->params.mode == BOND_MODE_ALB &&
		    skb->pkt_type != PACKET_BROADCAST &&
		    skb->pkt_type != PACKET_MULTICAST)
				return false;

		if (bond_dev->priv_flags & IFF_MASTER_8023AD &&
		if (bond->params.mode == BOND_MODE_8023AD &&
		    skb->protocol == __cpu_to_be16(ETH_P_SLOW))
			return false;

@@ -1484,6 +1484,7 @@ static struct sk_buff *bond_handle_frame(struct sk_buff *skb)
{
	struct slave *slave;
	struct net_device *bond_dev;
	struct bonding *bond;

	skb = skb_share_check(skb, GFP_ATOMIC);
	if (unlikely(!skb))
@@ -1494,17 +1495,19 @@ static struct sk_buff *bond_handle_frame(struct sk_buff *skb)
	if (unlikely(!bond_dev))
		return skb;

	if (bond_dev->priv_flags & IFF_MASTER_ARPMON)
	bond = netdev_priv(bond_dev);

	if (bond->params.arp_interval)
		slave->dev->last_rx = jiffies;

	if (bond_should_deliver_exact_match(skb, slave->dev, bond_dev)) {
	if (bond_should_deliver_exact_match(skb, slave, bond)) {
		skb->deliver_no_wcard = 1;
		return skb;
	}

	skb->dev = bond_dev;

	if (bond_dev->priv_flags & IFF_MASTER_ALB &&
	if (bond->params.mode == BOND_MODE_ALB &&
	    bond_dev->priv_flags & IFF_BRIDGE_PORT &&
	    skb->pkt_type == PACKET_HOST) {

@@ -2119,9 +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_MASTER_8023AD | IFF_MASTER_ALB |
				   IFF_SLAVE_INACTIVE | IFF_BONDING |
				   IFF_SLAVE_NEEDARP);
	slave_dev->priv_flags &= ~(IFF_SLAVE_INACTIVE | IFF_BONDING);

	kfree(slave);

@@ -2232,8 +2233,7 @@ static int bond_release_all(struct net_device *bond_dev)
			dev_set_mac_address(slave_dev, &addr);
		}

		slave_dev->priv_flags &= ~(IFF_MASTER_8023AD | IFF_MASTER_ALB |
					   IFF_SLAVE_INACTIVE);
		slave_dev->priv_flags &= ~IFF_SLAVE_INACTIVE;

		kfree(slave);

@@ -4419,11 +4419,9 @@ void bond_set_mode_ops(struct bonding *bond, int mode)
	case BOND_MODE_BROADCAST:
		break;
	case BOND_MODE_8023AD:
		bond_set_master_3ad_flags(bond);
		bond_set_xmit_hash_policy(bond);
		break;
	case BOND_MODE_ALB:
		bond_set_master_alb_flags(bond);
		/* FALLTHRU */
	case BOND_MODE_TLB:
		break;
@@ -4514,9 +4512,6 @@ static void bond_setup(struct net_device *bond_dev)
	bond_dev->priv_flags |= IFF_BONDING;
	bond_dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;

	if (bond->params.arp_interval)
		bond_dev->priv_flags |= IFF_MASTER_ARPMON;

	/* At first, we block adding VLANs. That's the only way to
	 * prevent problems that occur when adding VLANs over an
	 * empty bond. The block will be removed once non-challenged
+0 −8
Original line number Diff line number Diff line
@@ -325,11 +325,6 @@ static ssize_t bonding_store_mode(struct device *d,
		ret = -EINVAL;
		goto out;
	}
	if (bond->params.mode == BOND_MODE_8023AD)
		bond_unset_master_3ad_flags(bond);

	if (bond->params.mode == BOND_MODE_ALB)
		bond_unset_master_alb_flags(bond);

	bond->params.mode = new_value;
	bond_set_mode_ops(bond, bond->params.mode);
@@ -530,8 +525,6 @@ static ssize_t bonding_store_arp_interval(struct device *d,
	pr_info("%s: Setting ARP monitoring interval to %d.\n",
		bond->dev->name, new_value);
	bond->params.arp_interval = new_value;
	if (bond->params.arp_interval)
		bond->dev->priv_flags |= IFF_MASTER_ARPMON;
	if (bond->params.miimon) {
		pr_info("%s: ARP monitoring cannot be used with MII monitoring. %s Disabling MII monitoring.\n",
			bond->dev->name, bond->dev->name);
@@ -1007,7 +1000,6 @@ static ssize_t bonding_store_miimon(struct device *d,
			pr_info("%s: MII monitoring cannot be used with ARP monitoring. Disabling ARP monitoring...\n",
				bond->dev->name);
			bond->params.arp_interval = 0;
			bond->dev->priv_flags &= ~IFF_MASTER_ARPMON;
			if (bond->params.arp_validate) {
				bond_unregister_arp(bond);
				bond->params.arp_validate =
+1 −23
Original line number Diff line number Diff line
@@ -356,34 +356,12 @@ static inline void bond_set_slave_inactive_flags(struct slave *slave)
		slave->state = BOND_STATE_BACKUP;
	if (!bond->params.all_slaves_active)
		slave->dev->priv_flags |= IFF_SLAVE_INACTIVE;
	if (slave_do_arp_validate(bond, slave))
		slave->dev->priv_flags |= IFF_SLAVE_NEEDARP;
}

static inline void bond_set_slave_active_flags(struct slave *slave)
{
	slave->state = BOND_STATE_ACTIVE;
	slave->dev->priv_flags &= ~(IFF_SLAVE_INACTIVE | IFF_SLAVE_NEEDARP);
}

static inline void bond_set_master_3ad_flags(struct bonding *bond)
{
	bond->dev->priv_flags |= IFF_MASTER_8023AD;
}

static inline void bond_unset_master_3ad_flags(struct bonding *bond)
{
	bond->dev->priv_flags &= ~IFF_MASTER_8023AD;
}

static inline void bond_set_master_alb_flags(struct bonding *bond)
{
	bond->dev->priv_flags |= IFF_MASTER_ALB;
}

static inline void bond_unset_master_alb_flags(struct bonding *bond)
{
	bond->dev->priv_flags &= ~IFF_MASTER_ALB;
	slave->dev->priv_flags &= ~IFF_SLAVE_INACTIVE;
}

struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr);