Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Sep 2006 11:22:12 -0700
From:      "David Christensen" <davidch@broadcom.com>
To:        "Simon L. Nielsen" <simon@FreeBSD.org>
Cc:        LI Xin <delphij@delphij.net>, freebsd-current@freebsd.org, Oleg Bulyzhin <oleg@freebsd.org>
Subject:   RE: bge(4) on BCM 5752 A02 panic due to media autoselect
Message-ID:  <09BFF2FA5EAB4A45B6655E151BBDD90301F126D5@NT-IRVA-0750.brcm.ad.broadcom.com>
In-Reply-To: <20060902185124.GB59963@zaphod.nitro.dk>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
> > Driver fails to start with diagnostic:
> > bge0: RX CPU self-diagnostics failed!
> 
> As a followup, I tried backing out only the latest bge(4) changes and
> now the system (sledge.freebsd.org) works again.  Basically the system
> responded to ICMP ping, but it seemed all other network trafic didn't
> work, at least NFS mounts, NTP etc. failed at boot and ssh to the
> system didn't work.
> 
> It now works with:
> 
>      $FreeBSD: src/sys/dev/bge/if_bge.c,v 1.140 2006/08/24 
> 14:41:16 oleg Exp $
>      $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.52 2006/08/23 
> 11:32:54 glebius Exp $
> 
> I can test patches if needed.
> 

I tried several 5702 NICs with various revisions and was never able to
duplicate the problem you're seeing.  They all worked correctly with my
first patch.

Can you test the attached patch?  I've simply removed the test
altogether.
The Linux driver doesn't perform this test and the fact that the test is
performed after bge_reset() is called simply means we're checking the
same
information twice (i.e. did the NIC firmware load).  Since the firmware
handshake was successful we know the firmware loaded so the test is
redundant.

Dave

[-- Attachment #2 --]
Index: if_bge.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
retrieving revision 1.143
diff -r1.143 if_bge.c
984,992d983
< 	/*
< 	 * Check the 'ROM failed' bit on the RX CPU to see if
< 	 * self-tests passed.
< 	 */
< 	if (CSR_READ_4(sc, BGE_RXCPU_MODE) & BGE_RXCPUMODE_ROMFAIL) {
< 		device_printf(sc->bge_dev, "RX CPU self-diagnostics failed!\n");
< 		return (ENODEV);
< 	}
< 
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?09BFF2FA5EAB4A45B6655E151BBDD90301F126D5>