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

Commit 1765a575 authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller
Browse files

net: make dev->master general



dev->master is now tightly connected to bonding driver. This patch makes
this pointer more general and ready to be used by others.

 - netdev_set_master() - bond specifics moved to new function
   netdev_set_bond_master()
 - introduced netif_is_bond_slave() to check if device is a bonding slave

Signed-off-by: default avatarJiri Pirko <jpirko@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d59cfde2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -153,7 +153,8 @@ static int nes_inetaddr_event(struct notifier_block *notifier,
				nesdev, nesdev->netdev[0]->name);
		netdev = nesdev->netdev[0];
		nesvnic = netdev_priv(netdev);
		is_bonded = (netdev->master == event_netdev);
		is_bonded = netif_is_bond_slave(netdev) &&
			    (netdev->master == event_netdev);
		if ((netdev == event_netdev) || is_bonded) {
			if (nesvnic->rdma_enabled == 0) {
				nes_debug(NES_DBG_NETDEV, "Returning without processing event for %s since"
+1 −1
Original line number Diff line number Diff line
@@ -1118,7 +1118,7 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi
		return rc;
	}

	if (nesvnic->netdev->master)
	if (netif_is_bond_slave(netdev))
		netdev = nesvnic->netdev->master;
	else
		netdev = nesvnic->netdev;
+5 −5
Original line number Diff line number Diff line
@@ -1594,9 +1594,9 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
		}
	}

	res = netdev_set_master(slave_dev, bond_dev);
	res = netdev_set_bond_master(slave_dev, bond_dev);
	if (res) {
		pr_debug("Error %d calling netdev_set_master\n", res);
		pr_debug("Error %d calling netdev_set_bond_master\n", res);
		goto err_restore_mac;
	}
	/* open the slave since the application closed it */
@@ -1812,7 +1812,7 @@ err_close:
	dev_close(slave_dev);

err_unset_master:
	netdev_set_master(slave_dev, NULL);
	netdev_set_bond_master(slave_dev, NULL);

err_restore_mac:
	if (!bond->params.fail_over_mac) {
@@ -1992,7 +1992,7 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev)
		netif_addr_unlock_bh(bond_dev);
	}

	netdev_set_master(slave_dev, NULL);
	netdev_set_bond_master(slave_dev, NULL);

#ifdef CONFIG_NET_POLL_CONTROLLER
	read_lock_bh(&bond->lock);
@@ -2114,7 +2114,7 @@ static int bond_release_all(struct net_device *bond_dev)
			netif_addr_unlock_bh(bond_dev);
		}

		netdev_set_master(slave_dev, NULL);
		netdev_set_bond_master(slave_dev, NULL);

		/* close slave before restoring its mac address */
		dev_close(slave_dev);
+2 −1
Original line number Diff line number Diff line
@@ -186,9 +186,10 @@ static struct net_device *get_iff_from_mac(struct adapter *adapter,
				dev = NULL;
				if (grp)
					dev = vlan_group_get_device(grp, vlan);
			} else
			} else if (netif_is_bond_slave(dev)) {
				while (dev->master)
					dev = dev->master;
			}
			return dev;
		}
	}
+7 −0
Original line number Diff line number Diff line
@@ -2377,6 +2377,8 @@ extern int netdev_max_backlog;
extern int		netdev_tstamp_prequeue;
extern int		weight_p;
extern int		netdev_set_master(struct net_device *dev, struct net_device *master);
extern int netdev_set_bond_master(struct net_device *dev,
				  struct net_device *master);
extern int skb_checksum_help(struct sk_buff *skb);
extern struct sk_buff *skb_gso_segment(struct sk_buff *skb, u32 features);
#ifdef CONFIG_BUG
@@ -2437,6 +2439,11 @@ static inline void netif_set_gso_max_size(struct net_device *dev,
	dev->gso_max_size = size;
}

static inline int netif_is_bond_slave(struct net_device *dev)
{
	return dev->flags & IFF_SLAVE && dev->priv_flags & IFF_BONDING;
}

extern struct pernet_operations __net_initdata loopback_net_ops;

static inline int dev_ethtool_get_settings(struct net_device *dev,
Loading