svn commit: r185620 - head/sys/dev/cxgb/common
George V. Neville-Neil
gnn at FreeBSD.org
Thu Dec 4 12:32:53 PST 2008
Author: gnn
Date: Thu Dec 4 20:32:53 2008
New Revision: 185620
URL: http://svn.freebsd.org/changeset/base/185620
Log:
Fix a bug with the ael1006 PHY. The bug shows up as persistent but incomplete
packet loss, of between 10-30%. The fix is to put the PHY into
and take it out of local loopback mode when resetting the interface.
Obtained from: Chelsio Inc.
MFC after: 3 days
Modified:
head/sys/dev/cxgb/common/cxgb_ael1002.c
Modified: head/sys/dev/cxgb/common/cxgb_ael1002.c
==============================================================================
--- head/sys/dev/cxgb/common/cxgb_ael1002.c Thu Dec 4 20:04:25 2008 (r185619)
+++ head/sys/dev/cxgb/common/cxgb_ael1002.c Thu Dec 4 20:32:53 2008 (r185620)
@@ -205,6 +205,16 @@ static int ael1006_reset(struct cphy *ph
t3_write_reg(phy->adapter, A_T3DBG_GPIO_EN, gpio_out);
msleep(125);
t3_phy_reset(phy, MDIO_DEV_PMA_PMD, wait);
+
+ /* Phy loopback work around for ael1006 */
+ /* Soft reset phy by toggling loopback */
+ msleep(125);
+ /* Put phy into local loopback */
+ t3_mdio_change_bits(phy, MDIO_DEV_PMA_PMD, MII_BMCR, 0, 1);
+ msleep(125);
+ /* Take phy out of local loopback */
+ t3_mdio_change_bits(phy, MDIO_DEV_PMA_PMD, MII_BMCR, 1, 0);
+
return 0;
}
More information about the svn-src-head
mailing list