]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bnxt_en: Fix PTP PPS setting bug
authorKeegan Freyhof <keegan.freyhof@broadcom.com>
Fri, 31 Jul 2026 19:09:37 +0000 (12:09 -0700)
committerJakub Kicinski <kuba@kernel.org>
Wed, 5 Aug 2026 02:54:33 +0000 (19:54 -0700)
The existing driver logic is always turning on PTP_CLK_REQ_PPS
regardless of the "on" parameter passed to bnxt_ptp_enable().
During shutdown, PTP_CLK_REQ_PPS may be turned off and this
bug will do the opposite and may trigger a PCIe PTM request TLP.
On some systems this can trigger a PCIe AER.

Fix it by properly configuring PTP_CLK_REQ_PPS based on the "on"
parameter.

Fixes: 9e518f25802c ("bnxt_en: 1PPS functions to configure TSIO pins")
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Keegan Freyhof <keegan.freyhof@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Link: https://patch.msgid.link/20260731190937.807270-6-michael.chan@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c

index 5d41dc1bc7820935cab0d4dacc5d460ba225928a..b89293dfd2d1e3411e3e3466e2e121a753f9a4be 100644 (file)
@@ -495,12 +495,15 @@ static int bnxt_ptp_enable(struct ptp_clock_info *ptp_info,
                return rc;
        case PTP_CLK_REQ_PPS:
                /* Configure PHC PPS IN */
-               rc = bnxt_ptp_cfg_pin(bp, 0, BNXT_PPS_PIN_PPS_IN);
+               pin_id = 0;
+               if (!on)
+                       break;
+               rc = bnxt_ptp_cfg_pin(bp, pin_id, BNXT_PPS_PIN_PPS_IN);
                if (rc)
                        return rc;
                rc = bnxt_ptp_cfg_event(bp, BNXT_PPS_EVENT_INTERNAL);
                if (!rc)
-                       ptp->pps_info.pins[0].event = BNXT_PPS_EVENT_INTERNAL;
+                       ptp->pps_info.pins[pin_id].event = BNXT_PPS_EVENT_INTERNAL;
                return rc;
        default:
                netdev_err(ptp->bp->dev, "Unrecognized PIN function\n");