bnx2: disable toggling of rxvlan if necessary
The bnx2 driver uses .ndo_fix_features to force enable of Rx VLAN tag stripping when the card cannot disable it. The driver should remove NETIF_F_HW_VLAN_CTAG_RX flag from hw_features instead so it is fixed for the ethtool. Cc: Sony Chacko <sony.chacko@qlogic.com> Cc: Dept-HSGLinuxNICDev@qlogic.com Signed-off-by: Ivan Vecera <ivecera@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ea373041bd
commit
26caa3469a
|
@ -7708,17 +7708,6 @@ bnx2_set_phys_id(struct net_device *dev, enum ethtool_phys_id_state state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static netdev_features_t
|
||||
bnx2_fix_features(struct net_device *dev, netdev_features_t features)
|
||||
{
|
||||
struct bnx2 *bp = netdev_priv(dev);
|
||||
|
||||
if (!(bp->flags & BNX2_FLAG_CAN_KEEP_VLAN))
|
||||
features |= NETIF_F_HW_VLAN_CTAG_RX;
|
||||
|
||||
return features;
|
||||
}
|
||||
|
||||
static int
|
||||
bnx2_set_features(struct net_device *dev, netdev_features_t features)
|
||||
{
|
||||
|
@ -8525,7 +8514,6 @@ static const struct net_device_ops bnx2_netdev_ops = {
|
|||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = bnx2_change_mac_addr,
|
||||
.ndo_change_mtu = bnx2_change_mtu,
|
||||
.ndo_fix_features = bnx2_fix_features,
|
||||
.ndo_set_features = bnx2_set_features,
|
||||
.ndo_tx_timeout = bnx2_tx_timeout,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
|
@ -8576,6 +8564,9 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
dev->features |= dev->hw_features;
|
||||
dev->priv_flags |= IFF_UNICAST_FLT;
|
||||
|
||||
if (!(bp->flags & BNX2_FLAG_CAN_KEEP_VLAN))
|
||||
dev->hw_features &= ~NETIF_F_HW_VLAN_CTAG_RX;
|
||||
|
||||
if ((rc = register_netdev(dev))) {
|
||||
dev_err(&pdev->dev, "Cannot register net device\n");
|
||||
goto error;
|
||||
|
|
Loading…
Reference in New Issue