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-all mailing list