diff options
author | yongari <yongari@FreeBSD.org> | 2009-09-28 21:07:19 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2009-09-28 21:07:19 +0000 |
commit | d4cb40b4cb24ca1d829b2fc8d49f13ecb3bff3f4 (patch) | |
tree | bcb1cd3b05ffb88ae61ee096799ce58ada6d99b9 /sys/dev | |
parent | 7139323b97db2431031665257e19c2277ac858b2 (diff) | |
download | FreeBSD-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.c | 11 |
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 |