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

Andrew Rybchenko arybchenko at solarflare.com
Thu Mar 2 08:07: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.

Andrew Rybchenko (13):
  net/sfc: callbacks should depend on EvQ usage
  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: Rx scatter is a datapath-dependent feature
  net/sfc: implement EF10 native Rx datapath
  net/sfc: factory out libefx-based Tx datapath
  net/sfc: VLAN insertion is a datapath dependent feature
  net/sfc: TSO is a datapath dependent feature
  net/sfc: implement EF10 native Tx datapath
  net/sfc: multi-segment support as is Tx datapath features
  net/sfc: implement simple EF10 native Tx datapath
  net/sfc: support Rx packed stream EF10-specific datapath

 doc/guides/nics/sfc_efx.rst      |  45 +++
 drivers/net/sfc/Makefile         |   4 +
 drivers/net/sfc/efsys.h          |   2 +-
 drivers/net/sfc/sfc.h            |   4 +
 drivers/net/sfc/sfc_dp.c         |  89 +++++
 drivers/net/sfc/sfc_dp.h         |  91 +++++
 drivers/net/sfc/sfc_dp_rx.h      | 216 ++++++++++++
 drivers/net/sfc/sfc_dp_tx.h      | 177 ++++++++++
 drivers/net/sfc/sfc_ef10_ps_rx.c | 659 ++++++++++++++++++++++++++++++++++++
 drivers/net/sfc/sfc_ef10_rx.c    | 713 +++++++++++++++++++++++++++++++++++++++
 drivers/net/sfc/sfc_ef10_tx.c    | 517 ++++++++++++++++++++++++++++
 drivers/net/sfc/sfc_ethdev.c     | 171 ++++++++--
 drivers/net/sfc/sfc_ev.c         | 272 +++++++++++++--
 drivers/net/sfc/sfc_ev.h         |  27 +-
 drivers/net/sfc/sfc_kvargs.c     |  11 +
 drivers/net/sfc/sfc_kvargs.h     |  19 ++
 drivers/net/sfc/sfc_rx.c         | 329 ++++++++++++++----
 drivers/net/sfc/sfc_rx.h         |  79 +++--
 drivers/net/sfc/sfc_tso.c        |  22 +-
 drivers/net/sfc/sfc_tx.c         | 331 +++++++++++++-----
 drivers/net/sfc/sfc_tx.h         |  95 ++++--
 21 files changed, 3604 insertions(+), 269 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_ps_rx.c
 create mode 100644 drivers/net/sfc/sfc_ef10_rx.c
 create mode 100644 drivers/net/sfc/sfc_ef10_tx.c

-- 
1.8.2.3



More information about the dev mailing list