net/mlx5: fix imissed counter overflow
authorJiawei Wang <jiaweiw@mellanox.com>
Mon, 30 Mar 2020 03:02:10 +0000 (06:02 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 21 Apr 2020 11:57:05 +0000 (13:57 +0200)
commitc5193a0bbef8bb7aef23c8ee25d9f89167ac58fb
tree9894810bf8d4222fba96aa0aa1f1080f061fca86
parent1ad9a3d09fc222a99af4c734788eaf0bdbafb6ae
net/mlx5: fix imissed counter overflow

The Hw counters is defined as 32bit unsigned value and read from
the sysfs. Firstly read the base value while application start,
then fetch the new value while do query and minus the base value.
If the new value is less than base value, will result in a
negative value and convert to the big value as unsigned 64bit.

PMD add xstats field to store the last successfully read counter,
use it if failed to read hw counter from sysfs.
PMD also record the last output value to handle the wrap around case,
if overflow happened, increase the wrap count by 1 and save into the
higher 32bit, and update the new value into lower 32bit, finally
return the 64bit counter value.

Fixes: ce9494d76c47 ("net/mlx5: report imissed statistics")
Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
drivers/net/mlx5/mlx5.h
drivers/net/mlx5/mlx5_stats.c