mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-07 22:34:18 +08:00
fd5736bf9f
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 - commitebfcb23d62
("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>
58 lines
1.9 KiB
Plaintext
58 lines
1.9 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
config FSL_ENETC
|
|
tristate "ENETC PF driver"
|
|
depends on PCI && PCI_MSI
|
|
select FSL_ENETC_MDIO
|
|
select PHYLINK
|
|
select PCS_LYNX
|
|
select DIMLIB
|
|
help
|
|
This driver supports NXP ENETC gigabit ethernet controller PCIe
|
|
physical function (PF) devices, managing ENETC Ports at a privileged
|
|
level.
|
|
|
|
If compiled as module (M), the module name is fsl-enetc.
|
|
|
|
config FSL_ENETC_VF
|
|
tristate "ENETC VF driver"
|
|
depends on PCI && PCI_MSI
|
|
select FSL_ENETC_MDIO
|
|
select PHYLINK
|
|
select DIMLIB
|
|
help
|
|
This driver supports NXP ENETC gigabit ethernet controller PCIe
|
|
virtual function (VF) devices enabled by the ENETC PF driver.
|
|
|
|
If compiled as module (M), the module name is fsl-enetc-vf.
|
|
|
|
config FSL_ENETC_MDIO
|
|
tristate "ENETC MDIO driver"
|
|
depends on PCI
|
|
help
|
|
This driver supports NXP ENETC Central MDIO controller as a PCIe
|
|
physical function (PF) device.
|
|
|
|
If compiled as module (M), the module name is fsl-enetc-mdio.
|
|
|
|
config FSL_ENETC_PTP_CLOCK
|
|
tristate "ENETC PTP clock driver"
|
|
depends on PTP_1588_CLOCK_QORIQ && (FSL_ENETC || FSL_ENETC_VF)
|
|
default y
|
|
help
|
|
This driver adds support for using the ENETC 1588 timer
|
|
as a PTP clock. This clock is only useful if your PTP
|
|
programs are getting hardware time stamps on the PTP Ethernet
|
|
packets using the SO_TIMESTAMPING API.
|
|
|
|
If compiled as module (M), the module name is fsl-enetc-ptp.
|
|
|
|
config FSL_ENETC_QOS
|
|
bool "ENETC hardware Time-sensitive Network support"
|
|
depends on (FSL_ENETC || FSL_ENETC_VF) && (NET_SCH_TAPRIO || NET_SCH_CBS)
|
|
help
|
|
There are Time-Sensitive Network(TSN) capabilities(802.1Qbv/802.1Qci
|
|
/802.1Qbu etc.) supported by ENETC. These TSN capabilities can be set
|
|
enable/disable from user space via Qos commands(tc). In the kernel
|
|
side, it can be loaded by Qos driver. Currently, it is only support
|
|
taprio(802.1Qbv) and Credit Based Shaper(802.1Qbu).
|