On Thu, May 10, 2012 at 09:53:18PM +0000, Keller, Jacob E wrote:
quoted
quoted
+ /*
+ * If this bit is set, then the RX registers contain the time stamp. No
+ * other packet will be time stamped until we read these registers, so
+ * read the registers to make them available again. Because only one
+ * packet can be time stamped at a time, we know that the register
+ * values must belong to this one here and therefore we don't need to
+ * compare any of the additional attributes stored for it.
I suspect that this assumption is wrong. What happens if the time stamping
logic locks a value but the packet is lost because the ring is full?
BTW, the IGB driver also has this defect.
Note how I read the rx registers first? So it will always clear the value.
That should unlock the value for the next rx stamp packet.
1. Hw recognizes ptp event packet, locks time stamp
2. Hw drops packet because queue is full
3. No more time stamps are ever generated
Can this happen? The docs seems to say it can.
Richard