summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorMichael Chan2006-01-24 01:06:06 +0100
committerDavid S. Miller2006-01-24 01:06:06 +0100
commite29054f92d7d575631691865c1b95bee5bc974cc (patch)
tree91b98019ebdae5697ab4ebdec626c8201497c7c7 /drivers/net
parent[SPARC64]: Use compat_sys_futimesat in 32-bit syscall table. (diff)
downloadkernel-qcow2-linux-e29054f92d7d575631691865c1b95bee5bc974cc.tar.gz
kernel-qcow2-linux-e29054f92d7d575631691865c1b95bee5bc974cc.tar.xz
kernel-qcow2-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>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/bnx2.c10
-rw-r--r--drivers/net/bnx2.h1
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