cvs commit: src/sys/dev/bge if_bge.c

Oleg Bulyzhin oleg at FreeBSD.org
Tue Dec 12 15:02:17 PST 2006


On Mon, Dec 11, 2006 at 06:00:35PM +0000, Jung-uk Kim wrote:
> jkim        2006-12-11 18:00:35 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/dev/bge          if_bge.c 
>   Log:
>   - Correct collision counter for BCM5705+.  This register is read/clear.
>   - Correct RX packet drop counter for BCM5705+.  This register is read/clear
>   and it wraps very quickly under heavy packet drops because only the lower
>   ten bits are valid according to the documentation.  However, it seems few
>   more bits are actually valid and the rest bits are always zeros[1].
>   Therefore, we don't mask them off here.  To get accurate packet drop count,
>   we need to check the register from bge_rxeof().  It is commented out for now,
>   not to penalize normal operation.  Actual performance impact should be
>   measured later.
>   - Correct integer casting from u_long to uint32_t.  Casting is not really
>   needed for all supported platforms but we better do this correctly[2].
>   
>   Tested by:      bde[1]
>   Suggested by:   bde[2]
>   
>   Revision  Changes    Path
>   1.158     +13 -10    src/sys/dev/bge/if_bge.c

I didnt get the point of your u_long -> uint32_t changes.
As i can see your change will cause more often wraps on 64bit archs:
In rev. 1.153 you have converted cnt to uint32_t. Since cnt is stored in
sc->bge_* counters you have shortened(on 64bit archs) them as well.

P.S. Your current change is unclear to me too: since ifp counters and sc->_bge_
are both u_long i can not see any reason of converting (u_long) cast to 
(uint32_t) one.

-- 
Oleg.

================================================================
=== Oleg Bulyzhin -- OBUL-RIPN -- OBUL-RIPE -- oleg at rinet.ru ===
================================================================



More information about the cvs-src mailing list