summaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bond_main.c
diff options
context:
space:
mode:
authorMichal Kubeček2014-05-20 08:29:35 +0200
committerDavid S. Miller2014-05-22 21:07:23 +0200
commita9b3ace44c7d4eb021a78a4d2e6bb812c34f086f (patch)
tree242b31e68c1133f9b5e1eabecdc4d856a083b27f /drivers/net/bonding/bond_main.c
parentvlan: more careful checksum features handling (diff)
downloadkernel-qcow2-linux-a9b3ace44c7d4eb021a78a4d2e6bb812c34f086f.tar.gz
kernel-qcow2-linux-a9b3ace44c7d4eb021a78a4d2e6bb812c34f086f.tar.xz
kernel-qcow2-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>
Diffstat (limited to 'drivers/net/bonding/bond_main.c')
-rw-r--r--drivers/net/bonding/bond_main.c1
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,