[Intel-wired-lan] [PATCH iwl-next v1 4/5] ice: implement transmit hardware timestamp statistics

Hariprasad Kelam hkelam at marvell.com
Thu Jun 6 09:42:05 UTC 2024


> 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 at intel.com>
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg at intel.com>
> ---
> 
> $ sudo ethtool -I -T eth0
> Time stamping parameters for eth0:
> Capabilities:
>         hardware-transmit
>         software-transmit
>         hardware-receive
>         software-receive
>         software-system-clock
>         hardware-raw-clock
> PTP Hardware Clock: 0
> Hardware Transmit Timestamp Modes:
>         off
>         on
> Hardware Receive Filter Modes:
>         none
>         all
> Statistics:
>   tx_pkts: 17
>   tx_lost: 0
>   tx_err: 0
> ---
>  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 6f0a857f55c9..97a7a0632a1d 100644
> --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
> +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
> @@ -4357,6 +4357,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; }
> +
>  static const struct ethtool_ops ice_ethtool_ops = {
>  	.cap_rss_ctx_supported  = true,
>  	.supported_coalesce_params = ETHTOOL_COALESCE_USECS | @@ -
> 4407,6 +4424,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,
>  };
> 
>  static const struct ethtool_ops ice_ethtool_safe_mode_ops = {
> --
> 2.43.0
> 
Reviewed-by: Hariprasad Kelam <hkelam at marvell.com>


More information about the Intel-wired-lan mailing list