diff options
Diffstat (limited to 'include/linux/ethtool.h')
| -rw-r--r-- | include/linux/ethtool.h | 69 | 
1 files changed, 68 insertions, 1 deletions
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index f5647b59a90..e17fa714058 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h @@ -137,6 +137,23 @@ struct ethtool_eeprom {  };  /** + * struct ethtool_modinfo - plugin module eeprom information + * @cmd: %ETHTOOL_GMODULEINFO + * @type: Standard the module information conforms to %ETH_MODULE_SFF_xxxx + * @eeprom_len: Length of the eeprom + * + * This structure is used to return the information to + * properly size memory for a subsequent call to %ETHTOOL_GMODULEEEPROM. + * The type code indicates the eeprom data format + */ +struct ethtool_modinfo { +	__u32   cmd; +	__u32   type; +	__u32   eeprom_len; +	__u32   reserved[8]; +}; + +/**   * struct ethtool_coalesce - coalescing parameters for IRQs and stats updates   * @cmd: ETHTOOL_{G,S}COALESCE   * @rx_coalesce_usecs: How many usecs to delay an RX interrupt after @@ -661,12 +678,17 @@ struct ethtool_flash {   * 	%ETHTOOL_SET_DUMP   * @version: FW version of the dump, filled in by driver   * @flag: driver dependent flag for dump setting, filled in by driver during - * 	  get and filled in by ethtool for set operation + *        get and filled in by ethtool for set operation. + *        flag must be initialized by macro ETH_FW_DUMP_DISABLE value when + *        firmware dump is disabled.   * @len: length of dump data, used as the length of the user buffer on entry to   * 	 %ETHTOOL_GET_DUMP_DATA and this is returned as dump length by driver   * 	 for %ETHTOOL_GET_DUMP_FLAG command   * @data: data collected for get dump data operation   */ + +#define ETH_FW_DUMP_DISABLE 0 +  struct ethtool_dump {  	__u32	cmd;  	__u32	version; @@ -726,6 +748,29 @@ struct ethtool_sfeatures {  	struct ethtool_set_features_block features[0];  }; +/** + * struct ethtool_ts_info - holds a device's timestamping and PHC association + * @cmd: command number = %ETHTOOL_GET_TS_INFO + * @so_timestamping: bit mask of the sum of the supported SO_TIMESTAMPING flags + * @phc_index: device index of the associated PHC, or -1 if there is none + * @tx_types: bit mask of the supported hwtstamp_tx_types enumeration values + * @rx_filters: bit mask of the supported hwtstamp_rx_filters enumeration values + * + * The bits in the 'tx_types' and 'rx_filters' fields correspond to + * the 'hwtstamp_tx_types' and 'hwtstamp_rx_filters' enumeration values, + * respectively.  For example, if the device supports HWTSTAMP_TX_ON, + * then (1 << HWTSTAMP_TX_ON) in 'tx_types' will be set. + */ +struct ethtool_ts_info { +	__u32	cmd; +	__u32	so_timestamping; +	__s32	phc_index; +	__u32	tx_types; +	__u32	tx_reserved[3]; +	__u32	rx_filters; +	__u32	rx_reserved[3]; +}; +  /*   * %ETHTOOL_SFEATURES changes features present in features[].valid to the   * values of corresponding bits in features[].requested. Bits in .requested @@ -788,6 +833,7 @@ struct net_device;  /* Some generic methods drivers may use in their ethtool_ops */  u32 ethtool_op_get_link(struct net_device *dev); +int ethtool_op_get_ts_info(struct net_device *dev, struct ethtool_ts_info *eti);  /**   * ethtool_rxfh_indir_default - get default value for RX flow hash indirection @@ -893,6 +939,12 @@ static inline u32 ethtool_rxfh_indir_default(u32 index, u32 n_rx_rings)   * 		   and flag of the device.   * @get_dump_data: Get dump data.   * @set_dump: Set dump specific flags to the device. + * @get_ts_info: Get the time stamping and PTP hardware clock capabilities. + *	Drivers supporting transmit time stamps in software should set this to + *	ethtool_op_get_ts_info(). + * @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   *   * All operations are optional (i.e. the function pointer may be set   * to %NULL) and callers must take this into account.  Callers must @@ -954,6 +1006,12 @@ struct ethtool_ops {  	int	(*get_dump_data)(struct net_device *,  				 struct ethtool_dump *, void *);  	int	(*set_dump)(struct net_device *, struct ethtool_dump *); +	int	(*get_ts_info)(struct net_device *, struct ethtool_ts_info *); +	int     (*get_module_info)(struct net_device *, +				   struct ethtool_modinfo *); +	int     (*get_module_eeprom)(struct net_device *, +				     struct ethtool_eeprom *, u8 *); +  };  #endif /* __KERNEL__ */ @@ -1028,6 +1086,9 @@ struct ethtool_ops {  #define ETHTOOL_SET_DUMP	0x0000003e /* Set dump settings */  #define ETHTOOL_GET_DUMP_FLAG	0x0000003f /* Get dump settings */  #define ETHTOOL_GET_DUMP_DATA	0x00000040 /* Get dump data */ +#define ETHTOOL_GET_TS_INFO	0x00000041 /* Get time stamping and PHC info */ +#define ETHTOOL_GMODULEINFO	0x00000042 /* Get plug-in module information */ +#define ETHTOOL_GMODULEEEPROM	0x00000043 /* Get plug-in module eeprom */  /* compatibility with older code */  #define SPARC_ETH_GSET		ETHTOOL_GSET @@ -1177,6 +1238,12 @@ struct ethtool_ops {  #define RX_CLS_LOC_FIRST	0xfffffffe  #define RX_CLS_LOC_LAST		0xfffffffd +/* EEPROM Standards for plug in modules */ +#define ETH_MODULE_SFF_8079		0x1 +#define ETH_MODULE_SFF_8079_LEN		256 +#define ETH_MODULE_SFF_8472		0x2 +#define ETH_MODULE_SFF_8472_LEN		512 +  /* Reset flags */  /* The reset() operation must clear the flags for the components which   * were actually reset.  On successful return, the flags indicate the  |