]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: mvpp2: add support for hardware timestamps
authorRussell King <rmk+kernel@armlinux.org.uk>
Mon, 15 Sep 2025 12:10:18 +0000 (13:10 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 16 Sep 2025 23:30:56 +0000 (16:30 -0700)
Add support for hardware timestamps in (e.g.) the PHY by calling
skb_tx_timestamp() as close as reasonably possible to the point that
the hardware is instructed to send the queued packets.

As this also introduces software timestamping support, report those
capabilities via the .get_ts_info() method.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1uy82E-00000005Sll-0SSy@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c

index 35d1184458fdb7c5cf359bc651cb4faf7e61fb03..ab0c99aa9f9a5a9400f4f58c65c1294dd4c09090 100644 (file)
@@ -4439,6 +4439,8 @@ out:
                txq_pcpu->count += frags;
                aggr_txq->count += frags;
 
+               skb_tx_timestamp(skb);
+
                /* Enable transmit */
                wmb();
                mvpp2_aggr_txq_pend_desc_add(port, frags);
@@ -5252,14 +5254,14 @@ static int mvpp2_ethtool_get_ts_info(struct net_device *dev,
 {
        struct mvpp2_port *port = netdev_priv(dev);
 
+       ethtool_op_get_ts_info(dev, info);
        if (!port->hwtstamp)
-               return -EOPNOTSUPP;
+               return 0;
 
        info->phc_index = mvpp22_tai_ptp_clock_index(port->priv->tai);
-       info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE |
-                               SOF_TIMESTAMPING_TX_HARDWARE |
-                               SOF_TIMESTAMPING_RX_HARDWARE |
-                               SOF_TIMESTAMPING_RAW_HARDWARE;
+       info->so_timestamping |= SOF_TIMESTAMPING_TX_HARDWARE |
+                                SOF_TIMESTAMPING_RX_HARDWARE |
+                                SOF_TIMESTAMPING_RAW_HARDWARE;
        info->tx_types = BIT(HWTSTAMP_TX_OFF) |
                         BIT(HWTSTAMP_TX_ON);
        info->rx_filters = BIT(HWTSTAMP_FILTER_NONE) |