linux/drivers/net
Corinna Vinschen 6e85d5ad36 r8169: Add values missing in @get_stats64 from HW counters
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.

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 on the other hand are only reset by a power cycle.  Without
further considerations the values collected by the driver would not match
up against the TC values.

This patch introduces a new function rtl8169_reset_counters which
resets the TCs.  Also, since rtl8169_reset_counters shares most of
its code with rtl8169_update_counters, refactor the shared code into
two new functions  rtl8169_map_counters and rtl8169_unmap_counters.

Unfortunately chip versions prior to RTL_GIGA_MAC_VER_19 don't allow
to reset the TCs programatically.  Therefore introduce an addition to
the rtl8169_private struct and a function rtl8169_init_counter_offsets
to store the TCs at first rtl_open.  Use these values as offsets in
rtl8169_get_stats64.  Propagate a failure to reset *and* update the
counters up to rtl_open and emit a warning message, if so.

Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-08-25 16:02:35 -07:00
..
appletalk
arcnet drivers/net: remove all references to obsolete Ethernet-HOWTO 2015-06-23 06:50:35 -07:00
bonding net: bonding: convert to using IFF_NO_QUEUE 2015-08-18 11:55:06 -07:00
caif net: caif: convert to using IFF_NO_QUEUE 2015-08-18 11:55:07 -07:00
can can: flexcan: demote register output to debug level 2015-08-20 10:52:54 +02:00
cris
dsa net: dsa: mv88e6xxx: set 802.1Q mode to Fallback 2015-08-23 15:54:26 -07:00
ethernet r8169: Add values missing in @get_stats64 from HW counters 2015-08-25 16:02:35 -07:00
fddi net/fddi: remove HWM_REVERSE() macro 2015-08-13 21:12:17 -07:00
fjes fjes: ethtool support 2015-08-24 14:06:37 -07:00
hamradio mkiss: Fix error handling in mkiss_open() 2015-08-10 21:10:31 -07:00
hippi
hyperv hv_netvsc: Fix dereference of nvdev before check 2015-08-18 20:15:01 -07:00
ieee802154 cc2520: set the default fifo pin value from platform data 2015-08-11 06:13:39 +02:00
ipvlan net: ipvlan: convert to using IFF_NO_QUEUE 2015-08-18 11:55:06 -07:00
irda
phy net: phy: add interrupt support for aquantia phy 2015-08-23 23:14:14 -07:00
plip
ppp ppp: implement x-netns support 2015-08-25 14:11:20 -07:00
slip
team net: team: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-08-21 11:44:04 -07:00
vmxnet3 vmxnet3: prevent receive getting out of sequence on napi poll 2015-07-08 23:36:11 -07:00
wan net: caif: convert to using IFF_NO_QUEUE 2015-08-18 11:55:07 -07:00
wimax
wireless Major changes: 2015-08-20 14:13:25 -07:00
xen-netback Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-08-13 16:23:11 -07:00
dummy.c net: dummy: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
eql.c
geneve.c net: geneve: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
ifb.c ifb: add multiqueue operation 2015-07-08 16:00:09 -07:00
Kconfig fjes: Introduce FUJITSU Extended Socket Network Device driver 2015-08-24 14:06:33 -07:00
LICENSE.SRC
loopback.c net: loopback: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
macvlan.c macvlan: Don't segment multiple tagged packets on macvlan device 2015-08-03 14:24:49 -07:00
macvtap.c macvtap: fix network header pointer for VLAN tagged pkts 2015-07-27 14:49:54 -07:00
Makefile fjes: Introduce FUJITSU Extended Socket Network Device driver 2015-08-24 14:06:33 -07:00
mdio.c
mii.c
netconsole.c netconsole: implement extended console support 2015-06-25 17:00:39 -07:00
nlmon.c net: nlmon: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
ntb_netdev.c NTB: ntb_netdev not covering all receive errors 2015-08-09 16:32:21 -04:00
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c tuntap: Don't segment multiple tagged packets on tap device 2015-08-03 14:24:50 -07:00
veth.c net: veth: enable noqueue operation by default 2015-08-18 11:55:04 -07:00
virtio_net.c virtio_net: use DECLARE_EWMA 2015-08-20 14:10:22 -07:00
vrf.c route: move lwtunnel state to dst_entry 2015-08-20 15:42:36 -07:00
vxlan.c vxlan: GRO support at tunnel layer 2015-08-23 15:59:56 -07:00
xen-netfront.c net/xen-netfront: only clean up queues if present 2015-08-23 15:56:12 -07:00