> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf
> Of Jacob Keller
> Sent: Tuesday, September 16, 2025 9:15 PM
> To: Brandeburg, Jesse <[email protected]>; Jakub Kicinski
> <[email protected]>; Hariprasad Kelam <[email protected]>; Simon Horman
> <[email protected]>; Marcin Szycik <[email protected]>;
> Rahul Rameshbabu <[email protected]>; [email protected];
> [email protected]; [email protected];
> [email protected]; Keller, Jacob E <[email protected]>
> Cc: Brandeburg, Jesse <[email protected]>
> Subject: [Intel-wired-lan] [PATCH iwl-next v4 4/5] ice: implement
> transmit hardware timestamp statistics
> 
> From: Jesse Brandeburg <[email protected]>
> 
> 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 <[email protected]>
> Reviewed-by: Jakub Kicinski <[email protected]>
> Reviewed-by: Hariprasad Kelam <[email protected]>
> Reviewed-by: Simon Horman <[email protected]>
> Signed-off-by: Jesse Brandeburg <[email protected]>
> Signed-off-by: Jacob Keller <[email protected]>
> ---
>  drivers/net/ethernet/intel/ice/ice_ethtool.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c
> b/drivers/net/ethernet/intel/ice/ice_ethtool.c
> index 3d99c4a1e287..f8bb2d55b28c 100644
> --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
> +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
> @@ -4730,6 +4730,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)
> 
> @@ -4816,6 +4833,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,
> 
> --
> 2.51.0.rc1.197.g6d975e95c9d7


Reviewed-by: Aleksandr Loktionov <[email protected]>

Reply via email to