In vlan_uses_dev() check for number of vlan devs rather than existence
of vlan_info. The reason is that vlan id 0 is there without appropriate
vlan dev on it by default which prevented from enslaving vlan challenged
dev.
Reported-by: Jon Stanley <redacted>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
---
drivers/net/bonding/bond_main.c | 2 +-
net/8021q/vlan_core.c | 9 ++++++++-
2 files changed, 9 insertions(+), 2 deletions(-)
@@ -1519,7 +1519,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)/* no need to lock since we're protected by rtnl_lock */if(slave_dev->features&NETIF_F_VLAN_CHALLENGED){pr_debug("%s: NETIF_F_VLAN_CHALLENGED\n",slave_dev->name);-if(bond_vlan_used(bond)){+if(vlan_uses_dev(bond_dev)){pr_err("%s: Error: cannot enslave VLAN challenged slave %s on VLAN enabled bond %s\n",bond_dev->name,slave_dev->name,bond_dev->name);return-EPERM;
From: Jon Stanley <hidden> Date: 2012-10-15 14:53:31
On Sun, Oct 14, 2012 at 10:30 AM, Jiri Pirko [off-list ref] wrote:
In vlan_uses_dev() check for number of vlan devs rather than existence
of vlan_info. The reason is that vlan id 0 is there without appropriate
vlan dev on it by default which prevented from enslaving vlan challenged
dev.
Thanks for the patch!
However, I'm now running into a new issue. Note that I've backported
this to an older kernel (3.3.2, eww), but I don't *think* that matters
for this. Now I'm getting a "refused to change device type" which
looks like it comes from around here:
res = netdev_bonding_change(bond_dev,
NETDEV_PRE_TYPE_CHANGE);
res = notifier_to_errno(res);
if (res) {
pr_err("%s: refused to change device type\n",
bond_dev->name);
I'm not quite smart enough to figure out what's going on here. FWIW,
looking back in history it looks like the only relevant change from
here to mainline is the replacement of netdev_bonding_change() with
direct calls to call_netdevice_notifiers().
Again, .let me know if more info is needed, and thanks for the quick response!
Mon, Oct 15, 2012 at 10:38:44PM CEST, jstanley@rmrf.net wrote:
On Mon, Oct 15, 2012 at 10:53 AM, Jon Stanley [off-list ref] wrote:
quoted
However, I'm now running into a new issue. Note that I've backported
this to an older kernel (3.3.2, eww)
My bad, I tried this on mainline and it works fine. Any pointers on
what needs to get backported into 3.3 before I go pulling my hair out
over it? :)
I can't think about anything atm. Happy hair pulling :)
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
In vlan_uses_dev() check for number of vlan devs rather than existence
of vlan_info. The reason is that vlan id 0 is there without appropriate
vlan dev on it by default which prevented from enslaving vlan challenged
dev.
Reported-by: Jon Stanley <redacted>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>