bce(4) with IPMI [puzzling and puzzling]

Sean Bruno seanbru at yahoo-inc.com
Fri Oct 7 01:57:44 UTC 2011


On Thu, 2011-09-29 at 10:01 -0700, Sean Bruno wrote:
> We've been getting reports of odd behavior on our Dell R410 machines
> when trying to use IPMI.  The servers have two NIC's that we have
> assigned as the IPMI interface(bce0) and production interface(bce1)
> respectively.
> 
> Since we don't actually configure bce0 in FreeBSD, we've found that the
> IPMI interface deactivated when bce(4) loads.  I assume that the driver
> is not initializing the interface correctly in this case and the default
> case is to turn the interface off.  Does it make sense to completely
> turn off the interface when there is an active link on the port, but no
> configuration assigned?
> 
> Sean
> 
> p.s. Dell's IPMI implementation is ... um ... more difficult than it
> needs to be.

Whoa ... ok, so now I've run into something horrible.

According to dmidecode, a Dell R410 has a Broadcom 5716 chipset on it.
On Board Device 2 Information
        Type: Ethernet
        Status: Enabled
        Description: Embedded Broadcom 5716 NIC 1
On Board Device 3 Information
        Type: Ethernet
        Status: Enabled
        Description: Embedded Broadcom 5716 NIC 2


However, when I ask the chipset what type it is via:
 if_bcereg.h:#define BCE_CHIP_NUM(sc)

It clearly indicates that it is a 5709????  What on earth is going on
here?  The following patch, yeilds the following output:

=== //depot/yahoo/ybsd_7/src/sys/dev/bce/if_bce.c#26
- /home/seanbru/ybsd_7/sys/dev/bce/if_bce.c ====
5855c5855,5861
<       if ((ifp->if_flags & IFF_UP) == 0) {
---
>       if (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)
>               printf("%s: BCE_CHIP_NUM_5716 found\n", __func__);
>       else
>               printf("%s: huh, what's this?  0x%8x\n", __func__,
BCE_CHIP_NUM(sc));
> 
>       if (((ifp->if_flags & IFF_UP) == 0) &&
>           !(BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) {

<console>
bce_ifmedia_sts: huh, what's this?  0x57090000
</console>

<pciconf>
bce0 at pci0:1:0:0:        class=0x020000 card=0x028c1028 chip=0x163b14e4
rev=0x20 hdr=0x00
    vendor     = 'Broadcom Corporation'
    class      = network
    subclass   = ethernet
bce1 at pci0:1:0:1:        class=0x020000 card=0x028c1028 chip=0x163b14e4
rev=0x20 hdr=0x00
    vendor     = 'Broadcom Corporation'
    class      = network
    subclass   = ethernet
</pciconf>


<dmesg>
bce0: <Broadcom NetXtreme II BCM5716 1000Base-T (C0)> mem
0xd8000000-0xd9ffffff irq 36 at device 0.0 on pci1
bce0: Reserved 0x2000000 bytes for rid 0x10 type 3 at 0xd8000000
bce0: attempting to allocate 1 MSI vectors (16 supported)
bce0: using IRQ 256 for MSI
miibus0: <MII bus> on bce0
bce0: bpf attached
bce0: Ethernet address: a4:ba:db:2b:6d:58
bce0: [MPSAFE]
bce0: [ITHREAD]
bce0: ASIC (0x57092008); Rev (C0); Bus (PCIe x4, 2.5Gbps); B/C (5.2.2);
Flags (MSI|MFW); MFW (NCSI 2.0.8)
</dmesg>



More information about the freebsd-net mailing list