2009-04-14 Till Straumann <strauman@slac.stanford.edu>

* libnetworking/rtems/rtems_mii_ioctl_kern.c: poll BMSR twice
	to clear latched link-status low.
This commit is contained in:
Till Straumann
2009-04-15 03:44:41 +00:00
parent 9937a7a963
commit db93c2ffe0
2 changed files with 17 additions and 0 deletions

View File

@@ -1,3 +1,8 @@
2009-04-14 Till Straumann <strauman@slac.stanford.edu>
* libnetworking/rtems/rtems_mii_ioctl_kern.c: poll BMSR twice
to clear latched link-status low.
2009-04-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
* Makefile.am, preinstall.am, libmisc/shell/login.h: Removed login.h.

View File

@@ -101,6 +101,9 @@ rtems_mii_ioctl (struct rtems_mdio_info *info, void *uarg, int cmd,
#endif
case SIOCGIFMEDIA:
if (info->mdio_r (phy, uarg, MII_BMCR, &bmcr))
return EINVAL;
/* read BMSR twice to clear latched link status low */
if (info->mdio_r (phy, uarg, MII_BMSR, &bmsr))
return EINVAL;
if (info->mdio_r (phy, uarg, MII_BMSR, &bmsr))
return EINVAL;
@@ -216,6 +219,15 @@ rtems_mii_ioctl (struct rtems_mdio_info *info, void *uarg, int cmd,
if (!(bmsr2 & (tmp ? EXTSR_1000TFDX : EXTSR_1000THDX)))
return EOPNOTSUPP;
/* NOTE: gige standard demands auto-negotiation for gige links.
* Disabling autoneg did NOT work on the PHYs I tried
* (BCM5421S, intel 82540).
* I've seen drivers that simply change what they advertise
* to the desired gig mode and re-negotiate.
* We could do that here, too, but we don't see the point -
* If autoneg works fine then we can as well use it.
*/
bmcr = BMCR_S1000;
break;