kern/168217: [bce] Watchdog timeouts with bce(4) on BCM5716

YongHyeon PYUN pyunyh at gmail.com
Mon Jun 4 09:04:18 UTC 2012


On Mon, Jun 04, 2012 at 01:48:16AM -0700, Xin Li wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> On 06/04/12 17:32, YongHyeon PYUN wrote:
> > On Tue, May 22, 2012 at 10:34:00AM -0700, Xin Li wrote:
> >> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
> >> 
> >> On 05/22/12 03:37, yongari at FreeBSD.org wrote:
> >>> Your release information(i386) and environment(amd64) does not 
> >>> match. Are you using i386 or PAE?
> >> 
> >> Sorry if there is mismatch then it must be I didn't cleared out 
> >> freefall information properly.  The system is running
> >> FreeBSD/amd64 and not i386 nor PAE.
> >> 
> >>> Having backtrace would be nice.
> >> 
> >> Will do.
> >> 
> >>> It seems you have two differnt controllers(5716 and 5709). Does
> >>> the issue happen only on 5716?
> >> 
> >> We have not yet tested on the 5709 part as they are not
> >> connected.
> >> 
> >> By the way there are some updates from yesterday.  Disabling
> >> hdr_split did not helped and the system stops responding again;
> >> disabling both hdr_split and tso seems to make the system survive
> >> after 8 hours, we will continue to watch it and report back if
> >> new information available.
> >> 
> >> Another thing to note is that we found that on systems that does
> >> not exhibit the same problem, they have oui=0x50ef for the four
> >> brgphy's, and on this system the four have oui=0xaf7 (brgphy0
> >> pnpinfo oui=0xaf7 model=0x3c rev=0x8 at phyno=1).  Not sure if
> >> this is related though.
> >> 
> > 
> > Xin, I'm under the impression that bce_intr() might be called when 
> > IFF_DRV_RUNNING is not set. Could you check whether 
> > sc->bce_ifp->if_drv_flags set IFF_DRV_RUNNING in bce_intr()? Sorry,
> > one of my box that can host quad-port bce(4) controller died so I
> > can't verify this at the moment until I get a new MB.
> 
> I've made the following change:
> 
> Index: sys/dev/bce/if_bce.c
> ===================================================================
> - --- sys/dev/bce/if_bce.c        (revision 233291)
> +++ sys/dev/bce/if_bce.c        (working copy)
> @@ -7678,6 +7678,9 @@ bce_intr(void *xsc)
> 
>         BCE_LOCK(sc);
> 
> +       if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != IFF_DRV_RUNNING)
> +               BCE_PRINTF("Got interrupt without IFF_DRV_RUNNING!\n");
> +
>         DBRUN(sc->interrupts_generated++);
> 
>         /* Synchnorize before we read from interface's status block */
> 
> Should we run with that and see if we can catch something?

I think you don't need the full message, just a single byte of
character, say 'I', could be used to indicate the condition. 

> 
> Cheers,


More information about the freebsd-net mailing list