diff options
author | Stephen Hemminger <shemminger@linux-foundation.org> | 2007-09-27 12:32:44 -0700 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-09-27 23:32:28 -0400 |
commit | d6c9bc1ed4301cbc3df4565ff5348b64bf2a767c (patch) | |
tree | 02f8bbc5d89149207a9e195d2248bf7723b69ad0 | |
parent | 3b12e0141f7a97c3b84731b5f935ed738bb6f960 (diff) | |
download | kernel_goldelico_gta04-d6c9bc1ed4301cbc3df4565ff5348b64bf2a767c.zip kernel_goldelico_gta04-d6c9bc1ed4301cbc3df4565ff5348b64bf2a767c.tar.gz kernel_goldelico_gta04-d6c9bc1ed4301cbc3df4565ff5348b64bf2a767c.tar.bz2 |
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>
-rw-r--r-- | drivers/net/sky2.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index a3de0b6..3bfc9d3 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 */ |