Message ID | 20240807003032.10300-4-christopher.s.hall@intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | igc: PTM timeout fix | expand |
On Aug 6 17:30, christopher.s.hall@intel.com wrote: > From: Christopher S M Hall <christopher.s.hall@intel.com> > > Move ktime_get_snapshot() into the loop. If a retry does occur, a more > recent snapshot will result in a more accurate cross-timestamp. > > Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()") > Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com> > --- > drivers/net/ethernet/intel/igc/igc_ptp.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c > index 00cc80d8d164..fb885fcaa97c 100644 > --- a/drivers/net/ethernet/intel/igc/igc_ptp.c > +++ b/drivers/net/ethernet/intel/igc/igc_ptp.c > @@ -1011,16 +1011,16 @@ static int igc_phc_get_syncdevicetime(ktime_t *device, > int err, count = 100; > ktime_t t1, t2_curr; > > - /* Get a snapshot of system clocks to use as historic value. */ > - ktime_get_snapshot(&adapter->snapshot); > - > + /* Doing this in a loop because in the event of a > + * badly timed (ha!) system clock adjustment, we may > + * get PTM errors from the PCI root, but these errors > + * are transitory. Repeating the process returns valid > + * data eventually. > + */ > do { > - /* Doing this in a loop because in the event of a > - * badly timed (ha!) system clock adjustment, we may > - * get PTM errors from the PCI root, but these errors > - * are transitory. Repeating the process returns valid > - * data eventually. > - */ > + /* Get a snapshot of system clocks to use as historic value. */ > + ktime_get_snapshot(&adapter->snapshot); > + > igc_ptm_trigger(hw); > > err = readx_poll_timeout(rd32, IGC_PTM_STAT, stat, > -- > 2.34.1 Reviewed-by: Corinna Vinschen <vinschen@redhat.com>
diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c index 00cc80d8d164..fb885fcaa97c 100644 --- a/drivers/net/ethernet/intel/igc/igc_ptp.c +++ b/drivers/net/ethernet/intel/igc/igc_ptp.c @@ -1011,16 +1011,16 @@ static int igc_phc_get_syncdevicetime(ktime_t *device, int err, count = 100; ktime_t t1, t2_curr; - /* Get a snapshot of system clocks to use as historic value. */ - ktime_get_snapshot(&adapter->snapshot); - + /* Doing this in a loop because in the event of a + * badly timed (ha!) system clock adjustment, we may + * get PTM errors from the PCI root, but these errors + * are transitory. Repeating the process returns valid + * data eventually. + */ do { - /* Doing this in a loop because in the event of a - * badly timed (ha!) system clock adjustment, we may - * get PTM errors from the PCI root, but these errors - * are transitory. Repeating the process returns valid - * data eventually. - */ + /* Get a snapshot of system clocks to use as historic value. */ + ktime_get_snapshot(&adapter->snapshot); + igc_ptm_trigger(hw); err = readx_poll_timeout(rd32, IGC_PTM_STAT, stat,