diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2020-03-01 23:36:09 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-03-02 06:04:19 +0300 |
commit | 249bc9744e165abe74ae326f43e9d70bad54c3b7 (patch) | |
tree | a26daf322f9ba04fe8052c00fca022b1cdf1a650 /include/linux/phy.h | |
parent | 52c0d4e306ca0261a896f5e2ad823112195b7f4b (diff) | |
download | linux-249bc9744e165abe74ae326f43e9d70bad54c3b7.tar.xz |
net: phy: avoid clearing PHY interrupts twice in irq handler
On all PHY drivers that implement did_interrupt() reading the interrupt
status bits clears them. This means we may loose an interrupt that
is triggered between calling did_interrupt() and phy_clear_interrupt().
As part of the fix make it a requirement that did_interrupt() clears
the interrupt.
The Fixes tag refers to the first commit where the patch applies
cleanly.
Fixes: 49644e68f472 ("net: phy: add callback for custom interrupt handler to struct phy_driver")
Reported-by: Michael Walle <michael@walle.cc>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/phy.h')
-rw-r--r-- | include/linux/phy.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/phy.h b/include/linux/phy.h index c570e162e05e..22f5e763e894 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -557,6 +557,7 @@ struct phy_driver { /* * Checks if the PHY generated an interrupt. * For multi-PHY devices with shared PHY interrupt pin + * Set interrupt bits have to be cleared. */ int (*did_interrupt)(struct phy_device *phydev); |