]> git.baikalelectronics.ru Git - kernel.git/commit
net: dsa: felix: fix race between reading PSFP stats and port stats
authorVladimir Oltean <vladimir.oltean@nxp.com>
Wed, 29 Jun 2022 18:30:07 +0000 (21:30 +0300)
committerJakub Kicinski <kuba@kernel.org>
Thu, 30 Jun 2022 18:37:09 +0000 (11:37 -0700)
commit0f1571ab85bed6f1cffca08b45809596f3295913
treee16726f5048fb876ce120bf627d7c07cb6d98ea1
parent64d7a384589ebc7e117fd27bbb769bdab1aabf61
net: dsa: felix: fix race between reading PSFP stats and port stats

Both PSFP stats and the port stats read by ocelot_check_stats_work() are
indirectly read through the same mechanism - write to STAT_CFG:STAT_VIEW,
read from SYS:STAT:CNT[n].

It's just that for port stats, we write STAT_VIEW with the index of the
port, and for PSFP stats, we write STAT_VIEW with the filter index.

So if we allow them to run concurrently, ocelot_check_stats_work() may
change the view from vsc9959_psfp_counters_get(), and vice versa.

Fixes: fa5916fb5652 ("net: dsa: felix: support psfp filter on vsc9959")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://lore.kernel.org/r/20220629183007.3808130-1-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/ocelot/felix_vsc9959.c