This is the patch series which adds support for hardware time stamping using Intel's new 82576 Ethernet NICs, a chip designed for normal desktops and servers. It is based on 1.0.0.
The goal of this work was to establish PTPd as an alternative to NTP in normal clusters. Therefore it was important to synchronize system time, not just the clock which generates the hardware time stamps.
Earlier this year a paper was published about this work and the accuracy improvements gained from using hardware support (50x better under load). See http://www.linuxclustersinstitute.org/conferences/archive/2008/PDF/Ohly_92221.pdf
Since then the NIC has been publicly announced and permission was granted to open source the changes. There has been quite some interest in this technology. Intel strongly believes in working with upstream projects instead of forking them, so the hope is that these patches can be integrated into the normal PTPd repository.
I'll post them split up into logical steps to simplify the review; some of them are improvements/bug fixes(?) to PTPd. I'd be happy to answer questions about each patch and rework it if necessary.
The current patch series relies on a new ioctl() call which is specific to the Intel hardware. The patch that implements this call is being reworked right now, but in principle the mechanism will remain the same. Once we got it cleaned up, we a) could add it as an "extra" to the PTPd distribution and/or b) might include it in the out-of-tree igb driver.
The advantage of this approach is that users don't have to recompile their Linux kernel. This would violate support agreements of Enterprise Linux distributions.
The disadvantage is that the hardware specific ioctl() call is not acceptable to upstream Linux. There has been a discussion about a generic user space/kernel API for hardware time stamping. I have a patch ready based on this discussion and will post it to Linux netdev.
I haven't adapted PTPd to that API yet, but I plan to do that once it is clear whether this patch series gets included in PTPd upstream and Linux upstream accepts the new API. This patch series contains some infrastructure changes which will make it easier to use the new API, so I'd prefer to modify the patched PTPd instead of starting from 1.0.0.
Log in to post a comment.