• Andrew Lunn's avatar
    net: ethernet: fec: Replace interrupt driven MDIO with polled IO · f166f890
    Andrew Lunn authored
    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: default avatarChris Heally <cphealy@gmail.com>
    Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f166f890
fec_main.c 101 KB