net: phy: aquantia: do not return an error on clearing pending IRQs
authorIoana Ciornei <ioana.ciornei@nxp.com>
Mon, 9 Nov 2020 15:46:01 +0000 (17:46 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 11 Nov 2020 22:09:54 +0000 (14:09 -0800)
The referenced commit added in .config_intr() the part of code which upon
configuration of the IRQ state it also clears up any pending IRQ. If
there were actually pending IRQs, a read on the IRQ status register will
return something non zero. This should not result in the callback
returning an error.

Fix this by returning an error only when the result of the
phy_read_mmd() is negative.

Fixes: e11ef96d44f1 ("net: phy: aquantia: remove the use of .ack_interrupt()")
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Tested-by: Camelia Groza <camelia.groza@nxp.com>
Link: https://lore.kernel.org/r/20201109154601.3812574-1-ciorneiioana@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/aquantia_main.c

index 345f70f9d39be4e102b734a6a408826a6f2d2b98..968dd43a2b1e00268dd48427511d5e574f33a9d1 100644 (file)
@@ -250,7 +250,7 @@ static int aqr_config_intr(struct phy_device *phydev)
        if (en) {
                /* Clear any pending interrupts before enabling them */
                err = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_TX_VEND_INT_STATUS2);
-               if (err)
+               if (err < 0)
                        return err;
        }
 
@@ -273,7 +273,7 @@ static int aqr_config_intr(struct phy_device *phydev)
        if (!en) {
                /* Clear any pending interrupts after we have disabled them */
                err = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_TX_VEND_INT_STATUS2);
-               if (err)
+               if (err < 0)
                        return err;
        }