mirror_ubuntu-kernels/drivers/net/ethernet/freescale
Alex Marginean fd5736bf9f enetc: Workaround for MDIO register access issue
Due to a hardware issue, an access to MDIO registers
that is concurrent with other ENETC register accesses
may lead to the MDIO access being dropped or corrupted.
The workaround introduces locking for all register accesses
to the ENETC register space.  To reduce performance impact,
a readers-writers locking scheme has been implemented.
The writer in this case is the MDIO access code (irrelevant
whether that MDIO access is a register read or write), and
the reader is any access code to non-MDIO ENETC registers.
Also, the datapath functions acquire the read lock fewer times
and use _hot accessors.  All the rest of the code uses the _wa
accessors which lock every register access.
The commit introducing MDIO support is -
commit ebfcb23d62 ("enetc: Add ENETC PF level external MDIO support")
but due to subsequent refactoring this patch is applicable on
top of a later commit.

Fixes: 6517798dd3 ("enetc: Make MDIO accessors more generic and export to include/linux/fsl")
Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Link: https://lore.kernel.org/r/20201112182608.26177-1-claudiu.manoil@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2020-11-17 12:12:12 -08:00
..
dpaa dpaa_eth: fix the RX headroom size alignment 2020-11-02 11:21:31 -08:00
dpaa2 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-10-05 18:40:01 -07:00
enetc enetc: Workaround for MDIO register access issue 2020-11-17 12:12:12 -08:00
fman drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
fs_enet fs_enet: Avoid comma separated statements 2020-08-25 07:54:19 -07:00
fec_main.c net: fec: Fix reference count leak in fec series ops 2020-11-16 09:37:01 -08:00
fec_mpc52xx_phy.c
fec_mpc52xx.c net: fec_mpc52xx: Replace in_interrupt() usage 2020-09-29 14:02:54 -07:00
fec_mpc52xx.h
fec_ptp.c drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
fec.h net: fec: fix MDIO probing for some FEC hardware blocks 2020-10-30 08:24:12 -07:00
fsl_pq_mdio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gianfar_ethtool.c net: gianfar: reject unsupported coalescing params 2020-03-12 11:32:35 -07:00
gianfar.c gianfar: Account for Tx PTP timestamp in the skb headroom 2020-10-30 09:36:01 -07:00
gianfar.h net/freescale: Clean drivers from static versions 2020-03-03 17:54:55 -08:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile net: dsa: felix: fix link error 2020-01-08 16:05:54 -08:00
ucc_geth_ethtool.c net/freescale: Don't set zero if FW not-available in ucc_geth 2020-03-03 17:54:55 -08:00
ucc_geth.c net: ucc_geth: Drop extraneous parentheses in comparison 2020-10-23 18:44:06 -07:00
ucc_geth.h net/freescale: Clean drivers from static versions 2020-03-03 17:54:55 -08:00
xgmac_mdio.c net/fsl: quieten expected MDIO access failures 2020-09-24 20:13:26 -07:00