- 21 Jul, 2017 3 commits
-
-
Sven Meier authored
-
Sven Meier authored
-
Sven Meier authored
bmc & default dataset: Handle passive for loopbacke frames correctly, take Clockid only from MAC of Port1 The switsch was getting the Clockid for the default datset for each port which has a different MAC on each port, this is wrong, now the Clockid is always fetched only from Port1 for all other ports.
-
- 20 Jul, 2017 2 commits
-
-
Sven Meier authored
Leap seconds are now also fetched from the system in case we are a grandmaster A reset of the locking procedure was added so a locked switch can get master again
-
Sven Meier authored
The audit portings changed the timely behaviour of the ppsi which cause wrong behaviours, the timeout scheme was changed to only reset timeouts where needed and in all non PTP states. UTC offset is now fetched from the system where supported, link up/down is now considered in the BMC, also some state changes where cleaned up to be out of the BMC, e.g. state changes based on timeouts between PreMaster and Master or between Uncalibrated and Slave.
-
- 12 Jul, 2017 17 commits
-
-
Sven Meier authored
-
Sven Meier authored
Passive handling is actualy done differently, its integrated into the bmc as a precheck.
-
Sven Meier authored
Most of them were already ported, added a check before returning next delay if a timeout for a (p)delay request has to be taken into account
-
Sven Meier authored
Now everywhere the packet buffer is a void *buf and the lenght is int len
-
Sven Meier authored
Only the patches ragrding the flag from the current master was taken over, the other falgs are still needed and used.
-
Sven Meier authored
Streamlined length naming, other parts were already ported
-
Sven Meier authored
No real porting was required only some clarifying, the rest was ported already
-
Sven Meier authored
The patches from the audit chapter 2.4.1 were ported, some of the changes were not ported due to previous changes or different foreign master handling, eg.g announce unpacking is still done since this seems more streamline with other message handling and is actually still used for field extraction for the foreign master data set
-
Sven Meier authored
For the announce receipt timeout the datasets shall be updated depending on the other ports states, only if no other in slave update parent dataset. when a link was connected it runs through initializing which was wrongly updating the parent dataset which caused a short masterchange condition an resyncing.
-
Sven Meier authored
-
Sven Meier authored
changed peer delay handling so p2p messages are only answered when in this mode added p2p messages to some states where it was missing
-
Sven Meier authored
Message handling for the case of received back frames changed and timeouts for announces reset according to standard
-
Sven Meier authored
The calibration handshake is now started on the slave state base Announce messages from the same device are handled differnetly for a BC
-
Sven Meier authored
A hook was added that handles the wr states, so that they don't get overwritten by bmc decisions. The extension stays in the white rabbit states until a calibration is done.
-
Sven Meier authored
The FSM order was changed in order to leave the fsm on a state change and re-enter the fsm directly afterward, this makes sure no state decision is overwritten by the state handling and each state dicision is handled at least once, There seems to be an issue with htons on unaligned addresses, which is the case for stepsRemoved in an announce, a workaround of a manual 16bit conversion was added.
-
Sven Meier authored
Merged uncalibrated and slave state, added event handling to the individual states, changed in all states the frame handling to table driven handling, moved common handling from common to slave since it is actually not common, fixed state passive to be according to standard, added uncalibrated handling, fixed listening and master frame handling,
-
Sven Meier authored
BMC fixed to be called periodically and data sets comparisments fixed also changed the foreign master table adding and agging and some minor adpatations in state pre-master
-
- 06 Jul, 2017 1 commit
-
-
Grzegorz Daniluk authored
This reverts commit a72f6bdc.
-
- 03 Jul, 2017 1 commit
-
-
Adam Wujek authored
Remove warning that HAS_ABSCAL is redefined Signed-off-by: Adam Wujek <adam.wujek@cern.ch>
-
- 29 Jun, 2017 2 commits
-
-
Adam Wujek authored
Signed-off-by: Adam Wujek <adam.wujek@cern.ch>
-
Adam Wujek authored
Signed-off-by: Adam Wujek <adam.wujek@cern.ch>
-
- 23 Jun, 2017 3 commits
-
-
Alessandro Rubini authored
This is a port of previous work by Peter Jansweijer from nikhef. To perform absolute calibration, we need a grand-master look-alike mode that sends sync once a second (and hopefully slightly after the pps signal). Using a special gateware that sends a pulse whenever a frame is transmitted and received, users can correlate collected timestamps (T1 and T4), this special pulse and the pps pulse of the node. The procedure for absolute calibration is described in http://www.ohwr.org/attachments/4542/WhiteRabbitAbsoluteCalibrationProcedure.pdf Another commit, in wrpc-sw, adds "mode abscal" for this feature to be used. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This is used by absolute calibration, where we send sync and no f-up. We may implement two-step flag, actually, but this is an easier choice. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
format is "%9d.%09d.%03d". This is not properly a flating point number, but counting 9 digits is already heavy, I'd better not have a 12-digit field (which, btw, will be wrongly converted by 32-bit parsers). This comes from a similar change by Peter Jansweijer from nikhef, for absolute-calibration work. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
- 12 Jun, 2017 3 commits
-
-
Alessandro Rubini authored
The previous commit is not enough as a fix. This may happen: - we invalidate stamps after processing them - we send request - get reply, loose reply-fup - send request - loose reply, get f-up So we now invalidate when sending the request. And invalidate t4 alone as the beautifulness and symmetry of the previous commit is lost anyways. Note: there no need to invalidate stamps in e2e mode, because checking the sequence number to validate RX frames is enough. But here all replies match the sequence number, so the problem is not caught and stamps from different tuples are mixed. Example beofre this commit, with trimmed stamps (was 1497283863): diag-frames-1-wr1: SENT 54 bytes at 863.333173928 (pdelay_req) diag-frames-1-wr1: RECV 54 bytes at 863.334158796 (type 3, pdelay_resp) diag-frames-1-wr1: Drop received frame diag-frames-1-wr1: SENT 54 bytes at 864.479336104 (pdelay_req) diag-frames-1-wr1: Drop received frame diag-frames-1-wr1: RECV 54 bytes at 864.481095164 (type a, presp_follow_up) diag-servo-2-wr1: servo:t3 = 864:479336104:0 diag-servo-2-wr1: servo:t4 = 863:333174267:586 diag-servo-2-wr1: servo:t5 = 864:480295312:0 diag-servo-2-wr1: servo:t6 = 863:334158796:773 diag-servo-2-wr1: ->mdelay = -2:-292298352:359 Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
The code is checking the sequence number of pdelay-rep and pdelay-rep-fup, but we may miss the reply and get the f-up. The result was something like this (first tuple is ok, next is wrong): diag-servo-2-wr1: servo:t3 = 1497279009:22584224:0 diag-servo-2-wr1: servo:t4 = 1497279009:22584574:759 diag-servo-2-wr1: servo:t5 = 1497279009:23564032:0 diag-servo-2-wr1: servo:t6 = 1497279009:23564365:547 diag-servo-2-wr1: ->mdelay = 0:684:306 diag-servo-2-wr1: servo:t3 = 1497279009:663586672:0 diag-servo-2-wr1: servo:t4 = 1497279009:22584574:759 diag-servo-2-wr1: servo:t5 = 1497279009:683142000:0 diag-servo-2-wr1: servo:t6 = 1497279009:23564365:547 diag-servo-2-wr1: ->mdelay = -1:-300579732:306 Here, t4 and t6 are old. The former is the receipt of the request, send back to the "slave" in the pdelay-reply payload; the latter is the receive time of such frame. We now invalidate t4 and t5 when using the tuple. They are the two "remote" times, one sent back in the response and the other sent back in the response-fup. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
- 06 Apr, 2017 2 commits
-
-
Alessandro Rubini authored
Dropping on tx is normal behaviour under test. state-listening is still entering faulty (thus waiting 4 seconds before restarting) if tx fails. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
It was a hack of mine, I'd better call it by name. We must spit no errors when injecting faults. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
- 05 Apr, 2017 6 commits
-
-
Adam Wujek authored
Signed-off-by: Adam Wujek <adam.wujek@cern.ch>
-
Alessandro Rubini authored
If we stopped sending to the master or the peer (for traffic or whatever; in my case with "fault drop"), we wouldn't notice the problem. This looks like SYNCHRONIZATION_FAULT (9.2.6.12), so this reuses the almost-unused TO_FAULTY, renaming it to a more generic TO_FAULT. 9.2.6.12 says we should reach uncalibrated, but since uncalibrated doesn't exits (it is never entered, it's dead and untested code at this point), I handle the problem just like the timeout receiving announce messages. For wr, I reset the servo, so the problem can be seen. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
There is no need to go to 0 phase at servo init. It is already 0 at the beginning of the world, but on re-track it can be the same as it was. With this change, if we loose track due to packet loss and timeout (thanks to a few commits ago), we recover in 1..4 seconds as opposed to 5..9 without this commit. Tested with "fault drop 0 1000" and later "fault drop 0 0", and a syslog server: Jan 1 00:00:10 192.168.16.229 (22:33:44:55:66:77) Node up since 10 seconds Mar 14 15:48:55 192.168.16.229 Tracking after 7.178 s Mar 14 15:49:07 192.168.16.229 Lost track Mar 14 15:49:11 192.168.16.229 2-th re-rtrack after 4.171 s Mar 14 15:49:30 192.168.16.229 Lost track Mar 14 15:49:32 192.168.16.229 3-th re-rtrack after 2.485 s Mar 14 15:49:49 192.168.16.229 Lost track Mar 14 15:49:51 192.168.16.229 4-th re-rtrack after 2.559 s Mar 14 15:50:13 192.168.16.229 Lost track Mar 14 15:50:16 192.168.16.229 5-th re-rtrack after 3.171 s Mar 14 15:50:31 192.168.16.229 Lost track Mar 14 15:50:32 192.168.16.229 6-th re-rtrack after 1.589 s With the original commit for this, Adam found that by unplugging and re-plugging the fiber our setpoint is always increasing, up to big values. I checked, and the softpll is always using the module. I brought the phase value up to hundreds of nanos both positive and negative, without any issues. So this version of the commit makes a modulus of the set point, to avoid it getting too big and scare a user watching the logs. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-