diff options
author | Michal Kubeček <mkubecek@suse.cz> | 2014-05-20 08:29:35 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-05-22 15:07:23 -0400 |
commit | a9b3ace44c7d4eb021a78a4d2e6bb812c34f086f (patch) | |
tree | 242b31e68c1133f9b5e1eabecdc4d856a083b27f | |
parent | da08143b85203b581f4a6461b149186b0e9592df (diff) | |
download | blackbird-op-linux-a9b3ace44c7d4eb021a78a4d2e6bb812c34f086f.tar.gz blackbird-op-linux-a9b3ace44c7d4eb021a78a4d2e6bb812c34f086f.zip |
bonding: fix vlan_features computing
bond_compute_features() uses netdev_increment_features() to
combine vlan_features of slaves into vlan_features of the bond.
As netdev_increment_features() only adds most features and we
start with BOND_VLAN_FEATURES, we can end up with features none
of the slaves provided.
If there is at least one slave, initialize vlan_features only
with the flags in NETIF_F_ALL_FOR_ALL. Right now there is none
in BOND_VLAN_FEATURES but stating it explicitely will make the
code more future proof.
Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/bonding/bond_main.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 712320532105..9071139d2871 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -1038,6 +1038,7 @@ static void bond_compute_features(struct bonding *bond) if (!bond_has_slaves(bond)) goto done; + vlan_features &= NETIF_F_ALL_FOR_ALL; bond_for_each_slave(bond, slave, iter) { vlan_features = netdev_increment_features(vlan_features, |