mlx4: give precise rx/tx bytes/packets counters
mlx4 stats are chaotic because a deferred work queue is responsible
to update them every 250 ms.
Even sampling stats every one second with "sar -n DEV 1" gives
variations like the following :
lpaa23:~# sar -n DEV 1 10 | grep eth0 | cut -c1-65
07:39:22 eth0 146877.00
3265554.00 9467.15
4828168.50
07:39:23 eth0 146587.00
3260329.00 9448.15
4820445.98
07:39:24 eth0 146894.00
3259989.00 9468.55
4819943.26
07:39:25 eth0 110368.00
2454497.00 7113.95
3629012.17 <<>>
07:39:26 eth0 146563.00
3257502.00 9447.25
4816266.23
07:39:27 eth0 145678.00
3258292.00 9389.79
4817414.39
07:39:28 eth0 145268.00
3253171.00 9363.85
4809852.46
07:39:29 eth0 146439.00
3262185.00 9438.97
4823172.48
07:39:30 eth0 146758.00
3264175.00 9459.94
4826124.13
07:39:31 eth0 146843.00
3256903.00 9465.44
4815381.97
Average: eth0 142827.50
3179259.70 9206.30
4700578.16
This patch allows rx/tx bytes/packets counters being folded at the
time we need stats.
We now can fetch stats every 1 ms if we want to check NIC behavior
on a small time window. It is also easier to detect anomalies.
lpaa23:~# sar -n DEV 1 10 | grep eth0 | cut -c1-65
07:42:50 eth0 142915.00
3177696.00 9212.06
4698270.42
07:42:51 eth0 143741.00
3200232.00 9265.15
4731593.02
07:42:52 eth0 142781.00
3171600.00 9202.92
4689260.16
07:42:53 eth0 143835.00
3192932.00 9271.80
4720761.39
07:42:54 eth0 141922.00
3165174.00 9147.64
4679759.21
07:42:55 eth0 142993.00
3207038.00 9216.78
4741653.05
07:42:56 eth0 141394.06
3154335.64 9113.85
4663731.73
07:42:57 eth0 141850.00
3161202.00 9144.48
4673866.07
07:42:58 eth0 143439.00
3180736.00 9246.05
4702755.35
07:42:59 eth0 143501.00
3210992.00 9249.99
4747501.84
Average: eth0 142835.66
3182165.93 9206.98
4704874.08
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>