Skip to content
  1. May 27, 2017
  2. May 26, 2017
  3. May 25, 2017
    • Eric Dumazet's avatar
      tcp: fix TCP_SYNCNT flakes · ce682ef6
      Eric Dumazet authored
      After the mentioned commit, some of our packetdrill tests became flaky.
      
      TCP_SYNCNT socket option can limit the number of SYN retransmits.
      
      retransmits_timed_out() has to compare times computations based on
      local_clock() while timers are based on jiffies. With NTP adjustments
      and roundings we can observe 999 ms delay for 1000 ms timers.
      We end up sending one extra SYN packet.
      
      Gimmick added in commit 6fa12c85 ("Revert Backoff [v3]: Calculate
      TCP's connection close threshold as a time value") makes no
      real sense for TCP_SYN_SENT sockets where no RTO backoff can happen at
      all.
      
      Lets use a simpler logic for TCP_SYN_SENT sockets and remove @syn_set
      parameter from retransmits_timed_out()
      
      Fixes: 9a568de4
      
       ("tcp: switch TCP TS option (RFC 7323) to 1ms clock")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Acked-by: default avatarSoheil Hassas Yeganeh <soheil@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ce682ef6
    • Vivien Didelot's avatar
      net: dsa: support cross-chip ageing time · 64dba236
      Vivien Didelot authored
      
      
      Now that the switchdev bridge ageing time attribute is propagated to all
      switch chips of the fabric, each switch can check if the requested value
      is valid and program itself, so that the whole fabric shares a common
      ageing time setting.
      
      This is especially needed for switch chips in between others, containing
      no bridge port members but evidently used in the data path.
      
      To achieve that, remove the condition which skips the other switches. We
      also don't need to identify the target switch anymore, thus remove the
      sw_index member of the dsa_notifier_ageing_time_info notifier structure.
      
      On ZII Dev Rev B (with two 88E6352 and one 88E6185) and ZII Dev Rev C
      (with two 88E6390X), we have the following hardware configuration:
      
          # ip link add name br0 type bridge
          # ip link set master br0 dev lan6
          br0: port 1(lan6) entered blocking state
          br0: port 1(lan6) entered disabled state
          # echo 2000 > /sys/class/net/br0/bridge/ageing_time
      
      Before this patch:
      
          zii-rev-b# cat /sys/kernel/debug/mv88e6xxx/sw*/age_time
          300000
          300000
          15000
      
          zii-rev-c# cat /sys/kernel/debug/mv88e6xxx/sw*/age_time
          300000
          18750
      
      After this patch:
      
          zii-rev-b# cat /sys/kernel/debug/mv88e6xxx/sw*/age_time
          15000
          15000
          15000
      
          zii-rev-c# cat /sys/kernel/debug/mv88e6xxx/sw*/age_time
          18750
          18750
      
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      64dba236