summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2009-09-28 21:07:19 +0000
committeryongari <yongari@FreeBSD.org>2009-09-28 21:07:19 +0000
commitd4cb40b4cb24ca1d829b2fc8d49f13ecb3bff3f4 (patch)
treebcb1cd3b05ffb88ae61ee096799ce58ada6d99b9 /sys/dev
parent7139323b97db2431031665257e19c2277ac858b2 (diff)
downloadFreeBSD-src-d4cb40b4cb24ca1d829b2fc8d49f13ecb3bff3f4.zip
FreeBSD-src-d4cb40b4cb24ca1d829b2fc8d49f13ecb3bff3f4.tar.gz
Add workaround for Yukon XL which has hardware bug that can't flush
FIFO.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/msk/if_msk.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/msk/if_msk.c b/sys/dev/msk/if_msk.c
index 6ce22c8..e72d490 100644
--- a/sys/dev/msk/if_msk.c
+++ b/sys/dev/msk/if_msk.c
@@ -3799,9 +3799,14 @@ msk_init_locked(struct msk_if_softc *sc_if)
/* Set receive filter. */
msk_rxfilter(sc_if);
- /* Flush Rx MAC FIFO on any flow control or error. */
- CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, RX_GMF_FL_MSK),
- GMR_FS_ANY_ERR);
+ if (sc->msk_hw_id == CHIP_ID_YUKON_XL) {
+ /* Clear flush mask - HW bug. */
+ CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, RX_GMF_FL_MSK), 0);
+ } else {
+ /* Flush Rx MAC FIFO on any flow control or error. */
+ CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, RX_GMF_FL_MSK),
+ GMR_FS_ANY_ERR);
+ }
/*
* Set Rx FIFO flush threshold to 64 bytes + 1 FIFO word
OpenPOWER on IntegriCloud