linux/drivers/net
Ariel Levkovich 0ccf47265e net/mlx5e: Prevent encap flow counter update async to user query
[ Upstream commit 90bb769291 ]

This patch prevents a race between user invoked cached counters
query and a neighbor last usage updater.

The cached flow counter stats can be queried by calling
"mlx5_fc_query_cached" which provides the number of bytes and
packets that passed via this flow since the last time this counter
was queried.
It does so by reducting the last saved stats from the current, cached
stats and then updating the last saved stats with the cached stats.
It also provide the lastuse value for that flow.

Since "mlx5e_tc_update_neigh_used_value" needs to retrieve the
last usage time of encapsulation flows, it calls the flow counter
query method periodically and async to user queries of the flow counter
using cls_flower.
This call is causing the driver to update the last reported bytes and
packets from the cache and therefore, future user queries of the flow
stats will return lower than expected number for bytes and packets
since the last saved stats in the driver was updated async to the last
saved stats in cls_flower.

This causes wrong stats presentation of encapsulation flows to user.

Since the neighbor usage updater only needs the lastuse stats from the
cached counter, the fix is to use a dedicated lastuse query call that
returns the lastuse value without synching between the cached stats and
the last saved stats.

Fixes: f6dfb4c3f2 ("net/mlx5e: Update neighbour 'used' state using HW flow rules counters")
Signed-off-by: Ariel Levkovich <lariel@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-08-09 17:52:33 +02:00
..
appletalk
arcnet
bonding bonding: validate ip header before check IPPROTO_IGMP 2019-07-26 09:14:15 +02:00
caif caif-hsi: fix possible deadlock in cfhsi_exit_module() 2019-07-28 08:29:23 +02:00
can can: m_can: implement errata "Needless activation of MRAF irq" 2019-07-14 08:11:07 +02:00
dsa net: dsa: mv88e6xxx: wait after reset deactivation 2019-07-28 08:29:24 +02:00
ethernet net/mlx5e: Prevent encap flow counter update async to user query 2019-08-09 17:52:33 +02:00
fddi
fjes
hamradio
hippi
hyperv hv_netvsc: Fix extra rcu_read_unlock in netvsc_recv_callback() 2019-07-28 08:29:23 +02:00
ieee802154 net: ieee802154: fix missing checks for regmap_update_bits 2019-05-25 18:23:43 +02:00
ipvlan net: ipvlan: Fix ipvlan device tso disabled while NETIF_F_IP_CSUM is set 2019-06-25 11:35:58 +08:00
netdevsim
phy net: phylink: Fix flow control for fixed-link 2019-08-09 17:52:31 +02:00
plip
ppp ppp: mppe: Add softdep to arc4 2019-07-21 09:03:07 +02:00
slip slip: make slhc_free() silently accept an error pointer 2019-05-02 09:58:56 +02:00
team team: Always enable vlan tx offload 2019-07-03 13:14:47 +02:00
usb net: usb: asix: init MAC address buffers 2019-07-26 09:14:15 +02:00
vmxnet3
wan
wimax
wireless ath10k: Change the warning message string 2019-08-04 09:30:53 +02:00
xen-netback xen-netback: fix occasional leak of grant ref mappings under memory pressure 2019-03-10 07:17:19 +01:00
dummy.c
eql.c
geneve.c geneve: correctly handle ipv6.disable module parameter 2019-03-10 07:17:17 +01:00
gtp.c gtp: fix use-after-free in gtp_newlink() 2019-07-26 09:14:17 +02:00
ifb.c
Kconfig gtp: change NET_UDP_TUNNEL dependency to select 2019-04-03 06:26:15 +02:00
LICENSE.SRC
loopback.c
macsec.c macsec: fix checksumming after decryption 2019-07-28 08:29:26 +02:00
macvlan.c
macvtap.c
Makefile net: Always descend into dsa/ 2019-05-25 18:23:19 +02:00
mdio.c
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c net: thunderbolt: Unregister ThunderboltIP protocol handler when suspending 2019-06-15 11:54:07 +02:00
tun.c tun: mark small packets as owned by the tap sock 2019-08-09 17:52:33 +02:00
veth.c
virtio_net.c
vrf.c vrf: make sure skb->data contains ip header to make routing 2019-07-28 08:29:26 +02:00
vsockmon.c
vxlan.c vxlan: Don't call gro_cells_destroy() before device is unregistered 2019-04-03 06:26:18 +02:00
xen-netfront.c