1. 23 5月, 2018 1 次提交
  2. 18 5月, 2018 1 次提交
    • M
      qede: Add build_skb() support. · 8a863397
      Manish Chopra 提交于
      This patch makes use of build_skb() throughout in driver's receieve
      data path [HW gro flow and non HW gro flow]. With this, driver can
      build skb directly from the page segments which are already mapped
      to the hardware instead of allocating new SKB via netdev_alloc_skb()
      and memcpy the data which is quite costly.
      
      This really improves performance (keeping same or slight gain in rx
      throughput) in terms of CPU utilization which is significantly reduced
      [almost half] in non HW gro flow where for every incoming MTU sized
      packet driver had to allocate skb, memcpy headers etc. Additionally
      in that flow, it also gets rid of bunch of additional overheads
      [eth_get_headlen() etc.] to split headers and data in the skb.
      
      Tested with:
      system: 2 sockets, 4 cores per socket, hyperthreading, 2x4x2=16 cores
      iperf [server]: iperf -s
      iperf [client]: iperf -c <server_ip> -t 500 -i 10 -P 32
      
      HW GRO off – w/o build_skb(), throughput: 36.8 Gbits/sec
      
      Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
      Average:     all    0.59    0.00   32.93    0.00    0.00   43.07    0.00    0.00   23.42
      
      HW GRO off - with build_skb(), throughput: 36.9 Gbits/sec
      
      Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
      Average:     all    0.70    0.00   31.70    0.00    0.00   25.68    0.00    0.00   41.92
      
      HW GRO on - w/o build_skb(), throughput: 36.9 Gbits/sec
      
      Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
      Average:     all    0.86    0.00   24.14    0.00    0.00    6.59    0.00    0.00   68.41
      
      HW GRO on - with build_skb(), throughput: 37.5 Gbits/sec
      
      Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
      Average:     all    0.87    0.00   23.75    0.00    0.00    6.19    0.00    0.00   69.19
      Signed-off-by: NAriel Elior <ariel.elior@cavium.com>
      Signed-off-by: NManish Chopra <manish.chopra@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8a863397
  3. 17 5月, 2018 6 次提交
  4. 14 5月, 2018 1 次提交
  5. 11 5月, 2018 3 次提交
  6. 08 5月, 2018 4 次提交
  7. 04 5月, 2018 1 次提交
  8. 30 4月, 2018 1 次提交
  9. 25 4月, 2018 1 次提交
  10. 24 4月, 2018 2 次提交
  11. 20 4月, 2018 2 次提交
  12. 30 3月, 2018 7 次提交
  13. 28 3月, 2018 1 次提交
    • M
      qede: Fix barrier usage after tx doorbell write. · b9fc828d
      Manish Chopra 提交于
      Since commit c5ad119f
      ("net: sched: pfifo_fast use skb_array") driver is exposed
      to an issue where it is hitting NULL skbs while handling TX
      completions. Driver uses mmiowb() to flush the writes to the
      doorbell bar which is a write-combined bar, however on x86
      mmiowb() does not flush the write combined buffer.
      
      This patch fixes this problem by replacing mmiowb() with wmb()
      after the write combined doorbell write so that writes are
      flushed and synchronized from more than one processor.
      
      V1->V2:
      -------
      This patch was marked as "superseded" in patchwork.
      (Not really sure for what reason).Resending it as v2.
      Signed-off-by: NAriel Elior <ariel.elior@cavium.com>
      Signed-off-by: NManish Chopra <manish.chopra@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b9fc828d
  14. 27 3月, 2018 5 次提交
  15. 26 3月, 2018 1 次提交
  16. 24 3月, 2018 1 次提交
  17. 22 3月, 2018 1 次提交
  18. 17 3月, 2018 1 次提交