aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/broadcom/bnx2.c
diff options
context:
space:
mode:
authorIvan Vecera <ivecera@redhat.com>2015-02-26 08:48:07 -0500
committerDavid S. Miller <davem@davemloft.net>2015-03-01 23:25:51 -0500
commit26caa3469a2de617d95c29371571a9585603a023 (patch)
tree7cba05cc5db78e1d90fcf2820d0ff77d4155fb9b /drivers/net/ethernet/broadcom/bnx2.c
parentea373041bdfa0e580f09a9fbe6633cba62439430 (diff)
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>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2.c')
-rw-r--r--drivers/net/ethernet/broadcom/bnx2.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index 9f146b990c01..2b66ef3d8217 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -7708,17 +7708,6 @@ bnx2_set_phys_id(struct net_device *dev, enum ethtool_phys_id_state state)
7708 return 0; 7708 return 0;
7709} 7709}
7710 7710
7711static netdev_features_t
7712bnx2_fix_features(struct net_device *dev, netdev_features_t features)
7713{
7714 struct bnx2 *bp = netdev_priv(dev);
7715
7716 if (!(bp->flags & BNX2_FLAG_CAN_KEEP_VLAN))
7717 features |= NETIF_F_HW_VLAN_CTAG_RX;
7718
7719 return features;
7720}
7721
7722static int 7711static int
7723bnx2_set_features(struct net_device *dev, netdev_features_t features) 7712bnx2_set_features(struct net_device *dev, netdev_features_t features)
7724{ 7713{
@@ -8525,7 +8514,6 @@ static const struct net_device_ops bnx2_netdev_ops = {
8525 .ndo_validate_addr = eth_validate_addr, 8514 .ndo_validate_addr = eth_validate_addr,
8526 .ndo_set_mac_address = bnx2_change_mac_addr, 8515 .ndo_set_mac_address = bnx2_change_mac_addr,
8527 .ndo_change_mtu = bnx2_change_mtu, 8516 .ndo_change_mtu = bnx2_change_mtu,
8528 .ndo_fix_features = bnx2_fix_features,
8529 .ndo_set_features = bnx2_set_features, 8517 .ndo_set_features = bnx2_set_features,
8530 .ndo_tx_timeout = bnx2_tx_timeout, 8518 .ndo_tx_timeout = bnx2_tx_timeout,
8531#ifdef CONFIG_NET_POLL_CONTROLLER 8519#ifdef CONFIG_NET_POLL_CONTROLLER
@@ -8576,6 +8564,9 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
8576 dev->features |= dev->hw_features; 8564 dev->features |= dev->hw_features;
8577 dev->priv_flags |= IFF_UNICAST_FLT; 8565 dev->priv_flags |= IFF_UNICAST_FLT;
8578 8566
8567 if (!(bp->flags & BNX2_FLAG_CAN_KEEP_VLAN))
8568 dev->hw_features &= ~NETIF_F_HW_VLAN_CTAG_RX;
8569
8579 if ((rc = register_netdev(dev))) { 8570 if ((rc = register_netdev(dev))) {
8580 dev_err(&pdev->dev, "Cannot register net device\n"); 8571 dev_err(&pdev->dev, "Cannot register net device\n");
8581 goto error; 8572 goto error;