mirror_ubuntu-kernels/drivers/net/ethernet
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
..
3com networking changes for the 5.10 merge window 2020-10-15 18:42:13 -07:00
8390 lib8390: Use netif_msg_init to initialize msg_enable bits 2020-10-01 19:08:46 -07:00
adaptec
aeroflex
agere
alacritech
allwinner net: allwinner: remove redundant irqsave and irqrestore in hardIRQ 2020-09-23 17:33:52 -07:00
alteon net: alteon: convert tasklets to use new tasklet_setup() API 2020-09-14 13:02:37 -07:00
altera
amazon drivers/net/ethernet: remove incorrectly formatted doc 2020-09-25 16:29:00 -07:00
amd networking changes for the 5.10 merge window 2020-10-15 18:42:13 -07:00
apm
apple
aquantia net: remove unneeded break 2020-10-20 10:28:21 -07:00
arc drivers/net/ethernet: add some basic kdoc tags 2020-09-25 16:29:00 -07:00
atheros net: atheros: Remove WARN_ON(in_interrupt()) 2020-09-29 14:02:53 -07:00
aurora
broadcom net: b44: fix error return code in b44_init_one() 2020-11-17 10:50:28 -08:00
brocade net: bna: Use fallthrough pseudo-keyword 2020-10-03 17:33:23 -07:00
cadence cadence: force nonlinear buffers to be cloned 2020-10-31 17:01:10 -07:00
calxeda drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
cavium net: thunderx: Use struct_size() helper in kmalloc() 2020-10-10 10:34:03 -07:00
chelsio ch_ktls: stop the txq if reaches threshold 2020-11-11 16:30:38 -08:00
cirrus
cisco net: remove unneeded break 2020-10-20 10:28:21 -07:00
cortina drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
davicom
dec drivers/net/ethernet: clean up unused assignments 2020-09-25 16:29:00 -07:00
dlink net: sundance: convert tasklets to use new tasklet_setup() API 2020-09-14 13:02:37 -07:00
emulex
ezchip
faraday net: ftgmac100: Fix crash when removing driver 2020-11-17 10:59:03 -08:00
freescale enetc: Workaround for MDIO register access issue 2020-11-17 12:12:12 -08:00
fujitsu
google gve: Replace zero-length array with flexible-array member 2020-10-30 16:57:41 -05:00
hisilicon net: hns3: Clear the CMDQ registers before unmapping BAR region 2020-10-26 20:25:04 -07:00
huawei Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-10-05 18:40:01 -07:00
i825xx lib82596: convert to dma_alloc_noncoherent 2020-09-25 06:20:45 +02:00
ibm powerpc/vnic: Extend "failover pending" window 2020-11-02 16:54:04 -08:00
intel igc: Fix returning wrong statistics 2020-11-10 15:03:14 -08:00
marvell net: mvneta: fix possible memory leak in mvneta_swbm_add_rx_fragment 2020-11-16 16:30:50 -08:00
mediatek net: ethernet: mtk-star-emac: fix error return code in mtk_star_enable() 2020-11-12 17:58:37 -08:00
mellanox net/mlx5e: Fix incorrect access of RCU-protected xdp_prog 2020-11-05 12:17:06 -08:00
micrel net: ksz884x: Use fallthrough pseudo-keyword 2020-10-03 17:33:23 -07:00
microchip lan743x: prevent entire kernel HANG on open, for some platforms 2020-11-14 15:25:12 -08:00
moxa
mscc net: mscc: ocelot: remove duplicate ocelot_port_dev_check 2020-10-13 17:04:43 -07:00
myricom net: remove napi_hash_del() from driver-facing API 2020-09-10 13:08:46 -07:00
natsemi net: natsemi: Replace in_interrupt() usage. 2020-09-29 14:02:54 -07:00
neterion net: vxge: Remove in_interrupt() conditionals 2020-09-29 14:02:54 -07:00
netronome devlink: convert flash_update to use params structure 2020-09-25 17:20:57 -07:00
ni net: nixge: convert tasklets to use new tasklet_setup() API 2020-09-14 13:02:38 -07:00
nvidia
nxp
oki-semi drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
packetengines drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
pasemi
pensando ionic: check port ptr before use 2020-11-05 09:58:25 -08:00
qlogic qed: fix error return code in qed_iwarp_ll2_start() 2020-11-17 10:40:34 -08:00
qualcomm net: qualcomm: rmnet: Fix incorrect receive packet handling during cleanup 2020-11-16 16:34:49 -08:00
rdc
realtek r8169: disable hw csum for short packets on all chip versions 2020-11-07 12:14:35 -08:00
renesas ravb: Fix bit fields checking in ravb_hwtstamp_get() 2020-10-27 17:14:33 -07:00
rocker Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-10-05 18:40:01 -07:00
samsung drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
seeq sgiseeq: convert to dma_alloc_noncoherent 2020-09-25 06:20:45 +02:00
sfc sfc: move initialisation of efx->filter_sem to efx_init_struct() 2020-10-20 21:22:23 -07:00
sgi
silan net: silan: convert tasklets to use new tasklet_setup() API 2020-09-14 13:02:38 -07:00
sis drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
smsc net: smc91x: convert tasklets to use new tasklet_setup() API 2020-09-14 13:02:38 -07:00
socionext netsec: ignore 'phy-mode' device property on ACPI systems 2020-10-20 15:59:43 -07:00
stmicro net: stmmac: Use rtnl_lock/unlock on netif_set_real_num_rx_queues() call 2020-11-16 16:12:36 -08:00
sun networking changes for the 5.10 merge window 2020-10-15 18:42:13 -07:00
synopsys drivers/net/ethernet: clean up unused assignments 2020-09-25 16:29:00 -07:00
tehuti drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
ti net: ethernet: ti: cpsw: fix error return code in cpsw_probe() 2020-11-16 15:37:28 -08:00
toshiba
tundra
via Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-10-05 18:40:01 -07:00
wiznet
xilinx drivers/net/ethernet: remove incorrectly formatted doc 2020-09-25 16:29:00 -07:00
xircom
xscale
dnet.c drivers/net/ethernet: clean up unused assignments 2020-09-25 16:29:00 -07:00
dnet.h
ec_bhf.c
ethoc.c drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
fealnx.c
jme.c net: jme: convert tasklets to use new tasklet_setup() API 2020-09-14 13:02:37 -07:00
jme.h
Kconfig
korina.c net: korina: cast KSEG0 address to pointer in kfree 2020-10-19 17:00:00 -07:00
lantiq_etop.c
lantiq_xrx200.c net: lantiq: Add locking for TX DMA channel 2020-09-23 18:01:03 -07:00
Makefile