[dpdk-dev] [PATCH v4 00/17] Wind River Systems AVP PMD

Allain Legacy allain.legacy at windriver.com
Mon Mar 13 20:16:16 CET 2017

This patch series submits an initial version of the AVP PMD from Wind River
Systems.  The series includes shared header files, driver implementation,
and changes to documentation files in support of this new driver.  The AVP
driver is a shared memory based device.  It is intended to be used as a PMD
within a virtual machine running on a Wind River virtualization platform.
See: http://www.windriver.com/products/titanium-cloud/

It enables optimized packet throughput without requiring any packet
processing in qemu. This allowed us to provide our customers with a
significant performance increase for both DPDK and non-DPDK applications
in the VM.   Since our AVP implementation supports VM live-migration it
is viewed as a better alternative to PCI passthrough or PCI SRIOV since
neither of those support VM live-migration without manual intervention
or significant performance penalties.

Since the initial implementation of AVP devices, vhost-user has become part
of the qemu offering with a significant performance increase over the
original virtio implementation.  However, vhost-user still does not achieve
the level of performance that the AVP device can provide to our customers
for DPDK based guests.

A number of our customers have requested that we upstream the driver to

* Fixed coding style violations that slipped in accidentally because of an
  out of date checkpatch.pl from an older kernel.

* Updated 17.05 release notes to add a section for this new PMD
* Added additional info to the AVP nic guide document to clarify the
  benefit of using AVP over virtio.
* Fixed spelling error in debug log missed by local checkpatch.pl version
* Split the transmit patch to separate the stats functions as they
  accidentally got squashed in the last patchset.
* Fixed debug log strings so that they exceed 80 characters rather than
  span multiple lines.
* Renamed RTE_AVP_* defines that were in avp_ethdev.h to be AVP_* instead
* Replaced usage of RTE_WRITE32 and RTE_READ32 with rte_write32_relaxed
  and rte_read32_relaxed.
* Declared rte_pci_id table as const

* Split our interrupt handlers to a separate patch and moved to the end
  of the series.
* Removed memset() from stats_get API
* Removed usage of RTE_AVP_ALIGNMENT
* Removed unnecessary parentheses in rte_avp_common.h
* Removed unneeded "goto unlock" where there are no statements in between
  the goto and the end of the function.
* Re-tested with pktgen and found that rte_eth_tx_burst() is being called
  with 0 packets even before starting traffic which resulted in
  incrementing oerrors; fixed in transmit patch.

Allain Legacy (17):
  config: added attributes for the AVP PMD
  net/avp: added public header files
  maintainers: claim responsibility for AVP PMD
  net/avp: added PMD version map file
  net/avp: added log macros
  drivers/net: added driver makefiles
  net/avp: driver registration
  net/avp: device initialization
  net/avp: device configuration
  net/avp: queue setup and release
  net/avp: packet receive functions
  net/avp: packet transmit functions
  net/avp: device statistics operations
  net/avp: device promiscuous functions
  net/avp: device start and stop operations
  net/avp: migration interrupt handling
  doc: added information related to the AVP PMD

 MAINTAINERS                             |    6 +
 config/common_base                      |   10 +
 config/common_linuxapp                  |    1 +
 doc/guides/nics/avp.rst                 |   99 ++
 doc/guides/nics/features/avp.ini        |   17 +
 doc/guides/nics/index.rst               |    1 +
 drivers/net/Makefile                    |    1 +
 drivers/net/avp/Makefile                |   61 +
 drivers/net/avp/avp_ethdev.c            | 2371 +++++++++++++++++++++++++++++++
 drivers/net/avp/avp_logs.h              |   59 +
 drivers/net/avp/rte_avp_common.h        |  427 ++++++
 drivers/net/avp/rte_avp_fifo.h          |  157 ++
 drivers/net/avp/rte_pmd_avp_version.map |    4 +
 mk/rte.app.mk                           |    1 +
 14 files changed, 3215 insertions(+)
 create mode 100644 doc/guides/nics/avp.rst
 create mode 100644 doc/guides/nics/features/avp.ini
 create mode 100644 drivers/net/avp/Makefile
 create mode 100644 drivers/net/avp/avp_ethdev.c
 create mode 100644 drivers/net/avp/avp_logs.h
 create mode 100644 drivers/net/avp/rte_avp_common.h
 create mode 100644 drivers/net/avp/rte_avp_fifo.h
 create mode 100644 drivers/net/avp/rte_pmd_avp_version.map


More information about the dev mailing list