net/i40e: fix stats counters
authorIgor Ryzhov <iryzhov@nfware.com>
Tue, 17 Nov 2020 08:56:39 +0000 (11:56 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 8 Jan 2021 15:03:05 +0000 (16:03 +0100)
commitd8d652ec7266d9ea4c8763d4a71a2c7853b9c23b
treeff65f4491bd98e3757ea69f945f3317a8ea03e9e
parent7432c8cf8e94679cce89d3fc6baa218c9de5307d
net/i40e: fix stats counters

When low and high registers are read separately, this opens the door to
a race condition:
- low register is read
- NIC updates the registers
- high register is read

Because of this, we may end up with an incorrect counter value.
Let's read the registers in one shot, as it is done in Linux kernel
since the introduction of the i40e driver.

Fixes: 4861cde46116 ("i40e: new poll mode driver")
Cc: stable@dpdk.org
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
drivers/net/i40e/base/i40e_osdep.h
drivers/net/i40e/i40e_ethdev.c