[dpdk-dev] [PATCH v2 00/13] Improve Solarflare PMD performance

Andrew Rybchenko arybchenko at solarflare.com
Mon Mar 20 11:15:06 CET 2017


Implement EF10 (SFN7xxx and SFN8xxx) native datapaths which may be
chosen per device using PCI whitelist device arguments.

libefx-based datapath implementation is bound to API and structure
imposed by the libefx. It has many indirect function calls to
provide HW abstraction (bad for CPU pipeline) and uses many data
structures: driver Rx/Tx queue, driver event queue, libefx Rx/Tx
queue, libefx event queue, libefx NIC (bad for cache).

Native datapath implementation is fully separated from control
path to be able to use alternative control path if required
(e.g. kernel-aware).

Native datapaths show better performance than libefx-based.

v2:
 - fix spelling, reword commit messages as requested
 - exclude packed stream support since it shows worse performance yet
   because of indirect mbufs usage
 - use uint16_t for port_id to avoid changes when corresponding
   mbuf patches are applied
 - add header with functions shared by EF10 Rx and Tx
 - clear event queue entries by cache-lines
 - remove unnecessary checks in refill code
 - add missing BSD LICENSE line to new files
 - avoid usage of function pointers in state structures, make EF10
   native datapath multi-process support friendly to avoid code
   shuffling in the future
 - remove unnecessary memory barriers, add corresponding comments
 - do not use libefx macros for Rx/Tx queue limit, define own which
   take event queue clear by cache-line into account

Andrew Rybchenko (13):
  net/sfc: use different callbacks for event queues
  net/sfc: emphasis that RSS hash flag is an Rx queue flag
  net/sfc: do not use Rx queue control state on datapath
  net/sfc: factor out libefx-based Rx datapath
  net/sfc: make Rx scatter a datapath-dependent feature
  net/sfc: remove few conditions in Rx queue refill
  net/sfc: implement EF10 native Rx datapath
  net/sfc: factor out libefx-based Tx datapath
  net/sfc: make VLAN insertion a datapath-dependent feature
  net/sfc: make TSO a datapath-dependent feature
  net/sfc: implement EF10 native Tx datapath
  net/sfc: make multi-segment support a Tx datapath feature
  net/sfc: implement simple EF10 native Tx datapath

 doc/guides/nics/sfc_efx.rst   |  24 ++
 drivers/net/sfc/Makefile      |   3 +
 drivers/net/sfc/sfc.h         |   4 +
 drivers/net/sfc/sfc_dp.c      | 100 ++++++
 drivers/net/sfc/sfc_dp.h      | 125 ++++++++
 drivers/net/sfc/sfc_dp_rx.h   | 197 ++++++++++++
 drivers/net/sfc/sfc_dp_tx.h   | 170 ++++++++++
 drivers/net/sfc/sfc_ef10.h    | 107 +++++++
 drivers/net/sfc/sfc_ef10_rx.c | 712 ++++++++++++++++++++++++++++++++++++++++++
 drivers/net/sfc/sfc_ef10_tx.c | 524 +++++++++++++++++++++++++++++++
 drivers/net/sfc/sfc_ethdev.c  | 165 ++++++++--
 drivers/net/sfc/sfc_ev.c      | 231 ++++++++++++--
 drivers/net/sfc/sfc_ev.h      |  27 +-
 drivers/net/sfc/sfc_kvargs.c  |  11 +
 drivers/net/sfc/sfc_kvargs.h  |  18 +-
 drivers/net/sfc/sfc_rx.c      | 333 ++++++++++++++++----
 drivers/net/sfc/sfc_rx.h      |  77 +++--
 drivers/net/sfc/sfc_tso.c     |  22 +-
 drivers/net/sfc/sfc_tx.c      | 353 +++++++++++++++------
 drivers/net/sfc/sfc_tx.h      |  98 ++++--
 20 files changed, 3012 insertions(+), 289 deletions(-)
 create mode 100644 drivers/net/sfc/sfc_dp.c
 create mode 100644 drivers/net/sfc/sfc_dp.h
 create mode 100644 drivers/net/sfc/sfc_dp_rx.h
 create mode 100644 drivers/net/sfc/sfc_dp_tx.h
 create mode 100644 drivers/net/sfc/sfc_ef10.h
 create mode 100644 drivers/net/sfc/sfc_ef10_rx.c
 create mode 100644 drivers/net/sfc/sfc_ef10_tx.c

-- 
2.9.3



More information about the dev mailing list