> -----Original Message-----
> From: Eyal Itkin via Linuxptp-devel <linuxptp-devel@lists.sourceforge.net>
> Sent: Sunday, September 10, 2023 9:23 AM
> To: linuxptp-devel@lists.sourceforge.net
> Subject: [Linuxptp-devel] [PATCH] [pmc] Avoid conflicting port IDs over PMC
> UDS
>
> The UDS interface is currently associated with a clock ID of zeros
> and a 16-bit port number which is the process id. However, the
> process id on Linux can easily by bigger than 16 bits (supposed
> to be limited to 22 bits). This means that several linuxptp processes
> (pmc and phc2sys for instance) can collide and use the same port id.
>
> Hence, use the lower 2 bytes of the process id for the port number,
> and the top 2 bytes as bytes 7 and 8 of the Clock ID.
>
> Signed-off-by: Eyal Itkin <eit...@nvidia.com>
> ---
Looks like this got sent twice, but it seems reasonable to me.
Reviewed-by: Jacob Keller <jacob.e.kel...@intel.com>
> pmc_common.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/pmc_common.c b/pmc_common.c
> index 9e251c4..694edf6 100644
> --- a/pmc_common.c
> +++ b/pmc_common.c
> @@ -486,13 +486,17 @@ struct pmc *pmc_create(struct config *cfg, enum
> transport_type transport_type,
> int zero_datalen)
> {
> struct pmc *pmc;
> + UInteger32 proc_id;
>
> pmc = calloc(1, sizeof *pmc);
> if (!pmc)
> return NULL;
>
> if (transport_type == TRANS_UDS) {
> - pmc->port_identity.portNumber = getpid();
> + proc_id = getpid();
> + pmc->port_identity.clockIdentity.id[6] = (proc_id & 0xFF000000)
> >> 24;
> + pmc->port_identity.clockIdentity.id[7] = (proc_id & 0x00FF0000)
> >> 16;
> + pmc->port_identity.portNumber = proc_id & 0xFFFF;
> } else {
> if (generate_clock_identity(&pmc->port_identity.clockIdentity,
> iface_name)) {
> --
> 2.21.0
>
>
>
> _______________________________________________
> Linuxptp-devel mailing list
> Linuxptp-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linuxptp-devel
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel