]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: fec: do not register PPS event for PEROUT
authorWei Fang <wei.fang@nxp.com>
Tue, 25 Nov 2025 08:52:10 +0000 (16:52 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 27 Nov 2025 10:57:45 +0000 (11:57 +0100)
There are currently two situations that can trigger the PTP interrupt,
one is the PPS event, the other is the PEROUT event. However, the irq
handler fec_pps_interrupt() does not check the irq event type and
directly registers a PPS event into the system, but the event may be
a PEROUT event. This is incorrect because PEROUT is an output signal,
while PPS is the input of the kernel PPS system. Therefore, add a check
for the event type, if pps_enable is true, it means that the current
event is a PPS event, and then the PPS event is registered.

Fixes: 350749b909bf ("net: fec: Add support for periodic output signal of PPS")
Signed-off-by: Wei Fang <wei.fang@nxp.com>
Link: https://patch.msgid.link/20251125085210.1094306-5-wei.fang@nxp.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/freescale/fec_ptp.c

index ed5d59abeb5373e264e2cebf342ba8f0106b1238..4b7bad9a485df2a8056de6ee1155c4eede4f3ff6 100644 (file)
@@ -718,8 +718,11 @@ static irqreturn_t fec_pps_interrupt(int irq, void *dev_id)
                fep->next_counter = (fep->next_counter + fep->reload_period) &
                                fep->cc.mask;
 
-               event.type = PTP_CLOCK_PPS;
-               ptp_clock_event(fep->ptp_clock, &event);
+               if (fep->pps_enable) {
+                       event.type = PTP_CLOCK_PPS;
+                       ptp_clock_event(fep->ptp_clock, &event);
+               }
+
                return IRQ_HANDLED;
        }