This adds config option to specify static roles for master and slave
in the Best Master Clock Algorithm. This is the case for Automotive
Profile where networks are mostly static and role for each device is
known in advance.
masterOnly and slaveOnly will be used to determine the roles for the
devices. Since masterOnly is a per-port config and slaveOnly is a global
config option, role assignment will be slightly odd in case of bridges.
If slaveOnly is set to 1, all the ports will be in slave roles except
for the ones where masterOnly is set to 1. These ports will assume the
master role.
Two new FSMs which will be used for master and slave roles for this
config option have also been added.
Signed-off-by: Vedang Patel <vedang.patel@intel.com>
Instead of using a hard coded algorithm, let the caller provide the
function that performs the comparison. This will allow implementing
alternative algorithms from PTP profiles.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
This patch cleans up the BMC logic to allow assuming the GM role when no
other clocks are found in the network. By allowing the "best" to be NULL,
we can let the BMC to naturally pick the local clock as GM. As an added
bonus, this also get rid of the hacky check for a lost master.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
We failed to make the distinction between plain old "better" and
"better by topology," but the BMC algorithm really counts on this.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
The BMC should never return 'faulty', and I don't know what I was thinking
here, so let's just fix it.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
This commit also introduces clock and port objects, but only with the
minimal interface needed by the BMC.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>