Thanks for your inputs Richard. I will rework the patch as you
suggested. Some comments/questions for the patch inline.

On Thu, 2018-07-19 at 08:01 -0700, Richard Cochran wrote:
> On Mon, Jul 16, 2018 at 02:34:47PM -0700, Vedang Patel wrote:
> > 
> > This adds a new config option "avnu_ap" for ptp4l. Setting this
> > option
> > to 1 will enable the AVnu Automotive Profile (AVnu AP) [1] for the
> > device.
> This is not how we do things.
> 
> I have said this more than once before.  We don't add a single
> monolithic Boolean option for some random profile or extension.
> 
> Instead, for each different behavior or attribute, we add a granular
> option.  Then, the profile is simply a configuration file selecting
> the appropriate options. 
> 
Ok. Will split this patch out into different options. Will send a
follow-up email on what I think the best options are.
> > 
> > - BMCA won't run. So, Announce messages (on master) and announce
> >   timeouts (on slave) will be disabled.
> There is no need to avoid the BMCA.  Just make a BMCA that returns
> static values.  We already have slaveOnly and masterOnly.  Your
> profile should use those.
> 
> For the Announce messages, a simple 'inhibit_announce' option will
> do.
> 
Ok Will add it.
> > 
> > - Source port identity won't be checked while processing Sync and
> >   Follow_Up messages.
> Single option.
> 
> > 
> > - SLAVE devices will not transition to MASTER when it receives Sync
> >   timeout.
> slaveOnly.
> 
Ok Will look into the slaveOnly FSM.
> > diff --git a/fsm.c b/fsm.c
> > index ce6efad30937..af05abdae294 100644
> > --- a/fsm.c
> > +++ b/fsm.c
> > @@ -34,6 +34,17 @@ enum port_state ptp_fsm(enum port_state state,
> > enum fsm_event event, int mdiff)
> >             case EV_INIT_COMPLETE:
> >                     next = PS_LISTENING;
> >                     break;
> > +           /*
> > +            * The following 2 cases are specific to AVnu AP.
> > When we are
> > +            * running AVnu AP, BMCA is not run. So, we need
> > to assign the
> > +            * state right after the ports initialization is
> > complete.
> > +            */
> > +           case EV_RS_GRAND_MASTER:
> > +                   next = PS_GRAND_MASTER;
> > +                   break;
> > +           case EV_RS_SLAVE:
> > +                   next = PS_UNCALIBRATED;
> > +                   break;
> Don't hack your "special" code into 1588's FSM.  Write your own (if
> needed).
> 
Ok  I will move this to a seperate FSM.
> > 
> > @@ -1717,6 +1722,14 @@ int process_announce(struct port *p, struct
> > ptp_message *m)
> >             return result;
> >     }
> >  
> > +   /*
> > +    * Do not process Announce messages when running AVnu
> > Automotive
> > +    * Profile, conforming to Section 6.3 point 1 (lines 191-
> > 195).
> > +    */
> > +   if (clock_avnu_ap(p->clock)) {
> > +           return result;
> > +   }
> This is totally unnecessary, and it hurts the end user by taking an
> option away.  If an Announce is received, you should process it.
> 
Ok. Will remove this.
> > 
> > @@ -2460,7 +2509,18 @@ static enum fsm_event bc_event(struct port
> > *p, int fd_index)
> >                 port_renew_transport(p)) {
> >                     return EV_FAULT_DETECTED;
> >             }
> > -           return EV_ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES;
> > +
> > +           /*
> > +            * When AVnu AP is active, we never want the slave
> > to
> > +            * transition to the master state. So, returning
> > +            * EV_SYNCHRONIZATION_FAULT ensures it returns
> > back to
> > +            * PS_UNCALIBRATED.
> > +            */
> > +           if (clock_avnu_ap(p->clock)) {
> > +                   return EV_SYNCHRONIZATION_FAULT;
> > +           } else {
> > +                   return
> > EV_ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES;
> > +           }
> Oh man.  Just make a proper FSM please. 
Will probably be taken care of if I decide to use the slaveOnly FSM for
slaves. Else will include it in the new FSM which will set the BMCA
states which you mentioned before.

Thanks,
Vedang
> 
> Thanks,
> Richard
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to