1. 26 Jul, 2017 1 commit
  2. 24 Jul, 2017 1 commit
  3. 21 Jul, 2017 3 commits
  4. 20 Jul, 2017 2 commits
    • Sven Meier's avatar
      bmc & wr locking: added leap second propagation and added reset of locking · bc586acd
      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
      bc586acd
    • Sven Meier's avatar
      bmc & cleanup: fixes after the audit portings · 8633ced3
      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.
      8633ced3
  5. 12 Jul, 2017 17 commits
  6. 06 Jul, 2017 1 commit
  7. 03 Jul, 2017 1 commit
  8. 29 Jun, 2017 2 commits
  9. 23 Jun, 2017 3 commits
  10. 12 Jun, 2017 3 commits
    • Alessandro Rubini's avatar
      pdelay: rework and extend prev commit · 31f08f19
      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's avatarAlessandro Rubini <rubini@gnudd.com>
      31f08f19
    • Alessandro Rubini's avatar
      pdelay: mark stamps as invalid after use · 223459dd
      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's avatarAlessandro Rubini <rubini@gnudd.com>
      223459dd
    • Alessandro Rubini's avatar
      dfeb1890
  11. 06 Apr, 2017 2 commits
  12. 05 Apr, 2017 4 commits
    • Adam Wujek's avatar
    • Alessandro Rubini's avatar
      general fix: implement SYNCHRONIZATION_FAULT · a438acc9
      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's avatarAlessandro Rubini <rubini@gnudd.com>
      a438acc9
    • Alessandro Rubini's avatar
      trivial: rename a variable · 0bdf155f
      Alessandro Rubini authored
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      0bdf155f
    • Alessandro Rubini's avatar
      wr-servo: make re-track much faster · 63cb8ae9
      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's avatarAlessandro Rubini <rubini@gnudd.com>
      63cb8ae9