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>
This commit is contained in:
Stephen Hemminger
2007-09-19 15:36:46 -07:00
committed by Jeff Garzik
parent 05745c4ab1
commit 75e806838a
2 changed files with 66 additions and 17 deletions

View File

@@ -2027,6 +2027,14 @@ struct sky2_port {
u16 rx_tag;
struct vlan_group *vlgrp;
#endif
struct {
unsigned long last;
u32 mac_rp;
u8 mac_lev;
u8 fifo_rp;
u8 fifo_lev;
} check;
dma_addr_t rx_le_map;
dma_addr_t tx_le_map;
@@ -2064,7 +2072,6 @@ struct sky2_hw {
u8 chip_rev;
u8 pmd_type;
u8 ports;
u8 active;
struct sky2_status_le *st_le;
u32 st_idx;