diff options
author | Michael Chan <mchan@broadcom.com> | 2006-01-23 16:06:06 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-01-23 16:06:06 -0800 |
commit | e29054f92d7d575631691865c1b95bee5bc974cc (patch) | |
tree | 91b98019ebdae5697ab4ebdec626c8201497c7c7 | |
parent | 3ee68c4af3fd7228c1be63254b9f884614f9ebb2 (diff) | |
download | linux-e29054f92d7d575631691865c1b95bee5bc974cc.tar.gz linux-e29054f92d7d575631691865c1b95bee5bc974cc.tar.bz2 linux-e29054f92d7d575631691865c1b95bee5bc974cc.zip |
[BNX2]: Fix VLAN on ASF
Always set up the device to strip incoming VLAN tags when ASF is
enabled. ASF firmware will not parse packets correctly if VLAN tags
are not stripped.
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/bnx2.c | 10 | ||||
-rw-r--r-- | drivers/net/bnx2.h | 1 |
2 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 49fa1e4413fa..790dc926acae 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c @@ -1916,11 +1916,11 @@ bnx2_set_rx_mode(struct net_device *dev) BNX2_EMAC_RX_MODE_KEEP_VLAN_TAG); sort_mode = 1 | BNX2_RPM_SORT_USER0_BC_EN; #ifdef BCM_VLAN - if (!bp->vlgrp) { + if (!bp->vlgrp && !(bp->flags & ASF_ENABLE_FLAG)) rx_mode |= BNX2_EMAC_RX_MODE_KEEP_VLAN_TAG; - } #else - rx_mode |= BNX2_EMAC_RX_MODE_KEEP_VLAN_TAG; + if (!(bp->flags & ASF_ENABLE_FLAG)) + rx_mode |= BNX2_EMAC_RX_MODE_KEEP_VLAN_TAG; #endif if (dev->flags & IFF_PROMISC) { /* Promiscuous mode. */ @@ -3218,6 +3218,10 @@ bnx2_init_chip(struct bnx2 *bp) REG_WR(bp, BNX2_HC_ATTN_BITS_ENABLE, STATUS_ATTN_BITS_LINK_STATE); + if (REG_RD_IND(bp, bp->shmem_base + BNX2_PORT_FEATURE) & + BNX2_PORT_FEATURE_ASF_ENABLED) + bp->flags |= ASF_ENABLE_FLAG; + /* Initialize the receive filter. */ bnx2_set_rx_mode(bp->dev); diff --git a/drivers/net/bnx2.h b/drivers/net/bnx2.h index 76bb5f1a250b..8a70311d781f 100644 --- a/drivers/net/bnx2.h +++ b/drivers/net/bnx2.h @@ -3956,6 +3956,7 @@ struct bnx2 { #define NO_WOL_FLAG 8 #define USING_DAC_FLAG 0x10 #define USING_MSI_FLAG 0x20 +#define ASF_ENABLE_FLAG 0x40 u32 phy_flags; #define PHY_SERDES_FLAG 1 |