Re: [PATCH net v3 1/4] net: stmmac: propagate PTP init failures in stmmac_setup_ptp()
From: Lorenzo Bianconi <hidden>
Date: 2026-09-02 21:23:40
Also in:
bpf, linux-arm-kernel
Hi,
Hi Maxime, thx for the review.
On 9/2/26 22:15, Lorenzo Bianconi wrote:quoted
stmmac_setup_ptp() returns void and swallows both PTP setup errors: the PTP reference clock enable and stmmac_init_timestamping() failures are logged but never propagated. When they fail, the MAC system time counter is left in its post-reset, non-running state, while the driver keeps operating as if timestamping were up. This matters for the upcoming taprio offload re-apply, which derives the EST base time from the hardware timestamp counter: arming the gate list against a non-advancing time base would leave the schedule permanently stuck. Make stmmac_setup_ptp() return an error code. Fixes: 92ba6888510c ("stmmac: add the support for PTP hw clock driver") Fixes: 0ad2be79f254 ("net: stmmac: Balance PTP reference clock enable/disable") Signed-off-by: Lorenzo Bianconi <redacted>nice fix, this isn't the first time we have issues because ptp init silently failed :(quoted
--- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 46 ++++++++++++++++------- 1 file changed, 33 insertions(+), 13 deletions(-)diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index d576059c04df..47295845371a 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c@@ -937,18 +937,27 @@ static int stmmac_init_timestamping(struct stmmac_priv *priv) return 0; } -static void stmmac_setup_ptp(struct stmmac_priv *priv) +static int stmmac_setup_ptp(struct stmmac_priv *priv) { int ret; ret = clk_prepare_enable(priv->plat->clk_ptp_ref); - if (ret < 0) + if (ret < 0) { netdev_warn(priv->dev, "failed to enable PTP reference clock: %pe\n", ERR_PTR(ret)); + return ret; + } + + ret = stmmac_init_timestamping(priv); + if (ret) { + clk_disable_unprepare(priv->plat->clk_ptp_ref); + return ret; + }This can legitimately fail with -EOPNOTSUPP, we musn't failt the whole open sequence in this case.
ops, right. I guess we should just skip -EOPNOTSUPP in this case, or do you prefer to always not report the error from stmmac_init_timestamping()? Regards, Lorenzo
Maxime
Attachments
- signature.asc [application/pgp-signature] 228 bytes