On Wed, 15 Jun 2011 17:08:18 -0400
Antoine Reversat [off-list ref] wrote:
On Wed, Jun 15, 2011 at 4:53 PM, Stephen Hemminger
[off-list ref] wrote:
quoted
This shouldn't be necessary. rx_register should not be called
unless NETIF_F_HW_VLAN_RX is set; and device should not be setting
NETIF_F_HW_VLAN_RX unless DEV_HAS_VLAN is set.
I can confirm that rx_register gets called on hardware that doesn't
have vlan support (namely MCP79).
From what I can see in vlan.c (in register_vlan_dev) there is no check
on the features of the device before calling the register function :
if (ngrp) {
if (ops->ndo_vlan_rx_register)
ops->ndo_vlan_rx_register(real_dev, ngrp);
rcu_assign_pointer(real_dev->vlgrp, ngrp);
}
If the function exists, it's called. Should I send a patch to call the
function only if the hardware supports it ?
quoted
The real problem is vlan_dev.c, and applies to all devices.
That is was suggesting because other drivers may have the same issue
where they need to define rx_register for some hardware and control
usage of vlan by the feature bits.