Message ID | 20201109154601.3812574-1-ciorneiioana@gmail.com |
---|---|
State | New |
Headers | show |
Series | [net-next] net: phy: aquantia: do not return an error on clearing pending IRQs | expand |
> -----Original Message----- > From: Ioana Ciornei <ciorneiioana@gmail.com> > Sent: Monday, November 9, 2020 17:46 > To: kuba@kernel.org; netdev@vger.kernel.org > Cc: Ioana Ciornei <ioana.ciornei@nxp.com> > Subject: [PATCH net-next] net: phy: aquantia: do not return an error on > clearing pending IRQs > > From: Ioana Ciornei <ioana.ciornei@nxp.com> > > 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> I ran into this issue recently. Thanks for the fix. Tested-by: Camelia Groza <camelia.groza@nxp.com>
On Mon, 9 Nov 2020 17:46:01 +0200 Ioana Ciornei wrote: > From: Ioana Ciornei <ioana.ciornei@nxp.com> > > 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> Applied, thanks!
diff --git a/drivers/net/phy/aquantia_main.c b/drivers/net/phy/aquantia_main.c index 345f70f9d39b..968dd43a2b1e 100644 --- a/drivers/net/phy/aquantia_main.c +++ b/drivers/net/phy/aquantia_main.c @@ -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; }