]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ice: implement transmit hardware timestamp statistics
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Fri, 17 Oct 2025 06:08:40 +0000 (23:08 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 21 Oct 2025 01:31:25 +0000 (18:31 -0700)
The kernel now has common statistics for transmit timestamps, so
implement them in the ice driver.

use via
ethtool -I -T eth0

Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Hariprasad Kelam <hkelam@marvell.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Rinitha S <sx.rinitha@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20251016-jk-iwl-next-2025-10-15-v2-11-ff3a390d9fc6@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/intel/ice/ice_ethtool.c

index d1ec7e6f12bf4d0bc6aa92a3997a1ab247c17334..75492a720c68cea31c6e70904f22a08ed9f66501 100644 (file)
@@ -4736,6 +4736,23 @@ static void ice_get_rmon_stats(struct net_device *netdev,
        *ranges = ice_rmon_ranges;
 }
 
+/* ice_get_ts_stats - provide timestamping stats
+ * @netdev: the netdevice pointer from ethtool
+ * @ts_stats: the ethtool data structure to fill in
+ */
+static void ice_get_ts_stats(struct net_device *netdev,
+                            struct ethtool_ts_stats *ts_stats)
+{
+       struct ice_pf *pf = ice_netdev_to_pf(netdev);
+       struct ice_ptp *ptp = &pf->ptp;
+
+       ts_stats->pkts = ptp->tx_hwtstamp_good;
+       ts_stats->err = ptp->tx_hwtstamp_skipped +
+                       ptp->tx_hwtstamp_flushed +
+                       ptp->tx_hwtstamp_discarded;
+       ts_stats->lost = ptp->tx_hwtstamp_timeouts;
+}
+
 #define ICE_ETHTOOL_PFR (ETH_RESET_IRQ | ETH_RESET_DMA | \
        ETH_RESET_FILTER | ETH_RESET_OFFLOAD)
 
@@ -4822,6 +4839,7 @@ static const struct ethtool_ops ice_ethtool_ops = {
        .get_eth_mac_stats      = ice_get_eth_mac_stats,
        .get_pause_stats        = ice_get_pause_stats,
        .get_rmon_stats         = ice_get_rmon_stats,
+       .get_ts_stats           = ice_get_ts_stats,
        .get_drvinfo            = ice_get_drvinfo,
        .get_regs_len           = ice_get_regs_len,
        .get_regs               = ice_get_regs,