[BNX2]: Fix VLAN on ASF
authorMichael Chan <mchan@broadcom.com>
Tue, 24 Jan 2006 00:06:06 +0000 (16:06 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Jan 2006 00:06:06 +0000 (16:06 -0800)
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>
drivers/net/bnx2.c
drivers/net/bnx2.h

index 49fa1e4413fa470ddf7feadae6ec937a22c80e6e..790dc926acae68872252530262bc0b9d68efc20f 100644 (file)
@@ -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);
 
index 76bb5f1a250bd52f43567e54bcf6f71efc720344..8a70311d781f94d74b7d62f8dc651ad5f78659ed 100644 (file)
@@ -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