summaryrefslogtreecommitdiffstats
path: root/sys/dev/msk
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2008-02-29 03:38:12 +0000
committeryongari <yongari@FreeBSD.org>2008-02-29 03:38:12 +0000
commit31fd8f4296cf6fa92a20171e42e9891d2df49b5c (patch)
treeae612a7202c650df910314fddbe1c13059675c30 /sys/dev/msk
parent52310eca06bac730a94e6badc26da3678600e145 (diff)
downloadFreeBSD-src-31fd8f4296cf6fa92a20171e42e9891d2df49b5c.zip
FreeBSD-src-31fd8f4296cf6fa92a20171e42e9891d2df49b5c.tar.gz
Workaround GMAC hardware hang of Yukon II on the receipt of pause
frames. This bug seems to happen on certain hardware model/revision (e.g. 88E8053) but it's not identified which hardwares are affected. Revision 1.4 of if_mskreg.h was not enough to workaround the bug. To workaround it, inrease GMAC FIFO threshold by one FIFO word to flush received pause frames. Reported by: das, Kirill Nuzhdin < kirill.nuzhdin AT rad dot chem dot msu dot ru > Tested by: das, Kirill Nuzhdin
Diffstat (limited to 'sys/dev/msk')
-rw-r--r--sys/dev/msk/if_msk.c7
-rw-r--r--sys/dev/msk/if_mskreg.h1
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/msk/if_msk.c b/sys/dev/msk/if_msk.c
index 2613b81..bb4ba13 100644
--- a/sys/dev/msk/if_msk.c
+++ b/sys/dev/msk/if_msk.c
@@ -3658,9 +3658,12 @@ msk_init_locked(struct msk_if_softc *sc_if)
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. */
+ /*
+ * Set Rx FIFO flush threshold to 64 bytes + 1 FIFO word
+ * due to hardware hang on receipt of pause frames.
+ */
CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, RX_GMF_FL_THR),
- RX_GMF_FL_THR_DEF);
+ RX_GMF_FL_THR_DEF + 1);
/* Configure Tx MAC FIFO. */
CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, TX_GMF_CTRL_T), GMF_RST_SET);
diff --git a/sys/dev/msk/if_mskreg.h b/sys/dev/msk/if_mskreg.h
index 1f8ff7d..ba0d730 100644
--- a/sys/dev/msk/if_mskreg.h
+++ b/sys/dev/msk/if_mskreg.h
@@ -1818,6 +1818,7 @@
GMR_FS_LONG_ERR | \
GMR_FS_MII_ERR | \
GMR_FS_BAD_FC | \
+ GMR_FS_GOOD_FC | \
GMR_FS_UN_SIZE | \
GMR_FS_JABBER)
OpenPOWER on IntegriCloud