[PATCH net-next 3/4] net: macb: Disable one-step mode when TX timestamping is off

From: Kim Wooseok via B4 Relay

Date: Tue Sep 22 2026 - 05:13:42 EST


From: Kim Wooseok <5mghybrid@xxxxxxxxx>

Switching from HWTSTAMP_TX_ONESTEP_SYNC to HWTSTAMP_TX_OFF turns off
descriptor timestamping, but leaves NCR.OSSMODE set, so one-step mode
remains enabled.

Update OSSMODE for every accepted TX mode and set it only for
HWTSTAMP_TX_ONESTEP_SYNC. This also clears the previous one-step setting
when switching to OFF. Since the update mask now always includes
OSSMODE, drop the check for an empty mask.

Fixes: ab91f0a9b5f4 ("net: macb: Add hardware PTP support")
Assisted-by: GPT-6 Astra
Signed-off-by: Kim Wooseok <5mghybrid@xxxxxxxxx>
---
drivers/net/ethernet/cadence/macb_ptp.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/cadence/macb_ptp.c b/drivers/net/ethernet/cadence/macb_ptp.c
index b6d17fef4..6376b6631 100644
--- a/drivers/net/ethernet/cadence/macb_ptp.c
+++ b/drivers/net/ethernet/cadence/macb_ptp.c
@@ -390,7 +390,7 @@ int gem_set_hwtst(struct net_device *netdev,
struct kernel_hwtstamp_config *tstamp_config,
struct netlink_ext_ack *extack)
{
- u32 ncr_mask = 0;
+ u32 ncr_mask = MACB_BIT(OSSMODE);
enum macb_bd_control tx_bd_control = TSTAMP_DISABLED;
enum macb_bd_control rx_bd_control = TSTAMP_DISABLED;
int rx_filter = tstamp_config->rx_filter;
@@ -409,7 +409,6 @@ int gem_set_hwtst(struct net_device *netdev,
ncr_bits |= MACB_BIT(OSSMODE);
fallthrough;
case HWTSTAMP_TX_ON:
- ncr_mask |= MACB_BIT(OSSMODE);
tx_bd_control = TSTAMP_ALL_FRAMES;
break;
default:
@@ -445,11 +444,9 @@ int gem_set_hwtst(struct net_device *netdev,
}

spin_lock_irqsave(&bp->lock, flags);
- if (ncr_mask) {
- regval = macb_readl(bp, NCR);
- regval = (regval & ~ncr_mask) | ncr_bits;
- macb_writel(bp, NCR, regval);
- }
+ regval = macb_readl(bp, NCR);
+ regval = (regval & ~ncr_mask) | ncr_bits;
+ macb_writel(bp, NCR, regval);

gem_writel(bp, TXBDCTRL, GEM_BF(TXTSMODE, tx_bd_control));
gem_writel(bp, RXBDCTRL, GEM_BF(RXTSMODE, rx_bd_control));

--
2.53.0