On Aug 18 19:05, David Miller wrote:
> From: Francois Romieu <rom...@fr.zoreil.com>
> Date: Tue, 18 Aug 2015 23:40:17 +0200
> 
> > Corinna Vinschen <vinsc...@redhat.com> :
> >> The r8169 driver collects statistical information returned by
> >> @get_stats64 by counting them in the driver itself, even though many
> >> (but not all) of the values are already collected by tally counters
> >> (TCs) in the NIC.  Some of these TC values are not returned by
> >> @get_stats64.  Especially the received multicast packages are missing
> >> from /proc/net/dev.
> >> Rectify this by fetching the TCs and returning them from
> >> rtl8169_get_stats64.
> > 
> > It is not exactly a some / many / not all / confused [*] picture
> > - get_stats64 provides software managed values
> > - ethtool provides hardware only values
> > 
> > [*] ok, rx_missed is kinda special.
> > 
> >> The counters collected in the driver obviously disappear as soon as the
> >> driver is unloaded so after a driver is loaded the counters always start
> >> at 0.  The TCs are only reset by a power cycle and there's no known way
> >> to reset them programatically. Without further considerations the values
> >> collected by the driver would not match up against the TC values.
> > 
> > I'd rather:
> > 1. keep software and hardware stats separated
> > 2. push to userspace the responsibility to offset device specific hardware
> >    values jumps
> > 
> > My 0.02 €.
> 
> Any value that is provided by ->get_stats64() should be provided by whatever
> mechanism is available and determined to be "prudent" for the device in
> question.  If the device is not tracking the event, this means pure software
> counters.
> 
> If the device tracks the event, you should attempt to use the hardware
> facility to provide the ->get_stats64() values.
> 
> If the hardware provides counters not starting at zero on driver load,
> one option to handle that is to load the initial values of all of
> those counters and calculate diffs at ->get_stats64() time.

That's what my code is doing, just for a limited set of values.

I was already wondering why some values available in the hardware tally
counters are additionally counted in software.  I was planning to
propose to use the hardware counters in @get_stats64 in the first place
and only count values in the driver which are not provided by the
hardware


Corinna

Attachment: pgpv2lzWCTlZ1.pgp
Description: PGP signature

Reply via email to