Commit Graph

109 Commits (beb3d5d8211799231a3f6d95091543b56ec46199)

Author SHA1 Message Date
Richard Cochran c2fad7bd51 Fix the BMC state decision algorithm.
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>
2012-01-07 08:07:56 +01:00
Richard Cochran 807ec32c96 Fix wrong result from the best master clock algorithm.
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>
2012-01-07 08:07:56 +01:00
Richard Cochran 335100c1a6 Differentiate the BMC related logging from the synchronization logging.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:56 +01:00
Richard Cochran a442a928f8 Fix typo in the initial priority field of the parent data set.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:56 +01:00
Richard Cochran ba6cf8b767 uClinux: provide missing system calls.
The timerfd calls are missing from Sourcery CodeBench Lite 2011.09-23.
We can remove this code once these calls are properly integrated into a
current tool chain.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:56 +01:00
Richard Cochran 59163df8b1 Make use of the configuration file for the port data set.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran 1092c4237b Make use of the configuration file for the default data set.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran ec5e783e84 Add code to read a configuration file.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran 32ee558ef8 Add a command line option to set the message level.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran f135133a88 Print the synchronization statistics at the information level.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran 0536aa7413 Issue a warning when the path delay turns out negative.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran e47549e73f Ignore messages from ourselves and from the wrong domain.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran 851675833a Do not print debug messages by default.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran 95185673f5 Fix message leak in the port event handler.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran 50b82c200d Do not treat signaling and management messages as errors.
Instead we just ignore them for now.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran a736b0c2ff Make the slave only mode a non-default option.
Now that we have the master code in place, there is no longer any need
to restrict ourselves.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran e2c02e49c7 Implement the master sync timer and message.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:55 +01:00
Richard Cochran 39f5b2c449 Fix delay response message format.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran e96d26f13f Group the sequence numbers together in one structure.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran 72703ba36a Implement the master announce timer and message.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran 7dbdf2985c Provide methods to obtain a clock's parent and time properties data sets.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran da17f75359 Implement the port master qualification timer.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran 62afef45db Clear all timers when changing port state.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran 3481c99c70 Add an access method for a clock's currentDS.stepsRemoved.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran b76c4e108f Introduce an event recommending the grand master state.
We already have a grand master state. Adding this event will simplify the
overall logic, since it will avoid the silly requirement to set the
qualification timeout to zero when entering the grand master state.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran 10753faccf Implement the synchronization events.
This will allow a port to get from the uncalibrated into the slave state.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran 347b42b7d5 udp: Use the bind to device socket option.
Without this Linux specific option, multicast packets arrive on one
interface are delivered by the kernel to all others.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran 95d5c36c0f udp: turn off multicast loop back.
This option is on by default, but we don't want or need it.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:54 +01:00
Richard Cochran 5555a2f029 udp: Use the IP_ADD_MEMBERSHIP socket option.
For some reason, MCAST_JOIN_GROUP is not working under uClinux. We can
just stick with the more traditional method.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2012-01-07 08:07:53 +01:00
Richard Cochran 447d4d442c udp: bring a warning or error if the driver changes our hwtstamp options.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-12-18 09:35:41 +01:00
Richard Cochran b0d547cac4 udp: use the message logging facility instead of stdio.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-12-18 08:21:47 +01:00
Richard Cochran 1de37086ef Rename the main program to something better sounding. 2011-12-13 09:09:08 +01:00
Richard Cochran 623add8303 Do not generate dependencies if we are going to clean. 2011-12-13 09:04:08 +01:00
Richard Cochran ecf959ce3d Reject negative path delay.
If the path delay comes out negative, then something is amiss. In this
case, we just print a warning and ignore the path delay estimate.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-12-13 05:30:45 +01:00
Richard Cochran cecc20a307 udp: wait longer for transmit time stamps
Some hardware is a bit pokey. We now wait forever on EINTR and just a
little bit on EAGAIN.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-12-13 05:28:54 +01:00
Richard Cochran 87e61f9770 Let the clock servo know about the expected time stamp quality.
If software time stamping is to be used, then the servo will want to
have appropriate filtering.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-12-13 04:57:28 +01:00
Richard Cochran 01691df47b Add a bunch more documentation.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-27 14:24:03 +01:00
Richard Cochran 429c126b58 Select the system clock whenever legacy hardware time stamps are used.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-27 14:24:03 +01:00
Richard Cochran 56a5adc1cc Smooth the path delay estimate with a moving average.
This is really just a first attempt using a hard coded length. Probably
it will be necessary to let the length be configurable and/or adaptable.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-27 14:24:03 +01:00
Richard Cochran 68aea3058c Use the timeout table for the delay request messages.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-27 14:24:03 +01:00
Richard Cochran 1d6737b75c Add a time out table for delay requests.
We can pre-compute a table of suitable values in order to simplify the
run time random delay selection.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-22 05:40:50 +01:00
Richard Cochran 2fd7a1c18f Use the correct slave-only clock class.
If we are going to be slave-only, then we should also advertise the
correct clock class.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-20 18:53:38 +01:00
Richard Cochran 5f7facdc63 Bind transmitted packets to the port's network interface.
Even though the MCAST_JOIN_GROUP socket option includes the interface
index, this applies to the received packets only. To bind the outgoing
packets to a particular interface, the IP_MULTICAST_IF option is needed.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-20 18:31:33 +01:00
Richard Cochran ebd353aff6 Link it all together, but in slave-only mode.
Since the master implementation is still lacking, we will just keep
the slave-only flag hard coded for now.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-13 12:39:49 +01:00
Richard Cochran dae76b951a Implement the port layer.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-13 08:41:05 +01:00
Richard Cochran 49cd10e678 Implement the PTP clock.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-12 18:59:13 +01:00
Richard Cochran 5b8fa684ae phc: Add a method to query the maximum adjustment.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-12 18:58:59 +01:00
Richard Cochran 150897669e Add the main program.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-12 17:41:20 +01:00
Richard Cochran 2a8711a125 Fix a misplaced doxygen comment.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-12 17:35:14 +01:00
Richard Cochran fc378711d8 Add an abstract time value type.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
2011-11-12 13:58:28 +01:00