1. 31 Jan, 2022 3 commits
    • Tobias Waldekranz's avatar
      net: dsa: mv88e6xxx: Improve indirect addressing performance · 7bca16b2
      Tobias Waldekranz authored
      Before this change, both the read and write callback would start out
      by asserting that the chip's busy flag was cleared. However, both
      callbacks also made sure to wait for the clearing of the busy bit
      before returning - making the initial check superfluous. The only
      time that would ever have an effect was if the busy bit was initially
      set for some reason.
      
      With that in mind, make sure to perform an initial check of the busy
      bit, after which both read and write can rely the previous operation
      to have waited for the bit to clear.
      
      This cuts the number of operations on the underlying MDIO bus by 25%
      Signed-off-by: default avatarTobias Waldekranz <tobias@waldekranz.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7bca16b2
    • Tobias Waldekranz's avatar
      net: dsa: mv88e6xxx: Improve performance of busy bit polling · 35da1dfd
      Tobias Waldekranz authored
      Avoid a long delay when a busy bit is still set and has to be polled
      again.
      
      Measurements on a system with 2 Opals (6097F) and one Agate (6352)
      show that even with this much tighter loop, we have about a 50% chance
      of the bit being cleared on the first poll, all other accesses see the
      bit being cleared on the second poll.
      
      On a standard MDIO bus running MDC at 2.5MHz, a single access with 32
      bits of preamble plus 32 bits of data takes 64*(1/2.5MHz) = 25.6us.
      
      This means that mv88e6xxx_smi_direct_wait took 26us + CPU overhead in
      the fast scenario, but 26us + 1500us + 26us + CPU overhead in the slow
      case - bringing the average close to 1ms.
      
      With this change in place, the slow case is closer to 2*26us + CPU
      overhead, with the average well below 100us - a 10x improvement.
      
      This translates to real-world winnings. On a 3-chip 20-port system,
      the modprobe time drops by 88%:
      
      Before:
      
      root@coronet:~# time modprobe mv88e6xxx
      real    0m 15.99s
      user    0m 0.00s
      sys     0m 1.52s
      
      After:
      
      root@coronet:~# time modprobe mv88e6xxx
      real    0m 2.21s
      user    0m 0.00s
      sys     0m 1.54s
      Signed-off-by: default avatarTobias Waldekranz <tobias@waldekranz.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      35da1dfd
    • Sun Shouxin's avatar
      net: bonding: Add support for IPV6 ns/na to balance-alb/balance-tlb mode · 0da8aa00
      Sun Shouxin authored
      Since ipv6 neighbor solicitation and advertisement messages
      isn't handled gracefully in bond6 driver, we can see packet
      drop due to inconsistency between mac address in the option
      message and source MAC .
      
      Another examples is ipv6 neighbor solicitation and advertisement
      messages from VM via tap attached to host bridge, the src mac
      might be changed through balance-alb mode, but it is not synced
      with Link-layer address in the option message.
      
      The patch implements bond6's tx handle for ipv6 neighbor
      solicitation and advertisement messages.
      Suggested-by: default avatarHu Yadi <huyd12@chinatelecom.cn>
      Acked-by: default avatarJay Vosburgh <jay.vosburgh@canonical.com>
      Signed-off-by: default avatarSun Shouxin <sunshouxin@chinatelecom.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0da8aa00
  2. 29 Jan, 2022 5 commits
  3. 28 Jan, 2022 32 commits