While the pre_send() converts the timestamp inside the packet, the post_recv() just copies (and converts) it into a special field inside the message structure. But it doesn't convert the timestamp inside the packet. Fix this.
Signed-off-by: Michael Walle <mich...@walle.cc> --- msg.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/msg.c b/msg.c index d1619d4..32d747a 100644 --- a/msg.c +++ b/msg.c @@ -238,11 +238,13 @@ static void suffix_pre_send(struct ptp_message *msg) static void timestamp_post_recv(struct ptp_message *m, struct Timestamp *ts) { - uint32_t lsb = ntohl(ts->seconds_lsb); - uint16_t msb = ntohs(ts->seconds_msb); + ts->seconds_lsb = ntohl(ts->seconds_lsb); + ts->seconds_msb = ntohs(ts->seconds_msb); + ts->nanoseconds = ntohl(ts->nanoseconds); - m->ts.pdu.sec = ((uint64_t)lsb) | (((uint64_t)msb) << 32); - m->ts.pdu.nsec = ntohl(ts->nanoseconds); + m->ts.pdu.sec = (uint64_t)ts->seconds_msb << 32 + | (uint64_t)ts->seconds_lsb; + m->ts.pdu.nsec = ts->nanoseconds; } static void timestamp_pre_send(struct Timestamp *ts) -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel