On 1/6/2021 11:39 AM, vincent.cheng...@renesas.com wrote:
> From: Vincent Cheng <vincent.cheng...@renesas.com>
>
> In the scenario where a port link goes down and up, current code checks
> the port's phc_index against the interface's phc_index and if they are
> different will set the port phc_index to the interface phc_index.
>
> If the phc_index was initially set by the command line -p option, then we
> end up using the wrong phc_index.
>
> Fix is to skip updating the port phc_index with the interface phc_index
> when port link is back up if it was initialy set from the command line.
>
> Signed-off-by: Vincent Cheng <vincent.cheng...@renesas.com>
> ---
> port.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/port.c b/port.c
> index db3e9ac..bdc73e4 100644
> --- a/port.c
> +++ b/port.c
> @@ -2568,7 +2568,8 @@ void port_link_status(void *ctx, int linkup, int
> ts_index)
> "timestamping mode, set link status down
> by force.",
> interface_label(p->iface));
> p->link_status = LINK_DOWN | LINK_STATE_CHANGED;
> - } else if (p->phc_index !=
> interface_phc_index(p->iface)) {
> + } else if ((p->phc_index !=
> interface_phc_index(p->iface)) &&
> + (!p->phc_from_cmdline)) {
> p->phc_index = interface_phc_index(p->iface);
>
Makes sense. But maybe we would want to do a warning about when the PHC
index on the networking device no longer matches the command line? (like
we do during the initial setup?)
> if (clock_switch_phc(p->clock, p->phc_index)) {
> @@ -3064,6 +3065,7 @@ struct port *port_open(const char *phc_device,
> "not the attached ptp%d", number, phc_device,
> interface_phc_index(interface));
> p->phc_index = phc_index;
> + p->phc_from_cmdline = 1;
> } else {
> pr_err("port %d: PHC device mismatch", number);
> pr_err("port %d: /dev/ptp%d requested, ptp%d attached",
>
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel