aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-10-01 17:06:14 -0400
committerDavid S. Miller <davem@davemloft.net>2013-10-01 17:06:14 -0400
commit4fbef95af4e62d4aada6c1728e04d3b1c828abe0 (patch)
tree19cb25e39583119c98dee7114aada6a3b57d18a9 /drivers/net/bonding
parent5229432f15e6f1b1e34e519e51d07917dee8790e (diff)
parentc31eeaced22ce8bd61268a3c595d542bb38c0a4f (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/emulex/benet/be.h drivers/net/usb/qmi_wwan.c drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h include/net/netfilter/nf_conntrack_synproxy.h include/net/secure_seq.h The conflicts are of two varieties: 1) Conflicts with Joe Perches's 'extern' removal from header file function declarations. Usually it's an argument signature change or a function being added/removed. The resolutions are trivial. 2) Some overlapping changes in qmi_wwan.c and be.h, one commit adds a new value, another changes an existing value. That sort of thing. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding')
-rw-r--r--drivers/net/bonding/bond_main.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 894a7f34f88e..fe8a94f9d7db 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1710,6 +1710,7 @@ static int __bond_release_one(struct net_device *bond_dev,
1710 struct bonding *bond = netdev_priv(bond_dev); 1710 struct bonding *bond = netdev_priv(bond_dev);
1711 struct slave *slave, *oldcurrent; 1711 struct slave *slave, *oldcurrent;
1712 struct sockaddr addr; 1712 struct sockaddr addr;
1713 int old_flags = bond_dev->flags;
1713 netdev_features_t old_features = bond_dev->features; 1714 netdev_features_t old_features = bond_dev->features;
1714 1715
1715 /* slave is not a slave or master is not master of this slave */ 1716 /* slave is not a slave or master is not master of this slave */
@@ -1841,12 +1842,18 @@ static int __bond_release_one(struct net_device *bond_dev,
1841 * bond_change_active_slave(..., NULL) 1842 * bond_change_active_slave(..., NULL)
1842 */ 1843 */
1843 if (!USES_PRIMARY(bond->params.mode)) { 1844 if (!USES_PRIMARY(bond->params.mode)) {
1844 /* unset promiscuity level from slave */ 1845 /* unset promiscuity level from slave
1845 if (bond_dev->flags & IFF_PROMISC) 1846 * NOTE: The NETDEV_CHANGEADDR call above may change the value
1847 * of the IFF_PROMISC flag in the bond_dev, but we need the
1848 * value of that flag before that change, as that was the value
1849 * when this slave was attached, so we cache at the start of the
1850 * function and use it here. Same goes for ALLMULTI below
1851 */
1852 if (old_flags & IFF_PROMISC)
1846 dev_set_promiscuity(slave_dev, -1); 1853 dev_set_promiscuity(slave_dev, -1);
1847 1854
1848 /* unset allmulti level from slave */ 1855 /* unset allmulti level from slave */
1849 if (bond_dev->flags & IFF_ALLMULTI) 1856 if (old_flags & IFF_ALLMULTI)
1850 dev_set_allmulti(slave_dev, -1); 1857 dev_set_allmulti(slave_dev, -1);
1851 1858
1852 bond_hw_addr_flush(bond_dev, slave_dev); 1859 bond_hw_addr_flush(bond_dev, slave_dev);