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

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
...@@ -1458,20 +1458,20 @@ static void bond_setup_by_slave(struct net_device *bond_dev, ...@@ -1458,20 +1458,20 @@ static void bond_setup_by_slave(struct net_device *bond_dev,
* ARP on active-backup slaves with arp_validate enabled. * ARP on active-backup slaves with arp_validate enabled.
*/ */
static bool bond_should_deliver_exact_match(struct sk_buff *skb, static bool bond_should_deliver_exact_match(struct sk_buff *skb,
struct net_device *slave_dev, struct slave *slave,
struct net_device *bond_dev) struct bonding *bond)
{ {
if (slave_dev->priv_flags & IFF_SLAVE_INACTIVE) { if (slave->dev->priv_flags & IFF_SLAVE_INACTIVE) {
if (slave_dev->priv_flags & IFF_SLAVE_NEEDARP && if (slave_do_arp_validate(bond, slave) &&
skb->protocol == __cpu_to_be16(ETH_P_ARP)) skb->protocol == __cpu_to_be16(ETH_P_ARP))
return false; 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_BROADCAST &&
skb->pkt_type != PACKET_MULTICAST) skb->pkt_type != PACKET_MULTICAST)
return false; 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)) skb->protocol == __cpu_to_be16(ETH_P_SLOW))
return false; return false;
...@@ -1484,6 +1484,7 @@ static struct sk_buff *bond_handle_frame(struct sk_buff *skb) ...@@ -1484,6 +1484,7 @@ static struct sk_buff *bond_handle_frame(struct sk_buff *skb)
{ {
struct slave *slave; struct slave *slave;
struct net_device *bond_dev; struct net_device *bond_dev;
struct bonding *bond;
skb = skb_share_check(skb, GFP_ATOMIC); skb = skb_share_check(skb, GFP_ATOMIC);
if (unlikely(!skb)) if (unlikely(!skb))
...@@ -1494,17 +1495,19 @@ static struct sk_buff *bond_handle_frame(struct sk_buff *skb) ...@@ -1494,17 +1495,19 @@ static struct sk_buff *bond_handle_frame(struct sk_buff *skb)
if (unlikely(!bond_dev)) if (unlikely(!bond_dev))
return skb; 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; 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; skb->deliver_no_wcard = 1;
return skb; return skb;
} }
skb->dev = bond_dev; 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 && bond_dev->priv_flags & IFF_BRIDGE_PORT &&
skb->pkt_type == PACKET_HOST) { skb->pkt_type == PACKET_HOST) {
...@@ -2119,9 +2122,7 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev) ...@@ -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); dev_set_mtu(slave_dev, slave->original_mtu);
slave_dev->priv_flags &= ~(IFF_MASTER_8023AD | IFF_MASTER_ALB | slave_dev->priv_flags &= ~(IFF_SLAVE_INACTIVE | IFF_BONDING);
IFF_SLAVE_INACTIVE | IFF_BONDING |
IFF_SLAVE_NEEDARP);
kfree(slave); kfree(slave);
...@@ -2232,8 +2233,7 @@ static int bond_release_all(struct net_device *bond_dev) ...@@ -2232,8 +2233,7 @@ static int bond_release_all(struct net_device *bond_dev)
dev_set_mac_address(slave_dev, &addr); dev_set_mac_address(slave_dev, &addr);
} }
slave_dev->priv_flags &= ~(IFF_MASTER_8023AD | IFF_MASTER_ALB | slave_dev->priv_flags &= ~IFF_SLAVE_INACTIVE;
IFF_SLAVE_INACTIVE);
kfree(slave); kfree(slave);
...@@ -4419,11 +4419,9 @@ void bond_set_mode_ops(struct bonding *bond, int mode) ...@@ -4419,11 +4419,9 @@ void bond_set_mode_ops(struct bonding *bond, int mode)
case BOND_MODE_BROADCAST: case BOND_MODE_BROADCAST:
break; break;
case BOND_MODE_8023AD: case BOND_MODE_8023AD:
bond_set_master_3ad_flags(bond);
bond_set_xmit_hash_policy(bond); bond_set_xmit_hash_policy(bond);
break; break;
case BOND_MODE_ALB: case BOND_MODE_ALB:
bond_set_master_alb_flags(bond);
/* FALLTHRU */ /* FALLTHRU */
case BOND_MODE_TLB: case BOND_MODE_TLB:
break; break;
...@@ -4514,9 +4512,6 @@ static void bond_setup(struct net_device *bond_dev) ...@@ -4514,9 +4512,6 @@ static void bond_setup(struct net_device *bond_dev)
bond_dev->priv_flags |= IFF_BONDING; bond_dev->priv_flags |= IFF_BONDING;
bond_dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; 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 /* At first, we block adding VLANs. That's the only way to
* prevent problems that occur when adding VLANs over an * prevent problems that occur when adding VLANs over an
* empty bond. The block will be removed once non-challenged * empty bond. The block will be removed once non-challenged
......
...@@ -325,11 +325,6 @@ static ssize_t bonding_store_mode(struct device *d, ...@@ -325,11 +325,6 @@ static ssize_t bonding_store_mode(struct device *d,
ret = -EINVAL; ret = -EINVAL;
goto out; 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->params.mode = new_value;
bond_set_mode_ops(bond, bond->params.mode); bond_set_mode_ops(bond, bond->params.mode);
...@@ -530,8 +525,6 @@ static ssize_t bonding_store_arp_interval(struct device *d, ...@@ -530,8 +525,6 @@ static ssize_t bonding_store_arp_interval(struct device *d,
pr_info("%s: Setting ARP monitoring interval to %d.\n", pr_info("%s: Setting ARP monitoring interval to %d.\n",
bond->dev->name, new_value); bond->dev->name, new_value);
bond->params.arp_interval = new_value; bond->params.arp_interval = new_value;
if (bond->params.arp_interval)
bond->dev->priv_flags |= IFF_MASTER_ARPMON;
if (bond->params.miimon) { if (bond->params.miimon) {
pr_info("%s: ARP monitoring cannot be used with MII monitoring. %s Disabling MII monitoring.\n", pr_info("%s: ARP monitoring cannot be used with MII monitoring. %s Disabling MII monitoring.\n",
bond->dev->name, bond->dev->name); bond->dev->name, bond->dev->name);
...@@ -1007,7 +1000,6 @@ static ssize_t bonding_store_miimon(struct device *d, ...@@ -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", pr_info("%s: MII monitoring cannot be used with ARP monitoring. Disabling ARP monitoring...\n",
bond->dev->name); bond->dev->name);
bond->params.arp_interval = 0; bond->params.arp_interval = 0;
bond->dev->priv_flags &= ~IFF_MASTER_ARPMON;
if (bond->params.arp_validate) { if (bond->params.arp_validate) {
bond_unregister_arp(bond); bond_unregister_arp(bond);
bond->params.arp_validate = bond->params.arp_validate =
......
...@@ -356,34 +356,12 @@ static inline void bond_set_slave_inactive_flags(struct slave *slave) ...@@ -356,34 +356,12 @@ static inline void bond_set_slave_inactive_flags(struct slave *slave)
slave->state = BOND_STATE_BACKUP; slave->state = BOND_STATE_BACKUP;
if (!bond->params.all_slaves_active) if (!bond->params.all_slaves_active)
slave->dev->priv_flags |= IFF_SLAVE_INACTIVE; 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) static inline void bond_set_slave_active_flags(struct slave *slave)
{ {
slave->state = BOND_STATE_ACTIVE; slave->state = BOND_STATE_ACTIVE;
slave->dev->priv_flags &= ~(IFF_SLAVE_INACTIVE | IFF_SLAVE_NEEDARP); slave->dev->priv_flags &= ~IFF_SLAVE_INACTIVE;
}
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;
} }
struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr); struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr);
......
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