Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Dec 2006 11:39:41 -0500
From:      Scott Long <scottl@samsco.org>
To:        Bruce Evans <bde@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/bge if_bge.c
Message-ID:  <4589674D.6010408@samsco.org>
In-Reply-To: <200612201203.kBKC3MhO053666@repoman.freebsd.org>
References:  <200612201203.kBKC3MhO053666@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Evans wrote:
> bde         2006-12-20 12:03:21 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/dev/bge          if_bge.c 
>   Log:
>   In bge_txeof(), cancel the watchdog timeout if all descriptors have
>   been handled instead of when at least one descriptor was just handled.
>   For bge, it is normal to get a txeof when only a small fraction of the
>   queued tx descriptors have been handled, so the bug broke the watchdog
>   in a usual case.
>   
>   Revision  Changes    Path
>   1.170     +2 -1      src/sys/dev/bge/if_bge.c

As Gleb points out, what you've changed this to has a failure case too,
though maybe it's not as common as the one that you might have been 
seeing.  The whole countdown/reset scheme is basically insufficient. 
What is needed is something like if_em, where the rings pointers are
actually checked for progress.  It's simple and cheap to do, and it
addresses the actual issue of detecting when the chip has stopped
processing packets.

Scott




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