diff options
| author | 2022-09-08 19:48:04 +0300 | |
|---|---|---|
| committer | 2022-09-09 10:59:12 +0100 | |
| commit | 96980ff7c2caa5baef0c684e719547a53762e82c (patch) | |
| tree | e5f702255b90a8d9d33d45de3cc4bf7543b1977a /include | |
| parent | net: dsa: felix: add definitions for the stream filter counters (diff) | |
| download | linux-dev-96980ff7c2caa5baef0c684e719547a53762e82c.tar.xz linux-dev-96980ff7c2caa5baef0c684e719547a53762e82c.zip | |
net: mscc: ocelot: make access to STAT_VIEW sleepable again
To support SPI-controlled switches in the future, access to
SYS_STAT_CFG_STAT_VIEW needs to be done outside of any spinlock
protected region, but it still needs to be serialized (by a mutex).
Split the ocelot->stats_lock spinlock into a mutex that serializes
indirect access to hardware registers (ocelot->stat_view_lock) and a
spinlock that serializes access to the u64 ocelot->stats array.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/soc/mscc/ocelot.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/include/soc/mscc/ocelot.h b/include/soc/mscc/ocelot.h index 99d679235070..e85fb3b15524 100644 --- a/include/soc/mscc/ocelot.h +++ b/include/soc/mscc/ocelot.h @@ -901,12 +901,15 @@ struct ocelot { struct ocelot_psfp_list psfp; - /* Workqueue to check statistics for overflow with its lock */ - spinlock_t stats_lock; - u64 *stats; + /* Workqueue to check statistics for overflow */ struct delayed_work stats_work; struct workqueue_struct *stats_queue; + /* Lock for serializing access to the statistics array */ + spinlock_t stats_lock; + u64 *stats; + /* Lock for serializing indirect access to STAT_VIEW registers */ + struct mutex stat_view_lock; /* Lock for serializing access to the MAC table */ struct mutex mact_lock; /* Lock for serializing forwarding domain changes */ |
