[dpdk-dev] [PATCH 00/12] introduce fail-safe PMD

Gaetan Rivet gaetan.rivet at 6wind.com
Fri Mar 3 16:40:22 CET 2017


This PMD intercepts and manages Ethernet device removal events issued by
slave PMDs and re-initializes them transparently when brought back so that
existing applications do not need to be modified to benefit from true
hot-plugging support.

The stacked PMD approach shares many similarities with the bonding PMD but
with a different purpose. While bonding provides the ability to group
several links into a single logical device for enhanced throughput and
supports fail-over at link level, this one manages the sudden disappearance
of the underlying device; it guarantees applications face a valid device in
working order at all times.

Each fail-safe instance is configured to run atop one or several
devices, with one defined as the preferred device. Hot-plug events are
handled on all of them, and Tx is always directed to the preferred device
if present or to the next available failover device (Rx is always performed
on all devices for simplicity).

Moreover, the configured slaves (preferred or failover) do not need to be
present at initialization time and may appear later.

Slaves configuration is continuously synchronized with that of the virtual
device, which exposes their common set of capabilities to the application.
Failure to apply the current configuration state to a slave for any reason
simply reschedules its initialization.

This series depends on the series
[PATCH 0/4] clarify eth_dev state management
[PATCH 0/5] add device removal event

Gaetan Rivet (12):
  ethdev: save VLAN filter setting
  ethdev: add flow API rule copy function
  ethdev: add deferred intermediate device state
  pci: expose device detach routine
  pci: expose parse and probe routines
  net/failsafe: add fail-safe PMD
  net/failsafe: add plug-in support
  net/failsafe: add flexible device definition
  net/failsafe: support flow API
  net/failsafe: support offload capabilities
  net/failsafe: add fast burst functions
  net/failsafe: support device removal

 MAINTAINERS                                     |   4 +
 app/test-pmd/config.c                           | 263 ++------
 app/test-pmd/testpmd.h                          |   5 +-
 config/common_linuxapp                          |   1 +
 drivers/net/Makefile                            |   1 +
 drivers/net/failsafe/Makefile                   |  73 +++
 drivers/net/failsafe/failsafe.c                 | 279 ++++++++
 drivers/net/failsafe/failsafe_args.c            | 503 ++++++++++++++
 drivers/net/failsafe/failsafe_eal.c             | 300 +++++++++
 drivers/net/failsafe/failsafe_ether.c           | 368 +++++++++++
 drivers/net/failsafe/failsafe_flow.c            | 230 +++++++
 drivers/net/failsafe/failsafe_ops.c             | 838 ++++++++++++++++++++++++
 drivers/net/failsafe/failsafe_private.h         | 326 +++++++++
 drivers/net/failsafe/failsafe_rxtx.c            | 184 ++++++
 lib/librte_eal/bsdapp/eal/rte_eal_version.map   |   6 +
 lib/librte_eal/common/eal_common_pci.c          |  16 +-
 lib/librte_eal/common/include/rte_pci.h         |  40 ++
 lib/librte_eal/linuxapp/eal/eal_pci.c           |  39 +-
 lib/librte_eal/linuxapp/eal/rte_eal_version.map |   7 +
 lib/librte_ether/rte_ethdev.c                   |  22 +-
 lib/librte_ether/rte_ethdev.h                   |  11 +
 lib/librte_ether/rte_flow.c                     | 283 ++++++++
 lib/librte_ether/rte_flow.h                     |  59 ++
 mk/rte.app.mk                                   |   1 +
 24 files changed, 3611 insertions(+), 248 deletions(-)
 create mode 100644 drivers/net/failsafe/Makefile
 create mode 100644 drivers/net/failsafe/failsafe.c
 create mode 100644 drivers/net/failsafe/failsafe_args.c
 create mode 100644 drivers/net/failsafe/failsafe_eal.c
 create mode 100644 drivers/net/failsafe/failsafe_ether.c
 create mode 100644 drivers/net/failsafe/failsafe_flow.c
 create mode 100644 drivers/net/failsafe/failsafe_ops.c
 create mode 100644 drivers/net/failsafe/failsafe_private.h
 create mode 100644 drivers/net/failsafe/failsafe_rxtx.c

-- 
2.1.4



More information about the dev mailing list