On Fri, Jun 03, 2022 at 05:00:24PM +0530, SyncMonk Technologies wrote: > @@ -1996,8 +1996,10 @@ static void handle_state_decision_event(struct clock > *c) > if (c->sanity_check) > clockcheck_reset(c->sanity_check); > tsproc_reset(c->tsproc, 1); > - if (!tmv_is_zero(c->initial_delay)) > + if (!tmv_is_zero(c->initial_delay) || (best && > + port_delay_mechanism(best->port) == DM_NO_MECHANISM)) {
Can you please explain what this extra test accomplishes? > tsproc_set_delay(c->tsproc, c->initial_delay); > + } > c->ingress_ts = tmv_zero(); > c->path_delay = c->initial_delay; > c->master_local_rr = 1.0; > @@ -1195,7 +1195,7 @@ int port_set_announce_tmo(struct port *p) > > int port_set_delay_tmo(struct port *p) > { > - if (p->inhibit_delay_req) { > + if (p->inhibit_delay_req || p->delayMechanism == DM_NO_MECHANISM) { No need for an extra test here. Just let DM_NO_MECHANISM select inhibit_delay_req during port initialization. > return 0; > } > > @@ -2031,7 +2031,10 @@ static int process_delay_req(struct port *p, struct > ptp_message *m) > return 0; > } > > - if (p->delayMechanism == DM_P2P) { > + if (p->delayMechanism == DM_NO_MECHANISM) { > + pr_warning("port %hu: delay request not supported", portnum(p)); Please remove this. DM_NO_MECHANISM doesn't make any sense on the server side. If a node receives a delay request, then it aught to answer with a reply. DM_NO_MECHANISM is solely about the client. > + return 0; > + } else if (p->delayMechanism == DM_P2P) { > pr_warning("%s: delay request on P2P port", p->log_name); > return 0; > } > @@ -43,7 +43,8 @@ static void usage(char *progname) > " Delay Mechanism\n\n" > " -A Auto, starting with E2E\n" > " -E E2E, delay request-response (default)\n" > - " -P P2P, peer delay mechanism\n\n" > + " -P P2P, peer delay mechanism\n" > + " -N NO_MECHANISM, no mechanism\n\n" Please remove this. We a not adding any more command line options. > " Network Transport\n\n" > " -2 IEEE 802.3\n" > " -4 UDP IPV4 (default)\n" > @@ -89,7 +90,7 @@ int main(int argc, char *argv[]) > /* Process the command line arguments. */ > progname = strrchr(argv[0], '/'); > progname = progname ? 1+progname : argv[0]; > - while (EOF != (c = getopt_long(argc, argv, "AEP246HSLf:i:p:sl:mqvh", > + while (EOF != (c = getopt_long(argc, argv, "AEPN246HSLf:i:p:sl:mqvh", ditto > opts, &index))) { > switch (c) { > case 0: > @@ -108,6 +109,11 @@ int main(int argc, char *argv[]) > if (config_set_int(cfg, "delay_mechanism", DM_P2P)) > goto out; > break; > + case 'N': > + if (config_set_int(cfg, > + "delay_mechanism", DM_NO_MECHANISM)) > + goto out; > + break; ditto Thanks, Richard _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel