This patch removes the call to ndo_vlan_rx_register if the underlying
device doesn't have hardware support for VLAN.
Signed-off-by: Antoine Reversat <redacted>
---
--- linux-2.6.39/net/8021q/vlan.c 2011-05-19 00:06:34.000000000 -0400
+++ linux-2.6.39-fixed/net/8021q/vlan.c 2011-06-16 16:39:25.933742004 -0400
@@ -211,7 +211,7 @@ int register_vlan_dev(struct net_device
grp->nr_vlans++;
if (ngrp) {
- if (ops->ndo_vlan_rx_register)
+ if (ops->ndo_vlan_rx_register && (real_dev->features & NETIF_F_HW_VLAN_RX))
ops->ndo_vlan_rx_register(real_dev, ngrp);
rcu_assign_pointer(real_dev->vlgrp, ngrp);
}