From: abhijit Date: Mon, 29 May 2017 09:31:36 +0000 (+0530) Subject: net: eqos: Register PTP callback at correct place X-Git-Url: https://rtime.felk.cvut.cz/gitweb/hercules2020/nv-tegra/linux-4.4.git/commitdiff_plain/ab41a5ffe814e92083abb5bebca0189c9cd8f250 net: eqos: Register PTP callback at correct place Issue: CAN HW timestamp information is incorrect in case one of the Tegra is made PTP master. Fix: CAN HW timestamp is based on get_ptp_hwtime function which is exported by PTP notifier framework. Above function relies on callback registered by eqos driver. This callack was registered when adjust PTP time was called. But adjust is not called for PTP master. Moved the callback registration to set HWTSTAMP ioctl which is required by both PTP master and slave. Bug 1887016 Change-Id: Iaad1d7cdff4fc2aaf3e015ddf7b8c5ef189add3f Reviewed-on: http://git-master/r/1491662 (cherry picked from commit 1593119045757decc0e3d71fc733d678df8637aa) Reviewed-on: http://git-master/r/1503233 GVS: Gerrit_Virtual_Submit Tested-by: Abhijit . Reviewed-by: Sumeet Gupta --- diff --git a/drivers/net/ethernet/nvidia/eqos/drv.c b/drivers/net/ethernet/nvidia/eqos/drv.c index 9e095028c939..104775098a98 100644 --- a/drivers/net/ethernet/nvidia/eqos/drv.c +++ b/drivers/net/ethernet/nvidia/eqos/drv.c @@ -3942,6 +3942,10 @@ static int eqos_handle_hwtstamp_ioctl(struct eqos_prv_data *pdata, /* initialize system time */ getnstimeofday(&now); hw_if->init_systime(now.tv_sec, now.tv_nsec); + + DBGPR_PTP("-->eqos registering get_ptp function\n"); + /* Register broadcasting MAC timestamp to clients */ + tegra_register_hwtime_source(hw_if->get_systime); } DBGPR_PTP("config.flags = %#x, tx_type = %#x, rx_filter = %#x\n", diff --git a/drivers/net/ethernet/nvidia/eqos/ptp.c b/drivers/net/ethernet/nvidia/eqos/ptp.c index e79501ebcae4..5d5e1962ee94 100644 --- a/drivers/net/ethernet/nvidia/eqos/ptp.c +++ b/drivers/net/ethernet/nvidia/eqos/ptp.c @@ -137,9 +137,6 @@ static int eqos_adjust_time(struct ptp_clock_info *ptp, s64 delta) raw_spin_unlock(&pdata->ptp_lock); - /* Register broadcasting MAC timestamp to clients */ - tegra_register_hwtime_source(hw_if->get_systime); - DBGPR_PTP("<--eqos_adjust_time\n"); return 0;