ethtool: support time stamping and phc clocks
Subsystems (28)
Richard Cochran
maintainerv3 cover ethtool: support time stamping and phc clocks
Changes in V3:
- works without ethtool_ops
- does not require special privileges
- neated user space tool output
Support for SO_TIMESTAMPING of network packets and PTP Hardware Clocks has been expanding over the last year or two. In an ideal world, every host would have exactly one PTP hardware clock, and every Ethernet MAC would support SO_TIMESTAMPING on both the transmit and receive paths. However, since we do not yet have full coverage for these features, user space programs need a way to discover what a given interface supports in these two areas.
* PTP Hardware Clocks
The relationship between the network interfaces and the (possibly multiple) PHC devices is not discoverable except by knowing what hardware you have got and carefully looking into the kernel log.
* SO_TIMESTAMPING
- Receive software time stamps are implemented in the stack and thus work for all MAC hardware.
- Transmit software time stamps are only supported by a dozen drivers or so.
- Some special devices support Tx/Rx time stamping in hardware.
- None of this is discoverable except by looking into the kernel sources.
This series exposes the hardware and driver capabilities known to user space via ethtool.
Since the PHC code was first merged, this has become the number one requested new feature.
Patch number 3 applies on top of my recent two igb/phc patches. Patch number 12 applies on top of my recent e100 patch.
The new feature has been tested on the following hardware:
igb Hardware time stamping in the MAC dp83640 Hardware time stamping in the PHY r8169 Software Tx time stamping in the MAC
Thanks,
Richard
Richard Cochran (28):
phc: Add a method for obtaining the device index.
ethtool: Introduce a method for getting time stamping capabilities.
igb: Support the get_ts_info ethtool method.
dp83640: Support the get_ts_info ethtool method.
gianfar: Support the get_ts_info ethtool method.
bfin_mac: Support the get_ts_info ethtool method.
ixp4xx_eth: Support the get_ts_info ethtool method.
ethtool: Add a common function for drivers with transmit time
stamping.
ax88796: Support the get_ts_info ethtool method.
davinci_emac: Support the get_ts_info ethtool method.
dnet: Support the get_ts_info ethtool method.
e100: Support the get_ts_info ethtool method.
etherh: Support the get_ts_info ethtool method.
fec_mpc52xx: Support the get_ts_info ethtool method.
fec: Support the get_ts_info ethtool method.
fs_enet: Support the get_ts_info ethtool method.
ll_temac: Support the get_ts_info ethtool method.
macb: Support the get_ts_info ethtool method.
mv643xx_eth: Support the get_ts_info ethtool method.
pxa168_eth: Support the get_ts_info ethtool method.
r6040: Support the get_ts_info ethtool method.
r8169: Support the get_ts_info ethtool method.
smsc911x: Support the get_ts_info ethtool method.
smsc9420: Support the get_ts_info ethtool method.
stmmac: Support the get_ts_info ethtool method.
tg3: Support the get_ts_info ethtool method.
ucc_geth: Support the get_ts_info ethtool method.
usbnet: Support the get_ts_info ethtool method.
arch/arm/mach-ixp4xx/include/mach/ixp46x_ts.h | 3 + drivers/net/ethernet/8390/ax88796.c | 1 + drivers/net/ethernet/8390/etherh.c | 1 + drivers/net/ethernet/adi/bfin_mac.c | 20 +++++++ drivers/net/ethernet/broadcom/tg3.c | 1 + drivers/net/ethernet/cadence/macb.c | 1 + drivers/net/ethernet/dnet.c | 1 + drivers/net/ethernet/freescale/fec.c | 1 + drivers/net/ethernet/freescale/fec_mpc52xx.c | 1 + .../net/ethernet/freescale/fs_enet/fs_enet-main.c | 1 + drivers/net/ethernet/freescale/gianfar.h | 3 + drivers/net/ethernet/freescale/gianfar_ethtool.c | 29 ++++++++++ drivers/net/ethernet/freescale/gianfar_ptp.c | 2 + drivers/net/ethernet/freescale/ucc_geth_ethtool.c | 1 + drivers/net/ethernet/intel/e100.c | 1 + drivers/net/ethernet/intel/igb/igb_ethtool.c | 31 ++++++++++ drivers/net/ethernet/marvell/mv643xx_eth.c | 1 + drivers/net/ethernet/marvell/pxa168_eth.c | 1 + drivers/net/ethernet/rdc/r6040.c | 1 + drivers/net/ethernet/realtek/r8169.c | 1 + drivers/net/ethernet/smsc/smsc911x.c | 1 + drivers/net/ethernet/smsc/smsc9420.c | 1 + .../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 1 + drivers/net/ethernet/ti/davinci_emac.c | 1 + drivers/net/ethernet/xilinx/ll_temac_main.c | 1 + drivers/net/ethernet/xscale/ixp4xx_eth.c | 29 ++++++++++ drivers/net/phy/dp83640.c | 31 ++++++++++ drivers/net/usb/usbnet.c | 1 + drivers/ptp/ptp_clock.c | 6 ++ drivers/ptp/ptp_ixp46x.c | 3 + include/linux/ethtool.h | 29 ++++++++++ include/linux/phy.h | 3 + include/linux/ptp_clock_kernel.h | 8 +++ net/core/ethtool.c | 59 +++++++++++++++++++- 34 files changed, 273 insertions(+), 3 deletions(-)
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 1/28 phc: Add a method for obtaining the device index.
This commit adds a method that MAC drivers may call in order to find out the device number of their associated PTP Hardware Clock.
--- drivers/ptp/ptp_clock.c | 6 ++++++ include/linux/ptp_clock_kernel.h | 8 ++++++++ 2 files changed, 14 insertions(+), 0 deletions(-)
drivers/ptp/ptp_clock.c +6 -0
@@ -304,6 +304,12 @@ void ptp_clock_event(struct ptp_clock *ptp, struct ptp_clock_event *event) }EXPORT_SYMBOL (ptp_clock_event); +int ptp_clock_index (struct ptp_clock *ptp) +{ +return ptp->index; +} +EXPORT_SYMBOL (ptp_clock_index); +/* module operations */ static void __exit ptp_exit(void)
include/linux/ptp_clock_kernel.h +8 -0
@@ -136,4 +136,12 @@ struct ptp_clock_event {extern void ptp_clock_event (struct ptp_clock *ptp,struct ptp_clock_event *event); +/** +* ptp_clock_index() - obtain the device index of a PTP clock +* +* @ptp: The clock obtained from ptp_clock_register(). +*/ + +extern int ptp_clock_index (struct ptp_clock *ptp); +#endif
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 2/28 ethtool: Introduce a method for getting time stamping capabilities.
In reply to Richard CochranThis commit adds a new ethtool ioctl that exposes the SO_TIMESTAMPING capabilities of a network interface. In addition, user space programs can use this ioctl to discover the PTP Hardware Clock (PHC) device associated with the interface.
Since software receive time stamps are handled by the stack, the generic ethtool code can answer the query correctly in case the MAC or PHY drivers lack special time stamping features.
--- include/linux/ethtool.h | 28 +++++++++++++++++++++++++++ include/linux/phy.h | 3 ++ net/core/ethtool.c | 48 ++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 76 insertions(+), 3 deletions(-)
include/linux/ethtool.h +28 -0
@@ -726,6 +726,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
@@ -893,6 +916,9 @@ 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(). * * All operations are optional (i.e. the function pointer may be set * to %NULL) and callers must take this into account. Callers must
@@ -955,6 +981,7 @@ 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 *); };#endif /* __KERNEL__ */
@@ -1029,6 +1056,7 @@ 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 */ /* compatibility with older code */ #define SPARC_ETH_GSET ETHTOOL_GSET
include/linux/phy.h +3 -0
@@ -412,6 +412,9 @@ struct phy_driver {/* Clears up any memory if needed */ void (*remove)(struct phy_device *phydev); +/* Handles ethtool queries for hardware time stamping. */ +int (*ts_info)(struct phy_device *phydev,struct ethtool_ts_info *ti); +/* Handles SIOCSHWTSTAMP ioctl for hardware time stamping. */ int (*hwtstamp)(struct phy_device *phydev,struct ifreq *ifr);
net/core/ethtool.c +45 -3
80 lines not on this page · raw message
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Re: [PATCH V3 net-next 02/28] ethtool: Introduce a method for getting time stamping capabilities.
Quoted 10 lines · Richard Cochran
This commit adds a new ethtool ioctl that exposes the
SO_TIMESTAMPINGcapabilities of a network interface. In addition, user space programs can use this ioctl to discover the PTP Hardware Clock (PHC) device associated with the interface.Since software receive time stamps are handled by the stack, the generic ethtool code can answer the query correctly in case the MAC or PHY drivers lack special time stamping features.
Signed-off-by Richard Cochran <[email protected]>
Signature · 3 lines
Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.
Richard Cochran
maintainerPATCH v3 3/28 igb: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/intel/igb/igb_ethtool.c | 31 ++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-)
drivers/net/ethernet/intel/igb/igb_ethtool.c +31 -0
@@ -2182,6 +2182,36 @@ static void igb_ethtool_complete(struct net_device *netdev)pm_runtime_put (&adapter->pdev->dev); } +static int igb_ethtool_get_ts_info (struct net_device *dev, +struct ethtool_ts_info *info) +{ +struct igb_adapter *adapter =netdev_priv (dev); + + info->so_timestamping = +SOF_TIMESTAMPING_TX_HARDWARE | +SOF_TIMESTAMPING_RX_HARDWARE | +SOF_TIMESTAMPING_RAW_HARDWARE ; + +if (adapter->ptp_clock) + info->phc_index =ptp_clock_index (adapter->ptp_clock); +else + info->phc_index =-1 ; + + info->tx_types = + (1 <<HWTSTAMP_TX_OFF ) | + (1 <<HWTSTAMP_TX_ON ); + + info->rx_filters = + (1 <<HWTSTAMP_FILTER_NONE ) | + (1 <<HWTSTAMP_FILTER_ALL ) | + (1 <<HWTSTAMP_FILTER_SOME ) | + (1 <<HWTSTAMP_FILTER_PTP_V1_L4_SYNC ) | + (1 <<HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_EVENT ); + +return 0 ; +} +static const struct ethtool_ops igb_ethtool_ops = { .get_settings = igb_get_settings, .set_settings = igb_set_settings,
@@ -2210,6 +2240,7 @@ static const struct ethtool_ops igb_ethtool_ops = { .set_coalesce = igb_set_coalesce, .begin = igb_ethtool_begin, .complete = igb_ethtool_complete, + .get_ts_info = igb_ethtool_get_ts_info, };void igb_set_ethtool_ops (struct net_device *netdev)
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 4/28 dp83640: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/phy/dp83640.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-)
drivers/net/phy/dp83640.c +31 -0
@@ -1215,6 +1215,36 @@ static void dp83640_txtstamp(struct phy_device *phydev, } } +static int dp83640_ts_info (struct phy_device *dev,struct ethtool_ts_info *info) +{ +struct dp83640_private *dp83640 = dev->priv; + + info->so_timestamping = +SOF_TIMESTAMPING_TX_HARDWARE | +SOF_TIMESTAMPING_RX_HARDWARE | +SOF_TIMESTAMPING_RAW_HARDWARE ; + info->phc_index =ptp_clock_index (dp83640->clock->ptp_clock); + info->tx_types = + (1 <<HWTSTAMP_TX_OFF ) | + (1 <<HWTSTAMP_TX_ON ) | + (1 <<HWTSTAMP_TX_ONESTEP_SYNC ); + info->rx_filters = + (1 <<HWTSTAMP_FILTER_NONE ) | + (1 <<HWTSTAMP_FILTER_PTP_V1_L4_EVENT ) | + (1 <<HWTSTAMP_FILTER_PTP_V1_L4_SYNC ) | + (1 <<HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_L4_EVENT ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_L4_SYNC ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_L2_EVENT ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_L2_SYNC ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_EVENT ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_SYNC ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_DELAY_REQ ); +return 0 ; +} +static struct phy_driver dp83640_driver = { .phy_id =DP83640_PHY_ID , .phy_id_mask =0xfffffff0 ,
@@ -1225,6 +1255,7 @@ static struct phy_driver dp83640_driver = { .remove = dp83640_remove, .config_aneg = genphy_config_aneg, .read_status = genphy_read_status, + .ts_info = dp83640_ts_info, .hwtstamp = dp83640_hwtstamp, .rxtstamp = dp83640_rxtstamp, .txtstamp = dp83640_txtstamp,
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 5/28 gianfar: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/freescale/gianfar.h | 3 ++ drivers/net/ethernet/freescale/gianfar_ethtool.c | 29 ++++++++++++++++++++++ drivers/net/ethernet/freescale/gianfar_ptp.c | 2 + 3 files changed, 34 insertions(+), 0 deletions(-)
drivers/net/ethernet/freescale/gianfar.h +3 -0
@@ -1210,4 +1210,7 @@ struct filer_table { struct gfar_filer_entry fe[MAX_FILER_CACHE_IDX + 20]; }; +/* The gianfar_ptp module will set this variable */ +extern int gfar_phc_index; +#endif /* __GIANFAR_H */
drivers/net/ethernet/freescale/gianfar_ethtool.c +29 -0
@@ -1739,6 +1739,34 @@ static int gfar_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd,return ret; } +int gfar_phc_index =-1 ; + +static int gfar_get_ts_info (struct net_device *dev, +struct ethtool_ts_info *info) +{ +struct gfar_private *priv =netdev_priv (dev); + +if (!(priv->device_flags &FSL_GIANFAR_DEV_HAS_TIMER )) { + info->so_timestamping = +SOF_TIMESTAMPING_RX_SOFTWARE | +SOF_TIMESTAMPING_SOFTWARE ; + info->phc_index =-1 ; +return 0 ; + } + info->so_timestamping = +SOF_TIMESTAMPING_TX_HARDWARE | +SOF_TIMESTAMPING_RX_HARDWARE | +SOF_TIMESTAMPING_RAW_HARDWARE ; + info->phc_index = gfar_phc_index; + info->tx_types = + (1 <<HWTSTAMP_TX_OFF ) | + (1 <<HWTSTAMP_TX_ON ); + info->rx_filters = + (1 <<HWTSTAMP_FILTER_NONE ) | + (1 <<HWTSTAMP_FILTER_ALL ); +return 0 ; +} +const struct ethtool_ops gfar_ethtool_ops = { .get_settings = gfar_gsettings, .set_settings = gfar_ssettings,
@@ -1761,4 +1789,5 @@ const struct ethtool_ops gfar_ethtool_ops = {#endif .set_rxnfc = gfar_set_nfc, .get_rxnfc = gfar_get_nfc, + .get_ts_info = gfar_get_ts_info, };
drivers/net/ethernet/freescale/gianfar_ptp.c +2 -0
@@ -515,6 +515,7 @@ static int gianfar_ptp_probe(struct platform_device *dev) err =PTR_ERR (etsects->clock); goto no_clock; } + gfar_phc_clock =ptp_clock_index (etsects->clock);dev_set_drvdata (&dev->dev, etsects);
@@ -538,6 +539,7 @@ static int gianfar_ptp_remove(struct platform_device *dev)gfar_write (&etsects->regs->tmr_temask,0 );gfar_write (&etsects->regs->tmr_ctrl,0 ); + gfar_phc_clock =-1 ;ptp_clock_unregister (etsects->clock);iounmap (etsects->regs);release_resource (etsects->rsrc);
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 6/28 bfin_mac: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/adi/bfin_mac.c | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-)
drivers/net/ethernet/adi/bfin_mac.c +20 -0
@@ -548,6 +548,25 @@ static int bfin_mac_ethtool_setwol(struct net_device *dev,return 0 ; } +static int bfin_mac_ethtool_get_ts_info (struct net_device *dev, +struct ethtool_ts_info *info); +{ + info->so_timestamping = +SOF_TIMESTAMPING_TX_HARDWARE | +SOF_TIMESTAMPING_RX_HARDWARE | +SOF_TIMESTAMPING_SYS_HARDWARE ; + info->phc_index =-1 ; + info->tx_types = + (1 <<HWTSTAMP_TX_OFF ) | + (1 <<HWTSTAMP_TX_ON ); + info->rx_filters = + (1 <<HWTSTAMP_FILTER_NONE ) | + (1 <<HWTSTAMP_FILTER_PTP_V1_L4_EVENT ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_L2_EVENT ) | + (1 <<HWTSTAMP_FILTER_PTP_V2_L4_EVENT ); +return 0 ; +} +static const struct ethtool_ops bfin_mac_ethtool_ops = { .get_settings = bfin_mac_ethtool_getsettings, .set_settings = bfin_mac_ethtool_setsettings,
@@ -555,6 +574,7 @@ static const struct ethtool_ops bfin_mac_ethtool_ops = { .get_drvinfo = bfin_mac_ethtool_getdrvinfo, .get_wol = bfin_mac_ethtool_getwol, .set_wol = bfin_mac_ethtool_setwol, + .get_ts_info = bfin_mac_ethtool_get_ts_info, };/**************************************************************************/
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 7/28 ixp4xx_eth: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- arch/arm/mach-ixp4xx/include/mach/ixp46x_ts.h | 3 ++ drivers/net/ethernet/xscale/ixp4xx_eth.c | 29 +++++++++++++++++++++++++ drivers/ptp/ptp_ixp46x.c | 3 ++ 3 files changed, 35 insertions(+), 0 deletions(-)
arch/arm/mach-ixp4xx/include/mach/ixp46x_ts.h +3 -0
@@ -75,4 +75,7 @@ struct ixp46x_ts_regs {#define TX_SNAPSHOT_LOCKED (1<<0)#define RX_SNAPSHOT_LOCKED (1<<1) +/* The ptp_ixp46x module will set this variable */ +extern int ixp46x_phc_index; +#endif
drivers/net/ethernet/xscale/ixp4xx_eth.c +29 -0
@@ -1002,12 +1002,41 @@ static int ixp4xx_nway_reset(struct net_device *dev)return phy_start_aneg (port->phydev); } +int ixp46x_phc_index =-1 ; + +static int ixp4xx_get_ts_info (struct net_device *dev, +struct ethtool_ts_info *info) +{ +if (!cpu_is_ixp46x ()) { + info->so_timestamping = +SOF_TIMESTAMPING_TX_SOFTWARE | +SOF_TIMESTAMPING_RX_SOFTWARE | +SOF_TIMESTAMPING_SOFTWARE ; + info->phc_index =-1 ; +return 0 ; + } + info->so_timestamping = +SOF_TIMESTAMPING_TX_HARDWARE | +SOF_TIMESTAMPING_RX_HARDWARE | +SOF_TIMESTAMPING_RAW_HARDWARE ; + info->phc_index = ixp46x_phc_index; + info->tx_types = + (1 <<HWTSTAMP_TX_OFF ) | + (1 <<HWTSTAMP_TX_ON ); + info->rx_filters = + (1 <<HWTSTAMP_FILTER_NONE ) | + (1 <<HWTSTAMP_FILTER_PTP_V1_L4_SYNC ) | + (1 <<HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ ); +return 0 ; +} +static const struct ethtool_ops ixp4xx_ethtool_ops = { .get_drvinfo = ixp4xx_get_drvinfo, .get_settings = ixp4xx_get_settings, .set_settings = ixp4xx_set_settings, .nway_reset = ixp4xx_nway_reset, .get_link = ethtool_op_get_link, + .get_ts_info = ixp4xx_get_ts_info, };
drivers/ptp/ptp_ixp46x.c +3 -0
@@ -284,6 +284,7 @@ static void __exit ptp_ixp_exit(void) {free_irq (MASTER_IRQ , &ixp_clock);free_irq (SLAVE_IRQ , &ixp_clock); + ixp46x_phc_clock =-1 ;ptp_clock_unregister (ixp_clock.ptp_clock); }
@@ -302,6 +303,8 @@ static int __init ptp_ixp_init(void)if (IS_ERR (ixp_clock.ptp_clock))return PTR_ERR (ixp_clock.ptp_clock); + ixp46x_phc_clock =ptp_clock_index (ixp_clock.ptp_clock); +__raw_writel (DEFAULT_ADDEND , &ixp_clock.regs->addend);__raw_writel (1 , &ixp_clock.regs->trgt_lo);__raw_writel (0 , &ixp_clock.regs->trgt_hi);
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 8/28 ethtool: Add a common function for drivers with transmit time stamping.
In reply to Richard CochranCurrently, most drivers do not support transmit SO_TIMESTAMPING. For those that do support it, there is one appropriate response to the get_ts_info query. This patch adds a common function providing this response.
--- include/linux/ethtool.h | 1 + net/core/ethtool.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 0 deletions(-)
include/linux/ethtool.h +1 -0
@@ -811,6 +811,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
net/core/ethtool.c +11 -0
@@ -38,6 +38,17 @@ u32 ethtool_op_get_link(struct net_device *dev) }EXPORT_SYMBOL (ethtool_op_get_link); +int ethtool_op_get_ts_info (struct net_device *dev,struct ethtool_ts_info *info) +{ + info->so_timestamping = +SOF_TIMESTAMPING_TX_SOFTWARE | +SOF_TIMESTAMPING_RX_SOFTWARE | +SOF_TIMESTAMPING_SOFTWARE ; + info->phc_index =-1 ; +return 0 ; +} +EXPORT_SYMBOL (ethtool_op_get_ts_info); +/* Handlers for each ethtool command */ #define ETHTOOL_DEV_FEATURE_WORDS ((NETDEV_FEATURE_COUNT + 31) / 32)
Signature · 1 line
1.7.2.5
Re: [PATCH V3 net-next 08/28] ethtool: Add a common function for drivers with transmit time stamping.
Quoted 5 lines · Richard Cochran
Currently, most drivers do not support transmit
SO_TIMESTAMPING. For those that do support it, there is one appropriate response to theget_ts_infoquery. This patch adds a common function providing this response.Signed-off-by Richard Cochran <[email protected]>
Signature · 3 lines
Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.
Richard Cochran
maintainerPATCH v3 9/28 ax88796: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/8390/ax88796.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/8390/ax88796.c +1 -0
@@ -502,6 +502,7 @@ static const struct ethtool_ops ax_ethtool_ops = { .get_settings = ax_get_settings, .set_settings = ax_set_settings, .get_link = ethtool_op_get_link, + .get_ts_info = ethtool_op_get_ts_info, };#ifdef CONFIG_AX88796_93CX6
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 10/28 davinci_emac: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/ti/davinci_emac.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/ti/davinci_emac.c +1 -0
@@ -627,6 +627,7 @@ static const struct ethtool_ops ethtool_ops = { .get_link = ethtool_op_get_link, .get_coalesce = emac_get_coalesce, .set_coalesce = emac_set_coalesce, + .get_ts_info = ethtool_op_get_ts_info, };/**
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 11/28 dnet: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/dnet.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/dnet.c +1 -0
@@ -815,6 +815,7 @@ static const struct ethtool_ops dnet_ethtool_ops = { .set_settings = dnet_set_settings, .get_drvinfo = dnet_get_drvinfo, .get_link = ethtool_op_get_link, + .get_ts_info = ethtool_op_get_ts_info, };static const struct net_device_ops dnet_netdev_ops = {
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 12/28 e100: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/intel/e100.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/intel/e100.c +1 -0
@@ -2735,6 +2735,7 @@ static const struct ethtool_ops e100_ethtool_ops = { .set_phys_id = e100_set_phys_id, .get_ethtool_stats = e100_get_ethtool_stats, .get_sset_count = e100_get_sset_count, + .get_ts_info = ethtool_op_get_ts_info, };static int e100_do_ioctl (struct net_device *netdev,struct ifreq *ifr,int cmd)
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 13/28 etherh: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/8390/etherh.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/8390/etherh.c +1 -0
@@ -635,6 +635,7 @@ static const struct ethtool_ops etherh_ethtool_ops = { .get_settings = etherh_get_settings, .set_settings = etherh_set_settings, .get_drvinfo = etherh_get_drvinfo, + .get_ts_info = ethtool_op_get_ts_info, };static const struct net_device_ops etherh_netdev_ops = {
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 14/28 fec_mpc52xx: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/freescale/fec_mpc52xx.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/freescale/fec_mpc52xx.c +1 -0
@@ -811,6 +811,7 @@ static const struct ethtool_ops mpc52xx_fec_ethtool_ops = { .get_link = ethtool_op_get_link, .get_msglevel = mpc52xx_fec_get_msglevel, .set_msglevel = mpc52xx_fec_set_msglevel, + .get_ts_info = ethtool_op_get_ts_info, };
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 15/28 fec: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/freescale/fec.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/freescale/fec.c +1 -0
@@ -1161,6 +1161,7 @@ static const struct ethtool_ops fec_enet_ethtool_ops = { .set_settings = fec_enet_set_settings, .get_drvinfo = fec_enet_get_drvinfo, .get_link = ethtool_op_get_link, + .get_ts_info = ethtool_op_get_ts_info, };static int fec_enet_ioctl (struct net_device *ndev,struct ifreq *rq,int cmd)
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 16/28 fs_enet: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- .../net/ethernet/freescale/fs_enet/fs_enet-main.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c +1 -0
@@ -963,6 +963,7 @@ static const struct ethtool_ops fs_ethtool_ops = { .get_msglevel = fs_get_msglevel, .set_msglevel = fs_set_msglevel, .get_regs = fs_get_regs, + .get_ts_info = ethtool_op_get_ts_info, };static int fs_ioctl (struct net_device *dev,struct ifreq *rq,int cmd)
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 17/28 ll_temac: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/xilinx/ll_temac_main.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/xilinx/ll_temac_main.c +1 -0
@@ -1000,6 +1000,7 @@ static const struct ethtool_ops temac_ethtool_ops = { .set_settings = temac_set_settings, .nway_reset = temac_nway_reset, .get_link = ethtool_op_get_link, + .get_ts_info = ethtool_op_get_ts_info, };static int __devinit temac_of_probe (struct platform_device *op)
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 18/28 macb: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/cadence/macb.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/cadence/macb.c +1 -0
@@ -1213,6 +1213,7 @@ static const struct ethtool_ops macb_ethtool_ops = { .set_settings = macb_set_settings, .get_drvinfo = macb_get_drvinfo, .get_link = ethtool_op_get_link, + .get_ts_info = ethtool_op_get_ts_info, };static int macb_ioctl (struct net_device *dev,struct ifreq *rq,int cmd)
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 19/28 mv643xx_eth: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/marvell/mv643xx_eth.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/marvell/mv643xx_eth.c +1 -0
@@ -1666,6 +1666,7 @@ static const struct ethtool_ops mv643xx_eth_ethtool_ops = { .get_strings = mv643xx_eth_get_strings, .get_ethtool_stats = mv643xx_eth_get_ethtool_stats, .get_sset_count = mv643xx_eth_get_sset_count, + .get_ts_info = ethtool_op_get_ts_info, };
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 20/28 pxa168_eth: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/marvell/pxa168_eth.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/marvell/pxa168_eth.c +1 -0
@@ -1457,6 +1457,7 @@ static const struct ethtool_ops pxa168_ethtool_ops = { .set_settings = pxa168_set_settings, .get_drvinfo = pxa168_get_drvinfo, .get_link = ethtool_op_get_link, + .get_ts_info = ethtool_op_get_ts_info, };static const struct net_device_ops pxa168_eth_netdev_ops = {
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 21/28 r6040: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/rdc/r6040.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/rdc/r6040.c +1 -0
@@ -973,6 +973,7 @@ static const struct ethtool_ops netdev_ethtool_ops = { .get_settings = netdev_get_settings, .set_settings = netdev_set_settings, .get_link = ethtool_op_get_link, + .get_ts_info = ethtool_op_get_ts_info, };static const struct net_device_ops r6040_netdev_ops = {
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 22/28 r8169: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/realtek/r8169.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/realtek/r8169.c +1 -0
@@ -1854,6 +1854,7 @@ static const struct ethtool_ops rtl8169_ethtool_ops = { .get_strings = rtl8169_get_strings, .get_sset_count = rtl8169_get_sset_count, .get_ethtool_stats = rtl8169_get_ethtool_stats, + .get_ts_info = ethtool_op_get_ts_info, }; static void rtl8169_get_mac_version(struct rtl8169_private *tp,
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 23/28 smsc911x: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/smsc/smsc911x.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/smsc/smsc911x.c +1 -0
@@ -2070,6 +2070,7 @@ static const struct ethtool_ops smsc911x_ethtool_ops = { .get_eeprom_len = smsc911x_ethtool_get_eeprom_len, .get_eeprom = smsc911x_ethtool_get_eeprom, .set_eeprom = smsc911x_ethtool_set_eeprom, + .get_ts_info = ethtool_op_get_ts_info, };static const struct net_device_ops smsc911x_netdev_ops = {
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 24/28 smsc9420: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/smsc/smsc9420.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/smsc/smsc9420.c +1 -0
@@ -469,6 +469,7 @@ static const struct ethtool_ops smsc9420_ethtool_ops = { .set_eeprom = smsc9420_ethtool_set_eeprom, .get_regs_len = smsc9420_ethtool_getregslen, .get_regs = smsc9420_ethtool_getregs, + .get_ts_info = ethtool_op_get_ts_info, };/* Sets the device MAC address to dev_addr */
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 25/28 stmmac: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- .../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +1 -0
@@ -481,6 +481,7 @@ static const struct ethtool_ops stmmac_ethtool_ops = { .get_wol = stmmac_get_wol, .set_wol = stmmac_set_wol, .get_sset_count = stmmac_get_sset_count, + .get_ts_info = ethtool_op_get_ts_info, };void stmmac_set_ethtool_ops (struct net_device *netdev)
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 26/28 tg3: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/broadcom/tg3.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/broadcom/tg3.c +1 -0
@@ -12233,6 +12233,7 @@ static const struct ethtool_ops tg3_ethtool_ops = { .get_rxfh_indir_size = tg3_get_rxfh_indir_size, .get_rxfh_indir = tg3_get_rxfh_indir, .set_rxfh_indir = tg3_set_rxfh_indir, + .get_ts_info = ethtool_op_get_ts_info, }; static struct rtnl_link_stats64 *tg3_get_stats64(struct net_device *dev,
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH v3 27/28 ucc_geth: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/ethernet/freescale/ucc_geth_ethtool.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ethernet/freescale/ucc_geth_ethtool.c +1 -0
@@ -415,6 +415,7 @@ static const struct ethtool_ops uec_ethtool_ops = { .get_ethtool_stats = uec_get_ethtool_stats, .get_wol = uec_get_wol, .set_wol = uec_set_wol, + .get_ts_info = ethtool_op_get_ts_info, };void uec_set_ethtool_ops (struct net_device *netdev)
Signature · 1 line
1.7.2.5
Richard Cochran
maintainerPATCH v3 28/28 usbnet: Support the get_ts_info ethtool method.
In reply to Richard Cochran--- drivers/net/usb/usbnet.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/usb/usbnet.c +1 -0
@@ -884,6 +884,7 @@ static const struct ethtool_ops usbnet_ethtool_ops = { .get_drvinfo = usbnet_get_drvinfo, .get_msglevel = usbnet_get_msglevel, .set_msglevel = usbnet_set_msglevel, + .get_ts_info = ethtool_op_get_ts_info, };/*-------------------------------------------------------------------------*/
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerPATCH 1/1 Add the command to show the time stamping capabilities.
In reply to Richard Cochran--- ethtool-copy.h | 24 +++++++++++ ethtool.8.in | 7 +++ ethtool.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++++ internal.h | 1 + net_tstamp-copy.h | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++ test-cmdline.c | 3 + 6 files changed, 251 insertions(+), 0 deletions(-) create mode 100644 net_tstamp-copy.h
ethtool-copy.h +24 -0
@@ -680,6 +680,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
@@ -786,6 +809,7 @@ enum ethtool_sfeatures_retval_bits {#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 */ /* compatibility with older code */ #define SPARC_ETH_GSET ETHTOOL_GSET
ethtool.8.in +7 -0
@@ -292,6 +292,9 @@ ethtool \- query or control network driver and hardware settings .I devname .BI \ N .HP +.B ethtool \-T|\-\-timestamping +.I devname +.HP .B ethtool \-x|\-\-show\-rxfh\-indir .I devname .HP
@@ -745,6 +748,10 @@ is indicated, then ethtool fetches the dump data and directs it to a .B \-W \-\-set\-dump Sets the dump flag for the device. .TP +.B \-T \-\-timestamping +Show the device's time stamping capabilities and associated PTP +hardware clock. +.TP .B \-x \-\-show\-rxfh\-indir Retrieves the receive flow hash indirection table. .TP
ethtool.c +103 -0
121 lines not on this page · raw message
internal.h +1 -0
@@ -25,6 +25,7 @@ typedef __uint8_t u8;typedef __int32_t s32 ;#include "ethtool-copy.h" +#include "net_tstamp-copy.h" #if __BYTE_ORDER == __BIG_ENDIANstatic inline u16 cpu_to_be16 (u16 value)
net_tstamp-copy.h new file +113 -0
113 lines not on this page · raw message
test-cmdline.c +3 -0
@@ -172,6 +172,9 @@ static struct test_case { { 1, "-U devname foo" }, { 1, "-N" }, { 1, "-U" }, + { 0, "-T devname" }, + { 0, "--timestamping devname" }, + { 1, "-T" }, { 0, "-x devname" }, { 0, "--show-rxfh-indir devname" }, { 1, "-x" },
Signature · 13 lines
1.7.2.5 ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Re: [PATCH] Add the command to show the time stamping capabilities.
Sorry for the delay in handling this.
I've applied this with a minor change: I renamed the long option to --show-time-stamping, for consistency with other 'show' options and to allow for future addition of other time stamping options.
Ben.
Signature · 3 lines
Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.
Richard Cochran
maintainerQuoted 4 lines · Richard Cochran
Changes in V3:
- works withoutethtool_ops
- does not require special privileges
- neated user space tool output
neaten (it looks neater now, and more like what Ben was asking for)
Richard
David Miller
maintainerFrom: Richard Cochran <[email protected]>
Date: Tue, 3 Apr 2012 19:47:24 +0200
Quoted 3 lines
The new feature has been tested on the following hardware:
igb Hardware time stamping in the MAC
I don't know how, it doesn't even build.
drivers/net/ethernet/intel/igb/igb_ethtool.c: In function ‘igb_ethtool_get_ts_info’:drivers/net/ethernet/intel/igb/igb_ethtool.c:2195:13: error: ‘struct igb_adapter’ has no member named ‘ptp_clock’ drivers/net/ethernet/intel/igb/igb_ethtool.c:2196:3: error: implicit declaration of function ‘ptp_clock_index’ [-Werror=implicit-function-declaration] drivers/net/ethernet/intel/igb/igb_ethtool.c:2196:44: error: ‘struct igb_adapter’ has no member named ‘ptp_clock’
If these patches depend upon changes not in my tree, and you haven't
even mentioned this, I'm going to be _extremely_ irritated.
------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
Richard Cochran
maintainerQuoted 2 lines · David Miller
If these patches depend upon changes not in my tree, and you haven't even mentioned this, I'm going to be _extremely_ irritated.
Sorry for being so irritating, and not being clear enough about this. I did mention that
Patch number 3 applies on top of my recent two igb/phc patches. Patch number 12 applies on top of my recent e100 patch.
Jeff accepted all of those 'recent patches' into his queue, so perhaps he would take #3 and #12.
Or should I just drop them for now?
Thanks,
Richard
------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
David Miller
maintainerFrom: Richard Cochran <[email protected]>
Date: Wed, 4 Apr 2012 07:14:32 +0200
Quoted 8 lines · David Miller
Quoted 3 lines
If these patches depend upon changes not in my tree, and you haven't even mentioned this, I'm going to be _extremely_ irritated.
Sorry for being so irritating, and not being clear enough about this. I did mention that
Quoted 7 lines
Patch number 3 applies on top of my recent two igb/phc patches. Patch number 12 applies on top of my recent e100 patch.
Jeff accepted all of those 'recent patches' into his queue, so perhaps he would take #3 and #12.
Or should I just drop them for now?
Yes, you can drop them and then send them later through Jeff once the infrastructure hits my tree.
------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired