Date: Thu, 14 Jan 2010 09:47:23 -0800 From: Pyun YongHyeon <pyunyh@gmail.com> To: Oliver Fromme <olli@lurza.secnetix.de> Cc: freebsd-current@FreeBSD.ORG Subject: Re: bge(4), 5715S, IBM BladeCenter, no carrier Message-ID: <20100114174723.GV1228@michelle.cdnetworks.com> In-Reply-To: <201001141604.o0EG4Vx8067123@lurza.secnetix.de> References: <20100113194647.GO1228@michelle.cdnetworks.com> <201001141604.o0EG4Vx8067123@lurza.secnetix.de>
next in thread | previous in thread | raw e-mail | index | archive | help
--FEz7ebHBGB6b2e8X Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Thu, Jan 14, 2010 at 05:04:31PM +0100, Oliver Fromme wrote: > Pyun YongHyeon wrote: > > On Wed, Jan 13, 2010 at 11:28:55AM -0800, Pyun YongHyeon wrote: > > > On Wed, Jan 13, 2010 at 08:02:10PM +0100, Oliver Fromme wrote: > > > > Hmm. Interestingly, I don't see any PHY in the verbose dmesg > > > > output from the 9-current driver. Maybe I should merge the > > > > brgphy driver from 9-current to the 8-stable machine, too. > > > > I'll try that tomorrow. > > > > > > I guess that wouldn't help. > > You were right, it didn't help. > > > > If bge(4) think it have to directly handle PHY without using mii(4) > > > it wouldn't use mii(4) such that you wouldn't see mii(4) related > > > message. > > > ATM bge(4) directly handles fiber PHYs under certain conditions as > > > em(4) does. em(4) does not use mii(4) at all so that wouldn't be > > > problem on em(4). But bge(4) also uses mii(4) so it only uses > > > mii(4) under certain cases. I don't like that behavior and would > > > like to remove that but it would require a lot of code to properly > > > handle link state changes. I still didn't fully understand the > > > complexity of link state handling used in driver. > > > [...] > > > You said controller has fiber PHY, but brgphy(4) incorrectly > > > think it has copper PHY. Maybe this is the real problem. I'll see > > > what can be done. > > > > Would you show me the output of "devinfo -rv | grep brgphy" and > > "pciconf -lcv" for your bge(4) controller? > > Ok, I've got more information. > > As a reminder, this is a 8-stable snapshot from December, > with if_bge and brgphy from 9-current as of today. > (In fact I just copied the whole mii directory, not just > brgphy.) > > The result is that there is no brgphy found at all, so > devinfo doesn't list it either. > > Next thing I did was to apply the patch from PR 122551 > because the problem description sounds somewhat similar > to what I have (though not identical). > > The result: Now a brgphy is found, but it lists only > copper media, not 1000baseSX. I'm pretty sure this is > a fiber PHY, though. So, still "no carrier". :-( > > Here's the information you requested (with the patch > from PR 122551) ... > > devinfo -rv: > > bge0 pnpinfo vendor=0x14e4 device=0x1679 subvendor=0x1014 subdevice=0x0367 class=0x020000 at slot=4 function=0 > Interrupt request lines: > 256 > I/O memory addresses: > 0x97a00000-0x97a0ffff > miibus0 > brgphy0 pnpinfo oui=0x818 model=0x34 rev=0x0 at phyno=1 > > pciconf -lcv: > > bge0@pci0:22:4:0: class=0x020000 card=0x03671014 chip=0x167914e4 rev=0xa3 hdr=0x00 > vendor = 'Broadcom Corporation' > device = 'NetXtreme 5715S Gigabit Ethernet' > class = network > subclass = ethernet > cap 07[40] = PCI-X 64-bit supports 133MHz, 2048 burst read, 1 split transaction > cap 01[48] = powerspec 2 supports D0 D3 current D0 > cap 03[50] = VPD > cap 05[58] = MSI supports 8 messages, 64 bit enabled with 1 message > > dmesg (verbose boot): > > bge0: <Broadcom NetXtreme Gigabit Fiber Controller, ASIC rev. 0x009003> mem 0x97a00000-0x97a0ffff,0x97a10000-0x97a1ffff irq 24 at device 4.0 on pci22 > bge0: Reserved 0x10000 bytes for rid 0x10 type 3 at 0x97a00000 > bge0: attempting to allocate 1 MSI vectors (8 supported) > msi: routing MSI IRQ 256 to local APIC 0 vector 56 > bge0: using IRQ 256 for MSI > bge0: CHIP ID 0x00009003; ASIC REV 0x09; CHIP REV 0x90; PCI-X > miibus0: <MII bus> on bge0 > brgphy0: <BCM5714 10/100/1000baseTX PHY> PHY 1 on miibus0 > brgphy0: OUI 0x000818, model 0x0034, rev. 0 > brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto > bge0: bpf attached > bge0: Ethernet address: 00:21:5e:4c:07:22 > bge0: [MPSAFE] > bge0: [ITHREAD] > > ifconfig -m: > > bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 > options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM> > capabilities=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM> > ether 00:21:5e:4c:07:22 > inet xx.xx.xx.xx netmask 0xffffff00 broadcast xx.xx.xx.255 > media: Ethernet autoselect (none) > status: no carrier > supported media: > media autoselect > media 1000baseT mediaopt full-duplex > media 1000baseT > media 100baseTX mediaopt full-duplex > media 100baseTX > media 10baseT/UTP mediaopt full-duplex > media 10baseT/UTP > media none > Thanks for the information. Would you try attached patch? If the patch still reports 10/100/1000 copper PHY, try adding 'sc->mii_flags |= MIIF_HAVEFIBER' to force setting MIIF_HAVEFIBER flag in brgphy.c:brgphy_attach. > Actually, the blade (its an IBM BladeCenter HS22) contains > four NICs: two bge(4) and two bce(4). All of them are > fiber (1000baseSX). None of them work. I can open a new > thread for the bce(4) issue, but first I would prefer to > get the bge(4) interfaces working. > Ok, let's fix bge(4) first. --FEz7ebHBGB6b2e8X Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="bge.BCM5715S.diff" Index: sys/dev/bge/if_bgereg.h =================================================================== --- sys/dev/bge/if_bgereg.h (revision 202268) +++ sys/dev/bge/if_bgereg.h (working copy) @@ -2603,6 +2603,7 @@ #define BGE_FLAG_JUMBO 0x00000002 #define BGE_FLAG_WIRESPEED 0x00000004 #define BGE_FLAG_EADDR 0x00000008 +#define BGE_FLAG_MII_SERDES 0x00000010 #define BGE_FLAG_MSI 0x00000100 #define BGE_FLAG_PCIX 0x00000200 #define BGE_FLAG_PCIE 0x00000400 Index: sys/dev/bge/if_bge.c =================================================================== --- sys/dev/bge/if_bge.c (revision 202268) +++ sys/dev/bge/if_bge.c (working copy) @@ -902,7 +902,8 @@ mii = device_get_softc(sc->bge_miibus); BGE_CLRBIT(sc, BGE_MAC_MODE, BGE_MACMODE_PORTMODE); - if (IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_T) + if (IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_T || + IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_SX) BGE_SETBIT(sc, BGE_MAC_MODE, BGE_PORTMODE_GMII); else BGE_SETBIT(sc, BGE_MAC_MODE, BGE_PORTMODE_MII); @@ -1783,13 +1784,20 @@ if (!(BGE_IS_5705_PLUS(sc))) CSR_WRITE_4(sc, BGE_RXLS_MODE, BGE_RXLSMODE_ENABLE); + val = BGE_MACMODE_TXDMA_ENB | BGE_MACMODE_RXDMA_ENB | + BGE_MACMODE_RX_STATS_CLEAR | BGE_MACMODE_TX_STATS_CLEAR | + BGE_MACMODE_RX_STATS_ENB | BGE_MACMODE_TX_STATS_ENB | + BGE_MACMODE_FRMHDR_DMA_ENB; + + if (sc->bge_flags & BGE_FLAG_TBI) + val |= BGE_PORTMODE_TBI; + else if (sc->bge_flags & BGE_FLAG_MII_SERDES) + val |= BGE_PORTMODE_GMII; + else + val |= BGE_PORTMODE_MII; + /* Turn on DMA, clear stats */ - CSR_WRITE_4(sc, BGE_MAC_MODE, BGE_MACMODE_TXDMA_ENB | - BGE_MACMODE_RXDMA_ENB | BGE_MACMODE_RX_STATS_CLEAR | - BGE_MACMODE_TX_STATS_CLEAR | BGE_MACMODE_RX_STATS_ENB | - BGE_MACMODE_TX_STATS_ENB | BGE_MACMODE_FRMHDR_DMA_ENB | - ((sc->bge_flags & BGE_FLAG_TBI) ? - BGE_PORTMODE_TBI : BGE_PORTMODE_MII)); + CSR_WRITE_4(sc, BGE_MAC_MODE, val); /* Set misc. local control, enable interrupts on attentions */ CSR_WRITE_4(sc, BGE_MISC_LOCAL_CTL, BGE_MLC_INTR_ONATTN); @@ -2851,12 +2859,14 @@ hwcfg = ntohl(hwcfg); } - if ((hwcfg & BGE_HWCFG_MEDIA) == BGE_MEDIA_FIBER) - sc->bge_flags |= BGE_FLAG_TBI; - /* The SysKonnect SK-9D41 is a 1000baseSX card. */ - if ((pci_read_config(dev, BGE_PCI_SUBSYS, 4) >> 16) == SK_SUBSYSID_9D41) - sc->bge_flags |= BGE_FLAG_TBI; + if ((pci_read_config(dev, BGE_PCI_SUBSYS, 4) >> 16) == + SK_SUBSYSID_9D41 || (hwcfg & BGE_HWCFG_MEDIA) == BGE_MEDIA_FIBER) { + if (BGE_IS_5714_FAMILY(sc)) + sc->bge_flags |= BGE_FLAG_MII_SERDES; + else + sc->bge_flags |= BGE_FLAG_TBI; + } if (sc->bge_flags & BGE_FLAG_TBI) { ifmedia_init(&sc->bge_ifmedia, IFM_IMASK, bge_ifmedia_upd, Index: sys/dev/mii/brgphy.c =================================================================== --- sys/dev/mii/brgphy.c (revision 202269) +++ sys/dev/mii/brgphy.c (working copy) @@ -197,6 +197,7 @@ case MII_OUI_xxBROADCOM: switch (bsc->mii_model) { case MII_MODEL_xxBROADCOM_BCM5706: + case MII_MODEL_xxBROADCOM_BCM5714: /* * The 5464 PHY used in the 5706 supports both copper * and fiber interfaces over GMII. Need to check the --FEz7ebHBGB6b2e8X--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100114174723.GV1228>