> -----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

Reply via email to