On Wed, Apr 4, 2012 at 4:59 AM, Richard Cochran <richardcochran@xxxxxxxxx> wrote: > Signed-off-by: Richard Cochran <richardcochran@xxxxxxxxx> > --- > 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(-) > > diff --git a/drivers/net/ethernet/freescale/gianfar.h b/drivers/net/ethernet/freescale/gianfar.h > index 4c9f8d4..2136c7f 100644 > --- a/drivers/net/ethernet/freescale/gianfar.h > +++ b/drivers/net/ethernet/freescale/gianfar.h > @@ -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 */ > diff --git a/drivers/net/ethernet/freescale/gianfar_ethtool.c b/drivers/net/ethernet/freescale/gianfar_ethtool.c > index 8d74efd..27f49c7 100644 > --- a/drivers/net/ethernet/freescale/gianfar_ethtool.c > +++ b/drivers/net/ethernet/freescale/gianfar_ethtool.c > @@ -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; Commit 66636287 in linux-next appears to cause this: drivers/net/ethernet/freescale/gianfar_ethtool.c:1751:4: error: 'SOF_TIMESTAMPING_RX_SOFTWARE' undeclared (first use in this function) drivers/net/ethernet/freescale/gianfar_ethtool.c:1752:4: error: 'SOF_TIMESTAMPING_SOFTWARE' undeclared (first use in this function) Needs an include of <linux/net_tstamp.h> ? http://kisskb.ellerman.id.au/kisskb/buildresult/6039723/ http://kisskb.ellerman.id.au/kisskb/buildresult/6039704/ http://kisskb.ellerman.id.au/kisskb/buildresult/6040028/ I'd normally just provide a tested and signed off patch, but I'm kind of limited to just browsing the build results at this particular moment. Sorry about that. Paul. > + 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, > }; > diff --git a/drivers/net/ethernet/freescale/gianfar_ptp.c b/drivers/net/ethernet/freescale/gianfar_ptp.c > index 5fd620b..c08e5d4 100644 > --- a/drivers/net/ethernet/freescale/gianfar_ptp.c > +++ b/drivers/net/ethernet/freescale/gianfar_ptp.c > @@ -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); > -- > 1.7.2.5 > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html