• Horatiu Vultur's avatar
    net: phy: micrel: Change handler interrupt for lan8814 · 7abd92a5
    Horatiu Vultur authored
    The lan8814 represents a package of 4 PHYs. All of them are sharing the
    same interrupt line. So when a link was going down/up or a frame was
    timestamped, then the interrupt handler of all the PHYs was called.
    Which is all fine and expected but the problem is the way the handler
    interrupt works.
    Basically if one of the PHYs timestamp a frame, then all the other 3
    PHYs were polling the status of the interrupt until that PHY actually
    cleared the interrupt by reading the timestamp.
    The reason of polling was in case another PHY was also timestamping a
    frame at the same time, it could miss this interrupt. But this is not
    the right approach, because it is the interrupt controller who needs to
    call the interrupt handlers again if the interrupt line is still
    active.
    Therefore change this such when the interrupt handler is called check
    only if the interrupt is for itself, otherwise just exit. In this way
    save CPU usage.
    Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
    Link: https://lore.kernel.org/r/20230104194218.3785229-1-horatiu.vultur@microchip.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    7abd92a5
micrel.c 90.5 KB