netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Richard Cochran <richardcochran@gmail.com>
To: <netdev@vger.kernel.org>
Cc: "David Miller" <davem@davemloft.net>,
	"Jacob Keller" <jacob.e.keller@intel.com>,
	"Jeff Kirsher" <jeffrey.t.kirsher@intel.com>,
	"John Stultz" <john.stultz@linaro.org>,
	"Manfred Rudigier" <Manfred.Rudigier@omicron.at>,
	"Stefan Sørensen" <stefan.sorensen@spectralink.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Ulrik De Bie" <ulrik.debie-os@e2big.org>,
	intel-wired-lan@lists.osuosl.org
Subject: [PATCH net-next 0/3] PHC frequency fine tuning
Date: Tue,  8 Nov 2016 22:49:15 +0100	[thread overview]
Message-ID: <cover.1478526333.git.richardcochran@gmail.com> (raw)

This series expands the PTP Hardware Clock subsystem by adding a
method that passes the frequency tuning word to the the drivers
without dropping the low order bits.  Keeping those bits is useful for
drivers whose frequency resolution is higher than 1 ppb.

The appended script (below) runs a simple demonstration of the
improvement.  This test needs two Intel i210 PCIe cards installed in
the same PC, with their SDP0 pins connected by copper wire.  Measuring
the estimated offset (from the ptp4l servo) and the true offset (from
the PPS) over one hour yields the following statistics.

|        |   Est. Before |    Est. After |   True Before |    True After |
|--------+---------------+---------------+---------------+---------------|
| min    | -5.200000e+01 | -1.600000e+01 | -3.100000e+01 | -1.000000e+00 |
| max    | +5.700000e+01 | +2.500000e+01 | +8.500000e+01 | +4.000000e+01 |
| pk-pk: | +1.090000e+02 | +4.100000e+01 | +1.160000e+02 | +4.100000e+01 |
| mean   | +6.472222e-02 | +1.277778e-02 | +2.422083e+01 | +1.826083e+01 |
| stddev | +1.158006e+01 | +4.581982e+00 | +1.207708e+01 | +4.981435e+00 |

Here the numbers in units of nanoseconds, and the ~20 nanosecond PPS
offset is due to input/output delays on the i210's external interface
logic.

With the series applied, both the peak to peak error and the standard
deviation improve by a factor of more than two.  These two graphs show
the improvement nicely.

  http://linuxptp.sourceforge.net/fine-tuning/fine-est.png

  http://linuxptp.sourceforge.net/fine-tuning/fine-tru.png


Thanks,
Richard

Richard Cochran (3):
  ptp: Introduce a high resolution frequency adjustment method.
  ptp: igb: Use the high resolution frequency method.
  ptp: dp83640: Use the high resolution frequency method.

 drivers/net/ethernet/intel/igb/igb_ptp.c | 16 ++++++++--------
 drivers/net/phy/dp83640.c                | 14 +++++++-------
 drivers/ptp/ptp_clock.c                  |  5 ++++-
 include/linux/ptp_clock_kernel.h         |  8 ++++++++
 4 files changed, 27 insertions(+), 16 deletions(-)

-- 
2.1.4

---
#!/bin/sh

set -e
set -x

killall ptp4l || true

DUR=3600
ETHA=eth6
ETHB=eth3
DEVA=/dev/ptp`ethtool -T $ETHA | awk '/PTP/ {print $4}'`
DEVB=/dev/ptp`ethtool -T $ETHB | awk '/PTP/ {print $4}'`

testptp -d $DEVA -p 0

for x in $DEVA $DEVB; do
	testptp -d $x -f 0
	testptp -d $x -s
done

testptp -d $DEVA -L 0,2  # periodic output
testptp -d $DEVB -L 0,1  # external time stamp
testptp -d $DEVA -p 2000000000

ptp4l -m -q -2 -i $ETHA > log.master &
ptp4l -m -q -2 -i $ETHB -s > log.slave &

sleep 60
testptp -d $DEVB -e $DUR > log.pps
tail -n $DUR log.slave > log.est

killall ptp4l

             reply	other threads:[~2016-11-08 21:49 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-08 21:49 Richard Cochran [this message]
2016-11-08 21:49 ` [PATCH net-next 1/3] ptp: Introduce a high resolution frequency adjustment method Richard Cochran
2016-11-08 21:49 ` [PATCH net-next 2/3] ptp: igb: Use the high resolution frequency method Richard Cochran
2016-11-08 22:02   ` Keller, Jacob E
2016-11-09 13:11     ` Richard Cochran
2016-11-09 21:40       ` Keller, Jacob E
2016-11-08 22:04   ` Keller, Jacob E
2016-11-09 13:15     ` Richard Cochran
2016-11-08 21:49 ` [PATCH net-next 3/3] ptp: dp83640: " Richard Cochran
2016-11-08 21:56 ` [PATCH net-next 0/3] PHC frequency fine tuning Keller, Jacob E
2016-11-10  2:20 ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1478526333.git.richardcochran@gmail.com \
    --to=richardcochran@gmail.com \
    --cc=Manfred.Rudigier@omicron.at \
    --cc=davem@davemloft.net \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=jacob.e.keller@intel.com \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=john.stultz@linaro.org \
    --cc=netdev@vger.kernel.org \
    --cc=stefan.sorensen@spectralink.com \
    --cc=tglx@linutronix.de \
    --cc=ulrik.debie-os@e2big.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).