WSL2-Linux-Kernel/drivers/net/ethernet/freescale
Andrew Lunn f166f890c8 net: ethernet: fec: Replace interrupt driven MDIO with polled IO
Measurements of the MDIO bus have shown that driving the MDIO bus
using interrupts is slow. Back to back MDIO transactions take about
90us, with 25us spent performing the transaction, and the remainder of
the time the bus is idle.

Replacing the completion interrupt with polled IO results in back to
back transactions of 40us. The polling loop waiting for the hardware
to complete the transaction takes around 28us. Which suggests
interrupt handling has an overhead of 50us, and polled IO nearly
halves this overhead, and doubles the MDIO performance.

Care has to be taken when setting the MII_SPEED register, or it can
trigger an MII event> That then upsets the polling, due to an
unexpected pending event.

Suggested-by: Chris Heally <cphealy@gmail.com>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-05-02 16:41:34 -07:00
..
dpaa dpaa_eth: Fix comparing pointer to 0 2020-04-30 20:26:30 -07:00
dpaa2 dpaa2-eth: fix error return code in setup_dpni() 2020-04-30 20:40:31 -07:00
enetc Merge branch 'net-smc-extent-buffer-mapping-and-port-handling' 2020-05-01 17:02:12 -07:00
fman Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-03-25 18:58:11 -07:00
fs_enet net/freescale: Clean drivers from static versions 2020-03-03 17:54:55 -08:00
Kconfig net: ethernet: freescale: make UCC_GETH explicitly depend on PPC32 2019-12-09 13:59:03 -06:00
Makefile net: dsa: felix: fix link error 2020-01-08 16:05:54 -08:00
fec.h net: ethernet: fec: Replace interrupt driven MDIO with polled IO 2020-05-02 16:41:34 -07:00
fec_main.c net: ethernet: fec: Replace interrupt driven MDIO with polled IO 2020-05-02 16:41:34 -07:00
fec_mpc52xx.c net: convert suitable network drivers to use phy_do_ioctl 2020-01-21 10:50:41 +01:00
fec_mpc52xx.h
fec_mpc52xx_phy.c mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
fec_ptp.c net: fec_ptp: Use platform_get_irq_xxx_optional() to avoid error message 2019-10-29 17:57:16 -07:00
fsl_pq_mdio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gianfar.c net/freescale: Clean drivers from static versions 2020-03-03 17:54:55 -08:00
gianfar.h net/freescale: Clean drivers from static versions 2020-03-03 17:54:55 -08:00
gianfar_ethtool.c net: gianfar: reject unsupported coalescing params 2020-03-12 11:32:35 -07:00
ucc_geth.c net/freescale: Clean drivers from static versions 2020-03-03 17:54:55 -08:00
ucc_geth.h net/freescale: Clean drivers from static versions 2020-03-03 17:54:55 -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
xgmac_mdio.c net/fsl: treat fsl,erratum-a011043 2020-01-23 21:17:13 +01:00