1. 04 Oct, 2017 2 commits
    • Simon Horman's avatar
      ravb: RX checksum offload · 4d86d381
      Simon Horman authored
      Add support for RX checksum offload. This is enabled by default and
      may be disabled and re-enabled using ethtool:
      
       # ethtool -K eth0 rx off
       # ethtool -K eth0 rx on
      
      The RAVB provides a simple checksumming scheme which appears to be
      completely compatible with CHECKSUM_COMPLETE: sum of all packet data after
      the L2 header is appended to packet data; this may be trivially read by the
      driver and used to update the skb accordingly.
      
      In terms of performance throughput is close to gigabit line-rate both with
      and without RX checksum offload enabled. Perf output, however, appears to
      indicate that significantly less time is spent in do_csum(). This is as
      expected.
      
      Test results with RX checksum offload enabled:
       # /usr/bin/perf_3.16 record -o /run/perf.data -a netperf -t TCP_MAERTS -H 10.4.3.162
       MIGRATED TCP MAERTS TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.4.3.162 () port 0 AF_INET : demo
       enable_enobufs failed: getprotobyname
       Recv   Send    Send
       Socket Socket  Message  Elapsed
       Size   Size    Size     Time     Throughput
       bytes  bytes   bytes    secs.    10^6bits/sec
      
        87380  16384  16384    10.00     937.54
      
       Summary of output of perf report:
          18.28%      ksoftirqd/0  [kernel.kallsyms]  [k] _raw_spin_unlock_irqrestore
          10.34%      ksoftirqd/0  [kernel.kallsyms]  [k] __pi_memcpy
           9.83%      ksoftirqd/0  [kernel.kallsyms]  [k] ravb_poll
           7.89%      ksoftirqd/0  [kernel.kallsyms]  [k] skb_put
           4.01%      ksoftirqd/0  [kernel.kallsyms]  [k] dev_gro_receive
           3.37%          netperf  [kernel.kallsyms]  [k] __arch_copy_to_user
           3.17%          swapper  [kernel.kallsyms]  [k] arch_cpu_idle
           2.55%          swapper  [kernel.kallsyms]  [k] tick_nohz_idle_enter
           2.04%      ksoftirqd/0  [kernel.kallsyms]  [k] __pi___inval_dcache_area
           2.03%          swapper  [kernel.kallsyms]  [k] _raw_spin_unlock_irq
           1.96%      ksoftirqd/0  [kernel.kallsyms]  [k] __netdev_alloc_skb
           1.59%      ksoftirqd/0  [kernel.kallsyms]  [k] __slab_alloc.isra.83
      
      Test results without RX checksum offload enabled:
       # /usr/bin/perf_3.16 record -o /run/perf.data -a netperf -t TCP_MAERTS -H 10.4.3.162
       MIGRATED TCP MAERTS TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.4.3.162 () port 0 AF_INET : demo
       enable_enobufs failed: getprotobyname
       Recv   Send    Send
       Socket Socket  Message  Elapsed
       Size   Size    Size     Time     Throughput
       bytes  bytes   bytes    secs.    10^6bits/sec
      
        87380  16384  16384    10.00     940.20
      
       Summary of output of perf report:
          17.10%    ksoftirqd/0  [kernel.kallsyms]  [k] _raw_spin_unlock_irqrestore
          10.99%    ksoftirqd/0  [kernel.kallsyms]  [k] __pi_memcpy
           8.87%    ksoftirqd/0  [kernel.kallsyms]  [k] ravb_poll
           8.16%    ksoftirqd/0  [kernel.kallsyms]  [k] skb_put
           7.42%    ksoftirqd/0  [kernel.kallsyms]  [k] do_csum
           3.91%    ksoftirqd/0  [kernel.kallsyms]  [k] dev_gro_receive
           2.31%        swapper  [kernel.kallsyms]  [k] arch_cpu_idle
           2.16%    ksoftirqd/0  [kernel.kallsyms]  [k] __pi___inval_dcache_area
           2.14%    ksoftirqd/0  [kernel.kallsyms]  [k] __netdev_alloc_skb
           1.93%        netperf  [kernel.kallsyms]  [k] __arch_copy_to_user
           1.79%        swapper  [kernel.kallsyms]  [k] tick_nohz_idle_enter
           1.63%    ksoftirqd/0  [kernel.kallsyms]  [k] __slab_alloc.isra.83
      
      Above results collected on an R-Car Gen 3 Salvator-X/r8a7796 ES1.0.
      Also tested on a R-Car Gen 3 Salvator-X/r8a7795 ES1.0.
      
      By inspection this also appears to be compatible with the ravb found
      on R-Car Gen 2 SoCs, however, this patch is currently untested on such
      hardware.
      Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4d86d381
    • Ganesh Goudar's avatar
      cxgb4: add new T6 pci device id's · acd669a8
      Ganesh Goudar authored
      Add 0x6085 T6 device id.
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      acd669a8
  2. 03 Oct, 2017 36 commits
  3. 02 Oct, 2017 2 commits
    • David S. Miller's avatar
      Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · 4efac6ff
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      40GbE Intel Wired LAN Driver Updates 2017-10-02
      
      This series contains updates to i40e and i40evf.
      
      Shannon Nelson fixes an issue where when a machine has more CPUs than
      queue pairs, the counting gets a "little funky" and turns off Flow
      Director.  So to correct it, limit the number of LAN queues initially
      allocated to be sure there are some left for Flow Director and other
      features.
      
      Lihong cleans up dead code by removing a condition check which cannot
      ever be true.
      
      Christophe Jaillet fixes a potential NULL pointer dereference, which
      could happen if kzalloc() fails.
      
      Filip corrects the reporting of supported link modes, which was incorrect
      for some NICs.  Added support for 'ethtool -m' command, which displays
      information about QSFP+ modules.
      
      Mariusz adds functions to read/write the LED registers to control the
      LEDS, instead of accessing the registers directly whenever the LEDs
      need to be controlled.
      
      Jake fixes a regression where we introduced a scheduling while atomic,
      so introduce a separate helper function which will manage its own need
      for the mac_filter_hash_lock.  Also cleaned up the "PF" parameter in
      i40e_vc_disable_vf() since it is never used and is not needed.  Fixed
      a rare case where it is possible that a reset does not occur when
      i40e_vc_disable_vf() is called, so modify i40e_reset_vf() to return a
      bool to indicate whether it reset or not so that i40e_vc_disable_vf()
      can wait until a reset actually occurs.
      
      Alan adds the ability for the VF to request more or less underlying
      allocated queues from the PF.  Fixes the incorrect method for clearing
      the vf_states variable with a NULL assignment, when we should be
      using atomic bitops since we don't actually want to clear all the
      flags.  Fixed a resource leak, where the PF driver fails to inform
      clients of a VF reset because we were incorrectly checking the
      I40E_VF_STATE_PRE_ENABLE bit.
      
      Mitch converts i40evf_map_rings_to_vectors() to a void function since
      it cannot fail and allows us to clean up the checks for the function
      return value.
      
      Scott enables the driver(s) to pass traffic with VLAN tags using the
      802.1ad Ethernet protocol.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4efac6ff
    • Scott Peterson's avatar
      i40e: Stop dropping 802.1ad tags - eth proto 0x88a8 · ab243ec9
      Scott Peterson authored
      Enable i40e to pass traffic with VLAN tags using the 802.1ad ethernet
      protocol ID (0x88a8).
      
      This requires NIC firmware providing version 1.7 of the API. With
      older NIC firmware 802.1ad tagged packets will continue to be dropped.
      
      No VLAN offloads nor RSS are supported for 802.1ad VLANs.
      Signed-off-by: default avatarScott Peterson <scott.d.peterson@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ab243ec9