[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YILGp+LdyxsRhkb2@lunn.ch>
Date: Fri, 23 Apr 2021 15:07:51 +0200
From: Andrew Lunn <andrew@...n.ch>
To: "Radu Pirea (NXP OSS)" <radu-nicolae.pirea@....nxp.com>
Cc: hkallweit1@...il.com, linux@...linux.org.uk, davem@...emloft.net,
kuba@...nel.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] phy: nxp-c45-tja11xx: add interrupt support
> +static irqreturn_t nxp_c45_handle_interrupt(struct phy_device *phydev)
> +{
> + irqreturn_t ret = IRQ_NONE;
> + int irq;
> +
> + irq = phy_read_mmd(phydev, MDIO_MMD_VEND1, VEND1_PHY_IRQ_STATUS);
> + if (irq & PHY_IRQ_LINK_EVENT) {
> + phy_trigger_machine(phydev);
> + phy_write_mmd(phydev, MDIO_MMD_VEND1, VEND1_PHY_IRQ_ACK,
> + PHY_IRQ_LINK_EVENT);
The ordering here is interesting. Could phy_trigger_machine() cause a
second interrupt? Which you then clear without acting upon before
exiting the interrupt handler? I think you should ACK the interrupt
before calling phy_trigger_machine().
Andrew
Powered by blists - more mailing lists