summaryrefslogtreecommitdiffstats
path: root/drivers/net/sky2.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@linux-foundation.org>2007-09-27 21:32:44 +0200
committerJeff Garzik <jeff@garzik.org>2007-09-28 05:32:28 +0200
commitd6c9bc1ed4301cbc3df4565ff5348b64bf2a767c (patch)
tree02f8bbc5d89149207a9e195d2248bf7723b69ad0 /drivers/net/sky2.c
parentsky2: sky2 FE+ receive status workaround (diff)
downloadlinux-d6c9bc1ed4301cbc3df4565ff5348b64bf2a767c.tar.xz
linux-d6c9bc1ed4301cbc3df4565ff5348b64bf2a767c.zip
sky2: FE+ vlan workaround
The FE+ workaround means the driver can no longer trust the status register to indicate VLAN tagged frames. The fix for this is to just disable VLAN acceleration for that chip version. Tested and works fine. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/sky2.c')
-rw-r--r--drivers/net/sky2.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index a3de0b6127eb..3bfc9d3e3c6e 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -3970,8 +3970,12 @@ static __devinit struct net_device *sky2_init_netdev(struct sky2_hw *hw,
dev->features |= NETIF_F_HIGHDMA;
#ifdef SKY2_VLAN_TAG_USED
- dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
- dev->vlan_rx_register = sky2_vlan_rx_register;
+ /* The workaround for FE+ status conflicts with VLAN tag detection. */
+ if (!(sky2->hw->chip_id == CHIP_ID_YUKON_FE_P &&
+ sky2->hw->chip_rev == CHIP_REV_YU_FE2_A0)) {
+ dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
+ dev->vlan_rx_register = sky2_vlan_rx_register;
+ }
#endif
/* read the mac address */