|
@@ -205,7 +205,7 @@ int register_vlan_dev(struct net_device *dev)
|
|
grp->nr_vlans++;
|
|
grp->nr_vlans++;
|
|
|
|
|
|
if (ngrp) {
|
|
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);
|
|
ops->ndo_vlan_rx_register(real_dev, ngrp);
|
|
rcu_assign_pointer(real_dev->vlgrp, ngrp);
|
|
rcu_assign_pointer(real_dev->vlgrp, ngrp);
|
|
}
|
|
}
|