On Sat, Oct 24, 2020 at 07:09:53PM +0100, Russell King - ARM Linux admin wrote: > On Sat, Oct 24, 2020 at 07:17:05PM +0200, Andrew Lunn wrote: > > > - Every PHY driver gains a .handle_interrupt() implementation that, for > > > the most part, would look like below: > > > > > > irq_status = phy_read(phydev, INTR_STATUS); > > > if (irq_status < 0) { > > > phy_error(phydev); > > > return IRQ_NONE; > > > } > > > > > > if (irq_status == 0) > > > return IRQ_NONE; > > > > > > phy_trigger_machine(phydev); > > > > > > return IRQ_HANDLED; > > > > Hi Ioana > > > > It looks like phy_trigger_machine(phydev) could be left in the core, > > phy_interrupt(). It just needs to look at the return code, IRQ_HANDLED > > means trigger the state machine. > > Is this appropriate for things such as the existing user of > handle_interrupt - vsc8584_handle_interrupt() ?
Ah, yes, you are likely to get a lot more ptp interrupts than link up/down interrupts, and there is no point running the phy state machine after each ptp interrupt. So Ioana's structure is better. And now that phy_trigger_machine is exported, that driver can swap from phy_mac_interrupt() to phy_trigger_machine(). Andrew