1. 26 2月, 2021 2 次提交
  2. 25 2月, 2021 2 次提交
  3. 24 2月, 2021 2 次提交
  4. 23 2月, 2021 10 次提交
  5. 22 2月, 2021 1 次提交
  6. 20 2月, 2021 2 次提交
  7. 19 2月, 2021 6 次提交
  8. 18 2月, 2021 10 次提交
  9. 17 2月, 2021 5 次提交
    • J
      b646acd5
    • S
      lan743x: sync only the received area of an rx ring buffer · 966df6de
      Sven Van Asbroeck 提交于
      On cpu architectures w/o dma cache snooping, dma_unmap() is a
      is a very expensive operation, because its resulting sync
      needs to invalidate cpu caches.
      
      Increase efficiency/performance by syncing only those sections
      of the lan743x's rx ring buffers that are actually in use.
      Signed-off-by: NSven Van Asbroeck <thesven73@gmail.com>
      Reviewed-by: NBryan Whitehead <Bryan.Whitehead@microchip.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      966df6de
    • S
      lan743x: boost performance on cpu archs w/o dma cache snooping · a8db76d4
      Sven Van Asbroeck 提交于
      The buffers in the lan743x driver's receive ring are always 9K,
      even when the largest packet that can be received (the mtu) is
      much smaller. This performs particularly badly on cpu archs
      without dma cache snooping (such as ARM): each received packet
      results in a 9K dma_{map|unmap} operation, which is very expensive
      because cpu caches need to be invalidated.
      
      Careful measurement of the driver rx path on armv7 reveals that
      the cpu spends the majority of its time waiting for cache
      invalidation.
      
      Optimize by keeping the rx ring buffer size as close as possible
      to the mtu. This limits the amount of cache that requires
      invalidation.
      
      This optimization would normally force us to re-allocate all
      ring buffers when the mtu is changed - a disruptive event,
      because it can only happen when the network interface is down.
      
      Remove the need to re-allocate all ring buffers by adding support
      for multi-buffer frames. Now any combination of mtu and ring
      buffer size will work. When the mtu changes from mtu1 to mtu2,
      consumed buffers of size mtu1 are lazily replaced by newly
      allocated buffers of size mtu2.
      
      These optimizations double the rx performance on armv7.
      Third parties report 3x rx speedup on armv8.
      
      Tested with iperf3 on a freescale imx6qp + lan7430, both sides
      set to mtu 1500 bytes, measure rx performance:
      
      Before:
      [ ID] Interval           Transfer     Bandwidth       Retr
      [  4]   0.00-20.00  sec   550 MBytes   231 Mbits/sec    0
      After:
      [ ID] Interval           Transfer     Bandwidth       Retr
      [  4]   0.00-20.00  sec  1.33 GBytes   570 Mbits/sec    0
      Signed-off-by: NSven Van Asbroeck <thesven73@gmail.com>
      Reviewed-by: NBryan Whitehead <Bryan.Whitehead@microchip.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a8db76d4
    • V
      net: enetc: fix destroyed phylink dereference during unbind · 3af409ca
      Vladimir Oltean 提交于
      The following call path suggests that calling unregister_netdev on an
      interface that is up will first bring it down.
      
      enetc_pf_remove
      -> unregister_netdev
         -> unregister_netdevice_queue
            -> unregister_netdevice_many
               -> dev_close_many
                  -> __dev_close_many
                     -> enetc_close
                        -> enetc_stop
                           -> phylink_stop
      
      However, enetc first destroys the phylink instance, then calls
      unregister_netdev. This is already dissimilar to the setup (and error
      path teardown path) from enetc_pf_probe, but more than that, it is buggy
      because it is invalid to call phylink_stop after phylink_destroy.
      
      So let's first unregister the netdev (and let the .ndo_stop events
      consume themselves), then destroy the phylink instance, then free the
      netdev.
      
      Fixes: 71b77a7a ("enetc: Migrate to PHYLINK and PCS_LYNX")
      Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3af409ca
    • M
      net: mvneta: Implement mqprio support · 4906887a
      Maxime Chevallier 提交于
      Implement a basic MQPrio support, inserting rules in RX that translate
      the TC to prio mapping into vlan prio to queues.
      
      The TX logic stays the same as when we don't offload the qdisc.
      Signed-off-by: NMaxime Chevallier <maxime.chevallier@bootlin.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4906887a