Message ID | 20240604221327.299184-5-jesse.brandeburg@intel.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | ice: add standard stats | expand |
> 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> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@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@marvell.com>
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 = {