On Mon, Oct 08, 2018 at 12:54:44PM +0000, Anders Selhammer wrote:
> If the unicast negotiation is disabled, the granted messages needs to be
> cancelled towards the server.

Yes, "canceled" not "ungranted".

> +static int unicast_client_ungrant(struct port *p, uint8_t mtype,
> +                               struct unicast_master_address *ucma)
> +{
> +     struct ptp_message *msg;
> +     int err;
> +     if (~ucma->granted & (1 << mtype)) {
> +             return 0;
> +     }
> +     msg = port_signaling_construct(p, &ucma->address, &ucma->portIdentity);
> +     if (!msg) {
> +             return -1;
> +     }
> +     err = attach_cancel(msg, mtype << 4);

This function is poorly named.  You are canceling a request.  Only the
one who granted something may "un-grant" it again.

> +     case UC_DENIED:
> +             switch (ev) {
> +             case UC_EV_GRANT_ANN:
> +                     next = UC_HAVE_ANN;
> +                     break;
> +             case UC_EV_SELECTED:
> +             case UC_EV_GRANT_SYDY:
> +             case UC_EV_UNSELECTED:
> +             case UC_EV_CANCEL:
> +                     break;
> +             case UC_EV_DISABLE:
>                       next = UC_WAIT;
>                       break;
>               }
> diff --git a/unicast_fsm.h b/unicast_fsm.h
> index 49fc9b2..6eb1cfa 100644
> --- a/unicast_fsm.h
> +++ b/unicast_fsm.h
> @@ -25,6 +25,7 @@ enum unicast_state {
>       UC_HAVE_ANN,
>       UC_NEED_SYDY,
>       UC_HAVE_SYDY,
> +     UC_DENIED,

You have added a whole new state without the slightest justification.
The client doesn't need a DENIED state.  If a request is rejected, the
client simply goes back to the WAITing and tried again.

Adding a DENIED state makes no sense at all, since the point of this
series is to add client side cancellation.

Thanks,
Richard



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

Reply via email to