linux/include/soc/mscc
Vladimir Oltean 960ec92774 net: mscc: ocelot: serialize access to the injection/extraction groups
[ Upstream commit c5e12ac3be ]

As explained by Horatiu Vultur in commit 603ead9658 ("net: sparx5: Add
spinlock for frame transmission from CPU") which is for a similar
hardware design, multiple CPUs can simultaneously perform injection
or extraction. There are only 2 register groups for injection and 2
for extraction, and the driver only uses one of each. So we'd better
serialize access using spin locks, otherwise frame corruption is
possible.

Note that unlike in sparx5, FDMA in ocelot does not have this issue
because struct ocelot_fdma_tx_ring already contains an xmit_lock.

I guess this is mostly a problem for NXP LS1028A, as that is dual core.
I don't think VSC7514 is. So I'm blaming the commit where LS1028A (aka
the felix DSA driver) started using register-based packet injection and
extraction.

Fixes: 0a6f17c6ae ("net: dsa: tag_ocelot_8021q: add support for PTP timestamping")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2024-08-29 17:30:43 +02:00
..
ocelot.h net: mscc: ocelot: serialize access to the injection/extraction groups 2024-08-29 17:30:43 +02:00
ocelot_ana.h net: dsa: felix: support psfp filter on vsc9959 2021-11-18 12:07:24 +00:00
ocelot_dev.h net: mscc: ocelot: convert port registers to regmap 2020-07-13 17:40:01 -07:00
ocelot_hsio.h net: mscc: ocelot: simplify register access for PLL5 configuration 2018-10-05 14:36:44 -07:00
ocelot_ptp.h net: mscc: ocelot: avoid overflowing the PTP timestamp FIFO 2021-10-12 17:35:17 -07:00
ocelot_qsys.h net: mscc: ocelot: add ops for decoding watermark threshold and occupancy 2021-01-15 20:02:34 -08:00
ocelot_sys.h net: mscc: ocelot: convert SYS_PAUSE_CFG register access to regfield 2020-07-13 17:40:02 -07:00
ocelot_vcap.h net: dsa: felix: tag_8021q preparation for multiple CPU ports 2022-05-23 10:39:55 +01:00
vsc7514_regs.h net: ocelot: fix missed include in the vsc7514_regs.h file 2021-12-10 19:52:10 -08:00