diff options
Diffstat (limited to 'include/linux/ethtool.h')
| -rw-r--r-- | include/linux/ethtool.h | 27 | 
1 files changed, 26 insertions, 1 deletions
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index 9901e563f706..6fd9107d3cc0 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h @@ -480,6 +480,26 @@ struct ethtool_rmon_stats {  	);  }; +/** + * struct ethtool_ts_stats - HW timestamping statistics + * @pkts: Number of packets successfully timestamped by the hardware. + * @lost: Number of hardware timestamping requests where the timestamping + *	information from the hardware never arrived for submission with + *	the skb. + * @err: Number of arbitrary timestamp generation error events that the + *	hardware encountered, exclusive of @lost statistics. Cases such + *	as resource exhaustion, unavailability, firmware errors, and + *	detected illogical timestamp values not submitted with the skb + *	are inclusive to this counter. + */ +struct ethtool_ts_stats { +	struct_group(tx_stats, +		u64 pkts; +		u64 lost; +		u64 err; +	); +}; +  #define ETH_MODULE_EEPROM_PAGE_LEN	128  #define ETH_MODULE_MAX_I2C_ADDRESS	0x7f @@ -755,7 +775,10 @@ struct ethtool_rxfh_param {   * @get_ts_info: Get the time stamping and PTP hardware clock capabilities.   *	It may be called with RCU, or rtnl or reference on the device.   *	Drivers supporting transmit time stamps in software should set this to - *	ethtool_op_get_ts_info(). + *	ethtool_op_get_ts_info(). Drivers must not zero statistics which they + *	don't report. The stats	structure is initialized to ETHTOOL_STAT_NOT_SET + *	indicating driver does not report statistics. + * @get_ts_stats: Query the device hardware timestamping statistics.   * @get_module_info: Get the size and type of the eeprom contained within   *	a plug-in module.   * @get_module_eeprom: Get the eeprom information from the plug-in module @@ -898,6 +921,8 @@ struct ethtool_ops {  				 struct ethtool_dump *, void *);  	int	(*set_dump)(struct net_device *, struct ethtool_dump *);  	int	(*get_ts_info)(struct net_device *, struct ethtool_ts_info *); +	void	(*get_ts_stats)(struct net_device *dev, +				struct ethtool_ts_stats *ts_stats);  	int     (*get_module_info)(struct net_device *,  				   struct ethtool_modinfo *);  	int     (*get_module_eeprom)(struct net_device *,  |