Broadcom NetXtreme II BMC5708 no carrier

Pyun YongHyeon pyunyh at gmail.com
Sun Nov 25 21:05:57 PST 2007


On Sat, Nov 24, 2007 at 05:18:53PM +0300, supportsobaka at mail.ru wrote:
 > Hello
 > 
 > We have problem with Broadcom NetXtreme II BMC5708 on our blade
 > server.
 > 
 > ifconfig bce0 report:
 > 
 > bce0: flags=8847<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
 >         options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
 >         inet 172.0.0.199 netmask 0xffffff00 broadcast 172.0.0.255
 >         ether 00:1a:64:33:29:c7
 >         media: Ethernet autoselect (none)
 >         status: no carrier
 > 
 > 
 > Try to set
 > #ifconfig bce0 media 1000baseSX mediaopt full-duplex
 > 
 > bce0: flags=8847<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
 >         options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
 >         inet 172.0.0.199 netmask 0xffffff00 broadcast 172.0.0.255
 >         ether 00:1a:64:33:29:c7
 >         media: Ethernet 1000baseSX <full-duplex> (none)
 >         status: no carrier
 > 
 > 
 > Status don't want change to active, and nothing work :(
 > 
 > FreeBSD 6.3-PRERELEASE (7.x have problem too)
 > 
 > Is any idea?

It seems that mii_ticks is not kicked at all in auto-negotiation
phase. From the output of forced 1000baseSX media configuration I
guess BRGPHY_BMSR_ACOMP bit in BRGPHY_MII_BMSR is not updated on
5708S. Mabe davidch know better what's going on 5708S. (CCed)
How about attached patch? I don't have the hardware so it's just a
guess work.

-- 
Regards,
Pyun YongHyeon
-------------- next part --------------
Index: brgphy.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/mii/brgphy.c,v
retrieving revision 1.70
diff -u -r1.70 brgphy.c
--- brgphy.c	8 Jun 2007 02:34:44 -0000	1.70
+++ brgphy.c	26 Nov 2007 05:03:55 -0000
@@ -364,12 +364,10 @@
 			break;
 		}
 
-#if 0
 		/* Todo: Is this correct? */
 		/* Announce link loss right after it happens. */
 		if (sc->mii_ticks++ == 0)
 			break;
-#endif
 
 		/* Only retry autonegotiation every mii_anegticks seconds. */
 		if (sc->mii_ticks <= sc->mii_anegticks)
@@ -507,9 +505,12 @@
 	/* Autoneg is still in progress. */
 	if ((bmcr & BRGPHY_BMCR_AUTOEN) &&
 	    (bmsr & BRGPHY_BMSR_ACOMP) == 0) {
-		/* Erg, still trying, I guess... */
-		mii->mii_media_active |= IFM_NONE;
-		goto brgphy_status_exit;
+		/* XXX 5708S doesn't update BRGPHY_BMSR_ACOMP? */
+		if ((bsc->serdes_flags & BRGPHY_5708S) == 0) {
+			/* Erg, still trying, I guess... */
+			mii->mii_media_active |= IFM_NONE;
+			goto brgphy_status_exit;
+		}
 	}
 
 	/* Autoneg is enabled and complete, link should be up. */


More information about the freebsd-net mailing list