[dpdk-dev] [PATCH v4 00/12] introduce fail-safe PMD
Stephen Hemminger
stephen at networkplumber.org
Wed Jun 7 19:30:11 CEST 2017
On Mon, 29 May 2017 15:42:12 +0200
Gaetan Rivet <gaetan.rivet at 6wind.com> wrote:
> 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 patchset depends on:
>
> eal: complete attach / detach support
> http://dpdk.org/ml/archives/dev/2017-May/066366.html
> http://dpdk.org/dev/patchwork/patch/24522/
>
> ethdev: add flow API rule copy function
> http://dpdk.org/ml/archives/dev/2017-May/066145.html
> http://dpdk.org/dev/patchwork/patch/24406/
>
> ethdev: add isolated mode to flow API
> http://dpdk.org/ml/archives/dev/2017-April/064327.html
> http://dpdk.org/dev/patchwork/patch/23741/
>
> v1 --> v2:
>
> - Wrote documentation
> - Fixed commit logs, signed-off-by
> - Added LSC event support
> - A few minor fixes
>
> v2 --> v3:
>
> - Numerous bug fixes.
> - Complete sub-EAL rework to follow new bus API.
> - burst protection on sub removal.
> - more flexible sub definition.
> - flow isolated mode support.
>
> v3 --> v4:
>
> - Split back commits
> net/failsafe: add fast burst functions
> net/failsafe: support device removal
> That were squashed by error during a rebase
> - Fix segfault on port plugin
> - Fix isolate mode support for MLX4 ports plugin
>
> Gaetan Rivet (12):
> ethdev: save VLAN filter setting
> ethdev: add deferred intermediate device state
> ethdev: count devices consistently
> 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
> net/failsafe: support link status change event
> net/failsafe: support flow API isolation mode
>
> MAINTAINERS | 5 +
> config/common_base | 6 +
> doc/guides/nics/fail_safe.rst | 186 +++++++
> doc/guides/nics/features/failsafe.ini | 32 ++
> doc/guides/nics/index.rst | 1 +
> drivers/net/Makefile | 2 +
> drivers/net/failsafe/Makefile | 74 +++
> drivers/net/failsafe/failsafe.c | 305 +++++++++++
> drivers/net/failsafe/failsafe_args.c | 475 +++++++++++++++++
> drivers/net/failsafe/failsafe_eal.c | 140 +++++
> drivers/net/failsafe/failsafe_ether.c | 431 ++++++++++++++++
> drivers/net/failsafe/failsafe_flow.c | 245 +++++++++
> drivers/net/failsafe/failsafe_ops.c | 869 ++++++++++++++++++++++++++++++++
> drivers/net/failsafe/failsafe_private.h | 377 ++++++++++++++
> drivers/net/failsafe/failsafe_rxtx.c | 204 ++++++++
> lib/librte_ether/rte_ethdev.c | 38 +-
> lib/librte_ether/rte_ethdev.h | 24 +-
> mk/rte.app.mk | 1 +
> 18 files changed, 3399 insertions(+), 16 deletions(-)
> create mode 100644 doc/guides/nics/fail_safe.rst
> create mode 100644 doc/guides/nics/features/failsafe.ini
> 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
>
Discussed in tech-board meeting and accepted for inclusion in 17.08 release.
Longer term this driver would benefit from better hot plug support
Reviewed-by: Stephen Hemminger <stephen at networkplumber.org>
More information about the dev
mailing list