IEEE 1558 2019 does define Float64 that follow using the IEEE Std 754

As most hardware that runs Linux already use IEEE Std 754 (on hardware level or 
library level for hardware lacking floating point).

The Float64 match C float on most 64 bits machine.
You may need more code to ensure your C code uses proper 64 bits float.
I guess, this is why Richard avoid using it.

However Miroslav is right that you do need to change to network order.

Something like :

stats->freq_stats = __cpu_to_be64((uint64_t)(c->freq_stats));

And define
struct clock {
...
float freq_stats,
...
};

struct clock_stats_np_tlv {
...
uint64 freq_stats,
...
};

Or follow Miroslav advice and use integers only.

Erez

From: Tim Martin <timot...@nvidia.com>
Sent: Thursday, 27 May 2021 18:52
To: Miroslav Lichvar <mlich...@redhat.com>
Cc: linuxptp-devel@lists.sourceforge.net
Subject: Re: [Linuxptp-devel] [PATCH] Add new CLOCK_STATS_NP TLV GET to pmc and 
clock

Thanks Miroslav,

Thanks for the feedback.  Sure, I can make an update to send 
network(big)-endian fixed point instead of platform-endian floating point if 
the patch will otherwise be accepted, but need to resolve the feedback from 
Erez and Richard first.

Tim

From: Miroslav Lichvar <mlich...@redhat.com<mailto:mlich...@redhat.com>>
Date: Wednesday, May 26, 2021 at 4:45 AM
To: Tim Martin <timot...@nvidia.com<mailto:timot...@nvidia.com>>
Cc: 
linuxptp-devel@lists.sourceforge.net<mailto:linuxptp-devel@lists.sourceforge.net>
 
<linuxptp-devel@lists.sourceforge.net<mailto:linuxptp-devel@lists.sourceforge.net>>
Subject: Re: [Linuxptp-devel] [PATCH] Add new CLOCK_STATS_NP TLV GET to pmc and 
clock
External email: Use caution opening links or attachments


On Tue, May 25, 2021 at 08:28:34PM +0000, Tim Martin wrote:
> +struct clock_stats_np_tlv {
> +     struct stats_result offset_stats;
> +     struct stats_result freq_stats;
> +     struct stats_result delay_stats;
> +     uint8_t offset_freq_stats_valid;
> +     uint8_t delay_stats_valid;
> +} PACKED;

Floating-point formats are not generally portable. In a network
protocol they need to be converted to something else. Some of the
implemented TLVs use fixed-point formats shifting by 32 or 41 bits. In
this case I think it might be ok to just use integer nanoseconds and
parts per billion.

--
Miroslav Lichvar
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to