diff options
author | Stephen Hemminger <shemminger@linux-foundation.org> | 2007-09-19 18:36:46 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-09-20 15:23:00 -0400 |
commit | 75e806838a3327d4ca9030e588d34de11b04f341 (patch) | |
tree | 11dff9f4326b300ff80cbc4f627f797a06ad8c52 /drivers/net/sky2.h | |
parent | 05745c4ab1c58fbb6ab8e8d3a40e0e395d7e2b0e (diff) |
sky2: receive FIFO checking
A driver writer from another operating system hinted that
the versions of Yukon 2 chip with rambuffer (EC and XL) have
a hardware bug that if the FIFO ever gets completely full it
will hang. Sounds like a classic ring full vs ring empty wrap around
bug.
As a workaround, use the existing watchdog timer to check for
ring full lockup.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/sky2.h')
-rw-r--r-- | drivers/net/sky2.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h index a05b30b68fa..69cd98400fe 100644 --- a/drivers/net/sky2.h +++ b/drivers/net/sky2.h | |||
@@ -2027,6 +2027,14 @@ struct sky2_port { | |||
2027 | u16 rx_tag; | 2027 | u16 rx_tag; |
2028 | struct vlan_group *vlgrp; | 2028 | struct vlan_group *vlgrp; |
2029 | #endif | 2029 | #endif |
2030 | struct { | ||
2031 | unsigned long last; | ||
2032 | u32 mac_rp; | ||
2033 | u8 mac_lev; | ||
2034 | u8 fifo_rp; | ||
2035 | u8 fifo_lev; | ||
2036 | } check; | ||
2037 | |||
2030 | 2038 | ||
2031 | dma_addr_t rx_le_map; | 2039 | dma_addr_t rx_le_map; |
2032 | dma_addr_t tx_le_map; | 2040 | dma_addr_t tx_le_map; |
@@ -2064,7 +2072,6 @@ struct sky2_hw { | |||
2064 | u8 chip_rev; | 2072 | u8 chip_rev; |
2065 | u8 pmd_type; | 2073 | u8 pmd_type; |
2066 | u8 ports; | 2074 | u8 ports; |
2067 | u8 active; | ||
2068 | 2075 | ||
2069 | struct sky2_status_le *st_le; | 2076 | struct sky2_status_le *st_le; |
2070 | u32 st_idx; | 2077 | u32 st_idx; |